This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

wrapperModules.noctalia-shell: resync workspace bar to drop stale pills

The upstream QuickShell i3 plugin never removes a workspace model
object on rename: the rename event is looked up by the NEW name,
misses the cached object under the old name, and only logs a warning.
A renamed workspace therefore lingers as a stale pill until a full
refresh or shell restart; clicking that ghost re-creates the old name
as a real workspace (the pill click script runs
"workspace <name>, move workspace to output <out>").

Force I3.refreshWorkspaces() every 30s while the shell is running so
stale entries are pruned on their next model rebuild.

+15 -1
+15 -1
wrapperModules/noctalia-shell/flake-module.nix
··· 23 23 # "workspace number <num>" which fails for named workspaces) 24 24 # - Show all workspaces on all screens (globalWorkspaces) 25 25 # - Bring workspace to current screen on click instead of jumping 26 + # - Periodically resync the workspace model: the upstream QuickShell 27 + # i3 plugin never removes renamed workspaces (a "rename" event is 28 + # looked up by the NEW name, misses the old model object, and only 29 + # logs "Workspace <name> doesn't exist"). A renamed workspace thus 30 + # lingers as a stale pill until a full refresh; clicking that ghost 31 + # pill then re-creates the old name as a real workspace. 26 32 swayPatched = pkgs.noctalia-shell.overrideAttrs (old: { 27 33 postInstall = (old.postInstall or "") + '' 28 34 substituteInPlace $out/share/noctalia-shell/Services/Compositor/SwayService.qml \ ··· 30 36 'Quickshell.execDetached(["${sway-focus-workspace}", workspace.name]);' \ 31 37 --replace-fail 'property bool initialized: false' \ 32 38 'property bool globalWorkspaces: true 33 - property bool initialized: false' 39 + property bool initialized: false 40 + 41 + // Drop stale workspace model entries (see patch note above). 42 + Timer { 43 + interval: 30000 44 + repeat: true 45 + running: initialized 46 + onTriggered: I3.refreshWorkspaces() 47 + }' 34 48 ''; 35 49 }); 36 50