Configure EMMS (Emacs Multi-Media System) for Multimedia Keyboard
Emacs server need be started first.
I use emacsclient
to execute emms commands in the emacs server.
Key bindings setup in ~/.i3/config
for i3 window manager,
# music player client (mpc, emms ...)
bindsym XF86Search exec --no-startup-id ~/bin/music-player-client show
bindsym XF86Tools exec --no-startup-id ~/bin/music-player-client random
bindsym XF86AudioStop exec --no-startup-id ~/bin/music-player-client toggle
bindsym XF86AudioPause exec --no-startup-id ~/bin/music-player-client toggle
bindsym XF86AudioNext exec --no-startup-id ~/bin/music-player-client next
bindsym XF86AudioPrev exec --no-startup-id ~/bin/music-player-client prev
Content of ~/bin/music-player-client
,
#!/bin/bash
# use mpc&mpd or emacsclient&emms to play music
if [ -z "$1" ]; then
echo "Usage: music-player-client pre|next|toggle|random|show"
exit 1
fi
# Please uninstall mpc&mpd if using emms
if command -v mpc &> /dev/null; then
case $1 in
prev )
mpc prev
;;
next )
mpc next
;;
toggle )
mpc toggle
;;
esac
elif command -v emacsclient &> /dev/null; then
case $1 in
prev )
emacsclient --eval '(emms-previous)'
;;
next )
emacsclient --eval '(emms-next)'
;;
toggle )
emacsclient --eval '(emms-pause)'
;;
random )
emacsclient --eval '(progn (emms-shuffle) (emms-next))'
;;
show )
# program like dunst can show the notification
notify-send "$(emacsclient --eval '(file-name-base (emms-show))')"
;;
esac
fi
I usually run M-x emms-play-directory-tree
to play music. My emms setup,
(with-eval-after-load 'emms
;; minimum setup is more robust
(emms-minimalistic)
(setq emms-player-list '(emms-player-mplayer
emms-player-vlc)))
Screen shot of running ~/bin/music-player-client show
,