aboutsummaryrefslogtreecommitdiffstats
path: root/src/daemon.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-06 13:20:02 +0200
committersalmonik <raisersoft@proton.me>2026-05-06 13:20:02 +0200
commit932436d47af1c73b6d5781dedec84bd82bfe7ff4 (patch)
tree436d0554710e06b94ed62d5d429adff82f5c5fdb /src/daemon.rs
parentAdd install script, shell completions, and systemd service (diff)
downloadrsplayer-932436d47af1c73b6d5781dedec84bd82bfe7ff4.tar.gz
rsplayer-932436d47af1c73b6d5781dedec84bd82bfe7ff4.zip
Add toggle command to resume/pause playback and fix queue display bug
- Add 'rsp toggle' command to toggle between play and pause - Fix queue display showing wrong track as playing when shuffle is enabled - Update shell completion scripts for new toggle command
Diffstat (limited to '')
-rw-r--r--src/daemon.rs15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/daemon.rs b/src/daemon.rs
index dab0e5a..3379c7b 100644
--- a/src/daemon.rs
+++ b/src/daemon.rs
@@ -475,6 +475,15 @@ fn process_command(
475 audio.resume(); 475 audio.resume();
476 "Resumed\n".to_string() 476 "Resumed\n".to_string()
477 } 477 }
478 "toggle" => {
479 if audio.is_playing() {
480 audio.pause();
481 "Paused\n".to_string()
482 } else {
483 audio.resume();
484 "Resumed\n".to_string()
485 }
486 }
478 "stop" => { 487 "stop" => {
479 audio.stop(); 488 audio.stop();
480 // Clear queue on stop 489 // Clear queue on stop
@@ -685,6 +694,10 @@ fn process_command(
685 } else { 694 } else {
686 let mut output = String::new(); 695 let mut output = String::new();
687 let current_position = q.position; 696 let current_position = q.position;
697 let playing_track_idx = match q.shuffle {
698 ShuffleMode::None => current_position,
699 _ => *q.shuffled_indices.get(current_position).unwrap_or(&0),
700 };
688 // Use shuffled_indices for display order if shuffle is on 701 // Use shuffled_indices for display order if shuffle is on
689 let indices: Vec<usize> = if let ShuffleMode::None = q.shuffle { 702 let indices: Vec<usize> = if let ShuffleMode::None = q.shuffle {
690 (0..q.tracks.len()).collect() 703 (0..q.tracks.len()).collect()
@@ -694,7 +707,7 @@ fn process_command(
694 for (display_idx, &track_idx) in indices.iter().enumerate() { 707 for (display_idx, &track_idx) in indices.iter().enumerate() {
695 if let Some(track) = q.tracks.get(track_idx) { 708 if let Some(track) = q.tracks.get(track_idx) {
696 let track_str = track.display_string(display_idx); 709 let track_str = track.display_string(display_idx);
697 if track_idx == current_position { 710 if track_idx == playing_track_idx {
698 output.push_str(&format!("> {} (playing)\n", track_str)); 711 output.push_str(&format!("> {} (playing)\n", track_str));
699 } else { 712 } else {
700 output.push_str(&format!(" {}\n", track_str)); 713 output.push_str(&format!(" {}\n", track_str));