Cleanup xmonad; fix broken path in xmobar configs.

This commit is contained in:
Derek Taylor
2021-04-23 08:26:54 -05:00
parent b507f437c9
commit fa5fc11530
5 changed files with 42 additions and 82 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
, Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60 , Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60
-- Runs custom script to check for pacman updates. -- Runs custom script to check for pacman updates.
-- This script is in my dotfiles repo in .local/bin. -- This script is in my dotfiles repo in .local/bin.
, Run Com "~/.local/bin/pacupdate" [] "pacupdate" 36000 , Run Com "/home/dt/.local/bin/pacupdate" [] "pacupdate" 36000
-- Runs a standard shell command 'uname -r' to get kernel version -- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600 , Run Com "uname" ["-r"] "" 3600
-- Prints out the left side items such as workspaces, layout, etc. -- Prints out the left side items such as workspaces, layout, etc.
+1 -1
View File
@@ -27,7 +27,7 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
, Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60 , Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60
-- Runs custom script to check for pacman updates. -- Runs custom script to check for pacman updates.
-- This script is in my dotfiles repo in .local/bin. -- This script is in my dotfiles repo in .local/bin.
, Run Com "~/.local/bin/pacupdate" [] "pacupdate" 36000 , Run Com "/home/dt/.local/bin/pacupdate" [] "pacupdate" 36000
-- Runs a standard shell command 'uname -r' to get kernel version -- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600 , Run Com "uname" ["-r"] "" 3600
-- Prints out the left side items such as workspaces, layout, etc. -- Prints out the left side items such as workspaces, layout, etc.
+1 -1
View File
@@ -27,7 +27,7 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
, Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60 , Run DiskU [("/", "<fn=1>\xf0c7</fn> hdd: <free> free")] [] 60
-- Runs custom script to check for pacman updates. -- Runs custom script to check for pacman updates.
-- This script is in my dotfiles repo in .local/bin. -- This script is in my dotfiles repo in .local/bin.
, Run Com "~/.local/bin/pacupdate" [] "pacupdate" 36000 , Run Com "/home/dt/.local/bin/pacupdate" [] "pacupdate" 36000
-- Runs a standard shell command 'uname -r' to get kernel version -- Runs a standard shell command 'uname -r' to get kernel version
, Run Com "uname" ["-r"] "" 3600 , Run Com "uname" ["-r"] "" 3600
-- Script that dynamically adjusts xmobar padding depending on number of trayer icons. -- Script that dynamically adjusts xmobar padding depending on number of trayer icons.
+21 -49
View File
@@ -133,32 +133,10 @@ myNormColor = "#282c34" -- Border color of normal windows
myFocusColor :: String myFocusColor :: String
myFocusColor = "#46d9ff" -- Border color of focused windows myFocusColor = "#46d9ff" -- Border color of focused windows
altMask :: KeyMask
altMask = mod1Mask -- Setting this for use in xprompts
windowCount :: X (Maybe String) windowCount :: X (Maybe String)
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
#+END_SRC #+END_SRC
#+RESULTS:
#+begin_example
<interactive>:37:45-56: error:
Not in scope: W.integrate'
No module named W is imported.
<interactive>:37:60-66: error:
Not in scope: W.stack
No module named W is imported.
<interactive>:37:70-80: error:
Not in scope: W.workspace
No module named W is imported.
<interactive>:37:84-92: error:
Not in scope: W.current
No module named W is imported.
#+end_example
* Autostart (The Startup Hook) * Autostart (The Startup Hook)
These are commands we want XMonad to execute on startup, such as running a compositor, setting our wallpaper, starting the emacs daemon, and starting our system tray and the applications that belong in it. These are commands we want XMonad to execute on startup, such as running a compositor, setting our wallpaper, starting the emacs daemon, and starting our system tray and the applications that belong in it.
@@ -236,7 +214,10 @@ myAppGrid = [ ("Audacity", "audacity")
#+END_SRC #+END_SRC
* Scratchpads * Scratchpads
Allows to have several floating scratchpads running different applications. Import Util.NamedScratchpad and bind a key to namedScratchpadSpawnAction. In the example below, I create two named scratchpads: (1) a scratchpad for my terminal, and (2) a scratchpad for moc which is a terminal music player. Allows to have several floating scratchpads running different applications. Import Util.NamedScratchpad and bind a key to namedScratchpadSpawnAction. In the example below, I have created named scratchpads for:
+ alacritty -- my terminal
+ mocp -- a terminal music player
+ qalculate-gtk -- a nice calculator
#+BEGIN_SRC haskell #+BEGIN_SRC haskell
myScratchPads :: [NamedScratchpad] myScratchPads :: [NamedScratchpad]
@@ -424,6 +405,7 @@ myManageHook = composeAll
, className =? "Gimp" --> doShift ( myWorkspaces !! 8 ) , className =? "Gimp" --> doShift ( myWorkspaces !! 8 )
, className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 ) , className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 )
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog , (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
, isFullscreen --> doFullFloat
] <+> namedScratchpadManageHook myScratchPads ] <+> namedScratchpadManageHook myScratchPads
#+END_SRC #+END_SRC
@@ -464,13 +446,11 @@ myKeys =
, ("M-S-q", io exitSuccess) -- Quits xmonad , ("M-S-q", io exitSuccess) -- Quits xmonad
-- Run Prompt -- Run Prompt
-- M-p was the default keybinding. I've changed it to M-S-RET because I will use
-- M-p as part of the keychord for the other dmenu script bindings.
, ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu , ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu
-- Other Dmenu Prompts -- Other Dmenu Prompts
-- In Xmonad and many tiling window managers, M-p is the default keybinding to -- In Xmonad and many tiling window managers, M-p is the default keybinding to
-- launch dmenu_run, so I've decided to use M-p plus KEY for these dmenu scripts. -- launch dmenu_run, so I've decided to use M-p plus KEY for these dmenu scripts.
, ("M-p c", spawn "~/dmscripts/dcolors") -- pick color from our scheme , ("M-p c", spawn "~/dmscripts/dcolors") -- pick color from our scheme
, ("M-p e", spawn "~/dmscripts/dmconf") -- edit config files , ("M-p e", spawn "~/dmscripts/dmconf") -- edit config files
, ("M-p i", spawn "~/dmscripts/dmscrot") -- screenshots (images) , ("M-p i", spawn "~/dmscripts/dmscrot") -- screenshots (images)
@@ -503,10 +483,10 @@ myKeys =
, ("M-S-t", sinkAll) -- Push ALL floating windows to tile , ("M-S-t", sinkAll) -- Push ALL floating windows to tile
-- Increase/decrease spacing (gaps) -- Increase/decrease spacing (gaps)
, ("M-d", decWindowSpacing 4) -- Decrease window spacing , ("C-M1-j", decWindowSpacing 4) -- Decrease window spacing
, ("M-i", incWindowSpacing 4) -- Increase window spacing , ("C-M1-k", incWindowSpacing 4) -- Increase window spacing
, ("M-S-d", decScreenSpacing 4) -- Decrease screen spacing , ("C-M1-h", decScreenSpacing 4) -- Decrease screen spacing
, ("M-S-i", incScreenSpacing 4) -- Increase screen spacing , ("C-M1-l", incScreenSpacing 4) -- Increase screen spacing
-- Grid Select (CTR-g followed by a key) -- Grid Select (CTR-g followed by a key)
, ("C-g g", spawnSelected' myAppGrid) -- grid select favorite apps , ("C-g g", spawnSelected' myAppGrid) -- grid select favorite apps
@@ -526,10 +506,6 @@ myKeys =
-- Layouts -- Layouts
, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout , ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
, ("M-C-M1-<Up>", sendMessage Arrange)
, ("M-C-M1-<Down>", sendMessage DeArrange)
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder
, ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full , ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
-- Increase/decrease windows in the master pane or the stack -- Increase/decrease windows in the master pane or the stack
@@ -597,15 +573,15 @@ myKeys =
, ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play")) , ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play"))
, ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous")) , ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous"))
, ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next")) , ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next"))
, ("<XF86AudioMute>", spawn "amixer set Master toggle") , ("<XF86AudioMute>", spawn "amixer set Master toggle")
, ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute") , ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute") , ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
, ("<XF86HomePage>", spawn "firefox") , ("<XF86HomePage>", spawn "qutebrowser https://www.youtube.com/c/DistroTube")
, ("<XF86Search>", safeSpawn "firefox" ["https://www.duckduckgo.com/"]) , ("<XF86Search>", spawn "dmsearch")
, ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird")) , ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird"))
, ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk")) , ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk"))
, ("<XF86Eject>", spawn "toggleeject") , ("<XF86Eject>", spawn "toggleeject")
, ("<Print>", spawn "scrotd 0") , ("<Print>", spawn "dmscrot")
] ]
-- The following lines are needed for named scratchpads. -- The following lines are needed for named scratchpads.
where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP")) where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
@@ -624,17 +600,13 @@ main = do
xmproc2 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc1" xmproc2 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc1"
-- the xmonad, ya know...what the WM is named after! -- the xmonad, ya know...what the WM is named after!
xmonad $ ewmh def xmonad $ ewmh def
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks { manageHook = myManageHook <+> manageDocks
-- Run xmonad commands from command line with "xmonadctl command". Commands include: , handleEventHook = docksEventHook
-- shrink, expand, next-layout, default-layout, restart-wm, xterm, kill, refresh, run, -- Uncomment this line to enable fullscreen support on things like YouTube/Netflix.
-- focus-up, focus-down, swap-up, swap-down, swap-master, sink, quit-wm. You can run -- This works perfect on SINGLE monitor systems. On multi-monitor systems,
-- "xmonadctl 0" to generate full list of commands written to ~/.xsession-errors. -- it adds a border around the window if screen does not have focus. So, my solution
-- To compile xmonadctl: ghc -dynamic xmonadctl.hs -- is to use a keybinding to toggle fullscreen noborders instead. (M-<Space>)
, handleEventHook = serverModeEventHookCmd -- <+> fullscreenEventHook
<+> serverModeEventHook
<+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)
<+> docksEventHook
<+> fullscreenEventHook -- this does NOT work right if using multi-monitors!
, modMask = myModMask , modMask = myModMask
, terminal = myTerminal , terminal = myTerminal
, startupHook = myStartupHook , startupHook = myStartupHook
+17 -29
View File
@@ -93,9 +93,6 @@ myNormColor = "#282c34" -- Border color of normal windows
myFocusColor :: String myFocusColor :: String
myFocusColor = "#46d9ff" -- Border color of focused windows myFocusColor = "#46d9ff" -- Border color of focused windows
altMask :: KeyMask
altMask = mod1Mask -- Setting this for use in xprompts
windowCount :: X (Maybe String) windowCount :: X (Maybe String)
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
@@ -332,6 +329,7 @@ myManageHook = composeAll
, className =? "Gimp" --> doShift ( myWorkspaces !! 8 ) , className =? "Gimp" --> doShift ( myWorkspaces !! 8 )
, className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 ) , className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 )
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog , (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
, isFullscreen --> doFullFloat
] <+> namedScratchpadManageHook myScratchPads ] <+> namedScratchpadManageHook myScratchPads
myKeys :: [(String, X ())] myKeys :: [(String, X ())]
@@ -342,13 +340,11 @@ myKeys =
, ("M-S-q", io exitSuccess) -- Quits xmonad , ("M-S-q", io exitSuccess) -- Quits xmonad
-- Run Prompt -- Run Prompt
-- M-p was the default keybinding. I've changed it to M-S-RET because I will use
-- M-p as part of the keychord for the other dmenu script bindings.
, ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu , ("M-S-<Return>", spawn "dmenu_run -i -p \"Run: \"") -- Dmenu
-- Other Dmenu Prompts -- Other Dmenu Prompts
-- In Xmonad and many tiling window managers, M-p is the default keybinding to -- In Xmonad and many tiling window managers, M-p is the default keybinding to
-- launch dmenu_run, so I've decided to use M-p plus KEY for these dmenu scripts. -- launch dmenu_run, so I've decided to use M-p plus KEY for these dmenu scripts.
, ("M-p c", spawn "~/dmscripts/dcolors") -- pick color from our scheme , ("M-p c", spawn "~/dmscripts/dcolors") -- pick color from our scheme
, ("M-p e", spawn "~/dmscripts/dmconf") -- edit config files , ("M-p e", spawn "~/dmscripts/dmconf") -- edit config files
, ("M-p i", spawn "~/dmscripts/dmscrot") -- screenshots (images) , ("M-p i", spawn "~/dmscripts/dmscrot") -- screenshots (images)
@@ -381,10 +377,10 @@ myKeys =
, ("M-S-t", sinkAll) -- Push ALL floating windows to tile , ("M-S-t", sinkAll) -- Push ALL floating windows to tile
-- Increase/decrease spacing (gaps) -- Increase/decrease spacing (gaps)
, ("M-d", decWindowSpacing 4) -- Decrease window spacing , ("C-M1-j", decWindowSpacing 4) -- Decrease window spacing
, ("M-i", incWindowSpacing 4) -- Increase window spacing , ("C-M1-k", incWindowSpacing 4) -- Increase window spacing
, ("M-S-d", decScreenSpacing 4) -- Decrease screen spacing , ("C-M1-h", decScreenSpacing 4) -- Decrease screen spacing
, ("M-S-i", incScreenSpacing 4) -- Increase screen spacing , ("C-M1-l", incScreenSpacing 4) -- Increase screen spacing
-- Grid Select (CTR-g followed by a key) -- Grid Select (CTR-g followed by a key)
, ("C-g g", spawnSelected' myAppGrid) -- grid select favorite apps , ("C-g g", spawnSelected' myAppGrid) -- grid select favorite apps
@@ -404,10 +400,6 @@ myKeys =
-- Layouts -- Layouts
, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout , ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
, ("M-C-M1-<Up>", sendMessage Arrange)
, ("M-C-M1-<Down>", sendMessage DeArrange)
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder
, ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full , ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
-- Increase/decrease windows in the master pane or the stack -- Increase/decrease windows in the master pane or the stack
@@ -475,15 +467,15 @@ myKeys =
, ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play")) , ("<XF86AudioPlay>", spawn (myTerminal ++ "mocp --play"))
, ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous")) , ("<XF86AudioPrev>", spawn (myTerminal ++ "mocp --previous"))
, ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next")) , ("<XF86AudioNext>", spawn (myTerminal ++ "mocp --next"))
, ("<XF86AudioMute>", spawn "amixer set Master toggle") , ("<XF86AudioMute>", spawn "amixer set Master toggle")
, ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute") , ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute") , ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
, ("<XF86HomePage>", spawn "firefox") , ("<XF86HomePage>", spawn "qutebrowser https://www.youtube.com/c/DistroTube")
, ("<XF86Search>", safeSpawn "firefox" ["https://www.duckduckgo.com/"]) , ("<XF86Search>", spawn "dmsearch")
, ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird")) , ("<XF86Mail>", runOrRaise "thunderbird" (resource =? "thunderbird"))
, ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk")) , ("<XF86Calculator>", runOrRaise "qalculate-gtk" (resource =? "qalculate-gtk"))
, ("<XF86Eject>", spawn "toggleeject") , ("<XF86Eject>", spawn "toggleeject")
, ("<Print>", spawn "scrotd 0") , ("<Print>", spawn "dmscrot")
] ]
-- The following lines are needed for named scratchpads. -- The following lines are needed for named scratchpads.
where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP")) where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
@@ -497,17 +489,13 @@ main = do
xmproc2 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc1" xmproc2 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc1"
-- the xmonad, ya know...what the WM is named after! -- the xmonad, ya know...what the WM is named after!
xmonad $ ewmh def xmonad $ ewmh def
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks { manageHook = myManageHook <+> manageDocks
-- Run xmonad commands from command line with "xmonadctl command". Commands include: , handleEventHook = docksEventHook
-- shrink, expand, next-layout, default-layout, restart-wm, xterm, kill, refresh, run, -- Uncomment this line to enable fullscreen support on things like YouTube/Netflix.
-- focus-up, focus-down, swap-up, swap-down, swap-master, sink, quit-wm. You can run -- This works perfect on SINGLE monitor systems. On multi-monitor systems,
-- "xmonadctl 0" to generate full list of commands written to ~/.xsession-errors. -- it adds a border around the window if screen does not have focus. So, my solution
-- To compile xmonadctl: ghc -dynamic xmonadctl.hs -- is to use a keybinding to toggle fullscreen noborders instead. (M-<Space>)
, handleEventHook = serverModeEventHookCmd -- <+> fullscreenEventHook
<+> serverModeEventHook
<+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)
<+> docksEventHook
<+> fullscreenEventHook -- this does NOT work right if using multi-monitors!
, modMask = myModMask , modMask = myModMask
, terminal = myTerminal , terminal = myTerminal
, startupHook = myStartupHook , startupHook = myStartupHook