xmonad: Varios layout and binding improvements

This commit is contained in:
Alexander Kobjolke 2024-02-19 23:27:31 +01:00
parent 5364735b8c
commit d5a0aded56

View file

@ -1,8 +1,13 @@
import XMonad import XMonad
import XMonad.Actions.Navigation2D (navigation2DP, windowGo, windowSwap)
import qualified XMonad.Actions.CycleWS as WS
import XMonad.Util.Ungrab (unGrab) import XMonad.Util.Ungrab (unGrab)
import XMonad.Layout.ThreeColumns import XMonad.Layout.ThreeColumns
import XMonad.Layout.Magnifier (magnifiercz') import XMonad.Layout.ToggleLayouts (ToggleLayout(..), toggleLayouts)
import XMonad.Layout.BinarySpacePartition
import XMonad.Layout.BorderResize (borderResize)
import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.SetWMName
import qualified XMonad.Hooks.ManageDocks as Docks import qualified XMonad.Hooks.ManageDocks as Docks
import qualified XMonad.Util.EZConfig as EZ import qualified XMonad.Util.EZConfig as EZ
import Control.Monad (when) import Control.Monad (when)
@ -24,8 +29,9 @@ compileRestart resume = do
executeFile (cacheDir dirs </> compiledConfig) False args Nothing executeFile (cacheDir dirs </> compiledConfig) False args Nothing
) )
myLayout = Docks.avoidStruts (tiled ||| Mirror tiled ||| Full ||| columns) myLayout = borderResize $ Docks.avoidStruts $ layout
where where
layout = (emptyBSP ||| columns ||| tiled ||| Full)
tiled = Tall nmaster delta ratio tiled = Tall nmaster delta ratio
columns = ThreeColMid nmaster delta ratio columns = ThreeColMid nmaster delta ratio
nmaster = 1 -- default number of windows in the master pane nmaster = 1 -- default number of windows in the master pane
@ -35,10 +41,12 @@ myLayout = Docks.avoidStruts (tiled ||| Mirror tiled ||| Full ||| columns)
main :: IO () main :: IO ()
main = getDirectories >>= launch myConfig main = getDirectories >>= launch myConfig
myConfig = ewmhFullscreen $ ewmh $ Docks.docks $ def myConfig = ewmhFullscreen $ ewmh $ Docks.docks $ nav $ def
{ modMask = mod4Mask -- Use Super instead of Alt { modMask = mod4Mask -- Use Super instead of Alt
, terminal = "alacritty" , terminal = "alacritty"
, layoutHook = myLayout , layoutHook = myLayout
-- this seems to be necessary to make java gui applications work :(
, startupHook = ewmhDesktopsStartup >> setWMName "LG3D"
} }
`EZ.additionalKeysP` `EZ.additionalKeysP`
[ ("M-S-z", spawn "xscreensaver-command -lock") [ ("M-S-z", spawn "xscreensaver-command -lock")
@ -46,12 +54,26 @@ myConfig = ewmhFullscreen $ ewmh $ Docks.docks $ def
, ("M-S-q", restart "xmonad" True) , ("M-S-q", restart "xmonad" True)
, ("M-C-s", unGrab *> spawn "scrot -s") , ("M-C-s", unGrab *> spawn "scrot -s")
, ("M-b", sendMessage Docks.ToggleStruts) , ("M-b", sendMessage Docks.ToggleStruts)
, ("M-f", sendMessage (Toggle "Full"))
, ("M-p", spawn appLauncher) , ("M-p", spawn appLauncher)
, ("M-i", spawn passLauncher) , ("M-i", spawn passLauncher)
, ("M-w", kill)
, ("M-l", WS.toggleWS)
, ("M-g", WS.prevWS)
, ("M-r", WS.nextWS)
, ("<XF86MonBrightnessDown>", spawn "xbacklight -dec 5") , ("<XF86MonBrightnessDown>", spawn "xbacklight -dec 5")
, ("<XF86MonBrightnessUp>", spawn "xbacklight -inc 5") , ("<XF86MonBrightnessUp>", spawn "xbacklight -inc 5")
, ("M-S-c", sendMessage $ MoveSplit U)
, ("M-S-h", sendMessage $ MoveSplit L)
, ("M-S-t", sendMessage $ MoveSplit D)
, ("M-S-n", sendMessage $ MoveSplit R)
, ("M-a", sendMessage Balance)
, ("M-S-a", sendMessage Equalize)
, ("M-o", sendMessage Rotate)
] ]
where where
-- navigate using dvorak bindings
nav = navigation2DP def ("c", "h", "t", "n") [("M-", windowGo), ("M-C-", windowSwap)] True
appLauncher = "rofi -show combi -modes combi -combi-modes window,drun,run,ssh" appLauncher = "rofi -show combi -modes combi -combi-modes window,drun,run,ssh"
passLauncher = "rofi-pass" passLauncher = "rofi-pass"