Compare commits

...

4 Commits

Author SHA1 Message Date
Denis Benato d890461777 Merge branch 'devel' into 'devel'
feat: add pulse mode to G835L and format file

See merge request asus-linux/asusctl!252
2026-01-24 20:12:56 +00:00
Denis Benato bcdbc45931 feat: make notifications disappear after 5 seconds from last action 2026-01-24 21:10:44 +01:00
Ghoul b97242981c feat: add pulse to G835L LED modes 2026-01-24 22:48:48 +05:00
Denis Benato 1d10f99e77 chore: updated CHANGELOG.md 2026-01-24 18:06:18 +01:00
4 changed files with 59 additions and 16 deletions
+2
View File
@@ -7,6 +7,8 @@
- Improve firmware attributes handling - Improve firmware attributes handling
- Very good looking UI restyling from @shevchenko0013 - Very good looking UI restyling from @shevchenko0013
- Added support for GA402NV matrix: thanks @Ghoul4500 - Added support for GA402NV matrix: thanks @Ghoul4500
- Fixed aura CLI interface
- Fixed LEDs handling in rogcc
## [6.3.1] ## [6.3.1]
+1 -1
View File
@@ -579,7 +579,7 @@
device_name: "G835L", device_name: "G835L",
product_id: "", product_id: "",
layout_name: "g814ji-per-key", layout_name: "g814ji-per-key",
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Comet, Flash], basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash],
basic_zones: [], basic_zones: [],
advanced_type: PerKey, advanced_type: PerKey,
power_zones: [Keyboard, Lightbar, Logo], power_zones: [Keyboard, Lightbar, Logo],
+37 -3
View File
@@ -3,7 +3,11 @@ pub mod setup_aura;
pub mod setup_fans; pub mod setup_fans;
pub mod setup_system; pub mod setup_system;
use std::sync::atomic::{AtomicU64, Ordering};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::time::Duration;
static TOAST_SEQ: AtomicU64 = AtomicU64::new(0);
use config_traits::StdConfig; use config_traits::StdConfig;
use log::warn; use log::warn;
@@ -70,15 +74,45 @@ pub fn show_toast(
handle: Weak<MainWindow>, handle: Weak<MainWindow>,
result: zbus::Result<()>, result: zbus::Result<()>,
) { ) {
// bump sequence so that any previously spawned timers won't clear newer toasts
let seq = TOAST_SEQ.fetch_add(1, Ordering::SeqCst) + 1;
match result { match result {
Ok(_) => { Ok(_) => {
slint::invoke_from_event_loop(move || handle.unwrap().invoke_show_toast(success)).ok() let delayed_handle = handle.clone();
let delayed_text = success.clone();
slint::invoke_from_event_loop(move || handle.unwrap().invoke_show_toast(success)).ok();
tokio::spawn(async move {
tokio::time::sleep(Duration::from_secs(5)).await;
if TOAST_SEQ.load(Ordering::SeqCst) == seq {
slint::invoke_from_event_loop(move || {
delayed_handle
.unwrap()
.invoke_clear_toast_if_matches(delayed_text)
})
.ok();
} }
Err(e) => slint::invoke_from_event_loop(move || { });
}
Err(e) => {
let delayed_handle = handle.clone();
let delayed_text = fail.clone();
slint::invoke_from_event_loop(move || {
log::warn!("{fail}: {e}"); log::warn!("{fail}: {e}");
handle.unwrap().invoke_show_toast(fail) handle.unwrap().invoke_show_toast(fail)
}) })
.ok(), .ok();
tokio::spawn(async move {
tokio::time::sleep(Duration::from_secs(5)).await;
if TOAST_SEQ.load(Ordering::SeqCst) == seq {
slint::invoke_from_event_loop(move || {
delayed_handle
.unwrap()
.invoke_clear_toast_if_matches(delayed_text)
})
.ok();
}
});
}
}; };
} }
+7
View File
@@ -43,6 +43,13 @@ export component MainWindow inherits Window {
toast = text != ""; toast = text != "";
toast_text = text; toast_text = text;
} }
callback clear_toast_if_matches(string);
clear_toast_if_matches(text) => {
if (toast && toast_text == text) {
toast = false;
toast_text = "";
}
}
callback exit-app(); callback exit-app();
callback show_notification(bool); callback show_notification(bool);
show_notification(yes) => { show_notification(yes) => {