ncmpcpp

出自 ArchWiki

Ncmpcpp 是一个 mpd 客户端(兼容 mopidy),其用户界面与 ncmpc 非常相似,但它提供了新的实用功能,例如支持库搜索的正则表达式、扩展歌曲格式、项目过滤、对播放列表进行排序的能力以及本地文件系统浏览器。

要使用它,系统上必须存在功能正常的 mpd,因为 ncmpcpp/mpd 以客户端/服务器关系协同工作。

安装

安装 ncmpcpp 软件包。

基本配置

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" 中指定的目录值相同

有关灵感,请参阅以下资源

启用可视化

对于可视化,在 /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)。
注意: 如果您遇到同步问题,请将 mpd 配置中的 buffer_time 更改为 100000 或更少

如果您使用 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 FilenameRename 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

参见

dotshare.it 配置