diff options
| author | yuzu-eva <cafebabe@disroot.org> | 2025-05-08 14:01:37 +0200 |
|---|---|---|
| committer | yuzu-eva <cafebabe@disroot.org> | 2025-05-08 14:01:37 +0200 |
| commit | ef7c1605a027b52bbff1b01ea693b60f53fa3a71 (patch) | |
| tree | 1089334258aefbd459d18cf6968e78f1194739b0 /mpdmenu | |
initial commit
Diffstat (limited to 'mpdmenu')
| -rwxr-xr-x | mpdmenu | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -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 |
