Refresh bar widgets on every monitor, not just one
A bar surface is built per monitor, so a widget in the layout is live once per screen — but an IPC target only ever routes to the handler that registered first. `omarchy.indicators refresh` therefore reached a single bar, and since indicators only re-read their state on that signal, the other screens kept showing a stale reminder count, tmux alert, or DND state until the next reload. Clock and system-update refreshes had the same reach. Let the bar resolve every live instance of a widget id and relay the call to all of them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
49efe2dafa
commit
d2e1587ceb
@@ -384,11 +384,25 @@ Item {
|
||||
return true
|
||||
}
|
||||
|
||||
// Every live instance of a widget id. A bar surface is built per monitor, so
|
||||
// a widget that appears once in the layout is still live once per screen.
|
||||
function moduleWidgets(pluginId) {
|
||||
var id = String(pluginId || "")
|
||||
var items = []
|
||||
if (!id) return items
|
||||
for (var i = 0; i < moduleSlots.length; i++) {
|
||||
var slot = moduleSlots[i]
|
||||
if (!slot || !slot.activeItem || slot.moduleName !== id) continue
|
||||
items.push(slot.activeItem)
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
// Resolve the live bar-widget instance for a plugin id (e.g. "omarchy.bluetooth").
|
||||
// Only widgets that expose popup open/close methods count; plain indicators
|
||||
// (clock, workspaces, tray) return null. Used by shell.summon/toggle so
|
||||
// panel hotkeys route through the bar instead of a per-target IpcHandler
|
||||
// that goes stale when the bar reloads its widget instances.
|
||||
// panel hotkeys route through the bar instead of a per-target IPC handler
|
||||
// that only reaches whichever per-monitor instance claimed the target.
|
||||
function findPanelWidget(pluginId) {
|
||||
var id = String(pluginId || "")
|
||||
if (!id) return null
|
||||
|
||||
Reference in New Issue
Block a user