162 lines
4.9 KiB
EmacsLisp
162 lines
4.9 KiB
EmacsLisp
;;; init-emms.el --- emms -*- lexical-binding: t -*-
|
|
|
|
;;; Commentary:
|
|
|
|
;;; Code:
|
|
|
|
(use-package emms
|
|
:init
|
|
;; 设置音乐文件默认目录
|
|
(when *is-windows*
|
|
(setq emms-source-file-default-directory "F:/luping26-1-11/"))
|
|
|
|
:config
|
|
;; --- 基础设置 ---
|
|
(require 'emms-setup)
|
|
(emms-all) ; 加载所有稳定功能
|
|
|
|
;; 使用简单模式的 mpv 播放器
|
|
;; 移除默认的 emms-player-mpv
|
|
(require 'emms-player-simple)
|
|
|
|
;; 定义简单的 mpv 播放器
|
|
(define-emms-simple-player mpv-simple '(file url streamlist playlist)
|
|
(concat "\\.\\("
|
|
(mapconcat 'identity
|
|
'("mp3" "mp4" "avi" "mkv" "flv" "mov" "wmv" "webm"
|
|
"ogg" "ogv" "oga" "ogx"
|
|
"flac" "wav" "aac" "m4a" "wma"
|
|
"mpg" "mpeg" "mpe" "mpv"
|
|
"3gp" "3g2"
|
|
"m3u" "pls")
|
|
"\\|")
|
|
"\\)\\'\\|http[s]?://")
|
|
"mpv"
|
|
"--force-window=immediate"
|
|
"--keep-open=yes"
|
|
"--fs=no"
|
|
"--quiet")
|
|
|
|
;; 设置播放器列表
|
|
(setq emms-player-list '(emms-player-mpv-simple
|
|
emms-player-vlc
|
|
emms-player-mplayer))
|
|
|
|
(setq emms-playlist-default-playlist-name "*EMMS Playlist*")
|
|
(setq emms-playlist-buffer-name "*EMMS Playlist*")
|
|
|
|
;; 使用更快的文件查找方法(windows上需要使用internal)
|
|
;; (setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find)
|
|
(setq emms-source-file-directory-tree-function 'emms-source-file-directory-tree-internal)
|
|
|
|
;; 使用原生 Elisp 元数据读取器
|
|
(setq emms-info-functions '(emms-info-native))
|
|
|
|
;; 异步读取元数据
|
|
(setq emms-info-asynchronously t)
|
|
|
|
;; 使用更详细的曲目描述
|
|
(setq emms-track-description-function #'emms-info-track-description)
|
|
|
|
;; 模式行设置
|
|
(require 'emms-mode-line)
|
|
(emms-mode-line-mode 1)
|
|
(emms-mode-line-blank) ; 初始为空
|
|
|
|
;; 自定义模式行格式
|
|
(setq emms-mode-line-format " [%s] ")
|
|
(setq emms-mode-line-length-limit 60)
|
|
|
|
;; 播放时间显示
|
|
(require 'emms-playing-time)
|
|
(emms-playing-time-mode 1)
|
|
|
|
;; 歌词设置
|
|
(require 'emms-lyrics)
|
|
(setq emms-lyrics-display-on-modeline t) ; 在模式行显示歌词
|
|
(setq emms-lyrics-display-on-minibuffer nil) ; 不在 minibuffer 显示
|
|
(setq emms-lyrics-display-buffer nil) ; 不使用专用缓冲区
|
|
(setq emms-lyrics-scroll-p t) ; 启用歌词滚动
|
|
(setq emms-lyrics-scroll-timer-interval 0.4) ; 滚动间隔
|
|
(setq emms-lyrics-dir "~/Music/lyrics") ; 歌词文件目录
|
|
(setq emms-lyrics-display-format " %s ") ; 歌词显示格式
|
|
(emms-lyrics 1) ; 启用歌词显示
|
|
|
|
;; 浏览器设置
|
|
(require 'emms-browser)
|
|
(setq emms-browser-default-browse-type 'artist)
|
|
(setq emms-browser-covers nil) ; 禁用封面
|
|
|
|
;; 浏览器显示格式
|
|
(setq emms-browser-info-title-format "%i%n")
|
|
(setq emms-browser-playlist-info-title-format "%i%n")
|
|
|
|
;; 添加浏览器快捷键
|
|
(define-key emms-browser-mode-map (kbd "SPC") 'emms-browser-add-tracks-and-play)
|
|
|
|
;; 缓存设置
|
|
(require 'emms-cache)
|
|
(emms-cache 1) ; 启用缓存
|
|
|
|
;; 历史记录
|
|
(require 'emms-history)
|
|
(add-hook 'emms-player-started-hook #'emms-last-played-update-current)
|
|
|
|
;; 音量控制
|
|
(require 'emms-volume)
|
|
;; 在播放列表中使用 +/- 控制音量
|
|
(define-key emms-playlist-mode-map (kbd "+") #'emms-volume-raise)
|
|
(define-key emms-playlist-mode-map (kbd "-") #'emms-volume-lower)
|
|
|
|
;; 添加(playlist中的)快捷键
|
|
(define-key emms-playlist-mode-map (kbd "SPC") 'emms-pause)
|
|
(define-key emms-playlist-mode-map (kbd "N") 'emms-next)
|
|
(define-key emms-playlist-mode-map (kbd "P") 'emms-previous)
|
|
(define-key emms-playlist-mode-map (kbd "R") 'emms-random)
|
|
(define-key emms-playlist-mode-map (kbd "/") 'emms-playlist-limit)
|
|
|
|
;; 启用标记功能
|
|
(require 'emms-mark)
|
|
|
|
;; 启用播放列表排序
|
|
(require 'emms-playlist-sort)
|
|
(define-key emms-playlist-mode-map (kbd "S s") 'emms-playlist-sort-map)
|
|
|
|
;; 启用播放列表限制/过滤
|
|
(require 'emms-playlist-limit)
|
|
|
|
;; 启用标签编辑器
|
|
(require 'emms-tag-editor)
|
|
|
|
;; 启用评分系统
|
|
(require 'emms-score)
|
|
(emms-score 1)
|
|
|
|
;; 启动后自动恢复播放列表
|
|
;; (add-hook 'after-init-hook 'emms-history-load)
|
|
|
|
;; 显示加载完成消息
|
|
(message "EMMS loaded")
|
|
|
|
;; 关闭自动连播
|
|
(add-hook 'emms-playlist-mode-hook
|
|
(lambda ()
|
|
(setq emms-single-track t))))
|
|
|
|
;; 提供 EMMS 快捷启动函数
|
|
(defun my-emms-start-browser ()
|
|
"Open emms browser."
|
|
(interactive)
|
|
(emms-browser)
|
|
(message "EMMS browser loaded"))
|
|
|
|
(defun my-emms-play-directory (dir)
|
|
"Play all files in directory.."
|
|
(interactive "Dchoose a directory: ")
|
|
(emms-play-directory-tree dir)
|
|
(message "playing: %s" dir))
|
|
|
|
(provide 'init-emms)
|
|
|
|
;;; init-emms.el ends here
|