diff --git a/XMonad/Hooks/FloatConfigureReq.hs b/XMonad/Hooks/FloatConfigureReq.hs index 0aeeee608..7b255a7f4 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 749d81bb6..6b00ead44 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)