xmonad-contrib-0.7: Third party extensions for xmonadContentsIndex
XMonad.Hooks.ServerMode
Portabilityunportable
Stabilityunstable
Maintainerandrea.rossato@unibz.it
Contents
Usage
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
data ServerMode = ServerMode
eventHook :: EventHook eh => eh -> l a -> HandleEvent eh l a
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:

XMonad.Doc.Extending#Editing_the_layout_hook

data ServerMode
Constructors
ServerMode
show/hide Instances
eventHook :: EventHook eh => eh -> l a -> HandleEvent eh l a
Produced by Haddock version 0.8