Trying to cleanup a lot of broken and/or sloppy code in xmonad.hs

This commit is contained in:
Derek Taylor 2019-02-24 23:28:46 -06:00
parent 4f6dee2c15
commit 1cf187c666
2 changed files with 39 additions and 67 deletions

View File

@ -252,8 +252,8 @@ filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
\ shotwell,
fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
" Get w3m image previews inside vifm
\ imgt %px %py %pw %ph %c
\ %pc
" \ imgt %px %py %pw %ph %c
" \ %pc
" \ imgc %px %py %pw %ph NOT NEEDED IN XTERM
" OpenRaster

View File

@ -5,6 +5,7 @@
import XMonad
import XMonad.Config.Desktop
import Data.Maybe (isJust)
import Data.Ratio ((%))
import System.IO (hPutStrLn)
import System.Exit (exitSuccess)
import qualified XMonad.StackSet as W
@ -43,12 +44,9 @@ import qualified XMonad.Actions.ConstrainedResize as Sqr
-- Layouts modifiers
import XMonad.Layout.PerWorkspace (onWorkspace)
import XMonad.Layout.Renamed (renamed, Rename(CutWordsLeft, Replace))
import XMonad.Layout.WorkspaceDir
import XMonad.Layout.WorkspaceDir
import XMonad.Layout.Spacing (spacing)
import XMonad.Layout.Minimize
import XMonad.Layout.Maximize
import XMonad.Layout.NoBorders
import XMonad.Layout.BoringWindows (boringWindows)
import XMonad.Layout.LimitWindows (limitWindows, increaseLimit, decreaseLimit)
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
import XMonad.Layout.Reflect (reflectVert, reflectHoriz, REFLECTX(..), REFLECTY(..))
@ -72,27 +70,27 @@ import XMonad.Prompt (defaultXPConfig, XPConfig(..), XPPosition(Top), Direction1
---CONFIG
------------------------------------------------------------------------
myModMask = mod4Mask -- Sets modkey to super/windows key
myTerminal = "st" -- Sets default terminal
myTerminal = "st" -- Sets default terminal
myTextEditor = "editor" -- Sets default text editor
myBorderWidth = 2 -- Sets border width for windows
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
myBorderWidth = 2 -- Sets border width for windows
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
main = do
xmproc0 <- spawnPipe "xmobar -x 0 /home/dt/.config/xmobar/xmobarrc2" -- xmobar mon 2
xmproc1 <- spawnPipe "xmobar -x 1 /home/dt/.config/xmobar/xmobarrc1" -- xmobar mon 1
xmproc2 <- spawnPipe "xmobar -x 2 /home/dt/.config/xmobar/xmobarrc0" -- xmobar mon 0
xmonad $ ewmh desktopConfig
{ manageHook = ( isFullscreen --> doFullFloat ) <+> manageHook defaultConfig <+> manageDocks
{ manageHook = ( isFullscreen --> doFullFloat ) <+> manageDocks <+> myManageHook <+> manageHook desktopConfig
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = \x -> hPutStrLn xmproc0 x >> hPutStrLn xmproc1 x >> hPutStrLn xmproc2 x
, ppCurrent = xmobarColor "#c3e88d" "" . wrap "[" "]" -- Current workspace in xmobar
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
, ppHiddenNoWindows = xmobarColor "#F07178" "" -- Hidden workspaces (no windows)
, ppTitle = xmobarColor "#d0d0d0" "" . shorten 80 -- Title of active window in xmobar
, ppSep = "<fc=#9AEDFE> : </fc>" -- Separators in xmobar
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
, ppExtras = [windowCount] -- # of windows current workspace
, ppExtras = [windowCount] -- # of windows current workspace
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
}
, modMask = myModMask
@ -100,7 +98,7 @@ main = do
, startupHook = myStartupHook
, layoutHook = myLayoutHook
, workspaces = myWorkspaces
, borderWidth = myBorderWidth
, borderWidth = myBorderWidth
, normalBorderColor = "#292d3e"
, focusedBorderColor = "#bbc5ff"
} `additionalKeysP` myKeys
@ -141,9 +139,6 @@ myKeys =
, ("M1-S-<Tab>", rotSlavesDown) -- Rotate all windows except the master and keep the focus in place
, ("M1-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
, ("M-*", withFocused minimizeWindow)
--, ("M-S-*", sendMessage RestoreNextMinimizedWin)
, ("M-!", withFocused (sendMessage . maximizeRestore))
, ("M-$", toggleFloatNext)
, ("M-S-$", toggleFloatAllNew)
, ("M-S-s", windows copyToAll)
@ -165,16 +160,14 @@ myKeys =
, ("M-C-<Left>", sendMessage (DecreaseLeft 10)) -- Decrease size of focused window left
-- Layouts
, ("M-S-<Space>", sendMessage ToggleStruts)
, ("M-d", asks (XMonad.layoutHook . config) >>= setLayout)
, ("M-<KP_Enter>", sendMessage NextLayout)
, ("M-<Space>", sendMessage NextLayout) -- Switch to next layout
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
, ("M-S-b", sendMessage $ Toggle NOBORDERS) -- Toggles noborder
, ("M-S-=", sendMessage (Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
, ("M-S-f", sendMessage (T.Toggle "float"))
, ("M-S-g", sendMessage (T.Toggle "gimp"))
, ("M-S-x", sendMessage $ Toggle REFLECTX)
, ("M-S-y", sendMessage $ Toggle REFLECTY)
, ("M-S-m", sendMessage $ Toggle MIRROR)
, ("M-S-b", sendMessage $ Toggle NOBORDERS)
, ("M-S-d", sendMessage (Toggle NBFULL) >> sendMessage ToggleStruts)
, ("M-<KP_Multiply>", sendMessage (IncMasterN 1)) -- Increase the number of clients in the master pane
, ("M-<KP_Divide>", sendMessage (IncMasterN (-1))) -- Decrease the number of clients in the master pane
, ("M-S-<KP_Multiply>", increaseLimit) -- Increase the number of windows that can be shown
@ -191,7 +184,6 @@ myKeys =
, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next workspace
, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to previous workspace
-- Main Run Apps
, ("M-<Return>", spawn myTerminal)
, ("M-<KP_Insert>", spawn "dmenu_run -fn 'UbuntuMono Nerd Font:size=10' -nb '#282A36' -nf '#F8F8F2' -sb '#BD93F9' -sf '#282A36' -p 'dmenu:'")
@ -250,7 +242,6 @@ myKeys =
] where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "NSP"))
------------------------------------------------------------------------
---WORKSPACES
------------------------------------------------------------------------
@ -268,58 +259,39 @@ myWorkspaces = clickable . (map xmobarEscape)
(i,ws) <- zip [1..8] l,
let n = i ]
myManageHook = placeHook (withGaps (20,12,12,12) (smart (0.5,0.5))) <+> insertPosition End Newer <+> floatNextHook <+>
(composeAll . concat $
[ [ resource =? r --> doF (W.view "main" . W.shift "main") | r <- myTermApps ]
, [ resource =? r --> doF (W.view "web" . W.shift "web") | r <- myWebApps ]
, [ resource =? r --> doF (W.view "media" . W.shift "media") | r <- myMediaApps ]
, [ resource =? r --> doF (W.view "syst" . W.shift "syst") | r <- mySystApps ]
, [ resource =? r --> doFloat | r <- myFloatApps ]
, [ className =? c --> ask >>= doF . W.sink | c <- myUnfloatApps ]
]) <+> manageHook defaultConfig
where
myTermApps = ["termite", "xterm", "htop", "irssi"]
myWebApps = ["firefox", "thunderbird"]
myMediaApps = ["vlc", "ncmpcpp", "weechat", "mplayer", "gimp"]
mySystApps = ["ranger", "pcmanfm", "geany", "nitrogen"]
myFloatApps = ["file-roller", "nitrogen"]
myUnfloatApps = ["gimp"]
myManageHook = composeAll
[
className =? "Firefox" --> doShift "www"
, className =? "vivaldi" --> doShift "www"
, className =? "irssi" --> doShift "chat"
, className =? "zoom" --> doShift "chat"
, className =? "hexchat" --> doShift "chat"
, className =? "pcmanfm" --> doShift "sys"
, className =? "vifm" --> doShift "sys"
, className =? "cmus" --> doShift "media"
, className =? "Vlc" --> doShift "media"
, className =? "Virtualbox" --> doFloat
, className =? "Gimp" --> doFloat
, (className =? "Firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
]
------------------------------------------------------------------------
---LAYOUTS
------------------------------------------------------------------------
myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts floats $
mkToggle (NBFULL ?? NOBORDERS ?? EOT) $ renamed [CutWordsLeft 4] $ maximize $
minimize $ boringWindows $ spacing 0 $
myDevLayout $
myWebLayout $
mySysLayout $
myDocLayout $
myVboxLayout $
myChatLayout $
myMediaLayout $
myGfxLayout $
myDefaultLayout
mkToggle (NBFULL ?? NOBORDERS ?? EOT) $ myDefaultLayout
where
myDevLayout = onWorkspace (myWorkspaces !! 0) $ grid ||| threeCol ||| threeRow ||| oneBig ||| floats
myWebLayout = onWorkspace (myWorkspaces !! 1) $ noBorders monocle ||| oneBig ||| threeCol ||| threeRow ||| grid
mySysLayout = onWorkspace (myWorkspaces !! 2) $ oneBig ||| threeCol ||| threeRow ||| grid
myDocLayout = onWorkspace (myWorkspaces !! 3) $ oneBig ||| threeCol ||| threeRow ||| grid
myVboxLayout = onWorkspace (myWorkspaces !! 4) $ noBorders monocle ||| oneBig ||| threeCol ||| threeRow ||| grid
myChatLayout = onWorkspace (myWorkspaces !! 5) $ grid ||| threeCol ||| threeRow ||| oneBig ||| floats
myMediaLayout = onWorkspace (myWorkspaces !! 6) $ noBorders monocle ||| oneBig ||| space ||| threeRow
myGfxLayout = onWorkspace (myWorkspaces !! 7) $ T.toggleLayouts gimp $ noBorders monocle ||| floats ||| grid
myDefaultLayout = grid ||| threeCol ||| threeRow ||| oneBig ||| noBorders monocle ||| space ||| floats
grid = renamed [Replace "grid"] $ limitWindows 12 $ spacing 4 $ mkToggle (single MIRROR) $ Grid (16/10)
threeCol = renamed [Replace "threeCol"] $ limitWindows 3 $ ThreeCol 1 (3/100) (1/2)
threeRow = renamed [Replace "threeRow"] $ limitWindows 3 $ Mirror $ mkToggle (single MIRROR) zoomRow
oneBig = renamed [Replace "oneBig"] $ limitWindows 6 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (5/9) (8/12)
monocle = renamed [Replace "monocle"] $ limitWindows 20 Full
space = renamed [Replace "space"] $ limitWindows 4 $ spacing 36 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (2/3) (2/3)
floats = renamed [Replace "floats"] $ limitWindows 20 simplestFloat
gimp = renamed [Replace "gimp"] $ limitWindows 5 $ withIM 0.11 (Role "gimp-toolbox") $ reflectHoriz $ withIM 0.15 (Role "gimp-dock") Full
grid = renamed [Replace "grid"] $ limitWindows 12 $ spacing 4 $ mkToggle (single MIRROR) $ Grid (16/10)
threeCol = renamed [Replace "threeCol"] $ limitWindows 3 $ ThreeCol 1 (3/100) (1/2)
threeRow = renamed [Replace "threeRow"] $ limitWindows 3 $ Mirror $ mkToggle (single MIRROR) zoomRow
oneBig = renamed [Replace "oneBig"] $ limitWindows 6 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (5/9) (8/12)
monocle = renamed [Replace "monocle"] $ limitWindows 20 $ Full
space = renamed [Replace "space"] $ limitWindows 4 $ spacing 36 $ Mirror $ mkToggle (single MIRROR) $ mkToggle (single REFLECTX) $ mkToggle (single REFLECTY) $ OneBig (2/3) (2/3)
floats = renamed [Replace "floats"] $ limitWindows 20 $ simplestFloat