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.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)