ncmpcpp
Ncmpcpp 是一个 mpd 客户端(兼容 mopidy),其用户界面与 ncmpc 非常相似,但它提供了新的实用功能,例如支持库搜索的正则表达式、扩展歌曲格式、项目过滤、对播放列表进行排序的能力以及本地文件系统浏览器。
要使用它,系统上必须存在功能正常的 mpd,因为 ncmpcpp/mpd 以客户端/服务器关系协同工作。
安装
基本配置
ncmpcpp 的 shell "GUI" 是高度可定制的。编辑 $XDG_CONFIG_HOME/ncmpcpp/config
以符合您的喜好。如果在安装后,$XDG_CONFIG_HOME/ncmpcpp/config
尚未创建,只需复制示例配置,更改所有者 并至少编辑以下三个配置选项
- mpd_host - 应指向 mpd 所在的 host,如果位于同一台机器上,则可以是 "localhost"、"127.0.0.1" 或 "::1"。要使用密码连接,请写入 "password@host"
- mpd_port - mpd 的默认值应为 "6600"
- mpd_music_dir - 与
mpd.conf
中 "music_directory" 中指定的目录值相同
有关灵感,请参阅以下资源
/usr/share/doc/ncmpcpp/config
中的示例配置文件。- 展示您的 .ncmpcpp/config 和屏幕截图论坛帖子
启用可视化
对于可视化,在 /etc/mpd.conf
或 ~/.config/mpd/mpd.conf
中添加几行以启用 快速傅里叶变换 数据的生成,用于可视化
audio_output { type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" }
audio_output
部分。有关详细信息,请参阅 音乐播放器守护进程#音频配置。需要在 $XDG_CONFIG_HOME/ncmpcpp/config
中添加其他行
visualizer_data_source = "/tmp/mpd.fifo" visualizer_output_name = "my_fifo" visualizer_in_stereo = "yes" visualizer_type = "spectrum" visualizer_look = "+|"
- visualizer_type - 将可视化设置为
spectrum
/ellipse
/wave_filled
分析器或wave
波形。 - visualizer_look - 设置可视化器的外观(字符串必须正好为 2 个字符长:第一个用于波形,第二个用于频谱、wave_filled 和 ellipse)。
如果您使用 mopidy,可视化将通过 gstreamer 的 udpsink 处理。编辑 mopidy.conf
的 [audio]
块中的 output
output = tee name=t ! queue ! autoaudiosink t. ! queue ! audio/x-raw,rate=44100,channels=2,format=S16LE ! udpsink host=localhost port=5555
这会将音频数据转发到端口 5555
。为了让 ncmpcpp
从此端口读取数据,请相应地更改其 visualizer_data_source
visualizer_data_source = "localhost:5555"
技巧与窍门
重新映射按键
按 F1
键即可从 npmpcpp 本身获得按键绑定及其各自功能的列表。用户只需将 /usr/share/doc/ncmpcpp/bindings
复制到 $XDG_CONFIG_HOME/ncmpcpp/
并对其进行编辑,即可重新映射任何默认按键。
从文件名自动设置标签,反之亦然
在标签编辑器中,您可以选择一个包含音乐的目录,然后在中间部分选择 Filename
选项。这将打开一个小窗口,其中包含两个选项:Get Tags from Filename
和 Rename files
。如果您选择 Get Tags From Filename
,则会显示一个包含两个窗口的弹出窗口。在左侧,您可以输入一个模式,该模式从文件名中提取选定的信息。您也可以点击 Preview
来查看结果的外观。在右侧,您可以看到包含所有可能的关键字的图例,这些关键字可用于提取。
一个简单的示例模式是:%a - %t
。如果您的文件根据此模式(艺术家 - 标题)命名,则此模式将提取此信息并设置文件的标签。
另一个选项 Rename Files
则完全相反。它从音频文件中获取标签并从中创建文件名。
歌曲更改通知
notify-send
可在 execute_on_song_change
命令中使用,以在歌曲更改时(以及应用程序启动时)生成通知。这取决于是否安装并配置了桌面通知服务器。例如
execute_on_song_change = notify-send "Now Playing" "$(mpc --format '%title% \n%artist% - %album%' current)"
带专辑封面
如果您希望歌曲更改通知具有当前播放歌曲的专辑封面,则可以使用此脚本。专辑封面预览默认将存储在 $XDG_CONFIG_HOME/ncmpcpp/previews
中,缩放到 128x128。预览文件名是 base64 编码的专辑名称,因此不应保存重复的预览。
假设 ~/.local/bin
在您的 $PATH
中,创建(并使之可执行)
~/.local/bin/songinfo
#!/bin/sh music_dir="$HOME/Music" previewdir="$XDG_CONFIG_HOME/ncmpcpp/previews" filename="$(mpc --format "$music_dir"/%file% current)" previewname="$previewdir/$(mpc --format %album% current | base64).png" [ -e "$previewname" ] || ffmpeg -y -i "$filename" -an -vf scale=128:128 "$previewname" > /dev/null 2>&1 notify-send -r 27072 "Now Playing" "$(mpc --format '%title% \n%artist% - %album%' current)" -i "$previewname"
并将此添加到您的 ncmpcpp 配置中
execute_on_song_change = songinfo