rox

Linux

Linux のために作られた Linux の音楽プレイヤー

移植でも、Electron のラッパーでも、Wine の Foobar2000 でもありません。Linux を三番目ではなく本命のターゲットとして扱う、1 つのネイティブバイナリです。

これが書かれた理由

出来のいい Linux プレイヤーは、どれも何かを諦めています。Tauon のタグ編集は浅い。Strawberry は組み替えられない。Quod Libet をテーマで着せ替えようと思う人はいない。パネル、深いタグ編集、テーマの流通をいっぺんにやるスタックは、20 年間 Windows から出られずにいます。

そのスタックを Wine で走らせるのは、動かなくなるまでは動きます。CaTRoX のようなスキンは回避策の積み重ねで、ところによってはパネルの中で Internet Explorer が描画しています。翻訳層を通すと、どれだけ運で持っているかがはっきりします。OS の更新のたびに、それを確かめる機会が来ます。

rox はその形をネイティブに書いたものです。自分で並べる 40 種類ほどのパネル、本物のコレクションを任せられるタグ編集、そして 1 つのファイルとして旅するテーマ。

インストール

Arch なら AUR に rox-player として、作者も共同で保守しています。どのヘルパーでも使えますし、clone して makepkg -si を自分で叩いても構いません。

リポジトリは flake でもあるので、Nix と NixOS はパッケージ化を待たずに使えます。1 つ目のコマンドは何もインストールせずに rox を動かし、2 つ目はプロファイルに入れます。

それ以外はどこでも、tarball を展開して ./rox を実行するだけ。バイナリ 1 つ、インストーラーなし、消せば何も残りません。

yay -S rox-player
nix run github:zealsprince/rox
nix profile install github:zealsprince/rox

Wayland と X11

gpui を通して、どちらもネイティブに。ウィンドウ枠はコンパイル時の決定ではなくワークスペースごとの設定なので、片方のレイアウトではサーバーサイド装飾、次のレイアウトでは枠なしを、別のビルドに入り直さずに使えます。

ALSA の排他出力

排他モードはサウンドカードを hw:CARD=x,DEV=n として直接開きます。これは経路に dmix も plug もサウンドサーバーも挟まらない唯一の ALSA 名で、だからこそ、できないレートを黙ってリサンプリングせずに断ってくれる唯一の道になります。

引き換えは正直なものです。rox が排他モードでカードを掴んでいるあいだは、掴んだままです。止めるまで、そのデバイスからは他の何も鳴りません。rox は頼んだ値ではなくハードウェアが実際に受けた値を伝えるので、食い違いは疑いではなく数字として出てきます。

既定は共有モードで、デスクトップの他のアプリケーションと同じように振る舞います。

デスクトップとの連携

メディアキーと再生中表示は本物の MPRIS サービスを通るので、playerctl、GNOME と KDE のメディアウィジェット、その他 org.mpris.MediaPlayer2 を話すものはすべて、設定なしで認識します。

トレイアイコンは StatusNotifierItem でバスに載ります。だからトレイに残す動作が安全になります。受け取る SNI ホストが動いていなければ、最後のウィンドウを閉じたときに終了するので、戻れないヘッドレスプロセスが取り残されません。

ベンチマークは Linux のプレイヤーばかり

このサイトの比較表は Linux 上で Linux のソフトウェアに対して走らせました。Elisa、fooyin、Quod Libet、Strawberry、Museeks、Tauon を、同じ 5 万曲のライブラリで同じマシンで。rox は 0.3 秒でウィンドウを出し、134 MB で落ち着きます。読み込みを終えられる中で次に軽いものでも、メモリは 3 倍近くかかります。

Linux でできないこと

頼んだ値ではなく、サウンドカードが実際に受けた値を返してくる排他出力。そしてここで組んだ見た目を、Windows を使っている人にそのまま渡せること。Linux でそれを諦めてきたのなら、ここにあります。

自分のライブラリに向けてみる

AGPL のもとで自由に使えるオープンソース。アカウントは不要で、閉じれば裏で動くものも残りません。

どんな見た目かFoobar2000 との比較全文、または上の排他出力が実際に何をしているかは ReplayGain とビットパーフェクト で。 同じプレイヤーが WindowsmacOS にも。