module XMonad.Hooks.BluetileDock (
bluetileDock
) where
import XMonad
import qualified XMonad.StackSet as S
import System.IO
import Control.Monad(forM_)
data DockOutput = DO Int String String deriving (Show, Read)
bluetileDock :: Handle -> X ()
bluetileDock outputHandle = do
ws <- gets windowset
let allscreens = S.screens ws
let outputs = for allscreens $ \s -> DO (getScreenId (S.screen s))
(getLayoutDesc s)
(getCurrentWorkspace s)
forM_ outputs $ \o -> io $ hPutStrLn outputHandle $ show o
getScreenId :: ScreenId -> Int
getScreenId (S sid) = sid
getLayoutDesc :: S.Screen i (Layout Window) a sid sd -> String
getLayoutDesc = description . S.layout . S.workspace
getCurrentWorkspace :: S.Screen i l a sid sd -> i
getCurrentWorkspace = S.tag . S.workspace
for :: [a] -> (a -> b) -> [b]
for = flip map