Repository navigation
Conversation
Automated AI review
Verified: the bar filter does what the description says, and existing bars are not rebuilt when the filtered list is recomputed.
The review found an overlap with an open PR, an unrelated Windows VM commit, a "Fixes" link that covers only part of #13072, and a test guard that passes on zero matches. Same change as open PR #13165#13165 ("Skip placeholder screens when building bars", open since 24 Sep) makes the same bar change:
Impact: there are two open PRs with the same bar code, linking different issues (#13072 here, #13163 there). Suggested change: state what this PR adds over #13165, or consolidate the change in one PR. Unrelated Windows VM commitCommit Verified: the fix itself is correct. With GNU chmod 9.11, Impact: the same unrelated change travels in several open PRs alongside the dedicated ones. Once one lands, the others become redundant or conflict at the same lines. Suggested change: drop the commit from this PR. If it stays, the comments "Use a leading 0 in the mode" and "Leading 0 clears setuid/setgid" are imprecise, because "Fixes #13072" covers only part of the issueWith the filter, no bar, bar widgets or widget IPC handlers are built for the placeholder or Impact: "Fixes #13072" would close an issue that the change resolves only partly. Suggested change: use "Refs #13072", or state the partial scope in the description. Count guard passes when nothing matches
A diagnostic mutant pointed all three Optional test improvement: default the count to 0. This version fails for the mutant above and passes on this head: real_screen_models=$(rg -c 'model:\s*root\.realScreens' "$ROOT/shell/plugins/bar/Bar.qml" || true)
if (( ${real_screen_models:-0} != 3 )); thenSmaller note: the description says 98 assertions pass. This head prints 97 Review informationTest scope: Source review of the head, merge-base and current AI process: Opus 5.5 Medium coordination and synthesis, Opus 5.5 Xhigh technical review and final fact check, GPT 6 Sol Xhigh search for related issues, Opus 5.5 Medium editorial check. Opt out: To stop receiving these reviews, reply to this comment saying so. |
Co-authored-by: AnPod <AnPod@users.noreply.github.com>
8ae1446 to
ec58ce8
Compare
|
Closing this as a duplicate of #13165, which was opened on 24 September against Comparing the two diffs line by line: What this pull request adds is the link to #13072. Whether #13165 should also close that issue is for the maintainer to decide on #13165; the bar change only partly addresses #13072, since the background and notification windows are still created for the placeholder screen. Compared by Claude Opus 5.5; Codex Medium was asked separately, from the two diffs alone, and agreed they are the same change (independence is not guaranteed). Nothing was run for this, because closing a duplicate needs only the comparison. If this is wrong, reopen it. |
Summary
When monitors sleep or are unplugged, Qt substitutes a nameless placeholder screen and Hyprland creates its headless
FALLBACKoutput. A bar built for either outlives the monitors' return: the compositor drops it onto whichever monitor comes back first, where it stacks over that monitor's bar with duplicateShellIpchandlers and leaked child processes (#13072).This filters out nameless and
FALLBACKscreens inBarModel.realScreens, ensuring bar surfaces are only created for real outputs with confirmed geometry.Fixes #13072
Testing
test/shell.d/bar-test.shwith assertions for screen filtering.bash test/shell.d/bar-test.sh(all 98 assertions pass).