revert: zbus 4 -> 3 (#1203)
* revert: zbus 4 -> 3
This reverts commit 71ba502442
.
* chore: update dependencies
* chore: manually edit lockfile
* chore: dependency updates
This commit is contained in:
parent
8661abf2bf
commit
e242d40e35
8 changed files with 455 additions and 335 deletions
644
Cargo.lock
generated
644
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -13,7 +13,7 @@ anyhow = "1.0.86"
|
|||
bincode = "1.3.3"
|
||||
cached = "0.53.1"
|
||||
chrono = "0.4.38"
|
||||
chrono-tz = "0.9.0"
|
||||
chrono-tz = "0.10.0"
|
||||
clap = { version = "4.5.1", features = ["derive"] }
|
||||
clap_complete = "4.5.12"
|
||||
codespan-reporting = "0.11"
|
||||
|
@ -35,8 +35,8 @@ jaq-parse = "1.0.3"
|
|||
jaq-std = "1.6.0"
|
||||
jaq-interpret = "1.5.0"
|
||||
jaq-syn = "1.6.0"
|
||||
lalrpop = { version = "0.20.2", features = ["unicode"] }
|
||||
lalrpop-util = { version = "0.20.2", features = ["unicode"] }
|
||||
lalrpop = { version = "0.21", features = ["unicode"] }
|
||||
lalrpop-util = { version = "0.21", features = ["unicode"] }
|
||||
libc = "0.2"
|
||||
log = "0.4"
|
||||
maplit = "1"
|
||||
|
@ -60,7 +60,7 @@ tokio-util = "0.7.11"
|
|||
tokio = { version = "1.39.2", features = ["full"] }
|
||||
unescape = "0.1"
|
||||
wait-timeout = "0.2"
|
||||
zbus = { version = "4.4.0", default-features = false, features = ["tokio"] }
|
||||
zbus = { version = "3.15.2", default-features = false, features = ["tokio"] }
|
||||
|
||||
[profile.dev]
|
||||
split-debuginfo = "unpacked"
|
||||
|
|
|
@ -88,7 +88,7 @@ pub async fn run_host(host: &mut dyn Host, snw: &proxy::StatusNotifierWatcherPro
|
|||
|
||||
// initial items first
|
||||
for svc in try_!(snw.registered_status_notifier_items().await) {
|
||||
match Item::from_address(snw.inner().connection(), &svc).await {
|
||||
match Item::from_address(snw.connection(), &svc).await {
|
||||
Ok(item) => {
|
||||
item_names.insert(svc.to_owned());
|
||||
host.add_item(&svc, item);
|
||||
|
@ -110,7 +110,7 @@ pub async fn run_host(host: &mut dyn Host, snw: &proxy::StatusNotifierWatcherPro
|
|||
if item_names.contains(svc) {
|
||||
log::info!("Got duplicate new item: {:?}", svc);
|
||||
} else {
|
||||
match Item::from_address(snw.inner().connection(), svc).await {
|
||||
match Item::from_address(snw.connection(), svc).await {
|
||||
Ok(item) => {
|
||||
item_names.insert(svc.to_owned());
|
||||
host.add_item(svc, item);
|
||||
|
|
|
@ -136,7 +136,7 @@ pub async fn load_icon_from_sni(
|
|||
let icon_from_name: std::result::Result<gtk::gdk_pixbuf::Pixbuf, IconError> = (async {
|
||||
// fetch icon name
|
||||
let icon_name = sni.icon_name().await;
|
||||
log::debug!("dbus: {} icon_name -> {:?}", sni.inner().destination(), icon_name);
|
||||
log::debug!("dbus: {} icon_name -> {:?}", sni.destination(), icon_name);
|
||||
let icon_name = match icon_name {
|
||||
Ok(s) if s.is_empty() => return Err(IconError::NotAvailable),
|
||||
Ok(s) => s,
|
||||
|
@ -152,7 +152,7 @@ pub async fn load_icon_from_sni(
|
|||
|
||||
// otherwise, fetch icon theme and lookup using icon_from_name
|
||||
let icon_theme_path = sni.icon_theme_path().await;
|
||||
log::debug!("dbus: {} icon_theme_path -> {:?}", sni.inner().destination(), icon_theme_path);
|
||||
log::debug!("dbus: {} icon_theme_path -> {:?}", sni.destination(), icon_theme_path);
|
||||
let icon_theme_path = match icon_theme_path {
|
||||
Ok(p) if p.is_empty() => None,
|
||||
Ok(p) => Some(p),
|
||||
|
@ -179,7 +179,7 @@ pub async fn load_icon_from_sni(
|
|||
match icon_from_name {
|
||||
Ok(p) => return Some(p), // got an icon!
|
||||
Err(IconError::NotAvailable) => {} // this error is expected, don't log
|
||||
Err(e) => log::warn!("failed to get icon by name for {}: {}", sni.inner().destination(), e),
|
||||
Err(e) => log::warn!("failed to get icon by name for {}: {}", sni.destination(), e),
|
||||
};
|
||||
|
||||
// Can't get it from name + theme, try the pixmap
|
||||
|
@ -199,7 +199,7 @@ pub async fn load_icon_from_sni(
|
|||
match icon_from_pixmaps {
|
||||
Ok(p) => return Some(p),
|
||||
Err(IconError::NotAvailable) => {}
|
||||
Err(e) => log::warn!("failed to get icon pixmap for {}: {}", sni.inner().destination(), e),
|
||||
Err(e) => log::warn!("failed to get icon pixmap for {}: {}", sni.destination(), e),
|
||||
};
|
||||
|
||||
// Tray didn't provide a valid icon so use the default fallback one.
|
||||
|
|
|
@ -82,7 +82,7 @@ impl Item {
|
|||
}
|
||||
|
||||
pub async fn set_menu(&mut self, widget: >k::EventBox) -> zbus::Result<()> {
|
||||
let menu = dbusmenu_gtk3::Menu::new(self.sni.inner().destination(), &self.sni.menu().await?);
|
||||
let menu = dbusmenu_gtk3::Menu::new(self.sni.destination(), &self.sni.menu().await?);
|
||||
menu.set_attach_widget(Some(widget));
|
||||
self.gtk_menu = Some(menu);
|
||||
Ok(())
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
//! # D-Bus interface proxy for: `org.kde.StatusNotifierItem`
|
||||
//! # DBus interface proxy for: `org.kde.StatusNotifierItem`
|
||||
//!
|
||||
//! This code was generated by `zbus-xmlgen` `4.1.0` from D-Bus introspection data.
|
||||
//! Source: `dbus_status_notifier_item.xml`.
|
||||
//! This code was generated by `zbus-xmlgen` `3.1.0` from DBus introspection data.
|
||||
//! Source: `dbus-status-notifier-item.xml`.
|
||||
//!
|
||||
//! You may prefer to adapt it, instead of using it verbatim.
|
||||
//!
|
||||
//! More information can be found in the [Writing a client proxy] section of the zbus
|
||||
//! documentation.
|
||||
//!
|
||||
//!
|
||||
//! [Writing a client proxy]: https://dbus2.github.io/zbus/client.html
|
||||
//! [D-Bus standard interfaces]: https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces,
|
||||
use zbus::proxy;
|
||||
#[proxy(interface = "org.kde.StatusNotifierItem", assume_defaults = true)]
|
||||
//! More information can be found in the
|
||||
//! [Writing a client proxy](https://dbus.pages.freedesktop.org/zbus/client.html)
|
||||
//! section of the zbus documentation.
|
||||
|
||||
// suppress warning from generated code
|
||||
#![allow(clippy::type_complexity)]
|
||||
|
||||
use zbus::dbus_proxy;
|
||||
|
||||
#[dbus_proxy(interface = "org.kde.StatusNotifierItem", assume_defaults = true)]
|
||||
trait StatusNotifierItem {
|
||||
/// Activate method
|
||||
fn activate(&self, x: i32, y: i32) -> zbus::Result<()>;
|
||||
|
@ -27,87 +29,86 @@ trait StatusNotifierItem {
|
|||
fn secondary_activate(&self, x: i32, y: i32) -> zbus::Result<()>;
|
||||
|
||||
/// NewAttentionIcon signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_attention_icon(&self) -> zbus::Result<()>;
|
||||
|
||||
/// NewIcon signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_icon(&self) -> zbus::Result<()>;
|
||||
|
||||
/// NewOverlayIcon signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_overlay_icon(&self) -> zbus::Result<()>;
|
||||
|
||||
/// NewStatus signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_status(&self, status: &str) -> zbus::Result<()>;
|
||||
|
||||
/// NewTitle signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_title(&self) -> zbus::Result<()>;
|
||||
|
||||
/// NewToolTip signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn new_tool_tip(&self) -> zbus::Result<()>;
|
||||
|
||||
/// AttentionIconName property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn attention_icon_name(&self) -> zbus::Result<String>;
|
||||
|
||||
/// AttentionIconPixmap property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn attention_icon_pixmap(&self) -> zbus::Result<Vec<(i32, i32, Vec<u8>)>>;
|
||||
|
||||
/// AttentionMovieName property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn attention_movie_name(&self) -> zbus::Result<String>;
|
||||
|
||||
/// Category property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn category(&self) -> zbus::Result<String>;
|
||||
|
||||
/// IconName property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property(emits_changed_signal = "false"))]
|
||||
fn icon_name(&self) -> zbus::Result<String>;
|
||||
|
||||
/// IconPixmap property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property(emits_changed_signal = "false"))]
|
||||
fn icon_pixmap(&self) -> zbus::Result<Vec<(i32, i32, Vec<u8>)>>;
|
||||
|
||||
/// IconThemePath property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn icon_theme_path(&self) -> zbus::Result<String>;
|
||||
|
||||
/// Id property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn id(&self) -> zbus::Result<String>;
|
||||
|
||||
/// ItemIsMenu property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn item_is_menu(&self) -> zbus::Result<bool>;
|
||||
|
||||
/// Menu property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn menu(&self) -> zbus::Result<zbus::zvariant::OwnedObjectPath>;
|
||||
|
||||
/// OverlayIconName property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn overlay_icon_name(&self) -> zbus::Result<String>;
|
||||
|
||||
/// OverlayIconPixmap property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn overlay_icon_pixmap(&self) -> zbus::Result<Vec<(i32, i32, Vec<u8>)>>;
|
||||
|
||||
/// Status property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn status(&self) -> zbus::Result<String>;
|
||||
|
||||
/// Title property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn title(&self) -> zbus::Result<String>;
|
||||
|
||||
/// ToolTip property
|
||||
#[zbus(property)]
|
||||
#[allow(clippy::type_complexity)]
|
||||
fn tool_tip(&self) -> zbus::Result<(String, Vec<(i32, i32, Vec<u8>)>, String, String)>;
|
||||
#[dbus_proxy(property)]
|
||||
fn tool_tip(&self) -> zbus::Result<(String, Vec<(i32, i32, Vec<u8>)>)>;
|
||||
}
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
//! # D-Bus interface proxy for: `org.kde.StatusNotifierWatcher`
|
||||
//! # DBus interface proxy for: `org.kde.StatusNotifierWatcher`
|
||||
//!
|
||||
//! This code was generated by `zbus-xmlgen` `4.1.0` from D-Bus introspection data.
|
||||
//! Source: `dbus_status_notifier_watcher.xml`.
|
||||
//! This code was generated by `zbus-xmlgen` `3.1.0` from DBus introspection data.
|
||||
//! Source: `dbus-status-notifier-watcher.xml`.
|
||||
//!
|
||||
//! You may prefer to adapt it, instead of using it verbatim.
|
||||
//!
|
||||
//! More information can be found in the [Writing a client proxy] section of the zbus
|
||||
//! documentation.
|
||||
//!
|
||||
//!
|
||||
//! [Writing a client proxy]: https://dbus2.github.io/zbus/client.html
|
||||
//! [D-Bus standard interfaces]: https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces,
|
||||
use zbus::proxy;
|
||||
#[proxy(
|
||||
//! More information can be found in the
|
||||
//! [Writing a client proxy](https://dbus.pages.freedesktop.org/zbus/client.html)
|
||||
//! section of the zbus documentation.
|
||||
|
||||
use zbus::dbus_proxy;
|
||||
|
||||
#[dbus_proxy(
|
||||
default_service = "org.kde.StatusNotifierWatcher",
|
||||
interface = "org.kde.StatusNotifierWatcher",
|
||||
default_path = "/StatusNotifierWatcher"
|
||||
|
@ -25,30 +24,30 @@ trait StatusNotifierWatcher {
|
|||
fn register_status_notifier_item(&self, service: &str) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierHostRegistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn status_notifier_host_registered(&self) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierHostUnregistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn status_notifier_host_unregistered(&self) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierItemRegistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn status_notifier_item_registered(&self, service: &str) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierItemUnregistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_proxy(signal)]
|
||||
fn status_notifier_item_unregistered(&self, service: &str) -> zbus::Result<()>;
|
||||
|
||||
/// IsStatusNotifierHostRegistered property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn is_status_notifier_host_registered(&self) -> zbus::Result<bool>;
|
||||
|
||||
/// ProtocolVersion property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn protocol_version(&self) -> zbus::Result<i32>;
|
||||
|
||||
/// RegisteredStatusNotifierItems property
|
||||
#[zbus(property)]
|
||||
#[dbus_proxy(property)]
|
||||
fn registered_status_notifier_items(&self) -> zbus::Result<Vec<String>>;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::names;
|
||||
use zbus::{export::ordered_stream::OrderedStreamExt, interface, Interface};
|
||||
use zbus::{dbus_interface, export::ordered_stream::OrderedStreamExt, Interface};
|
||||
|
||||
/// An instance of [`org.kde.StatusNotifierWatcher`]. It only tracks what tray items and trays
|
||||
/// exist, and doesn't have any logic for displaying items (for that, see [`Host`][`crate::Host`]).
|
||||
|
@ -23,7 +23,7 @@ pub struct Watcher {
|
|||
///
|
||||
/// Methods and properties correspond to methods and properties on the DBus service that can be
|
||||
/// used by others, while signals are events that we generate that other services listen to.
|
||||
#[interface(name = "org.kde.StatusNotifierWatcher")]
|
||||
#[dbus_interface(name = "org.kde.StatusNotifierWatcher")]
|
||||
impl Watcher {
|
||||
/// RegisterStatusNotifierHost method
|
||||
async fn register_status_notifier_host(
|
||||
|
@ -89,15 +89,15 @@ impl Watcher {
|
|||
}
|
||||
|
||||
/// StatusNotifierHostRegistered signal.
|
||||
#[zbus(signal)]
|
||||
#[dbus_interface(signal)]
|
||||
async fn status_notifier_host_registered(ctxt: &zbus::SignalContext<'_>) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierHostUnregistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_interface(signal)]
|
||||
async fn status_notifier_host_unregistered(ctxt: &zbus::SignalContext<'_>) -> zbus::Result<()>;
|
||||
|
||||
/// IsStatusNotifierHostRegistered property
|
||||
#[zbus(property)]
|
||||
#[dbus_interface(property)]
|
||||
async fn is_status_notifier_host_registered(&self) -> bool {
|
||||
let hosts = self.hosts.lock().unwrap(); // unwrap: mutex poisoning is okay
|
||||
!hosts.is_empty()
|
||||
|
@ -159,15 +159,15 @@ impl Watcher {
|
|||
}
|
||||
|
||||
/// StatusNotifierItemRegistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_interface(signal)]
|
||||
async fn status_notifier_item_registered(ctxt: &zbus::SignalContext<'_>, service: &str) -> zbus::Result<()>;
|
||||
|
||||
/// StatusNotifierItemUnregistered signal
|
||||
#[zbus(signal)]
|
||||
#[dbus_interface(signal)]
|
||||
async fn status_notifier_item_unregistered(ctxt: &zbus::SignalContext<'_>, service: &str) -> zbus::Result<()>;
|
||||
|
||||
/// RegisteredStatusNotifierItems property
|
||||
#[zbus(property)]
|
||||
#[dbus_interface(property)]
|
||||
async fn registered_status_notifier_items(&self) -> Vec<String> {
|
||||
let items = self.items.lock().unwrap(); // unwrap: mutex poisoning is okay
|
||||
items.iter().cloned().collect()
|
||||
|
@ -176,7 +176,7 @@ impl Watcher {
|
|||
// ------------------------------------------------------------------------
|
||||
|
||||
/// ProtocolVersion property
|
||||
#[zbus(property)]
|
||||
#[dbus_interface(property)]
|
||||
fn protocol_version(&self) -> i32 {
|
||||
0
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ async fn parse_service<'a>(
|
|||
) -> zbus::fdo::Result<(zbus::names::UniqueName<'static>, &'a str)> {
|
||||
if service.starts_with('/') {
|
||||
// they sent us just the object path
|
||||
if let Some(sender) = hdr.sender() {
|
||||
if let Some(sender) = hdr.sender()? {
|
||||
Ok((sender.to_owned(), service))
|
||||
} else {
|
||||
log::warn!("unknown sender");
|
||||
|
|
Loading…
Add table
Reference in a new issue