专辑封面需终端支持 Kitty/Sixel/Iterm2 协议或安装 ueberzugpp;需自行运行 Music Player Daemon(MPD)服务;项目仍在成熟中,偶有破坏性变更
rmpc
mierakBSD-3-Clause活跃维护一款用 Rust 写的终端 MPD 音乐客户端,支持通过 sixel 等终端图像协议显示专辑封面,配置灵活,适合喜欢在命令行里听歌的人。
A modern, configurable, terminal based MPD Client with album art support via various terminal image protocols
README 未给出安装命令,安装方法见 https://rmpc.mierak.devREADME 未说明
终端里的 MPD 音乐播放器客户端,支持专辑封面显示和高度可配置界面
一款用 Rust 写的终端 MPD 音乐客户端,支持通过 sixel 等终端图像协议显示专辑封面,配置灵活,适合喜欢在命令行里听歌的人。
核心能力
- 通过 Kitty、Sixel、Iterm2 协议或 ueberzugpp 显示专辑封面
- 集成 Cava 实现音乐可视化
- 支持同步歌词(LRC 格式)
- 可播放 YouTube 上的音乐
- 类 ranger/lf 的三栏音乐库浏览
容易踩的坑
- v0.11.0最新正式版2026-02-01 · 2026-02-01 12:35 UTC
It has been a while, yet again! As always, thanks to everyone who contributed, reported issues or helped in any other way!
What's new and what changed
As always, you can check CHANGELOG for a more refined list of changes.
The highlights
This release brings in another exciting set of features, improvements and fixes. Here some of the most important ones:
- A new default theme featuring many of the newer options. Check it out, you might find something you like!
- Keybinds now support vim-esque sequences, ie.
gt/gTto switch tabs. You can of course configure your own sequences as well. - Fully configurable borders for panes including custom border symbol sets and titles that can utilize the usual properties.
- A simple yt-dlp interface in the TUI so you can see what is happening when downloading.
- And much more!
Breaking changes
There are some again, unfortunately, though they are mostly minor theming changes. No behavior has been removed but you might have to adjust your config.
- Keybinds now only override the defaults. Meaning your configured keybinds are combined with the default ones. Set
clearto true to keep the old behavior. show_song_table_headerhas been removed. The queue header is now in a separateQueueHeaderpane. You will need to update your config to include it in your tabs.draw_bordershas been deprecated. TheTabspane is no longer affected by this, use the borders configuration on the pane itself instead. This now only affects borders in the browser panes and this will be romeved in the future as well.current_item_styleandhighlighted_item_stylenow merge on top of the item's style instead of having defaults, specify all the style properties (fg, bg, modifiers) to keep the old look- progress bar's
use_track_when_emptynow defaults to true
Packaging
There is now a .desktop entry in the assets directory in the root of the repository if you wish to include it in the package. Docs address has also changed to https://rmpc.mierak.dev/. The old address will redirect to the new one.
Full list of commits
Added
- feat: after/before current album to addoptions by @mierak in https://github.com/mierak/rmpc/pull/731
- feat: album art order by @mierak in https://github.com/mierak/rmpc/pull/739
- feat: Hot-Reload Lyrics by @MoreDelay in https://github.com/mierak/rmpc/pull/735
- feat: lrc indexing toggle by @mierak in https://github.com/mierak/rmpc/pull/751
- feat: support abstract socket on Linux by @szclsya in https://github.com/mierak/rmpc/pull/754
- feat: bash/emacs style text inputs by @mierak in https://github.com/mierak/rmpc/pull/759
- feat: keybinds configurable clear by @mierak in https://github.com/mierak/rmpc/pull/767
- feat: center when double triggering JumpToCurrent by @mierak in https://github.com/mierak/rmpc/pull/771
- feat: border titles by @mierak in https://github.com/mierak/rmpc/pull/775
- feat: utilize properties in border titles by @mierak in https://github.com/mierak/rmpc/pull/776
- feat: key sequences by @mierak in https://github.com/mierak/rmpc/pull/777
- feat: sort queue by keybind/mouse by @mierak in https://github.com/mierak/rmpc/pull/782
- feat: save and load commands for CLI by @mierak in https://github.com/mierak/rmpc/pull/787
- feat: configurable border symbols by @mierak in https://github.com/mierak/rmpc/pull/793
- feat: add bit depth, sample rate and channels properties by @mierak in https://github.com/mierak/rmpc/pull/794
- feat: ytdlp tui and general improvements by @mierak in https://github.com/mierak/rmpc/pull/797
- feat: configurable scroll amount by @mierak in https://github.com/mierak/rmpc/pull/799
- feat: added and last modified property by @mierak in https://github.com/mierak/rmpc/pull/804
- feat: current item style merges without defaults by @mierak in https://github.com/mierak/rmpc/pull/818
- feat(
- v0.10.02025-11-11 · 2025-11-11 18:18 UTC
查看更新说明
Yet again after quite some time.
Another packed release with a bunch of new features and fixes. Thanks to all of you who continue to support, contribute and report issues!
What's new and what changed
As always, you can check CHANGELOG for a more refined list of changes.
The highlights
Support for stickers based rating of songs, bunch of new keybinds allowing you to control how exactly are songs added to the queue or saved to playlists, full TUI support for switching partitions and much more!
Rmpc will now also attempt to resolve what terminal emulator you are using to better figure out what image backend to use. This fixes issues in terminals like Konsole which have partial implementation for kitty graphics protocol but report it as a supported feature.
Breaking changes
Yet again, we have a few breaking changes. I try very hard to keep these as minimal as possible so hopefully nothing too impactful:
- TabName equality comparison is now case-insensitive, this impacts your
SwitchToTabkeybinds - $SELECTED_SONGS in queue now contains marked songs as well
Full list of commits
Added
- feat: transforms and truncate transformation by @mierak in https://github.com/mierak/rmpc/pull/505
- feat: sendmessage cli by @mierak in https://github.com/mierak/rmpc/pull/510
- Feat/volume mouse interactible by @Gri-ffin in https://github.com/mierak/rmpc/pull/508
- feat: support youtuble playlists by @mierak in https://github.com/mierak/rmpc/pull/507
- feat/improve LRC parsing logic by @Gri-ffin in https://github.com/mierak/rmpc/pull/520
- feat: better add to queue by @mierak in https://github.com/mierak/rmpc/pull/518
- feat: move multiple items in playlists by @mierak in https://github.com/mierak/rmpc/pull/525
- Feat/album separator by @mierak in https://github.com/mierak/rmpc/pull/526
- feat: queue cli by @mierak in https://github.com/mierak/rmpc/pull/528
- feat/command_keybind_cli_commands by @Gri-ffin in https://github.com/mierak/rmpc/pull/533
- feat: partition management by @mierak in https://github.com/mierak/rmpc/pull/535
- feat/switch-tab-command by @Gri-ffin in https://github.com/mierak/rmpc/pull/536
- feat/on song change prev by @mierak in https://github.com/mierak/rmpc/pull/537
- feat: context menu by @mierak in https://github.com/mierak/rmpc/pull/539
- feat: support kitty keyboard protocol by @mierak in https://github.com/mierak/rmpc/pull/541
- Feat/scrollbar mouse support by @Gri-ffin in https://github.com/mierak/rmpc/pull/540
- feat: better scrolling and scrollbars by @mierak in https://github.com/mierak/rmpc/pull/554
- feat: ipc query command by @mierak in https://github.com/mierak/rmpc/pull/555
- feat: global lrc offset by @mierak in https://github.com/mierak/rmpc/pull/559
- Support adding marked songs to a playlist by @ppebb in https://github.com/mierak/rmpc/pull/563
- feat: run
on_song_changeat startup by @osamaaj03 in https://github.com/mierak/rmpc/pull/566 - feat: make remote cli more consistent by @mierak in https://github.com/mierak/rmpc/pull/560
- feat: ignore diacritics by @mierak in https://github.com/mierak/rmpc/pull/575
- support originaldate tag when browsing by @jebaum in https://github.com/mierak/rmpc/pull/569
- feat: Added an ability to specify relative/absolute theme path in config by @illuxel in https://github.com/mierak/rmpc/pull/586
- Add addyt --name to search by song title by @PolvosMagicos in https://github.com/mierak/rmpc/pull/578
- feat: ignore leading "the" by @mierak in https://github.com/mierak/rmpc/pull/608
- feat: improve image backend deteciton, improve debuginfo by @mierak in https://github.com/mierak/rmpc/pull/617
- feat: jumptocurrent in stopped state by @mierak in https://github.com/mierak/rmpc/pull/625
- feat: rating system by @mierak in https://github.com/mierak/rmpc/pull/633
- feat: like/dislike functionality by @mierak in https://github.
- TabName equality comparison is now case-insensitive, this impacts your
- v0.9.02025-06-23 · 2025-06-23 21:08 UTC
查看更新说明
Long time no release!
The biggest release yet is here. These are some exciting times for rmpc, it has gotten quite a bit more popular thanks to BreadOnPenguins youtube video, go check her channel out! Many new contributors joined, reported issues, and some even contributed directly, many thanks to all of you.
What's new and what changed
As always, you can check CHANGELOG for a more refined list of changes.
The highlights
- The first of two fanciest new features is config hot reload. Rmpc will now automatically reload your config when it changes.
- The second spot definitely belongs to cava integration. You can now use everybody's favorite music visualizer directly in rmpc.
- There are now better error messages when your config file gets goofed up while tinkering with rmpc. You should now get a modal popup stating what is wrong and roughly lead you to where the error is.
- Support for more sites via
addytcommand, rmpc now supports soundcloud and nicovideo - New config properties, new keybinds, cli and much more, go check it out!
Unfortunately, again, there are a few, hopefully minor and/or cosmetic breaking changes:
- Songs are no longer sorted by their browser_song_format. The new browser_song_sort is used instead
- Some tags can now be arrays of values instead of a single value if multiple values are in the given id3 tag when listing song metadata via cli.
- For CLI which return song info: last-modified and added are no longer in songs' metadata, they are at the top level object instead now
- ShowInfo queue action has been moved to navigation. It is now more general and works in playlists as well.
Small note for package maintainers
- Cava is now an optional runtime dependency of rmpc
- There is a test that is failing on 32bit architectures, it is already fixed in master and is safe to ignore
Full list of commits
Added
- feat(ui): add backdrop support for modals by @soifou in https://github.com/mierak/rmpc/pull/257
- feat: config hot reload by @mierak in https://github.com/mierak/rmpc/pull/262
- feat: set theme via ipc by @mierak in https://github.com/mierak/rmpc/pull/266
- feat: on_resize hook by @mierak in https://github.com/mierak/rmpc/pull/267
- feat: theme cli arg by @mierak in https://github.com/mierak/rmpc/pull/268
- feat(lyrics): don't highlight until the first lyrics have been reached by @Kladki in https://github.com/mierak/rmpc/pull/271
- feat: allow switching tracks while paused by @Kladki in https://github.com/mierak/rmpc/pull/274
- feat: new browser pane with configurable root tag by @mierak in https://github.com/mierak/rmpc/pull/273
- feat: cycling/scrolling property pane by @mierak in https://github.com/mierak/rmpc/pull/286
- feat: configurable song sorting by @mierak in https://github.com/mierak/rmpc/pull/291
- feat: add FileExtension property by @mierak in https://github.com/mierak/rmpc/pull/296
- feat: better errors when reading config by @mierak in https://github.com/mierak/rmpc/pull/299
- feat: support multiple tag values by @mierak in https://github.com/mierak/rmpc/pull/304
- feat: better directories sorting by @mierak in https://github.com/mierak/rmpc/pull/314
- feat: addrandom command by @mierak in https://github.com/mierak/rmpc/pull/316
- feat(lyrics): Implement word wrapping for lyrics pane. by @xTayEx in https://github.com/mierak/rmpc/pull/317
- feat: configurable song preview labels by @mierak in https://github.com/mierak/rmpc/pull/321
- feat: soundcloud support by @mierak in https://github.com/mierak/rmpc/pull/323
- feat: add and replace songs to queue by @mierak in https://github.com/mierak/rmpc/pull/326
- feat: shuffle queue by @mierak in https://github.com/mierak/rmpc/pull/343
- feat: queue length property by @mierak in
- v0.8.02025-02-16 · 2025-02-16 17:01 UTC
查看更新说明
You can check CHANGELOG for a more refined list of changes.
Another quite a big release which brings many new features and fixes. Highlights are the new layout system which allows you to further customize the appearance of rmpc, the new Property pane and many others!
Unfortunately there are also minor (cosmetic) breaking changes this time around:
border_typein tabs config. It has been replaced by the new and more powerful borderstheme.tab_bar.enabled. It has been replaced by the layout system
What's Changed
Added
- feat: support repeating lyrics by @mierak in https://github.com/mierak/rmpc/pull/200
- feat: album art alignment by @mierak in https://github.com/mierak/rmpc/pull/194
- feat: fixed size pane by @mierak in https://github.com/mierak/rmpc/pull/203
- feat: sticker support by @mierak in https://github.com/mierak/rmpc/pull/211
- feat: support preview in playlists for songs outside of the music db by @mierak in https://github.com/mierak/rmpc/pull/216
- feat: support globs in add command by @mierak in https://github.com/mierak/rmpc/pull/217
- feat: base layout configuration by @mierak in https://github.com/mierak/rmpc/pull/208
- feat: only parse required part of config for cli by @mierak in https://github.com/mierak/rmpc/pull/221
- feat: make status message disappear automatically by @mierak in https://github.com/mierak/rmpc/pull/222
- feat: schedule precise render fiming for lyrics by @mierak in https://github.com/mierak/rmpc/pull/223
- feat: add PageUp and PageDown by @mierak in https://github.com/mierak/rmpc/pull/228
- feat: auto fetch lrc by @mierak in https://github.com/mierak/rmpc/pull/232
- feat: make max fps configurable by @mierak in https://github.com/mierak/rmpc/pull/236
- feat: configurable playback states by @mierak in https://github.com/mierak/rmpc/pull/234
- feat: configurable labels for on off states by @mierak in https://github.com/mierak/rmpc/pull/238
- feat: better borders in tabs/layout by @mierak in https://github.com/mierak/rmpc/pull/239
- feat: property pane by @mierak in https://github.com/mierak/rmpc/pull/244
- feat: configurable styles for new per state properties by @mierak in https://github.com/mierak/rmpc/pull/248
Fixed
- fix: ToggleSingle and ToggleConsume causing playback to stop by @mierak in https://github.com/mierak/rmpc/pull/186
- fix: styling of some Props not working by @mierak in https://github.com/mierak/rmpc/pull/192
- fix: infinite loop in lyrics index by @mierak in https://github.com/mierak/rmpc/pull/196
- fix: lsinfo not supporting playlists by @mierak in https://github.com/mierak/rmpc/pull/197
- fixup: fixed size pane with borders being smaller than intended by @mierak in https://github.com/mierak/rmpc/pull/205
- fix: stickers broke everything by @mierak in https://github.com/mierak/rmpc/pull/213
- fix: properly escape strings on proto level by @mierak in https://github.com/mierak/rmpc/pull/214
- fix: reading stickers in queue for songs outside the music database by @mierak in https://github.com/mierak/rmpc/pull/215
- fix: AddToPlaylist not working for local songs by @mierak in https://github.com/mierak/rmpc/pull/218
- fix: timeout early if mpd fails to respond in time by @mierak in https://github.com/mierak/rmpc/pull/225
- fix: adding song without albums in artists pane not working by @mierak in https://github.com/mierak/rmpc/pull/241
- fix: case-insentive comparison in Property matching by @soifou in https://github.com/mierak/rmpc/pull/243
- fix: Song metadata in preview not being sorted by @mierak in https://github.com/mierak/rmpc/pull/245
- fix: prevent album art
- v0.7.02024-12-23 · 2024-12-23 23:33 UTC
查看更新说明
Merry Christmas everyone!
You can check CHANGELOG for a more refined list of changes.
What's Changed
Added
- feat: queue remember selected row by @mierak in https://github.com/mierak/rmpc/pull/118
- feat: browser panes remember cursor position in root level by @mierak in https://github.com/mierak/rmpc/pull/119
- feat: add binary limit by @mierak in https://github.com/mierak/rmpc/pull/122
- feat: mouse support for modals by @mierak in https://github.com/mierak/rmpc/pull/124
- feat: disable album art per protocol by @mierak in https://github.com/mierak/rmpc/pull/127
- feat: list MPD decoder plugins (modal/cli) by @soifou in https://github.com/mierak/rmpc/pull/126
- feat: lenght constraint in song table format by @mierak in https://github.com/mierak/rmpc/pull/132
- feat: open or play action by @mierak in https://github.com/mierak/rmpc/pull/134
- feat: add confirmation modal for playlist deletion by @soifou in https://github.com/mierak/rmpc/pull/137
- feat: select and move multiple songs in queue by @mierak in https://github.com/mierak/rmpc/pull/156
- feat: move in queue with ranges by @mierak in https://github.com/mierak/rmpc/pull/157
- feat: kebyind to invert selection in browsers/queue by @mierak in https://github.com/mierak/rmpc/pull/158
- feat: remove selected from queue by @mierak in https://github.com/mierak/rmpc/pull/159
- feat: show album date in (album)artists panes by @mierak in https://github.com/mierak/rmpc/pull/173
- feat: try reconnect on connection loss by @mierak in https://github.com/mierak/rmpc/pull/177
- feat: apply scrollof in queue on start by @mierak in https://github.com/mierak/rmpc/pull/180
- feat: enhance queue deletion confirm modal by @soifou in https://github.com/mierak/rmpc/pull/128
- feat: time synced lyrics pane by @mierak in https://github.com/mierak/rmpc/pull/131
- feat: add configurable ellipsis symbol for text truncation by @soifou in https://github.com/mierak/rmpc/pull/140
Fixed
- fix: few typos in UI and internal messages by @soifou in https://github.com/mierak/rmpc/pull/129
- fix: weird rendering and click to select in modal tables with wrapped lines by @mierak in https://github.com/mierak/rmpc/pull/130
- fix: scrolloff and sorting issues in playlists and directories by @mierak in https://github.com/mierak/rmpc/pull/120
- fix: panic on volume > 116 by @crolbar in https://github.com/mierak/rmpc/pull/138
- fix: word wrap inside keybinds modal by @mierak in https://github.com/mierak/rmpc/pull/139
- fix: recreate read stream on error by @mierak in https://github.com/mierak/rmpc/pull/135
- fix: several things happening on player event instead on song change by @mierak in https://github.com/mierak/rmpc/pull/142
- fix: add missing default keybind for album artists tab by @mierak in https://github.com/mierak/rmpc/pull/144
- fix: swap default single and consume keybinds by @mierak in https://github.com/mierak/rmpc/pull/148
- fix: album art not clearing when stopped by @mierak in https://github.com/mierak/rmpc/pull/149
- fix: specify rust-version in cargo manifest by @mierak in https://github.com/mierak/rmpc/pull/169
- fix: improve error handling when reading mpd response by @mierak in https://github.com/mierak/rmpc/pull/170
- fix: adjust scrollbar position in browser panes by @soifou in https://github.com/mierak/rmpc/pull/171
- fix: add song/album to queue and cmd env in artists by @mierak in https://github.com/mierak/rmpc/pull/174
- fix: lyrics being off by one line by @mierak in https://github.com/mierak/rmpc/pull/176
- fix: move in playlists sometimes failing by @mierak in https://github.com/mierak/rmpc/pull/184
- fixup: handle scrollbar position when no border by @soifou in https://github.com/mierak/rmpc/pull/172
- fixup: full border on splits being broken by @mierak in https://github.com/mierak/rmpc/pull/181
Docs
- docs: mention mpd prerequisite by
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Rusty Music Player Client
Rmpc is a beautiful, modern and configurable terminal based Music Player Daemon client. It is heavily inspired by ncmpcpp and ranger/lf file managers.

Get started
Description, configuration and installation methods can be found on the rmpc website
Main Features
- Album cover art display if your terminal supports either of Kitty, Sixel, Iterm2 protocols, or via ueberzuggpp
- Cava integration for music visualisation
- Support for synchronized lyrics
- Ability to play music from YouTube
- Configurable (T)UI
- Configure what information(if any!) is displayed in the header
- Configure what columns are displayed on the queue screen
- Create any color theme you want
- Every keybind can be changed, vim-like by default
- Ranger/LF-like three-column browser through your music library
- Basic playlist management
- Support scripting through basic CLI mode and script hooks
And more to come
Discussion
- Open a discussion in the repository
- Join the Discord server: https://discord.gg/9MAddPFqSF
Status
Rmpc is still maturing. It is stable for daily use, although breaking changes, while rare, are sometimes unavoidable.