Repository navigation
Register each bar widget's IPC target once, not once per monitor - #14960
Open
omarchybot wants to merge 2 commits into
Open
omarchybot wants to merge 2 commits into
omarchybot wants to merge 2 commits into
Conversation
The bar is built per monitor, and every panel and widget carrying its own ShellIpc registered its target on each copy. Quickshell keeps the first and logs "Handler was registered but will not be used" for the rest, so a two-monitor desktop logged ten of these on every shell start. Only the first copy the bar lists now registers. The others already reach through broadcast(), and when that copy's monitor goes away the next one takes the target over. A widget registers nothing until the bar has injected it: claiming the target first and dropping it a moment later makes Quickshell crash during startup. The weather panel lives inside its bar widget, which is the copy the bar lists, so it follows the widget. Fixes #9975 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The source check accepted any enabled line that mentioned ipcOwner, including a comment, and passed when it found no handler at all. The fixture counted enabled handlers without asking Quickshell, so a handler that failed to register would still pass; it now calls the remaining copy's target through quickshell ipc. Co-Authored-By: Codex Medium <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
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.
On a desktop with more than one monitor, every shell start logged "Handler was registered but will not be used" once per extra screen for each bar panel and widget with its own IPC target:
omarchy.agents,omarchy.audio,omarchy.bluetooth,omarchy.clock,omarchy.indicators,omarchy.monitor,omarchy.network,omarchy.power,omarchy.system-updateandomarchy.weather. The bar is built once per screen (VariantsoverQuickshell.screensinshell/plugins/bar/Bar.qml), and each copy of a widget declared its ownShellIpc. Quickshell keeps the first registration of a target and warns for the rest, so the warnings were noise around a handler that already worked. They also buried real IPC problems in the journal.Ui/BarWidget.qmlandUi/Panel.qmlnow carryipcOwner, which is true only for the first copy of the widget thatbar.moduleWidgets()lists, and every per-widgetShellIpcis enabled on it. The other copies already receive refreshes throughbroadcast(). When the owner's monitor goes away, the next copy becomes the owner. A copy claims nothing until the bar has injectedbarandmoduleName. Letting a copy the bar has not listed yet register and then drop out makes quickshell 0.3.1 segfault repeatedly during startup with two outputs. The weather panel sits inside its bar widget, which is the copy the bar lists, so it follows the widget'sipcOwner.Which copy a direct call such as
omarchy-shell omarchy.agents togglereaches is still the first one, as it was before; this change does not make that call follow the focused monitor. The panel hotkeys already go throughshell toggle, which picks the focused monitor's copy.test/shell.d/bar-ipc-owner-test.shchecks that every such handler is gated, and that two copies register a target once, hand it over when the first goes, and answer throughquickshell ipcafterwards.runtime-smoke-test.shused to allow one collision per extra screen and now allows none.Reviewed by Claude Opus 5.5, and by Codex Medium as a second opinion whose last round found nothing open; its independence from the first review is not guaranteed.
Fixes #9975