mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Simplify the notifier
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -31,10 +31,10 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "asus-notify"
|
name = "asus-notify"
|
||||||
version = "3.0.0"
|
version = "3.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"daemon",
|
|
||||||
"notify-rust",
|
"notify-rust",
|
||||||
|
"rog_aura",
|
||||||
"rog_dbus",
|
"rog_dbus",
|
||||||
"rog_profiles",
|
"rog_profiles",
|
||||||
"rog_types",
|
"rog_types",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "asus-notify"
|
name = "asus-notify"
|
||||||
version = "3.0.0"
|
version = "3.0.1"
|
||||||
authors = ["Luke D Jones <luke@ljones.dev>"]
|
authors = ["Luke D Jones <luke@ljones.dev>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
@@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
# serialisation
|
# serialisation
|
||||||
serde_json = "^1.0"
|
serde_json = "^1.0"
|
||||||
rog_dbus = { path = "../rog-dbus" }
|
rog_dbus = { path = "../rog-dbus" }
|
||||||
rog_profiles = { path = "../rog-profiles" }
|
rog_aura = { path = "../rog-aura" }
|
||||||
rog_types = { path = "../rog-types" }
|
rog_types = { path = "../rog-types" }
|
||||||
daemon = { path = "../daemon" }
|
rog_profiles = { path = "../rog-profiles" }
|
||||||
|
|
||||||
[dependencies.notify-rust]
|
[dependencies.notify-rust]
|
||||||
version = "^4.3"
|
version = "^4.3"
|
||||||
|
|||||||
@@ -1,22 +1,33 @@
|
|||||||
use notify_rust::{Hint, Notification, NotificationHandle};
|
use notify_rust::{Hint, Notification, NotificationHandle};
|
||||||
|
use rog_aura::AuraEffect;
|
||||||
use rog_dbus::{DbusProxies, Signals};
|
use rog_dbus::{DbusProxies, Signals};
|
||||||
use rog_profiles::profiles::{FanLevel, Profile};
|
use rog_profiles::profiles::{FanLevel, Profile};
|
||||||
|
use rog_types::gfx_vendors::GfxVendors;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
const NOTIF_HEADER: &str = "ROG Control";
|
||||||
|
|
||||||
|
macro_rules! notify {
|
||||||
|
($notifier:ident, $last_notif:ident, $data:expr) => {
|
||||||
|
if let Some(notif) = $last_notif.take() {
|
||||||
|
notif.close();
|
||||||
|
}
|
||||||
|
if let Ok(x) = $notifier($data) {
|
||||||
|
$last_notif = Some(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
println!("asus-notify version {}", env!("CARGO_PKG_VERSION"));
|
println!("asus-notify version {}", env!("CARGO_PKG_VERSION"));
|
||||||
println!(" daemon version {}", daemon::VERSION);
|
|
||||||
println!(" rog-dbus version {}", rog_dbus::VERSION);
|
println!(" rog-dbus version {}", rog_dbus::VERSION);
|
||||||
|
|
||||||
let (proxies, conn) = DbusProxies::new()?;
|
let (proxies, conn) = DbusProxies::new()?;
|
||||||
let signals = Signals::new(&proxies)?;
|
let signals = Signals::new(&proxies)?;
|
||||||
|
|
||||||
let mut last_profile_notif: Option<NotificationHandle> = None;
|
let mut last_notification: Option<NotificationHandle> = None;
|
||||||
let mut last_led_notif: Option<NotificationHandle> = None;
|
|
||||||
let mut last_gfx_notif: Option<NotificationHandle> = None;
|
|
||||||
let mut last_chrg_notif: Option<NotificationHandle> = None;
|
|
||||||
|
|
||||||
let recv = proxies.setup_recv(conn);
|
let recv = proxies.setup_recv(conn);
|
||||||
let mut err_count = 0;
|
let mut err_count = 0;
|
||||||
@@ -36,42 +47,17 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
err_count = 0;
|
err_count = 0;
|
||||||
|
|
||||||
if let Ok(vendor) = signals.gfx_vendor.try_recv() {
|
if let Ok(data) = signals.led_mode.try_recv() {
|
||||||
if let Some(notif) = last_gfx_notif.take() {
|
notify!(do_led_notif, last_notification, &data);
|
||||||
notif.close();
|
|
||||||
}
|
|
||||||
let x = do_notif(&format!(
|
|
||||||
"Graphics mode changed to {}",
|
|
||||||
<&str>::from(vendor)
|
|
||||||
))?;
|
|
||||||
last_gfx_notif = Some(x);
|
|
||||||
}
|
}
|
||||||
|
if let Ok(data) = signals.profile.try_recv() {
|
||||||
if let Ok(limit) = signals.charge.try_recv() {
|
notify!(do_thermal_notif, last_notification, &data);
|
||||||
if let Some(notif) = last_chrg_notif.take() {
|
|
||||||
notif.close();
|
|
||||||
}
|
|
||||||
let x = do_notif(&format!("Battery charge limit changed to {}", limit))?;
|
|
||||||
last_chrg_notif = Some(x);
|
|
||||||
}
|
}
|
||||||
|
if let Ok(data) = signals.charge.try_recv() {
|
||||||
if let Ok(profile) = signals.profile.try_recv() {
|
notify!(do_charge_notif, last_notification, &data);
|
||||||
if let Some(notif) = last_profile_notif.take() {
|
|
||||||
notif.close();
|
|
||||||
}
|
|
||||||
let x = do_thermal_notif(&profile)?;
|
|
||||||
last_profile_notif = Some(x);
|
|
||||||
}
|
}
|
||||||
|
if let Ok(data) = signals.gfx_vendor.try_recv() {
|
||||||
if let Ok(ledmode) = signals.led_mode.try_recv() {
|
notify!(do_gfx_notif, last_notification, &data);
|
||||||
if let Some(notif) = last_led_notif.take() {
|
|
||||||
notif.close();
|
|
||||||
}
|
|
||||||
let x = do_notif(&format!(
|
|
||||||
"Keyboard LED mode changed to {}",
|
|
||||||
ledmode.mode_name()
|
|
||||||
))?;
|
|
||||||
last_led_notif = Some(x);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,11 +86,30 @@ fn do_thermal_notif(profile: &Profile) -> Result<NotificationHandle, Box<dyn Err
|
|||||||
Ok(x)
|
Ok(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn do_notif(body: &str) -> Result<NotificationHandle, Box<dyn Error>> {
|
macro_rules! base_notification {
|
||||||
let x = Notification::new()
|
($body:expr) => {
|
||||||
.summary("ASUS ROG")
|
Notification::new()
|
||||||
.body(body)
|
.summary(NOTIF_HEADER)
|
||||||
.timeout(2000)
|
.body($body)
|
||||||
.show()?;
|
.timeout(2000)
|
||||||
Ok(x)
|
.show()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn do_led_notif(ledmode: &AuraEffect) -> Result<NotificationHandle, notify_rust::error::Error> {
|
||||||
|
base_notification!(&format!(
|
||||||
|
"Keyboard LED mode changed to {}",
|
||||||
|
ledmode.mode_name()
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn do_charge_notif(limit: &u8) -> Result<NotificationHandle, notify_rust::error::Error> {
|
||||||
|
base_notification!(&format!("Battery charge limit changed to {}", limit))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn do_gfx_notif(vendor: &GfxVendors) -> Result<NotificationHandle, notify_rust::error::Error> {
|
||||||
|
base_notification!(&format!(
|
||||||
|
"Graphics mode changed to {}",
|
||||||
|
<&str>::from(vendor)
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ impl Default for Config {
|
|||||||
"silent".into(),
|
"silent".into(),
|
||||||
0,
|
0,
|
||||||
100,
|
100,
|
||||||
true,
|
false,
|
||||||
FanLevel::Silent,
|
FanLevel::Silent,
|
||||||
"".to_string(),
|
"".to_string(),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user