From 1507fe356d26d6a90650b0aecf806c1ddf287f9a Mon Sep 17 00:00:00 2001 From: jao Date: Sat, 19 Feb 2022 04:22:52 +0000 Subject: Documentation: shuffling around the DBus xmonad example --- doc/quick-start.org | 67 ++--------------------------------------------------- 1 file changed, 2 insertions(+), 65 deletions(-) (limited to 'doc/quick-start.org') diff --git a/doc/quick-start.org b/doc/quick-start.org index d5bdb48..831f97c 100644 --- a/doc/quick-start.org +++ b/doc/quick-start.org @@ -465,68 +465,5 @@ available [[http://github.com/jaor/xmobar/raw/master/examples/xmobar.config][her argument that denotes an initial delay, in tenths of a second, before the command takes effect. -*** Example for using the DBus IPC interface with XMonad - - Bind the key which should {,un}map xmobar to a dummy value. This is - necessary for {,un}grabKey in xmonad. - - #+begin_src haskell - ((0, xK_Alt_L), pure ()) - #+end_src - - Also, install =avoidStruts= layout modifier from - =XMonad.Hooks.ManageDocks= - - Finally, install these two event hooks (=handleEventHook= in =XConfig=) - =myDocksEventHook= is a replacement for =docksEventHook= which reacts - on unmap events as well (which =docksEventHook= doesn't). - - #+begin_src haskell - import qualified XMonad.Util.ExtensibleState as XS - - data DockToggleTime = DTT { lastTime :: Time } deriving (Eq, Show, Typeable) - - instance ExtensionClass DockToggleTime where - initialValue = DTT 0 - - toggleDocksHook :: Int -> KeySym -> Event -> X All - toggleDocksHook to ks ( KeyEvent { ev_event_display = d - , ev_event_type = et - , ev_keycode = ekc - , ev_time = etime - } ) = - io (keysymToKeycode d ks) >>= toggleDocks >> return (All True) - where - toggleDocks kc - | ekc == kc && et == keyPress = do - safeSendSignal ["Reveal 0", "TogglePersistent"] - XS.put ( DTT etime ) - | ekc == kc && et == keyRelease = do - gap <- XS.gets ( (-) etime . lastTime ) - safeSendSignal [ "TogglePersistent" - , "Hide " ++ show (if gap < 400 then to else 0) - ] - | otherwise = return () - - safeSendSignal s = catchX (io $ sendSignal s) (return ()) - sendSignal = withSession . callSignal - withSession mc = connectSession >>= \c -> callNoReply c mc >> disconnect c - callSignal :: [String] -> MethodCall - callSignal s = ( methodCall - ( objectPath_ "/org/Xmobar/Control" ) - ( interfaceName_ "org.Xmobar.Control" ) - ( memberName_ "SendSignal" ) - ) { methodCallDestination = Just $ busName_ "org.Xmobar.Control" - , methodCallBody = map toVariant s - } - - toggleDocksHook _ _ _ = return (All True) - - myDocksEventHook :: Event -> X All - myDocksEventHook e = do - when (et == mapNotify || et == unmapNotify) $ - whenX ((not `fmap` (isClient w)) <&&> runQuery checkDock w) refresh - return (All True) - where w = ev_window e - et = ev_event_type e - #+end_src + See [[window-managers.org::*Example of using][Interfacing with window managers]] for an example of how to use + the DBus interface from xmonad. -- cgit v1.2.3