fix(strixi-minaj): stabilize kanshi tray behavior

This commit is contained in:
2026-04-24 01:17:19 -07:00
parent efcc20c730
commit f9b51ae635
3 changed files with 46 additions and 0 deletions

View File

@@ -101,6 +101,25 @@
home-manager.sharedModules = [ home-manager.sharedModules = [
{ {
services.kanshi.settings = lib.mkBefore [
{
profile.name = "internal-only";
profile.outputs = [
{
criteria = "eDP-1";
status = "enable";
mode = "2560x1600@240Hz";
position = "0,0";
scale = 1.0;
}
{
criteria = "Microstep MPG341CX OLED Unknown";
status = "disable";
}
];
}
];
home.stateVersion = "23.05"; home.stateVersion = "23.05";
} }
]; ];

View File

@@ -0,0 +1,26 @@
--- a/src/Kanshi/SNI.hs
+++ b/src/Kanshi/SNI.hs
@@ -42,6 +42,7 @@
data SNIState = SNIState
{ sniConnection :: MVar (Maybe KanshiConnection)
, sniAppState :: MVar AppState
+ , sniMenuRoot :: MVar Dbusmenu.Menuitem
, sniMenuServer :: Dbusmenu.Server
, sniGLibContext :: GLib.MainContext
}
@@ -73,3 +74,5 @@
appState <- buildInitialState kanshiConn
connVar <- newMVar kanshiConn
stateVar <- newMVar appState
+ initialRoot <- Dbusmenu.menuitemNew
+ rootVar <- newMVar initialRoot
@@ -76 +79 @@
- let sniState = SNIState connVar stateVar menuServer context
+ let sniState = SNIState connVar stateVar rootVar menuServer context
@@ -168,6 +171,7 @@
, onToggleMonitor = handleToggleMonitor sniState
}
newRoot <- buildMenu state actions
+ modifyMVar_ (sniMenuRoot sniState) $ const (pure newRoot)
runOnGLibMain (sniGLibContext sniState) $
Dbusmenu.serverSetRoot (sniMenuServer sniState) newRoot

View File

@@ -5,6 +5,7 @@ let
inputs.kanshi-sni.packages.${system}.default.overrideAttrs (old: { inputs.kanshi-sni.packages.${system}.default.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [ patches = (old.patches or [ ]) ++ [
./patches/kanshi-sni-refresh-and-reconnect.patch ./patches/kanshi-sni-refresh-and-reconnect.patch
./patches/kanshi-sni-keep-menu-root-alive.patch
]; ];
}); });
in in