+++ /dev/null
-#! /usr/bin/zsh -e
-
-bail () { echo >&2 "$*"; exit 2; }
-
-disorder=(disorder)
-
-get-disorder-state () {
- coproc stdbuf -oL $disorder log; kid=$!
-
- while read -Ap i; do
- case $i[2] in
- state)
- case $i[3] in
- enable_random) randp=t ;;
- disable_random) randp=nil ;;
- enable_play) playp=t ;;
- disable_play) playp=nil ;;
- resume) pausep=nil ;;
- pause) pausep=t ;;
- esac
- ;;
- *)
- break
- ;;
- esac
- done
- kill $kid
-}
-
-alsa_mixer=Master,0
-op-volume-up () { amixer sset $alsa_mixer 5%+ >/dev/null; }
-op-volume-down () { amixer sset $alsa_mixer 5%- >/dev/null; }
-
-op-now-playing () {
- coproc $disorder playing; kid=$!
- read -p k track
- case $k in
- nothing) echo "Not playing."; return ;;
- track) ;;
- *) bail "unexpected first-line token \`$k'" ;;
- esac
- unset who
- read -p k _
- case $k in id) ;; *) bail "unexpected second-line token \`$k'" ;; esac
- read -p k _ name _
- case $k in picked) who=$name; read -p k _ ;; esac
- case $k in played) ;; *) bail "unexpected third-line token \`$k'" ;; esac
- read -pA t
- case $t[-1] in started | ok) st="" ;; paused) st=" (paused)" ;; esac
- kill $kid >/dev/null 2>&1 || :
-
- artist=$(disorder part $track display artist)
- album=$(disorder part $track display album)
- title=$(disorder part $track display title)
- case $artist in [A-Z]) artist=$album album= ;; esac
- echo "$artist: ‘$title’${album+, from ‘$album’}${who+
-(chosen by $who)}"
-}
-
-op-scratch () { disorder scratch; }
-op-enable/disable () {
- get-disorder-state
- case $playp in
- t) disorder disable ;;
- nil) disorder enable ;;
- esac
-}
-op-play/pause () {
- get-disorder-state
- case $playp,$pausep in
- nil,t) disorder enable; disorder resume ;;
- nil,nil) disorder enable ;;
- t,t) disorder resume ;;
- t,nil) disorder pause ;;
- esac
-}
-
-if [[ -e $HOME/etc/media-keys.local ]]; then
- . $HOME/etc/media-keys.local
-fi
-
-case $# in 0) echo >&2 "usage: $0 OP"; exit 2 ;; esac
-op=$1; shift
-case $(whence -w op-$op) in
- "op-$op: function") ;;
- *) echo >&2 "$0: unknown operation \`$op'"; exit 2 ;;
-esac
-op-$op "$@"