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/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, всё на одной машине с одной и той же коллекцией в 50 000 треков. rox поднимает окно за 0,3 секунды и успокаивается на 134 МБ. Следующий по лёгкости из тех, кто дозагружается, ест почти втрое больше памяти.
Чего он не умеет на Linux
- Только x86_64. Сборки под aarch64 Linux нет, так что ARM-платы и Asahi собирают из исходников.
- Нет API плагинов, так что ничто здесь не заменит конкретный компонент Foobar2000, от которого вы зависите.
Монопольный вывод, который сообщает, на что звуковая карта согласилась на самом деле, а не то, что вы у неё попросили, и внешний вид, который можно собрать здесь и отдать тому, кто сидит на Windows. Если как раз этого вам на Linux и не хватало, вот оно.
Направьте его на свою коллекцию
Свободно и с открытым исходным кодом под AGPL. Без аккаунта, и ничего не работает в фоне, когда он закрыт.
Подробнее о том, как он выглядит, полное сравнение с Foobar2000 или что на самом деле делает монопольный вывод выше, в ReplayGain и побитовом выводе. Тот же плеер на Windows и macOS.