(package-initialize) ;; Install use-package ;; (https://jwiegley.github.io/use-package/installation/) ;; mkdir -p "~/.emacs.d/plugins/" ;; torsocks git clone https://github.com/jwiegley/use-package.git ~/.emacs.d/plugins/use-package ;; cd ~/.emacs.d/plugins/use-package ;; make ;; (add-to-list 'load-path "~/.emacs.d/plugins/use-package") (require 'use-package) (use-package emms ;; Configuration for MPV and simple modeline ---------- ;; mkdir -p "~/.emacs.d/plugins/" ;; cd "~/.emacs.d/plugins/" ;; torsocks git clone https://git.savannah.gnu.org/git/emms.git ;; cd emms ;; make emms-print-metadata ;; mv src/emms-print-metadata . :load-path "~/.emacs.d/plugins/emms/" :config ;; Load only what is needed from emms-minimalistic (use-package emms-source-file) (use-package emms-source-playlist) (use-package emms-player-simple) (use-package emms-player-mpv) ;; Load only what is needed from emms-setup (use-package emms-playlist-mode) (use-package emms-info) (use-package emms-mode-line) (use-package emms-mark) (use-package emms-show-all) (use-package emms-playing-time) (use-package emms-player-mpd) (use-package emms-playlist-sort) (use-package emms-mode-line-icon) (use-package emms-cue) (use-package emms-last-played) (use-package emms-metaplaylist-mode) (use-package emms-i18n) ;; Use emms-print-metadata (use-package emms-info-libtag :config (setq emms-info-libtag-program-name "~/.emacs.d/plugins/emms/emms-print-metadata" emms-info-functions '(emms-info-libtag))) (setq ;; Default time to seek back and forward emms-seek-seconds 5 ;; Use MPV only emms-player-list '(emms-player-mpv) ;; emms-show-format "♪ %s" ; overriden by emms-cycle-mode emms-source-file-default-directory "~/Music/" emms-info-asynchronously t ;; Auto-set the playlist mode emms-playlist-default-major-mode 'emms-playlist-mode) ;; Show the track in the mode-line (emms-mode-line 1) ;; Clear the mode-line (at the beginning) (emms-mode-line-blank) ;; Show the playing time in the modeline (emms-playing-time 1) ;; Does emms-print-metadata deal with CUE? ==> remove (add-to-list 'emms-info-functions 'emms-info-cueinfo) ;; Testing (add-hook 'emms-player-started-hook 'emms-last-played-update-current) (with-eval-after-load 'info (info-initialize) (add-to-list 'Info-directory-list "~/.emacs.d/plugins/emms/docs/")) ;; ;; Disable cache (loading bunch of files on start?!) ;; (emms-cache-disable) ;; Redefine emms to just load the playlist (defun my-emms () "my: Switch to the current emms-playlist buffer, use emms-playlist-mode and query for a directory tree to add to the playlist." (interactive) (if (or (null emms-playlist-buffer) (not (buffer-live-p emms-playlist-buffer))) (call-interactively 'dired)) (emms-playlist-mode-go)) (defun my-emms-random () "my: Toggle the emms random play mode" (interactive) (if emms-random-playlist (setq emms-random-playlist nil) (setq emms-random-playlist t))) (defun my-emms-track-description (track) "my: Get the EMMS description or the base file name of the current track" (let ((desc (emms-info-track-description track))) (if (file-readable-p desc) (file-name-nondirectory desc) desc)) ) ;; Show the track artist and song name, or file name (setq emms-track-description-function 'my-emms-track-description) (add-to-list 'emms-track-initialize-functions 'emms-info-initialize-track) ;; Short mode-line for EMMS (use-package emms-mode-line-cycle ;; https://github.com/momomo5717/emms-mode-line-cycle.git :load-path "~/.emacs.d/plugins/emms-mode-line-cycle" :config (emms-mode-line-cycle 1) ) (define-key emms-playlist-mode-map "a" 'emms-add-file) (define-key emms-playlist-mode-map "P" 'emms-add-playlist) (define-key emms-playlist-mode-map "S" 'emms-seek) (define-key emms-playlist-mode-map "\C-cs" 'emms-shuffle) :bind ("s-m s-m" . my-emms) ;; ("s-m s-B" . emms-browser) ("s-m a" . emms-add-file) ("s-m P" . emms-add-playlist) ("s-m e" . emms-tag-editor-edit) ("" . emms-previous) ("" . emms-next) ("s-m SPC" . emms-pause) ("s-m n" . emms-next) ("s-m p" . emms-previous) ("s-m SPC" . emms-pause) ("" . emms-pause) ("s-m S" . emms-seek) ("s-m <" . emms-seek-backward) ("s-m >" . emms-seek-forward) ("s-m s" . emms-stop) ("s-m C" . emms-playlist-current-clear) ("s-m C-c s" . emms-shuffle) ("" . emms-stop) ("s-m d a" . emms-add-dired) )