31 lines
992 B
Diff
31 lines
992 B
Diff
--- a/src/Kanshi/SNI.hs
|
|
+++ b/src/Kanshi/SNI.hs
|
|
@@ -42,7 +42,8 @@
|
|
|
|
data SNIState = SNIState
|
|
{ sniConnection :: MVar (Maybe KanshiConnection)
|
|
, sniAppState :: MVar AppState
|
|
+ , sniMenuRoot :: MVar Dbusmenu.Menuitem
|
|
, sniMenuServer :: Dbusmenu.Server
|
|
, sniGLibContext :: GLib.MainContext
|
|
}
|
|
@@ -77,8 +78,10 @@
|
|
appState <- buildInitialState kanshiConn
|
|
connVar <- newMVar kanshiConn
|
|
stateVar <- newMVar appState
|
|
+ initialRoot <- Dbusmenu.menuitemNew
|
|
+ rootVar <- newMVar initialRoot
|
|
|
|
- let sniState = SNIState connVar stateVar menuServer context
|
|
+ let sniState = SNIState connVar stateVar rootVar menuServer context
|
|
|
|
-- Build initial menu
|
|
rebuildMenu sniState
|
|
@@ -177,6 +179,7 @@
|
|
, onToggleMonitor = handleToggleMonitor sniState
|
|
}
|
|
newRoot <- buildMenu state actions
|
|
+ modifyMVar_ (sniMenuRoot sniState) $ const (pure newRoot)
|
|
runOnGLibMain (sniGLibContext sniState) $
|
|
Dbusmenu.serverSetRoot (sniMenuServer sniState) newRoot
|