-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Tray] iwgtk indicator fails to display and errors out ironbar #645
Comments
I've not investigated yet, but here's what I do know:
My litmus test tends to be "does it work properly in another tray impl?" For example, all of Waybar, AGS and Quickshell have more correct implementations. A tray icon's behaviour there will confirm whether it's Ironbar or not. |
Installed waybar to test and can confirm that it seems to work properly there (including changing icon images depending on wifi state). So that sadly increases the odds of it being ironbar. I'll see if I can figure out where exactly it goes wrong. My brain however doesn't fully agree with rust (yet), so it'll take a bit for my head to wrap around the issue. |
No worries if you can't get anywhere, it's not an easy task. If you do want to give it a go though, the tray impl is here: https://github.com/JakeStanger/system-tray |
Aha, that's what I was missing! Not being used to the rust ecosystem I had not seen that the implementation lived elsewhere. |
Happy to keep it here |
I have little clue how dbus works but I took a look at this because I'd also like this functionality. I learned two small pieces of information
Here is a poor implementation to fix the second one. I'm happy to actually fix this properly, I just don't want to learn the dbus stuff :) diff --git a/src/client.rs b/src/client.rs
index 6a17554b5d0e..4554bb7d0314 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -7,7 +7,6 @@ use crate::error::Error;
use crate::item::{self, Status, StatusNotifierItem};
use crate::menu::TrayMenu;
use dbus::DBusProps;
-use std::borrow::Cow;
use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use std::time::{SystemTime, UNIX_EPOCH};
@@ -172,11 +171,14 @@ impl Client {
tx: broadcast::Sender<Event>,
items: Arc<Mutex<State>>,
) -> crate::error::Result<()> {
- let (destination, path) = address
- .split_once('/')
- .map_or((address, Cow::Borrowed("/StatusNotifierItem")), |(d, p)| {
- (d, Cow::Owned(format!("/{p}")))
- });
+ let org_ndx = address.find("org").unwrap();
+
+ let mut destination = address.to_owned();
+ let path = destination.split_off(org_ndx);
+ let separator: &str = &path[3..4];
+ let destination = destination.trim_end_matches(['/', '.']);
+ let path = format!("{}{}", separator, path);
+ let path = path.replace(".", "/");
let properties_proxy = PropertiesProxy::builder(&connection)
.destination(destination.to_string())?
@@ -184,7 +186,7 @@ impl Client {
.build()
.await?;
- let properties = Self::get_item_properties(destination, &path, &properties_proxy).await?;
+ let properties = Self::get_item_properties(&destination, &path, &properties_proxy).await?;
items
.lock() |
Hello, I'm finally looking at picking this up. Unfortunately I can't even get The above patch only works if the address has |
Describe the bug
When running iwgtk with indicator support, ironbar does not show the tray icon and throws an error. I'm pretty sure this is unrelated to other tray-related issues, as other tray applications work fine. Running with
IRONBAR_LOG=debug
gives me the following relevant output:As far as I understand it (and I could be horribly wrong), the
StatusNotifierItem API
that is mentioned in the iwgtk README, is the freedesktop standard that the kde libappindicator protocol implements? So in theory, iwgtk and ironbar should be compatible?However, I'm not sure if the above problem here lies with ironbar, a library used by ironbar or the way iwgtk advertises itself. In case of the latter two I'll create issues in the relevant repo and this can be closed.
To Reproduce
iwgtk -i
(oriwgtk --indicators
)Expected behavior
The iwgtk icon shows up in the tray
System information:
The text was updated successfully, but these errors were encountered: