aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/audio.rs9
-rw-r--r--src/config.rs18
-rw-r--r--src/daemon.rs4
3 files changed, 25 insertions, 6 deletions
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 {
18 is_playing: Arc<AtomicBool>, 18 is_playing: Arc<AtomicBool>,
19 current_track: Arc<Mutex<Option<std::path::PathBuf>>>, 19 current_track: Arc<Mutex<Option<std::path::PathBuf>>>,
20 track_ended: Arc<AtomicBool>, 20 track_ended: Arc<AtomicBool>,
21 volume: Arc<Mutex<f32>>,
21} 22}
22 23
23impl AudioEngine { 24impl AudioEngine {
@@ -48,6 +49,7 @@ impl AudioEngine {
48 is_playing, 49 is_playing,
49 current_track, 50 current_track,
50 track_ended, 51 track_ended,
52 volume,
51 } 53 }
52 } 54 }
53 55
@@ -75,6 +77,13 @@ impl AudioEngine {
75 let _ = self.command_tx.send(AudioCommand::SetVolume(volume)); 77 let _ = self.command_tx.send(AudioCommand::SetVolume(volume));
76 } 78 }
77 79
80 pub fn get_volume(&self) -> u8 {
81 self.volume
82 .lock()
83 .map(|v| (*v * 100.0) as u8)
84 .unwrap_or(100)
85 }
86
78 pub fn is_playing(&self) -> bool { 87 pub fn is_playing(&self) -> bool {
79 self.is_playing.load(Ordering::SeqCst) 88 self.is_playing.load(Ordering::SeqCst)
80 } 89 }
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 {
20 20
21impl Config { 21impl Config {
22 pub fn load() -> Result<Self, Box<dyn std::error::Error>> { 22 pub fn load() -> Result<Self, Box<dyn std::error::Error>> {
23 let proj_dirs = ProjectDirs::from("com", "rsplayer", "rsplayer") 23 let config_dir = if cfg!(debug_assertions) {
24 .ok_or("Failed to get project directories")?; 24 std::env::current_exe()?
25 25 .parent()
26 let config_dir = if let Ok(xdg) = std::env::var("XDG_CONFIG_HOME") { 26 .map(|p| p.to_path_buf())
27 PathBuf::from(xdg).join("rsplayer") 27 .unwrap_or_else(|| PathBuf::from("."))
28 } else { 28 } else {
29 proj_dirs.config_dir().to_path_buf() 29 let proj_dirs = ProjectDirs::from("com", "rsplayer", "rsplayer")
30 .ok_or("Failed to get project directories")?;
31 if let Ok(xdg) = std::env::var("XDG_CONFIG_HOME") {
32 PathBuf::from(xdg).join("rsplayer")
33 } else {
34 proj_dirs.config_dir().to_path_buf()
35 }
30 }; 36 };
31 37
32 let config_path = config_dir.join("config.toml"); 38 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(
645 format!("File not found: {}\n", path_str) 645 format!("File not found: {}\n", path_str)
646 } 646 }
647 } 647 }
648 _ if cmd == "volume" => {
649 let vol = audio.get_volume();
650 format!("Volume: {}\n", vol)
651 }
648 _ if cmd.starts_with("volume ") => { 652 _ if cmd.starts_with("volume ") => {
649 if let Ok(level) = cmd[7..].trim().parse::<u8>() { 653 if let Ok(level) = cmd[7..].trim().parse::<u8>() {
650 audio.set_volume(level as f32 / 100.0); 654 audio.set_volume(level as f32 / 100.0);