| |||||||||
| |||||||||
| |||||||||
Description | |||||||||
This is an EventHook that will receive commands from an external client. This is the example of a client: import Graphics.X11.Xlib import Graphics.X11.Xlib.Extras import System.Environment import Data.Char usage :: String -> String usage n = "Usage: " ++ n ++ " command number\nSend a command number to a running instance of XMonad" main :: IO () main = do args <- getArgs pn <- getProgName let com = case args of [] -> error $ usage pn w -> (w !! 0) sendCommand com sendCommand :: String -> IO () sendCommand s = do d <- openDisplay "" rw <- rootWindow d $ defaultScreen d a <- internAtom d "XMONAD_COMMAND" False allocaXEvent $ \e -> do setEventType e clientMessage setClientMessageEvent e rw a 32 (fromIntegral (read s)) currentTime sendEvent d rw False structureNotifyMask e sync d False compile with: ghc --make sendCommand.hs run with sendCommand command number For instance: sendCommand 0 will ask to xmonad to print the list of command numbers in stderr (so you can read it in ~/.xsession-errors). | |||||||||
Synopsis | |||||||||
| |||||||||
Usage | |||||||||
You can use this module with the following in your ~/.xmonad/xmonad.hs: import XMonad.Hooks.ServerMode Then edit your layoutHook by adding the eventHook: layoutHook = eventHook ServerMode $ avoidStruts $ simpleTabbed ||| Full ||| etc.. and then: main = xmonad defaultConfig { layoutHook = myLayouts } For more detailed instructions on editing the layoutHook see: | |||||||||
data ServerMode | |||||||||
| |||||||||
eventHook :: EventHook eh => eh -> l a -> (HandleEvent eh l) a | |||||||||
Produced by Haddock version 2.1.0 |