xmonad: Manage fullscreen games correctly

This commit is contained in:
Alexander Kobjolke 2024-03-02 23:39:55 +01:00
parent 46cf6bb0ff
commit 18bc01c8e5

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)