Compare commits
2 Commits
007786d3fb
...
cbfc072966
Author | SHA1 | Date | |
---|---|---|---|
cbfc072966 | |||
5e1e98b816 |
@ -2,10 +2,8 @@
|
||||
name = "snot"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
authors = ["candifloss <candifloss.cc>"]
|
||||
|
||||
[dependencies]
|
||||
zbus = "4.4.0"
|
||||
dbus = "0.9.7"
|
||||
rson_rs = "0.2.1"
|
||||
tokio = {version = "^1.39.2", features = ["full"] }
|
||||
futures = "0.3"
|
||||
futures-util = "0.3"
|
63
src/main.rs
63
src/main.rs
@ -1,39 +1,32 @@
|
||||
use zbus::{Connection, MessageStream, MatchRule, fdo};
|
||||
use zbus::zvariant::{OwnedValue, Type};
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Notification {
|
||||
// ... fields
|
||||
//
|
||||
struct Notif {
|
||||
app_name: String,
|
||||
replace_id: u32,
|
||||
ico: String, //It's string, right?
|
||||
summary: String,
|
||||
body: String,
|
||||
//Actions
|
||||
//Hints
|
||||
expir_timeout: i32,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), zbus::Error> {
|
||||
let conn = Connection::new_session()?;
|
||||
|
||||
// Create a match rule to filter for notification signals
|
||||
let match_rule = MatchRule::new_signal()
|
||||
.interface("org.freedesktop.Notifications")
|
||||
.member("Notify")
|
||||
.build()?;
|
||||
|
||||
// Add the match rule to the connection
|
||||
conn.add_match(&match_rule)?;
|
||||
|
||||
let stream = MessageStream::new(&conn)?;
|
||||
|
||||
while let Some(msg) = stream.next().await? {
|
||||
// Extract notification data from the message
|
||||
// ...
|
||||
|
||||
// Create a Notification struct
|
||||
let notification = Notification {
|
||||
// ...
|
||||
};
|
||||
|
||||
// Handle the notification
|
||||
println!("Received notification: {:?}", notification);
|
||||
// Summary should be generally <= 40 chars, as per the specification.
|
||||
fn truncate_summary(notif: &mut Notif) {
|
||||
if notif.summary.len() > 40 {
|
||||
notif.summary.truncate(39);
|
||||
notif.summary.push_str("…");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut not = Notif {
|
||||
app_name: "snot".to_string(),
|
||||
replace_id: 0,
|
||||
ico: "alert".to_string(),
|
||||
summary: "This is a very long suuummmaaarrryyy! Don't you believe me????".to_string(),
|
||||
body: "short body(hehe)".to_string(),
|
||||
expir_timeout: 0
|
||||
};
|
||||
truncate_summary(&mut not); //Limit the summary length
|
||||
|
||||
println!("{}",not.summary);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user