diff options
Diffstat (limited to 'lib/Phi/Widgets/Systray.hs')
-rw-r--r-- | lib/Phi/Widgets/Systray.hs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/Phi/Widgets/Systray.hs b/lib/Phi/Widgets/Systray.hs index 26ff0a4..e1ab198 100644 --- a/lib/Phi/Widgets/Systray.hs +++ b/lib/Phi/Widgets/Systray.hs @@ -24,7 +24,7 @@ import Phi.X11.Atoms data SystrayIconState = SystrayIconState deriving Show -data SystrayState = SystrayState [SystrayIconState] deriving Show +data SystrayState = SystrayState Rectangle [SystrayIconState] deriving Show data Systray = Systray deriving Show @@ -35,13 +35,18 @@ instance WidgetClass Systray where initWidget (Systray) phi dispvar = do forkIO $ systrayRunner phi dispvar - return $ SystrayState [] + return $ SystrayState (head . getScreens $ dispvar) [] - minSize _ (SystrayState icons) height = (length icons)*height + minSize _ (SystrayState systrayScreen icons) height screen = case True of + _ | screen == systrayScreen -> (length icons)*height + | otherwise -> 0 + weight _ = 0 - render Systray (SystrayState icons) w h screen = do - return () + render Systray (SystrayState systrayScreen icons) w h screen = case True of + _ | screen == systrayScreen -> do + return () + | otherwise -> return () systrayRunner :: Phi -> Display -> IO () @@ -117,21 +122,27 @@ handleEvent ClientMessageEvent { ev_message_type = message_type, ev_data = messa case messageData of (_:opcode:iconID:_) -> do case True of - _ | opcode == sYSTEM_TRAY_REQUEST_DOCK -> do - return () + _ | opcode == sYSTEM_TRAY_REQUEST_DOCK -> + when (iconID /= 0) $ addIcon phi dispvar $ fromIntegral iconID - | opcode == sYSTEM_TRAY_BEGIN_MESSAGE || opcode == sYSTEM_TRAY_CANCEL_MESSAGE -> do + | opcode == sYSTEM_TRAY_BEGIN_MESSAGE || opcode == sYSTEM_TRAY_CANCEL_MESSAGE -> return () | otherwise -> do + putStrLn "Phi: unknown tray message" return () _ -> return () - - + handleEvent _ _ _ _ = return () + +addIcon :: Phi -> Display -> Window -> IO () +addIcon phi display window = do + return () + + systray :: Widget systray = Widget $ Systray |