From 81d61ce82c3fc7882f373b671852cb9b1e2ff0d9 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Thu, 2 Mar 2017 14:28:29 -0500 Subject: [PATCH] Use lib for notifications Should help with #2, and maybe #1, at least if the comment by @hoodie in https://github.com/hoodie/notify-rust/issues/10 comes to fruition. Certainly a step up from running notify-send manually. --- Cargo.lock | 20 ++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 17 +++++++++-------- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d326bb2..048705b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,6 +4,7 @@ version = "0.1.0" dependencies = [ "imap 0.0.6 (git+https://github.com/jonhoo/rust-imap.git?branch=idle)", "mailparse 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "notify-rust 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)", "systray 0.1.1 (git+https://github.com/qdot/systray-rs.git?branch=linux-core)", "toml 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -156,6 +157,15 @@ dependencies = [ "vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "dbus" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "dtoa" version = "0.4.1" @@ -508,6 +518,14 @@ name = "nom" version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "notify-rust" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dbus 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-traits" version = "0.1.37" @@ -940,6 +958,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de1e760d7b6535af4241fca8bd8adf68e2e7edacc6b29f5d399050c5e48cf88c" "checksum clang-sys 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f98f0715ff67f27ca6a2f8f0ffc2a56f8edbc7acd57489c29eadc3a15c4eafe" "checksum clap 2.20.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7db281b0520e97fbd15cd615dcd8f8bcad0c26f5f7d5effe705f090f39e9a758" +"checksum dbus 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58ec7b4cac6f79f36af1cd9cfdb9b935fc5a4e899f494ee03a3a6165f7d10b4b" "checksum dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80c8b71fd71146990a9742fc06dcbbde19161a267e0ad4e572c35162f4578c90" "checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" "checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" @@ -977,6 +996,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8c256fd9471521bcb84c3cdba98921497f1a331cbc15b8030fc63b82050ce" +"checksum notify-rust 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "26508471f9e6ee12ebe949ece86ff01153e5d9a9ca331e0a6e9661502fb4e9a9" "checksum num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e1cbfa3781f3fe73dc05321bed52a06d2d491eaa764c52335cf4399f046ece99" "checksum openssl 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)" = "c4117b6244aac42ed0150a6019b4d953d28247c5dd6ae6f46ae469b5f2318733" "checksum openssl-sys 0.7.17 (registry+https://github.com/rust-lang/crates.io-index)" = "89c47ee94c352eea9ddaf8e364be7f978a3bb6d66d73176572484238dd5a5c3f" diff --git a/Cargo.toml b/Cargo.toml index 25f447b..6f4a428 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,3 +22,4 @@ systray = { git = "https://github.com/qdot/systray-rs.git", branch = "linux-core mailparse = "0.5.1" toml = "0.3.1" xdg = "2.0.0" +notify-rust = "3.2.1" diff --git a/src/main.rs b/src/main.rs index c242a17..e0f4a59 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ extern crate imap; extern crate openssl; extern crate systray; extern crate mailparse; +extern crate notify_rust; use openssl::ssl::{SslContext, SslMethod}; use imap::client::Client; @@ -197,16 +198,16 @@ fn main() { } if !subjects.is_empty() { + use notify_rust::{Notification, NotificationHint}; let title = format!("@{} has new mail ({} unseen)", account, num_unseen); let notification = format!("> {}", subjects.join("\n> ")); - Command::new("/usr/bin/notify-send") - .arg("-i") - .arg("notification-message-email") - .arg("-c") - .arg("email") - .arg(title) - .arg(notification) - .status() + Notification::new() + .summary(&title) + .body(¬ification) + .icon("notification-message-email") + .hint(NotificationHint::Category("email".to_owned())) + .timeout(-1) + .show() .expect("failed to launch notify-send"); }