From 9b6e55fe23890ee89efd5b16605ae44b903471e6 Mon Sep 17 00:00:00 2001 From: salmonik Date: Tue, 5 May 2026 23:12:45 +0200 Subject: Add dev/release config separation and volume query command --- src/audio.rs | 9 +++++++++ src/config.rs | 18 ++++++++++++------ src/daemon.rs | 4 ++++ 3 files changed, 25 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/audio.rs b/src/audio.rs index 4e26263..93eb8e6 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -18,6 +18,7 @@ pub struct AudioEngine { is_playing: Arc, current_track: Arc>>, track_ended: Arc, + volume: Arc>, } impl AudioEngine { @@ -48,6 +49,7 @@ impl AudioEngine { is_playing, current_track, track_ended, + volume, } } @@ -75,6 +77,13 @@ impl AudioEngine { let _ = self.command_tx.send(AudioCommand::SetVolume(volume)); } + pub fn get_volume(&self) -> u8 { + self.volume + .lock() + .map(|v| (*v * 100.0) as u8) + .unwrap_or(100) + } + pub fn is_playing(&self) -> bool { self.is_playing.load(Ordering::SeqCst) } diff --git a/src/config.rs b/src/config.rs index cda59f4..42573ed 100644 --- a/src/config.rs +++ b/src/config.rs @@ -20,13 +20,19 @@ pub struct Config { impl Config { pub fn load() -> Result> { - let proj_dirs = ProjectDirs::from("com", "rsplayer", "rsplayer") - .ok_or("Failed to get project directories")?; - - let config_dir = if let Ok(xdg) = std::env::var("XDG_CONFIG_HOME") { - PathBuf::from(xdg).join("rsplayer") + let config_dir = if cfg!(debug_assertions) { + std::env::current_exe()? + .parent() + .map(|p| p.to_path_buf()) + .unwrap_or_else(|| PathBuf::from(".")) } else { - proj_dirs.config_dir().to_path_buf() + let proj_dirs = ProjectDirs::from("com", "rsplayer", "rsplayer") + .ok_or("Failed to get project directories")?; + if let Ok(xdg) = std::env::var("XDG_CONFIG_HOME") { + PathBuf::from(xdg).join("rsplayer") + } else { + proj_dirs.config_dir().to_path_buf() + } }; let config_path = config_dir.join("config.toml"); diff --git a/src/daemon.rs b/src/daemon.rs index b0da698..dab0e5a 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -645,6 +645,10 @@ fn process_command( format!("File not found: {}\n", path_str) } } + _ if cmd == "volume" => { + let vol = audio.get_volume(); + format!("Volume: {}\n", vol) + } _ if cmd.starts_with("volume ") => { if let Ok(level) = cmd[7..].trim().parse::() { audio.set_volume(level as f32 / 100.0); -- cgit v1.2.3