Skip to content

Fix external StatusNotifierWatcher signal subscription on Arch CI - #281

Closed
paperbenni with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-test-and-build-on-arch-linux
Closed

paperbenni with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-test-and-build-on-arch-linux

Conversation

Copilot AI commented Sep 9, 2026 •

Copy link
Copy Markdown

The Arch Linux CI job was failing in systray smoke tests because external StatusNotifierWatcher registration/unregistration signals were not consistently observed. This made tests time out waiting for signal-driven item updates.

  • Root cause

    • External watcher signal matching assumed sender='org.kde.StatusNotifierWatcher' only.
    • On some D-Bus setups, signal sender matching is enforced against the watcher’s unique owner (e.g. :1.42), so the match rule missed valid signals.
  • Change

    • In SignalWatcher::spawn (WatcherMode::External), keep the existing match rule for the well-known sender.
    • Add a second match rule by resolving GetNameOwner(org.kde.StatusNotifierWatcher) and subscribing to that unique sender as well.
    • Behavior is unchanged for embedded watcher mode.
  • Resulting behavior

    • External watcher registration/unregistration signals are consumed reliably across D-Bus implementations, preserving fast signal-path updates instead of falling back to reconcile timing.
add_match(&dbus, "type='signal',sender='org.kde.StatusNotifierWatcher',interface='org.kde.StatusNotifierWatcher'")?;
if let Ok(owner) = dbus.call::<_, _, String>("GetNameOwner", &(WATCHER_SERVICE,)) {
    let rule = format!("type='signal',sender='{owner}',interface='org.kde.StatusNotifierWatcher'");
    add_match(&dbus, &rule)?;
}

Co-authored-by: paperbenni <15818888+paperbenni@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix failing GitHub Actions job Test and build on Arch Linux Fix external StatusNotifierWatcher signal subscription on Arch CI Sep 9, 2026
Copilot AI requested a review from paperbenni September 9, 2026 12:30
@paperbenni paperbenni closed this Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants