summaryrefslogtreecommitdiff
path: root/mpdmenu
diff options
context:
space:
mode:
authoryuzu-eva <cafebabe@disroot.org>2025-05-08 14:01:37 +0200
committeryuzu-eva <cafebabe@disroot.org>2025-05-08 14:01:37 +0200
commitef7c1605a027b52bbff1b01ea693b60f53fa3a71 (patch)
tree1089334258aefbd459d18cf6968e78f1194739b0 /mpdmenu
initial commit
Diffstat (limited to 'mpdmenu')
-rwxr-xr-xmpdmenu54
1 files changed, 54 insertions, 0 deletions
diff --git a/mpdmenu b/mpdmenu
new file mode 100755
index 0000000..9b4966f
--- /dev/null
+++ b/mpdmenu
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+
+MPC="mpc --quiet -p ${1:-6600}"
+
+# max height for vertical menu
+height=20
+
+DMENU() {
+ # Vertical menu if $3 is given
+ echo -e "$1" | dmenu -i -p "$2" ${3:+"-l" "$3"}
+}
+
+get_playlist() {
+ $MPC -f "%position% - [%artist% - %album% - ]%title%" playlist
+}
+
+select_from() {
+ DMENU "$1" "Select $2" $height
+}
+
+jump() {
+ local playlist=$(get_playlist)
+ local song=$(select_from "$playlist" "song")
+
+ [ -n "$song" ] && $MPC play "${song%%\ *}"
+}
+
+load_playlist() {
+ local pl=$(select_from "$(mpc lsplaylist)")
+ [ -n "$pl" ] && $MPC load "$pl"
+}
+
+while true; do
+ choice=$(DMENU "play\nnext\nprev\nvolume\nrepeat\nrandom\nsingle\nconsume\nlyrics\nsearch\nstatus\nclear\nload\nupdate" "Do you want to: ")
+
+ case "$choice" in
+ play) mpc toggle ;;
+ next) mpc next ;;
+ prev) mpc prev ;;
+ volume) mpc volume "$(dmenu -p 'Set volume: ' </dev/null)" ;;
+ repeat) mpc repeat ;;
+ random) mpc random ;;
+ single) mpc single ;;
+ consume) mpc consume ;;
+ lyrics) now-playing-lyrics && exit 0;;
+ search) jump ;;
+ status) mpdinfo && exit 0 ;;
+ clear) mpc clear ;;
+ load) load_playlist ;;
+ update) mpc update ;;
+ \?) exit 1 ;;
+ "") exit 0 ;;
+ esac
+done