Skip to content

Commit

Permalink
X.H.FloatConfigureReq: Add fixSteamFlicker
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
liskin committed Apr 28, 2024
1 parent 2b77997 commit c33efbb
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
17 changes: 17 additions & 0 deletions XMonad/Hooks/FloatConfigureReq.hs
Expand Up @@ -25,6 +25,10 @@ module XMonad.Hooks.FloatConfigureReq (
-- $usage
MaybeMaybeManageHook,
floatConfReqHook,

-- * Known workarounds
fixSteamFlicker,
fixSteamFlickerMMMH,
) where

import qualified Data.Map.Strict as M
Expand Down Expand Up @@ -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'.
Expand Down Expand Up @@ -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
4 changes: 4 additions & 0 deletions XMonad/Util/Hacks.hs
Expand Up @@ -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)
Expand Down

0 comments on commit c33efbb

Please sign in to comment.