An Emacs MPD client inspired by ncmpcpp
| .preview | reduce images in README | |
| .gitignore | init commit | |
| empdel-browser.el | init commit | |
| empdel-library.el | init commit | |
| empdel-mpd.el | init commit | |
| empdel-playlist-editor.el | init commit | |
| empdel-playlist.el | init commit | |
| empdel-search.el | init commit | |
| empdel-tag-editor.el | init commit | |
| empdel-ui.el | init commit | |
| empdel.el | init commit | |
| LICENSE | init commit | |
| README.org | fix installation typo | |
empdel
An Emacs MPD client inspired by ncmpcpp.
empdel replicates ncmpcpp's views, keybindings, and workflow inside Emacs.
Features & Views (switch with 1 – 6)
- Playlist: play queue with sort, filter, reorder, crop, selection
- Browser: MPD filesystem tree navigation
- Search Engine: multi-field search form (artist, album, title, genre...)
- Media Library: three-column Artist | Album | Track browser
- Playlist Editor: two-column stored playlist manager
- Tag Editor: edit music file metadata (requires external tools)
Requirements
- Emacs 28.1+, a running MPD instance
Quick Start
Install it using use-package from codeberg
(use-package empdel
:ensure t
:vc (:url "https://codeberg.org/ebeem/empdel"))
Or Clone this repository into a path and add it to your load-path then require it. This package isn't currently available in MELPA.
(add-to-list 'load-path "/path/to/empdel")
(require 'empdel)
(setq empdel-host "localhost" empdel-port 6600)
;; M-x empdel
/ebeem/empdel/media/branch/master/.preview/all.jpeg
Keybindings
Global Keys (available in all views)
1–6: Switch to view 1–6SPC: Toggle pauses: Stop playback>: Next track<modification-key, less sign>S-<: Previous track+: Volume up-: Volume downf: Seek forwardb: Seek backwardr: Toggle repeatz: Toggle randomy: Toggle singleR: Toggle consumeu: Update MPD databaseg: Refresh current viewq: Quit empdel
View-Specific Keys
-
Playlist (View 1)
RET: Play selected songd: Delete songD: Delete selected songsc: Clear queueZ: Shuffle queuem: Toggle selectionU: Clear selectionM-up,M-p: Move song upM-down,M-n: Move song down/: FilterC-l: Clear filterS: Sort queueC: Crop to current songi: Show song infoe: Edit tags
-
Browser (View 2)
RET,C-f,right: Enter directory or add fileC-b,left,^,DEL,backspace: Go up\\: Go to roota: Add item to queueA: Add all items in current directory/: Filteri: Show file infoe: Edit tags
-
Search (View 3)
RET: Search or add result to queuee: Edit field or edit tagsC-c C-r: Reset fieldsa: Add result to queueA: Add all results to queuei: Show song info
-
Media Library (View 4)
TAB,C-f,right: Focus next columnbacktab,C-b,left: Focus previous columnRET: Drill down or add tracka: Add selected item/album/artistA: Add all by artist/: Filter current columni: Show song info (tracks column)e: Edit tags (tracks column)
-
Playlist Editor (View 5)
TAB,C-f,right: Focus next columnbacktab,C-b,left: Focus previous columnRET: Drill down or add songa: Add to queued: Delete song/playlistD: Delete playlistC: Create playlist from queueM-r: Rename playlistL: Load playlist (replace queue)e: Append from queuei: Show song info (songs column)E: Edit tags (songs column)
-
Tag Editor (View 6)
RET,e: Edit fieldC-c C-c: Save changesC-c C-k: Revert changesC-c C-l: Load song from queue
Project Structure
empdel.el: Main entry point, defines the `empdel` command.empdel-mpd.el: Low-level MPD protocol communication.empdel-ui.el: Core UI code: view switching, header line, base keymap.empdel-playlist.el: Implements View 1: Playlist.empdel-browser.el: Implements View 2: Browser.empdel-search.el: Implements View 3: Search Engine.empdel-library.el: Implements View 4: Media Library.empdel-playlist-editor.el: Implements View 5: Playlist Editor.empdel-tag-editor.el: Implements View 6: Tag Editor (still in progress).