chore(tray): replace GTK3 tray backend with ksni#163
Conversation
|
Warning Review limit reached
More reviews will be available in 35 minutes and 58 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (23)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Claude ultrareview backup for the CodeRabbit usage block has been handled. Addressed in
Local verification run after the fix:
|
Summary
tray-icon/mudatray backend withksniStatusNotifierItem over zbus.gtk,tray-icon,muda, GTK3/appindicator lockfile/vendor entries, and obsolete RustSec ignores.Closes #141
Design decisions
ksni 0.3.5because it provides a pure-Rust SNI implementation over zbus, including icon pixmap, DBusMenu context menu, activate, and secondary-activate support. License isUnlicense, which is allowed bydeny.toml.rust-versionfrom 1.75 to 1.80 because currentksnideclares MSRV 1.80. CI already installs stable Rust, so this does not require workflow pin changes.ksni's blocking wrapper to preserve HonkHonk's existing synchronous tray startup and channel-basedTrayEventcontract.disable_dbus_name(ashpd::is_sandboxed())for Flatpak compatibility andassume_sni_available(true)so HonkHonk can start even if the SNI watcher appears shortly after the app.src/main.rschanged only to removegtk::init(), which is required to delete the directgtkdependency.src/app/mod.rschanged only to remove the GTK event-loop pump fromMessage::TrayPoll, which is required because the new tray backend runs its own D-Bus service.Dependency justification
ksnireplacestray-icon/muda/gtkbecause the existing stack permanently pulls GTK3 gtk-rs crates andlibappindicator, which are the source of the glib/GTK RustSec advisory noise. Implementing StatusNotifierItem + DBusMenu directly on top of zbus would duplicate a protocol implementation already provided byksni. The new dependency adds no system-devpackages and removes GTK3, libayatana-appindicator, and xdo requirements.Verification
cargo test tray::icon::testsinitially failed becauseksni,HonkTray, and the SNI icon helper were missing.cargo test tray::icon::testspassed after implementation.cargo fmt --checkcargo test(492 lib tests, 5 main tests, 19 decoder tests; all passed)cargo clippy --all-targets -- -D warningscargo deny checkgtk,glib,gio,atk,cairo-rs,gdk,gdk-pixbuf,pango,libappindicator,libappindicator-sys,tray-icon,muda..SRCINFOfreshness checks passed locally forhonkhonk,honkhonk-git, andhonkhonk-bin.Manual KDE/GNOME/Hyprland/Sway tray smoke tests were not run in this worktree environment; the implementation remains SNI-only via
org.kde.StatusNotifierWatcher.