The following example is from my own init.el configuration:
- (defhydra hydra-ecmus (:color red :hint nil
- :pre (emus-display-status)
- :post (message nil))
- "
- Volume: _-_/[_+__=_] (down/up) Tracks: _p_/_P_ (prev track/album) _n_/_N_ (next track/album)
- Playback: _SPC_ (play/pause) _o_ (stop) _,_/_._ (skip forward/backward) Browser: _b_ (open browser)
- "
- ("<ESC>" "quit" :color blue)
- ("q" "quit" :color blue)
- ("RET" "quit" :color blue)
- ("SPC" emus-playpause-status)
- ("p" emus-play-prev-status)
- ("n" emus-play-next-status)
- ("P" emus-play-prev-album-status)
- ("N" emus-play-next-album-status)
- ("," emus-jump-10s-backward-status)
- ("." emus-jump-10s-forward-status)
- ("-" emus-volume-down-status)
- ("+" emus-volume-up-status)
- ("=" emus-volume-up-status)
- ("o" emus-stop-status)
- ("!" emus-toggle-progress-status)
- ("b" emus-browse :color blue))
+ (defhydra hydra-ecmus (:color red :hint nil
+ :pre (emus-display-status)
+ :post (message nil))
+ "
+ Volume: _-_/[_+__=_] Tracks: _p_/_P_ _n_/_N_ (prev/next track/album) Progress: _#_
+ Playback: _SPC_ (play/pause) _o_ (stop) _,_/_._ (skip +/-) Browse: _b_ Restart: _!_
+ "
+ ("<ESC>" "quit" :color blue)
+ ("q" "quit" :color blue)
+ ("RET" "quit" :color blue)
+ ("SPC" emus-playpause-status)
+ ("p" emus-play-prev-status)
+ ("n" emus-play-next-status)
+ ("P" emus-play-prev-album-status)
+ ("N" emus-play-next-album-status)
+ ("," emus-jump-10s-backward-status)
+ ("." emus-jump-10s-forward-status)
+ ("<" emus-jump-1m-backward-status)
+ (">" emus-jump-1m-forward-status)
+ ("-" emus-volume-down-status)
+ ("+" emus-volume-up-status)
+ ("=" emus-volume-up-status)
+ ("o" emus-stop-status)
+ ("!" emus-restart-status)
+ ("#" emus-toggle-progress-status)
+ ("b" emus-browse :color blue))
(bind-key* (kbd "s-m") 'hydra-ecmus/body)
-
License
-------
"Kill any existing mpg123 process."
(let ((emus-process (get-process "emus-process")))
(if emus-process
- (kill-process emus-process))))
-
-(defun emus-restart ()
- "Restart emus, regardless of current state."
- (interactive)
- (emus-kill-process)
- (setq emus-state 'stopped
- emus--proc-in-use nil
- emus-tracks nil))
+ (kill-process emus-process))
+ (setq emus-state 'stopped
+ emus--proc-in-use nil
+ emus-tracks nil)))
;;; Library
;;
(defun emus-restart-browse ()
"Restart the emus process, then refresh the browse window."
(interactive)
- (emus-restart)
+ (message "Restarting mpg123.")
+ (emus-kill-process)
(run-at-time 0.1 nil #'emus-browse)) ;Slight delay to wait for kill signal to take effect
(defun emus-restart-status ()
"Restart the emus process, then display the status."
(interactive)
- (emus-restart)
+ (message "Restarting mpg123.")
+ (emus-kill-process)
(run-at-time 0.1 nil #'emus-display-status)) ;Slight delay to wait for kill signal to take effect
(define-key map (kbd ">") 'emus-jump-1m-forward-status)
(define-key map (kbd "c") 'emus-goto-current-status)
(define-key map (kbd "#") 'emus-toggle-progress-status)
- (define-key map (kbd "!") 'emus-restart-refresh)
+ (define-key map (kbd "!") 'emus-restart-browse)
(when (fboundp 'evil-define-key*)
(evil-define-key* 'motion map
(kbd "SPC") 'emus-playpause-status
(kbd ">") 'emus-jump-1m-forward-status
(kbd "c") 'emus-goto-current-status
(kbd "#") 'emus-toggle-progress-status
- (kbd "!") 'emus-restart-refresh))
+ (kbd "!") #'emus-restart-browse))
map)
"Keymap for emus browser.")