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