rox

Linux

Музыкальный плеер для Linux, который делали под Linux

Не порт, не обёртка на Electron и не Foobar2000 под Wine. Один нативный бинарник, для которого Linux первая цель, а не третья.

Задача, ради которой он написан

Хорошие Linux-плееры каждый чем-то жертвуют. У Tauon поверхностная работа с тегами. Strawberry не собирается из панелей. Quod Libet никто не станет оформлять. Связка, которая даёт панели, глубокие теги и историю с темами разом, двадцать лет застряла на Windows.

Гонять эту связку через Wine работает, пока не перестанет. Скин вроде CaTRoX держится на стопке костылей и местами на Internet Explorer, который рисует внутри панелей. Через слой трансляции становится видно, сколько там держится на удаче, и каждое обновление ОС — это шанс это выяснить.

rox — это та же форма, написанная нативно: около сорока видов панелей, которые вы расставляете сами, правка тегов, которой можно доверить настоящую коллекцию, и темы, которые ездят одним файлом.

Установка

На Arch он в AUR как rox-player, при участии автора. Подойдёт любой хелпер, или клонируйте и запустите makepkg -si сами.

Репозиторий ещё и flake, так что Nix и NixOS получают его без шага упаковки. Первая команда запускает rox, ничего не устанавливая, вторая кладёт его в ваш профиль.

Во всех остальных случаях распакуйте архив и запустите ./rox. Один бинарник, без установщика, и ничего не остаётся, когда вы его удалите.

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

Wayland и 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, всё на одной машине с одной и той же коллекцией в 50 000 треков. rox поднимает окно за 0,3 секунды и успокаивается на 134 МБ. Следующий по лёгкости из тех, кто дозагружается, ест почти втрое больше памяти.

Чего он не умеет на Linux

Монопольный вывод, который сообщает, на что звуковая карта согласилась на самом деле, а не то, что вы у неё попросили, и внешний вид, который можно собрать здесь и отдать тому, кто сидит на Windows. Если как раз этого вам на Linux и не хватало, вот оно.

Направьте его на свою коллекцию

Свободно и с открытым исходным кодом под AGPL. Без аккаунта, и ничего не работает в фоне, когда он закрыт.

Подробнее о том, как он выглядит, полное сравнение с Foobar2000 или что на самом деле делает монопольный вывод выше, в ReplayGain и побитовом выводе. Тот же плеер на Windows и macOS.