;; TODO - make toggle command for emms-start/emms-stop ;; TODO - change mode line display - don't show the whole file path, just the name (use-package emms :ensure t :bind (" e" . #'hydra-emms/body) (" E" . #'emms) (:map emms-playlist-mode-map ("0" . #'emms-volume-raise) ("9" . #'emms-volume-lower) ("" . #'emms-volume-raise) ("" . #'emms-volume-lower) ("" . #'emms-seek-backward) ("" . #'emms-seek-forward) ("n" . #'next-line) ("p" . #'previous-line) ("N" . #'emms-next) ("P" . #'emms-previous) ("R" . #'emms-toggle-random-playlist) ("M-n" . #'emms-cue-next) ("M-p" . #'emms-cue-previous) ("SPC" . #'emms-pause)) (:map dired-mode-map ("E" . #'hydra-emms/body)) :commands (emms-all emms emms-play-dired emms-add-dired) :config (emms-all) (emms-default-players) (setq emms-player-mpv-parameters (lambda () (append '("--fs" "--quiet" "--really-quiet" "--force-window=yes" "-ao=jack,alsa" ;; "--loop-file=inf" ) (let* ((dir (->> (emms-playlist-current-selected-track) (alist-get 'name) (file-name-directory))) (subs-in-dir (f-glob "*.srt" dir)) (subs-in-subdir (f-glob "*/*.srt" dir))) (->> (append subs-in-dir subs-in-subdir) (-interpose ":") (append '("--sub-files=")) (apply #'concat) (list)))))) ;; This won't work for `emms-random', because it runs in a `save-excursion' ;; (add-to-list 'emms-playlist-selection-changed-hook 'emms-playlist-mode-center-current) ;; (--map (add-to-list 'emms-player-mpv-parameters it) ;; '("--fs")) (defun contrapunctus-emms-toggle-player () (interactive) (if emms-player-stopped-p (emms-start) (emms-stop))) (setq emms-playlist-buffer-name "EMMS Playlist") :init (defhydra hydra-emms () ("e" #'emms "EMMS") ("n" #'emms-next "Next") ("p" #'emms-previous "Previous") ("SPC" #'emms-pause "Pause") ("s" #'contrapunctus-emms-toggle-player "Start/Stop") ("0" #'emms-volume-raise) ("9" #'emms-volume-lower) ("" #'emms-volume-raise) ("" #'emms-volume-lower) ("" #'emms-seek-backward) ("" #'emms-seek-forward) ("l" #'emms-play-dired "Play file (dired)") ("a" #'emms-add-dired "Add file (dired)") ("A" #'emms-add-directory-tree "Add directory") ("u" #'emms-play-url))) (provide 'cp-emms)