Keep discover-overlay above other windows in XMonad
discover-overlay's windows are override-redirect, so XMonad doesn't manage them and raising a floating window (e.g. a game) covers them. Raise them again from the log hook after every change.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
import Data.Monoid
|
||||
import Graphics.X11.ExtraTypes.XF86
|
||||
import Control.Monad (liftM2)
|
||||
import Control.Monad (forM_, liftM2, when)
|
||||
import XMonad
|
||||
import XMonad.Actions.PhysicalScreens
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
@@ -120,7 +120,8 @@ myConfig =
|
||||
layoutHook = myLayoutHook,
|
||||
startupHook = myStartupHook,
|
||||
manageHook = myManageHook,
|
||||
handleEventHook = myHandleEventHook
|
||||
handleEventHook = myHandleEventHook,
|
||||
logHook = myLogHook
|
||||
}
|
||||
`additionalKeysP` [ ("M-b", sendMessage ToggleStruts),
|
||||
("M-S-l", spawn "slock"),
|
||||
@@ -295,3 +296,17 @@ myHandleEventHook =
|
||||
<> Hacks.trayerAboveXmobarEventHook
|
||||
<> Hacks.trayerPaddingXmobarEventHook
|
||||
<> Hacks.fixSteamFlicker
|
||||
|
||||
-- Log hook
|
||||
myLogHook :: X ()
|
||||
myLogHook = raiseDiscoverOverlay
|
||||
|
||||
-- discover-overlay's windows are override-redirect, so xmonad doesn't manage them and
|
||||
-- raising a floating window (e.g. a game) covers them; put them back on top after every change
|
||||
raiseDiscoverOverlay :: X ()
|
||||
raiseDiscoverOverlay = withDisplay $ \d -> do
|
||||
root <- asks theRoot
|
||||
(_, _, ws) <- io $ queryTree d root
|
||||
forM_ ws $ \w -> do
|
||||
cls <- io $ getClassHint d w
|
||||
when (resClass cls == "Discover-overlay") $ io $ raiseWindow d w
|
||||
|
||||
Reference in New Issue
Block a user