dankbar: add opt-in fullscreen auto-hide on niri - #3335
Open
steven12138 wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add a per-bar Hide Bar on Fullscreen option for niri overlay bars. It is disabled by default and never changes the bar's layer. With it enabled, fullscreen entry and exit use the existing auto-hide animation, including the configured theme duration and disabled-animation behavior.
Fullscreen detection follows the active window of each output's visible workspace, so moving keyboard focus to another output does not by itself reveal the bar. Edge hover, popout pinning (including strict auto-hide), IPC reveal/tuck, and overview retain their existing policies. Fullscreen hiding preserves the configured exclusive zone rather than resizing background windows. Frame-hosted/non-overlay bars and other compositors do not opt into this behavior.
The first commit fixes prerequisite niri workspace-state bugs: numeric workspace IDs were compared to string object keys, fresh active-window snapshots could be overwritten with stale values, and active-window events on an unfocused output could change global focus flags.
Niri IPC and Wayland toplevels have no shared window ID. The matcher uses exact app ID/title on the output, with keyboard focus as a disambiguator. If identical windows remain ambiguous, it leaves the bar available instead of guessing. The existing dock detector is unchanged. No polling, extra processes, or new timers are added.
Type of change
Related issues
Supersedes #3334, which is closed.
Validation
node --test quickshell/scripts/test-niri-fullscreen.mjs quickshell/scripts/test-niri-workspace-state.mjs(no npm dependencies).make lint-qmlreports the same existingDMSShell.qmlwarnings on the base and patched trees; normalized output is identical.git diff --checkand translation term-variant checks pass. Settings search index regenerated.Screenshots / video
Live transition progress was checked through temporary instrumentation; no desktop screenshots are attached.
Checklist
I18n.tr(); translation catalogs were not edited.make lint-qmlwith no new warnings compared with the base.docs/fullscreen-bar.md.