From 1cb2d00cc7bdf17e33be44e9310383e6144d4612 Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Thu, 8 Oct 2026 21:37:20 +0200 Subject: [PATCH] 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. --- .config/xmonad/xmonad.hs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.config/xmonad/xmonad.hs b/.config/xmonad/xmonad.hs index f1a4997..66fd6ef 100644 --- a/.config/xmonad/xmonad.hs +++ b/.config/xmonad/xmonad.hs @@ -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