summaryrefslogtreecommitdiffstats
path: root/lib/Phi/Widgets/Systray.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Phi/Widgets/Systray.hs')
-rw-r--r--lib/Phi/Widgets/Systray.hs31
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