Skip to content

feat: Full StatusNotifierItem (SNI) tray implementation - #970

Open
miramir wants to merge 4 commits into
MalpenZibo:mainfrom
miramir:full_sni_tray
Open

miramir wants to merge 4 commits into
MalpenZibo:mainfrom
miramir:full_sni_tray

Conversation

@miramir

@miramir miramir commented Sep 17, 2026

Copy link
Copy Markdown

What

  • Full SNI properties: Category, Status, Id/ItemId, Title, AttentionIcon*, OverlayIcon*
  • Item status handling: Passive items are now hidden (per spec); NeedsAttention items display attention/overlay icons
  • Context menu, secondary activate, scroll: wired D-Bus methods + ItemsRemoved signal handling for dbusmenu
  • Late-start self-healing: discovery poll reduced from 30s → 3s; watcher re-reads RegisteredItems on each tick to catch clients that registered before the watcher existed
  • Better icon selection: best_icon_pixmap() picks the largest pixmap; current_icon_from_proxy() falls back through pixmap → icon name → XDG theme
  • Tests: unit tests for ItemStatus, best_icon_pixmap, pixmap_to_icon, split_service_name, menu helpers (is_separator, is_visible, renderable_children), is_blocklisted, XDG icon normalization
  • Docs: website tray page updated with SNI protocol details; D-Bus interface reference lists com.canonical.dbusmenu
  • .gitignore: added .vscode/

Breaking change

Passive SNI items are now hidden from the tray (previously shown alongside Active). Matches the SNI spec

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.

1 participant