diff --git a/Makefile b/Makefile index 190d4f8a..5bc05dd0 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ install: $(INSTALL_DATA) "./data/_asusctl" "$(DESTDIR)$(zshcpl)/_asusctl" $(INSTALL_DATA) "./data/completions/asusctl.fish" "$(DESTDIR)$(datarootdir)/fish/vendor_completions.d/asusctl.fish" - cd data && find "./anime" -type f -exec install -Dm 755 "{}" "$(DESTDIR)$(datarootdir)/asusd/{}" \; + cd rog-anime/data && find "./anime" -type f -exec install -Dm 755 "{}" "$(DESTDIR)$(datarootdir)/asusd/{}" \; $(INSTALL_PROGRAM) "./target/release/$(BIN_SD)" "$(DESTDIR)$(bindir)/$(BIN_SD)" $(INSTALL_PROGRAM) "./target/release/$(BIN_SC)" "$(DESTDIR)$(bindir)/$(BIN_SC)" diff --git a/daemon/src/config.rs b/daemon/src/config.rs index 5f5b0a6c..273fbcac 100644 --- a/daemon/src/config.rs +++ b/daemon/src/config.rs @@ -1,10 +1,8 @@ -use log::{error, info, warn}; +use log::{error, warn}; use serde_derive::{Deserialize, Serialize}; use std::fs::{File, OpenOptions}; use std::io::{Read, Write}; -use crate::VERSION; - pub static CONFIG_PATH: &str = "/etc/asusd/asusd.conf"; #[derive(Deserialize, Serialize)] diff --git a/daemon/src/daemon.rs b/daemon/src/daemon.rs index 105cfba9..78318fc6 100644 --- a/daemon/src/daemon.rs +++ b/daemon/src/daemon.rs @@ -28,7 +28,6 @@ use std::sync::Arc; use std::sync::Mutex; use daemon::ctrl_rog_bios::CtrlRogBios; -use zvariant::ObjectPath; static PROFILE_CONFIG_PATH: &str = "/etc/asusd/profile.conf"; @@ -183,18 +182,18 @@ fn start_daemon() -> Result<(), Box> { }); // Run zbus server - object_server - .with( - &ObjectPath::from_str_unchecked("/org/asuslinux/Charge"), - |obj: &CtrlCharge| { - let x = obj.limit(); - obj.notify_charge(x as u8) - }, - ) - .map_err(|err| { - warn!("object_server notify_charge error: {}", err); - }) - .ok(); + // object_server + // .with( + // &ObjectPath::from_str_unchecked("/org/asuslinux/Charge"), + // |obj: &CtrlCharge| { + // let x = obj.limit(); + // obj.notify_charge(x as u8) + // }, + // ) + // .map_err(|err| { + // warn!("object_server notify_charge error: {}", err); + // }) + // .ok(); // Loop to check errors and iterate zbus server loop { diff --git a/data/user-example.json b/data/user-example.json deleted file mode 100644 index 9f3600e9..00000000 --- a/data/user-example.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "anime": [ - { - "AsusAnimation": { - "file": "/usr/share/asusd/anime/asus/rog/Sunset.gif", - "time": { - "Cycles": 1 - }, - "brightness": 0.5 - } - }, - { - "ImageAnimation": { - "file": "/usr/share/asusd/anime/custom/sonic-run.gif", - "scale": 0.9, - "angle": 0.65, - "translation": [ - 0.0, - 0.0 - ], - "time": { - "Time": { - "secs": 5, - "nanos": 0 - } - }, - "brightness": 0.5 - } - }, - { - "Image": { - "file": "/usr/share/asusd/anime/custom/rust.png", - "scale": 1.0, - "angle": 0.0, - "translation": [ - 0.0, - 0.0 - ], - "brightness": 0.6 - } - }, - { - "Pause": { - "secs": 6, - "nanos": 0 - } - }, - { - "ImageAnimation": { - "file": "/usr/share/asusd/anime/custom/sonic-wait.gif", - "scale": 0.9, - "angle": 0.0, - "translation": [ - 3.0, - 2.0 - ], - "time": { - "Cycles": 2 - }, - "brightness": 0.5 - } - } - ] -} diff --git a/data/anime/asus/festive/Cupid.gif b/rog-anime/data/anime/asus/festive/Cupid.gif similarity index 100% rename from data/anime/asus/festive/Cupid.gif rename to rog-anime/data/anime/asus/festive/Cupid.gif diff --git a/data/anime/asus/festive/Firework.gif b/rog-anime/data/anime/asus/festive/Firework.gif similarity index 100% rename from data/anime/asus/festive/Firework.gif rename to rog-anime/data/anime/asus/festive/Firework.gif diff --git a/data/anime/asus/festive/Halloween.gif b/rog-anime/data/anime/asus/festive/Halloween.gif similarity index 100% rename from data/anime/asus/festive/Halloween.gif rename to rog-anime/data/anime/asus/festive/Halloween.gif diff --git a/data/anime/asus/festive/Happy Holiday.gif b/rog-anime/data/anime/asus/festive/Happy Holiday.gif similarity index 100% rename from data/anime/asus/festive/Happy Holiday.gif rename to rog-anime/data/anime/asus/festive/Happy Holiday.gif diff --git a/data/anime/asus/festive/Happy new year.gif b/rog-anime/data/anime/asus/festive/Happy new year.gif similarity index 100% rename from data/anime/asus/festive/Happy new year.gif rename to rog-anime/data/anime/asus/festive/Happy new year.gif diff --git a/data/anime/asus/festive/Lantern.gif b/rog-anime/data/anime/asus/festive/Lantern.gif similarity index 100% rename from data/anime/asus/festive/Lantern.gif rename to rog-anime/data/anime/asus/festive/Lantern.gif diff --git a/data/anime/asus/festive/Love u mom.gif b/rog-anime/data/anime/asus/festive/Love u mom.gif similarity index 100% rename from data/anime/asus/festive/Love u mom.gif rename to rog-anime/data/anime/asus/festive/Love u mom.gif diff --git a/data/anime/asus/festive/Mother's day.gif b/rog-anime/data/anime/asus/festive/Mother's day.gif similarity index 100% rename from data/anime/asus/festive/Mother's day.gif rename to rog-anime/data/anime/asus/festive/Mother's day.gif diff --git a/data/anime/asus/festive/Valentine's Day.gif b/rog-anime/data/anime/asus/festive/Valentine's Day.gif similarity index 100% rename from data/anime/asus/festive/Valentine's Day.gif rename to rog-anime/data/anime/asus/festive/Valentine's Day.gif diff --git a/data/anime/asus/festive/Year of the Ox.gif b/rog-anime/data/anime/asus/festive/Year of the Ox.gif similarity index 100% rename from data/anime/asus/festive/Year of the Ox.gif rename to rog-anime/data/anime/asus/festive/Year of the Ox.gif diff --git a/data/anime/asus/gaming/Bird.gif b/rog-anime/data/anime/asus/gaming/Bird.gif similarity index 100% rename from data/anime/asus/gaming/Bird.gif rename to rog-anime/data/anime/asus/gaming/Bird.gif diff --git a/data/anime/asus/gaming/Controller.gif b/rog-anime/data/anime/asus/gaming/Controller.gif similarity index 100% rename from data/anime/asus/gaming/Controller.gif rename to rog-anime/data/anime/asus/gaming/Controller.gif diff --git a/data/anime/asus/gaming/FPS.gif b/rog-anime/data/anime/asus/gaming/FPS.gif similarity index 100% rename from data/anime/asus/gaming/FPS.gif rename to rog-anime/data/anime/asus/gaming/FPS.gif diff --git a/data/anime/asus/gaming/Fight.gif b/rog-anime/data/anime/asus/gaming/Fight.gif similarity index 100% rename from data/anime/asus/gaming/Fight.gif rename to rog-anime/data/anime/asus/gaming/Fight.gif diff --git a/data/anime/asus/gaming/Keyboard.gif b/rog-anime/data/anime/asus/gaming/Keyboard.gif similarity index 100% rename from data/anime/asus/gaming/Keyboard.gif rename to rog-anime/data/anime/asus/gaming/Keyboard.gif diff --git a/data/anime/asus/gaming/MOBA.gif b/rog-anime/data/anime/asus/gaming/MOBA.gif similarity index 100% rename from data/anime/asus/gaming/MOBA.gif rename to rog-anime/data/anime/asus/gaming/MOBA.gif diff --git a/data/anime/asus/gaming/UFO.gif b/rog-anime/data/anime/asus/gaming/UFO.gif similarity index 100% rename from data/anime/asus/gaming/UFO.gif rename to rog-anime/data/anime/asus/gaming/UFO.gif diff --git a/data/anime/asus/music/DJ.gif b/rog-anime/data/anime/asus/music/DJ.gif similarity index 100% rename from data/anime/asus/music/DJ.gif rename to rog-anime/data/anime/asus/music/DJ.gif diff --git a/data/anime/asus/music/Diamond.gif b/rog-anime/data/anime/asus/music/Diamond.gif similarity index 100% rename from data/anime/asus/music/Diamond.gif rename to rog-anime/data/anime/asus/music/Diamond.gif diff --git a/data/anime/asus/music/Music-player.gif b/rog-anime/data/anime/asus/music/Music-player.gif similarity index 100% rename from data/anime/asus/music/Music-player.gif rename to rog-anime/data/anime/asus/music/Music-player.gif diff --git a/data/anime/asus/rog/For-those-who-dare.gif b/rog-anime/data/anime/asus/rog/For-those-who-dare.gif similarity index 100% rename from data/anime/asus/rog/For-those-who-dare.gif rename to rog-anime/data/anime/asus/rog/For-those-who-dare.gif diff --git a/data/anime/asus/rog/For-those-who-dare_2.gif b/rog-anime/data/anime/asus/rog/For-those-who-dare_2.gif similarity index 100% rename from data/anime/asus/rog/For-those-who-dare_2.gif rename to rog-anime/data/anime/asus/rog/For-those-who-dare_2.gif diff --git a/data/anime/asus/rog/Fragment.gif b/rog-anime/data/anime/asus/rog/Fragment.gif similarity index 100% rename from data/anime/asus/rog/Fragment.gif rename to rog-anime/data/anime/asus/rog/Fragment.gif diff --git a/data/anime/asus/rog/Infinite-triangle.gif b/rog-anime/data/anime/asus/rog/Infinite-triangle.gif similarity index 100% rename from data/anime/asus/rog/Infinite-triangle.gif rename to rog-anime/data/anime/asus/rog/Infinite-triangle.gif diff --git a/data/anime/asus/rog/Kaleidoscope1.gif b/rog-anime/data/anime/asus/rog/Kaleidoscope1.gif similarity index 100% rename from data/anime/asus/rog/Kaleidoscope1.gif rename to rog-anime/data/anime/asus/rog/Kaleidoscope1.gif diff --git a/data/anime/asus/rog/Kaleidoscope2.gif b/rog-anime/data/anime/asus/rog/Kaleidoscope2.gif similarity index 100% rename from data/anime/asus/rog/Kaleidoscope2.gif rename to rog-anime/data/anime/asus/rog/Kaleidoscope2.gif diff --git a/data/anime/asus/rog/Kaleidoscope2.png b/rog-anime/data/anime/asus/rog/Kaleidoscope2.png similarity index 100% rename from data/anime/asus/rog/Kaleidoscope2.png rename to rog-anime/data/anime/asus/rog/Kaleidoscope2.png diff --git a/data/anime/asus/rog/ROG city.gif b/rog-anime/data/anime/asus/rog/ROG city.gif similarity index 100% rename from data/anime/asus/rog/ROG city.gif rename to rog-anime/data/anime/asus/rog/ROG city.gif diff --git a/data/anime/asus/rog/ROG glitch.gif b/rog-anime/data/anime/asus/rog/ROG glitch.gif similarity index 100% rename from data/anime/asus/rog/ROG glitch.gif rename to rog-anime/data/anime/asus/rog/ROG glitch.gif diff --git a/data/anime/asus/rog/Sunset.gif b/rog-anime/data/anime/asus/rog/Sunset.gif similarity index 100% rename from data/anime/asus/rog/Sunset.gif rename to rog-anime/data/anime/asus/rog/Sunset.gif diff --git a/data/anime/asus/trend/Dog.gif b/rog-anime/data/anime/asus/trend/Dog.gif similarity index 100% rename from data/anime/asus/trend/Dog.gif rename to rog-anime/data/anime/asus/trend/Dog.gif diff --git a/data/anime/asus/trend/Hero.gif b/rog-anime/data/anime/asus/trend/Hero.gif similarity index 100% rename from data/anime/asus/trend/Hero.gif rename to rog-anime/data/anime/asus/trend/Hero.gif diff --git a/data/anime/asus/trend/Ski.gif b/rog-anime/data/anime/asus/trend/Ski.gif similarity index 100% rename from data/anime/asus/trend/Ski.gif rename to rog-anime/data/anime/asus/trend/Ski.gif diff --git a/data/anime/asus/trend/The scream.gif b/rog-anime/data/anime/asus/trend/The scream.gif similarity index 100% rename from data/anime/asus/trend/The scream.gif rename to rog-anime/data/anime/asus/trend/The scream.gif diff --git a/data/anime/asus/trend/Wave.gif b/rog-anime/data/anime/asus/trend/Wave.gif similarity index 100% rename from data/anime/asus/trend/Wave.gif rename to rog-anime/data/anime/asus/trend/Wave.gif diff --git a/data/anime/custom/nyancat_zombie.gif b/rog-anime/data/anime/custom/nyancat_zombie.gif similarity index 100% rename from data/anime/custom/nyancat_zombie.gif rename to rog-anime/data/anime/custom/nyancat_zombie.gif diff --git a/data/anime/custom/rust.png b/rog-anime/data/anime/custom/rust.png similarity index 100% rename from data/anime/custom/rust.png rename to rog-anime/data/anime/custom/rust.png diff --git a/data/anime/custom/sonic-run.gif b/rog-anime/data/anime/custom/sonic-run.gif similarity index 100% rename from data/anime/custom/sonic-run.gif rename to rog-anime/data/anime/custom/sonic-run.gif diff --git a/data/anime/custom/sonic-wait.gif b/rog-anime/data/anime/custom/sonic-wait.gif similarity index 100% rename from data/anime/custom/sonic-wait.gif rename to rog-anime/data/anime/custom/sonic-wait.gif diff --git a/supergfx/src/cli.rs b/supergfx/src/cli.rs index f2926cae..ae0369d0 100644 --- a/supergfx/src/cli.rs +++ b/supergfx/src/cli.rs @@ -1,3 +1,5 @@ +//! Basic CLI tool to control the `supergfxd` daemon + use std::{env::args, sync::mpsc::channel}; use supergfxctl::{ gfx_vendors::{GfxRequiredUserAction, GfxVendors}, @@ -59,6 +61,7 @@ fn do_gfx(command: CliStart) -> Result<(), Box> { } println!("If anything fails check `journalctl -b -u supergfxd`\n"); + println!("Note that nvidia-drm.modeset=0 is required in kernel cmdline to enable the nvidia drivers to be unloaded on demand`\n"); proxy.gfx_write_mode(&mode).map_err(|err|{ println!("Graphics mode change error. You may be in an invalid state."); diff --git a/supergfx/src/controller.rs b/supergfx/src/controller.rs index e6e788b4..67632b30 100644 --- a/supergfx/src/controller.rs +++ b/supergfx/src/controller.rs @@ -543,7 +543,7 @@ impl CtrlGraphics { // exit if 3 minutes pass if Instant::now().duration_since(start_time).as_secs() > 180 { warn!("{}", THREAD_TIMEOUT_MSG); - return Ok(THREAD_TIMEOUT_MSG.into()); + return Err(GfxError::DisplayManagerTimeout(THREAD_TIMEOUT_MSG.into())); } // Don't spin at max speed diff --git a/supergfx/src/error.rs b/supergfx/src/error.rs index d47c7d1a..bc261774 100644 --- a/supergfx/src/error.rs +++ b/supergfx/src/error.rs @@ -4,8 +4,6 @@ use std::{error, process::ExitStatus}; #[derive(Debug)] pub enum GfxError { ParseVendor, - ParsePower, - Bus(String, std::io::Error), DisplayManagerAction(String, ExitStatus), DisplayManagerTimeout(String), AsusGsyncModeActive, @@ -26,8 +24,6 @@ impl fmt::Display for GfxError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { GfxError::ParseVendor => write!(f, "Could not parse vendor name"), - GfxError::ParsePower => write!(f, "Could not parse dGPU power status"), - GfxError::Bus(func, error) => write!(f, "Bus error: {}: {}", func, error), GfxError::DisplayManagerAction(action, status) => { write!(f, "Display-manager action {} failed: {}", action, status) } diff --git a/supergfx/src/lib.rs b/supergfx/src/lib.rs index 52a44f2b..30194af4 100644 --- a/supergfx/src/lib.rs +++ b/supergfx/src/lib.rs @@ -1,17 +1,28 @@ +/// The configuration for graphics. This should be saved and loaded on boot. pub mod config; +/// Control functions for setting graphics. pub mod controller; +/// Error: 404 pub mod error; +/// Mode names, follows what distros defined as common. pub mod gfx_vendors; /// Special-case functions for check/read/write of key functions on unique laptops /// such as the G-Sync mode available on some ASUS ROG laptops pub mod special; +/// System interface helpers. pub mod system; +/// Defined DBUS Interface for supergfxctl pub mod zbus_iface; +/// Defined DBUS Proxy for supergfxctl pub mod zbus_proxy; +/// Helper to expose the current crate version to external code pub const VERSION: &str = env!("CARGO_PKG_VERSION"); +/// Generic path that is used to save the daemon config state pub const CONFIG_PATH: &str = "/etc/supergfxd.conf"; +/// Destination name to be used in the daemon when setting up DBUS connection pub const DBUS_DEST_NAME: &str = "org.supergfxctl.Daemon"; +/// Interface path name. Should be common across daemon and client. pub const DBUS_IFACE_PATH: &str = "/org/supergfxctl/Gfx"; const NVIDIA_DRIVERS: [&str; 4] = ["nvidia_drm", "nvidia_modeset", "nvidia_uvm", "nvidia"]; diff --git a/supergfx/src/zbus_proxy.rs b/supergfx/src/zbus_proxy.rs index 2f7a1725..21edaafa 100644 --- a/supergfx/src/zbus_proxy.rs +++ b/supergfx/src/zbus_proxy.rs @@ -19,7 +19,7 @@ //! //! …consequently `zbus-xmlgen` did not generate code for the above interfaces. -use std::sync::mpsc::{Receiver, Sender}; +use std::sync::mpsc::{Sender}; use zbus::{dbus_proxy, Connection, Message, Result};