mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
X.H.ManageDocks: event hook to refresh on new docks
This commit is contained in:
parent
5fb228cfac
commit
f8be680472
@ -18,6 +18,7 @@ module XMonad.Hooks.ManageDocks (
|
|||||||
-- * Usage
|
-- * Usage
|
||||||
-- $usage
|
-- $usage
|
||||||
manageDocks, checkDock, AvoidStruts, avoidStruts, avoidStrutsOn,
|
manageDocks, checkDock, AvoidStruts, avoidStruts, avoidStrutsOn,
|
||||||
|
docksEventHook,
|
||||||
ToggleStruts(..),
|
ToggleStruts(..),
|
||||||
SetStruts(..),
|
SetStruts(..),
|
||||||
module XMonad.Util.Types,
|
module XMonad.Util.Types,
|
||||||
@ -34,6 +35,7 @@ import XMonad.Layout.LayoutModifier
|
|||||||
import XMonad.Util.Types
|
import XMonad.Util.Types
|
||||||
import XMonad.Util.WindowProperties (getProp32s)
|
import XMonad.Util.WindowProperties (getProp32s)
|
||||||
import XMonad.Util.XUtils (fi)
|
import XMonad.Util.XUtils (fi)
|
||||||
|
import Data.Monoid (All(..))
|
||||||
|
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
|
|
||||||
@ -56,6 +58,11 @@ import qualified Data.Set as S
|
|||||||
-- > layoutHook = avoidStruts (tall ||| mirror tall ||| ...)
|
-- > layoutHook = avoidStruts (tall ||| mirror tall ||| ...)
|
||||||
-- > where tall = Tall 1 (3/100) (1/2)
|
-- > where tall = Tall 1 (3/100) (1/2)
|
||||||
--
|
--
|
||||||
|
-- The third component is an event hook that causes new docks to appear
|
||||||
|
-- immediately, instead of waiting for the next focus change.
|
||||||
|
--
|
||||||
|
-- > handleEventHook = ... <+> docksEventHook
|
||||||
|
--
|
||||||
-- 'AvoidStruts' also supports toggling the dock gaps; add a keybinding
|
-- 'AvoidStruts' also supports toggling the dock gaps; add a keybinding
|
||||||
-- similar to:
|
-- similar to:
|
||||||
--
|
--
|
||||||
@ -102,6 +109,14 @@ checkDock = ask >>= \w -> liftX $ do
|
|||||||
Just [r] -> return $ elem (fromIntegral r) [dock, desk]
|
Just [r] -> return $ elem (fromIntegral r) [dock, desk]
|
||||||
_ -> return False
|
_ -> return False
|
||||||
|
|
||||||
|
-- | Whenever a new dock appears, refresh the layout immediately to avoid the
|
||||||
|
-- new dock.
|
||||||
|
docksEventHook :: Event -> X All
|
||||||
|
docksEventHook (MapNotifyEvent {ev_window = w}) = do
|
||||||
|
whenX ((not `fmap` (isClient w)) <&&> runQuery checkDock w) refresh
|
||||||
|
return (All True)
|
||||||
|
docksEventHook _ = return (All True)
|
||||||
|
|
||||||
-- | Gets the STRUT config, if present, in xmonad gap order
|
-- | Gets the STRUT config, if present, in xmonad gap order
|
||||||
getStrut :: Window -> X [Strut]
|
getStrut :: Window -> X [Strut]
|
||||||
getStrut w = do
|
getStrut w = do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user