Linux
一款为 Linux 而写的 Linux 音乐播放器
不是移植,不是 Electron 套壳,也不是 Wine 里的 Foobar2000。一个原生可执行文件,把 Linux 当作头等目标,而不是排第三的那个。
它是为哪个问题写的
好用的 Linux 播放器各自都放弃了一些东西。Tauon 的标签功能很浅。Strawberry 不能自由组合。Quod Libet 不是谁会拿来做主题的东西。同时把面板、深度标签和主题分享三件事都做齐的那一套,在 Windows 上卡了二十年。
用 Wine 跑那一套,能用到它不能用为止。像 CaTRoX 这样的皮肤是靠一层层变通手段撑着的,某些地方甚至在面板里渲染 Internet Explorer。过一层翻译层,有多少是靠运气撑着就看得很清楚了,而每次系统更新都是一次开盲盒。
rox 就是那个形状的原生写法:四十来种面板由你自己排布、标签编辑敢用在真实收藏上、主题作为单个文件流通。
怎么装
在 Arch 上它在 AUR 里叫 rox-player,由作者共同维护。任何助手都行,也可以自己克隆再跑 makepkg -si。
这个仓库同时也是一个 flake,所以 Nix 和 NixOS 不用打包步骤就能拿到。第一条命令不装任何东西就能跑 rox,第二条把它放进你的 profile。
其他情况下,解压 tar 包,跑 ./rox。一个可执行文件,没有安装程序,删掉之后什么都不留。
yay -S rox-player
nix run github:zealsprince/rox
nix profile install github:zealsprince/roxWayland 和 X11
两个都支持,通过 gpui 原生支持。窗口装饰是每套工作区自己的设置,不是编译期的决定,所以这套布局用服务端装饰、下一套用无边框都行,不用重启到另一个构建里。
通过 ALSA 的独占输出
独占模式直接以 hw:CARD=x,DEV=n 打开声卡。ALSA 名字里只有它路上没有 dmix、没有 plug、也没有任何声音服务器;也正因如此,只有这条路会在做不到某个采样率时直接拒绝,而不是悄悄重采样成别的东西。
代价也很直白:rox 在独占模式下握着这张卡,就是握着。在你停下之前,系统上别的东西都不能从这个设备发声。rox 告诉你的是硬件到底答应了什么,而不是你要的是什么,所以不匹配会变成一个数字,而不是一种怀疑。
共享模式是默认的,表现和你桌面上其他任何程序一样。
桌面集成
媒体键和“正在播放”走的是真正的 MPRIS 服务,所以 playerctl、GNOME 和 KDE 的媒体控件,以及任何懂 org.mpris.MediaPlayer2 的东西,都不用配置就能看见它。
托盘图标通过 StatusNotifierItem 上总线,这也是“关到托盘”能放心用的原因:如果没有 SNI 宿主在接收它,关掉最后一个窗口就是退出,而不是留下一个无头进程,让你再也够不着。
基准测试里全是 Linux 播放器
本站那张对比表是在 Linux 上、拿 Linux 软件跑的:Elisa、fooyin、Quod Libet、Strawberry、Museeks 和 Tauon,同一台机器,同一个五万首曲目媒体库。rox 0.3 秒出窗口,稳定在 134 MB。下一个能跑完加载的最轻的那个,内存差不多是它的三倍。
它在 Linux 上做不到的
- 只有 x86_64。没有 aarch64 的 Linux 构建,所以 ARM 板子和 Asahi 得自己从源码构建。
- 没有插件 API,所以这里没有任何东西能替掉你依赖的某个 Foobar2000 组件。
独占输出会告诉你声卡到底答应了什么,而不是你要的是什么;一套外观在这儿搭好,可以直接递给用 Windows 的人。要是 Linux 一直让你缺的就是这类东西,那它在这儿。
让它指向你的媒体库
自由开源,采用 AGPL。不用账号,关掉之后后台什么都不留。
更多内容见它长什么样、完整的 Foobar2000 对比,或者上面那个独占输出到底在做什么,见 ReplayGain 和位完美。 同一个播放器,也有 Windows 和 macOS 版。