【发布时间】:2015-06-30 06:59:09
【问题描述】:
我想使用 https://crates.io/crates/dbus 通过 D-BUS 发送桌面通知。
我目前的做法是:
let c = Connection::get_private(BusType::Session).unwrap();
//let m = Message::new_method_call("org.freedesktop.DBus", "/", "org.freedesktop.DBus", "ListNames").unwrap();
let mut m = Message::new_method_call(
"org.freedesktop.Notifications",
"/org/freedesktop/Notifications",
"org.freedesktop.Notifications",
"Notify"
).unwrap();
m.append_items(&[
MessageItem::Str("appname".to_string()), // appname
MessageItem::UInt32(0), // notification to update
MessageItem::Str("icon".to_string()), // icon
MessageItem::Str("summary".to_string()), // summary (title)
MessageItem::Str("body".to_string()), // body
???, // actions
???, // hints
MessageItem::UInt32(9000), // timeout
]);
我想不出一种有意义的方式来满足Notify 方法的接口。根据 D-Feet 的说法,它看起来像这样:
Notify(
String app_name,
UInt32 replaces_id,
String app_icon,
String summary,
String body,
Array of [String] actions,
Dict of {String, Variant} hints,
Int32
)
尤其是Array of [String]、Dict of {String, Variant} 让我很困惑。
【问题讨论】:
-
我猜
Array of [String]被MessageItem::Array枚举变体覆盖,但我不确定Dict。有MessageItem::DictEntry,但是说不上应该怎么用。 -
有一个
from_dict...也许Dict表示为一个键/值元组数组,而DictEntry只是一个...
标签: notifications rust dbus freedesktop.org