From c33efbbefde892de12c31967ec09c8abca927574 Mon Sep 17 00:00:00 2001 From: Tomas Janousek Date: Sat, 27 Apr 2024 23:45:52 +0200 Subject: [PATCH] X.H.FloatConfigureReq: Add fixSteamFlicker For ease of use, provide `fixSteamFlicker` as a pre-packaged `floatConfReqHook` that can easily be added directly to a `handleEventHook`. Also, for discoverability, re-export it from X.U.Hacks. --- XMonad/Hooks/FloatConfigureReq.hs | 17 +++++++++++++++++ XMonad/Util/Hacks.hs | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/XMonad/Hooks/FloatConfigureReq.hs b/XMonad/Hooks/FloatConfigureReq.hs index 0aeeee608f..7b255a7f45 100644 --- a/XMonad/Hooks/FloatConfigureReq.hs +++ b/XMonad/Hooks/FloatConfigureReq.hs @@ -25,6 +25,10 @@ module XMonad.Hooks.FloatConfigureReq ( -- $usage MaybeMaybeManageHook, floatConfReqHook, + + -- * Known workarounds + fixSteamFlicker, + fixSteamFlickerMMMH, ) where import qualified Data.Map.Strict as M @@ -66,6 +70,10 @@ import qualified XMonad.StackSet as W -- meaningful in the context of a tiling WM): -- -- > map toLower `fmap` className =? "steam" -?> mempty +-- +-- (this example is also available as 'fixSteamFlickerMMMH' to be added to +-- one's @myFloatConfReqHook@ and also 'fixSteamFlicker' to be added directly +-- to one's 'handleEventHook') -- | A variant of 'MaybeManageHook' that additionally may or may not make -- changes to the 'WindowSet'. @@ -107,3 +115,12 @@ floatConfReqHook _ _ = mempty -- | A 'Query' to determine if a window is floating. isFloatQ :: Query Bool isFloatQ = ask >>= \w -> liftX . gets $ M.member w . W.floating . windowset + +-- | A pre-packaged 'floatConfReqHook' that fixes flickering of the Steam client by ignoring 'ConfigureRequestEvent's on any of its floating windows. +-- +-- To use this, add 'fixSteamFlicker' to your 'handleEventHook'. +fixSteamFlicker :: Event -> X All +fixSteamFlicker = floatConfReqHook fixSteamFlickerMMMH + +fixSteamFlickerMMMH :: MaybeMaybeManageHook +fixSteamFlickerMMMH = map toLower `fmap` className =? "steam" -?> mempty diff --git a/XMonad/Util/Hacks.hs b/XMonad/Util/Hacks.hs index 749d81bb6d..6b00ead446 100644 --- a/XMonad/Util/Hacks.hs +++ b/XMonad/Util/Hacks.hs @@ -40,10 +40,14 @@ module XMonad.Util.Hacks ( trayerPaddingXmobarEventHook, trayPaddingXmobarEventHook, trayPaddingEventHook, + + -- * Steam flickering fix + fixSteamFlicker, ) where import XMonad +import XMonad.Hooks.FloatConfigureReq (fixSteamFlicker) import XMonad.Hooks.StatusBar (xmonadPropLog') import XMonad.Prelude (All (All), fi, filterM, when) import System.Posix.Env (putEnv)