xmonad: Manage fullscreen games correctly

This commit is contained in:
Alexander Kobjolke 2024-03-02 23:39:55 +01:00
parent f414e47b26
commit 8bbebbac64

View file

@ -3,11 +3,14 @@ import XMonad.Actions.CycleWS qualified as WS
import XMonad.Actions.Navigation2D (navigation2DP, windowGo, windowSwap)
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks qualified as Docks
import XMonad.Hooks.ManageHelpers (doFullFloat, isDialog, isFullscreen)
import XMonad.Hooks.SetWMName
import XMonad.Layout.BinarySpacePartition
import XMonad.Layout.BorderResize (borderResize)
import XMonad.Layout.NoBorders (smartBorders)
import XMonad.Layout.ThreeColumns
import XMonad.Layout.ToggleLayouts (ToggleLayout (..), toggleLayouts)
import XMonad.ManageHook (doFloat)
import XMonad.Util.EZConfig qualified as EZ
import XMonad.Util.Ungrab (unGrab)
@ -31,9 +34,7 @@ compileRestart resume = do
executeFile (cacheDir dirs </> compiledConfig) False args Nothing
)
myLayout = borderResize $ Docks.avoidStruts layout
where
layout = emptyBSP ||| Full
myLayout = smartBorders . borderResize . Docks.avoidStruts $ toggleLayouts emptyBSP Full
main :: IO ()
main = getDirectories >>= launch myConfig
@ -60,16 +61,22 @@ changeVolume :: VolumeCommand -> X ()
changeVolume = spawn . interpretVolumeCommand
myConfig =
Docks.docks
ewmhFullscreen
. ewmh
. ewmhFullscreen
. Docks.docks
. nav
$ def
{ modMask = mod4Mask -- Use Super instead of Alt
, terminal = "alacritty"
, layoutHook = myLayout
, handleEventHook = handleEventHook def <+> fullscreenEventHook
, -- this seems to be necessary to make java gui applications work :(
startupHook = ewmhDesktopsStartup >> setWMName "LG3D"
, manageHook =
mconcat
[ isDialog --> doFloat
, isFullscreen --> doFullFloat
]
}
`EZ.additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock")
, ("M-S-r", compileRestart True)