Вопрос или проблема
Я часто запускаю свой аудиоплеер (обычно Audacious версии 3.9) одновременно с браузером Chrome. Если я открываю видео в Chrome, он, похоже, “присваивает” MPRIS-контроль у аудиоплеера. Единственный способ заставить мои горячие клавиши управлять Audacious — это закрыть Chrome.
Должен быть способ предотвратить распознавание Chrome как “медиа-плеера” для MPRIS. Я предполагаю, что проблема в том, что одно (или оба) из этих приложений неправильно “присваивает” функции MPRIS. Согласно странице справки, это связано с переменной MPRIS_REMOTE_PLAYER
:
MPRIS_REMOTE_PLAYER
Если не установлено или установлено в*
, mpris-remote будет общаться с первым плеером, который он найдет, зарегистрированным под “org.mpris.*
“, через D-BUS. Если у вас работает только один совместимый с MPRIS плеер, это будет нормально. Если у вас работает более одного, вам нужно будет установить эту переменную на имя плеера, с которым вы хотите подключиться. Например, если установить вfoo
, он будет пытаться общаться с плеером по адресу “org.mpris.foo
” и потерпит неудачу, если ничего не существует с этим именем.
Моя проблема в том, что я не знаю, как установить эту переменную. Я искал в редакторе D-bus что-то соответствующее (по аналогии с ответом о медиа-плеерах в трее), но там нет никакой подходящей настройки, которую я мог бы найти.
Тем временем я обнаружил следующее:
$ qdbus org.mpris.*
org.mpris.MediaPlayer2.audacious
org.mpris.MediaPlayer2.chrome.instance13448
Таким образом, похоже, Audacious действительно имеет свою “собственную” идентичность MPRIS, так как же мне предотвратить распознавание Chrome как “медиа-плеера” для MPRIS? Любая помощь в настройке этого будет очень appreciated.
Р.s. Я на Ubuntu 18.04 LTS.
Хотя было бы неплохо узнать, существует ли “управляемое MPRIS” решение этой проблемы, есть обходной путь, используя настройки в самом Chrome.
Похоже, что Chrome довольно агрессивен в “поглощении” управления клавишами/горячими клавишами медиа. Это можно отключить, следуя этим шагам, найденным в посте на сайте GHacks.net:
Вы можете отключить флаг обработки аппаратных медиа-клавиш в Chrome, чтобы предотвратить ограничение доступа к медиа-клавишам в Google Chrome. Вот как это сделать:
- Загрузите
chrome://flags/#hardware-media-key-handling
в адресной строке Chrome; это должно открыть правильный флаг при загрузке.- Установите флаг обработки аппаратных медиа-клавиш на Отключено.
- Перезапустите Google Chrome.
Когда я включил этот переключатель на своей машине, Chrome предложил кнопку “Перезапуск”, которая перезапустила браузер с сохранением вкладок из предыдущей/ланшетной сессии.
Это решает мою проблему — с предостережением, что если существует “решение” MPRIS (т.е., использование спецификации MPRIS для “скрытия” потенциального медиа-плеера), я все равно хотел бы знать. 😉
Я только что “обнаружил” Playerctl (или, на Github). playerctl
— это прекрасный инструмент командной строки, который решает некоторые (все?) проблемы автора. Из официального “О программе”:
Playerctl — это утилита и библиотека командной строки для управления медиаплеерами, которые реализуют спецификацию интерфейса MPRIS D-Bus. Playerctl упрощает связывание действий плеера, таких как воспроизведение и пауза, с медиа-клавишами. Вы также можете получить метаданные о воспроизводимом треке, такие как артист и название, для интеграции в генераторы статусных строк или другие инструменты командной строки.
Для более продвинутых пользователей Playerctl предоставляет библиотеку, доступную на вашем любимом языке сценариев, которая позволяет более детально управлять, например, подписываться на события медиаплеера или получать метаданные, такие как артист и название воспроизводимого трека.
Это очень простой способ использовать MPRIS-контроль, целясь на конкретные медиаплееры, среди прочего. Он может быть использован для прямого решения основной проблемы автора следующим образом:
- Установите
playerctl
, легко из.deb
- Определите плеер, который вы хотите контролировать. Это можно сделать либо так, как сделал автор, исходя из отличительного завершающего элемента в ответах на
$ qdbus org.mpris.*
, либо (используяplayerctl
), с помощью$ playerctl --list-all
. - Затем вы можете целиться на управление, которое хотите использовать, с именем этого плеера, например:
$ playerctl --player=audacious play-pause
(что переключает воспроизведение/паузу). Теперь никакой другой MPRIS-связанный плеер не сможет “украсть” эту команду. - Назначьте эту команду на горячую клавишу (Настройки > Устройства > Клавиатура >
+
).
Таким образом, становится простым делом целиться на MPRIS-команды, которые не будут “присвоены” каким-либо другим плеером/приложением, что и является основным беспокойством автора.
Полный набор инструкций доступен на чтении на github Playerctl.
Создайте файл /etc/dbus-1/session.d/(любое имя файла).conf
со следующим содержимым (в моем случае виновным приложением был Gwenview):
<busconfig>
<policy context="mandatory">
<deny own_prefix="org.mpris.MediaPlayer2.Gwenview"/>
</policy>
</busconfig>
Затем введите sudo killall -s HUP dbus-daemon
, чтобы перезагрузить конфигурации.
Ответ или решение
Как предотвратить распознавание приложения Chrome в MPRIS
Если у вас возникла проблема с тем, что ваш аудиоплеер, например Audacious, оказывается отключённым из-за того, что браузер Chrome захватывает управление мультимедийными клавишами, это довольно распространённая ситуация. В этой статье мы разберёмся, как можно решить эту проблему и предотвратить Chrome от распознавания как мультимедийного плеера в контексте MPRIS (Media Player Remote Interfacing Specification).
Понимание MPRIS и проблемы
MPRIS представляет собой интерфейс, который позволяет взаимодействовать с мультимедийными плеерами через D-Bus. В вашей ситуации наблюдается, что Chrome захватывает управление мультимедиа, и вам нужно вернуть эти функции обратно в Audacious. Это может быть связано с тем, что оба приложения реализуют MPRIS, и при взаимодействии браузер останавливает действия другого плеера.
Отключение обработки мультимедийных клавиш в Chrome
Простейший способ решения проблемы заключается в отключении функции "Обработка аппаратных клавиш мультимедиа" в самом Chrome. Вот шаги, чтобы выполнить это:
- Введите
chrome://flags/#hardware-media-key-handling
в адресную строку Chrome. - Установите флажок "Обработка аппаратных клавиш мультимедиа" в состояние "Отключено".
- Перезапустите Chrome, чтобы изменения вступили в силу.
Эта настройка позволит Audacious занять основную роль в управлении мультимедийными функциями, что решит проблему "перехвата" со стороны Chrome.
Способы управления мультимедийными командами с помощью Playerctl
Если вы хотите более гибкое решение и поиск самого подходящего плеера для управления, вы можете установить утилиту playerctl
. Она позволяет управлять мультимедийными плеерами через командную строку и может помочь вам назначить мультимедийные команды для конкретного плеера. Для установки и использования playerctl
выполните следующие шаги:
- Установите
playerctl
, загрузив.deb
пакет с официального репозитория. - Определите нужный плеер с помощью команды:
playerctl --list-all
- Используйте команду для управления Audacious, например:
playerctl --player=audacious play-pause
- Назначьте эту команду на сочетания клавиш в системных настройках.
Таким образом, вы сможете направлять команды MPRIS конкретно в Audacious, что решит проблему перехвата.
Запрет доступа к MPRIS для Chrome
Если вам необходим более сложный и системный подход, вы можете создать конфигурационный файл для D-Bus, который будет запрещать Chrome работать как MPRIS-плеер. Для этого создайте файл /etc/dbus-1/session.d/70-deny-chrome.conf
с следующим содержимым:
<busconfig>
<policy context="mandatory">
<deny own_prefix="org.mpris.MediaPlayer2.chrome"/>
</policy>
</busconfig>
После создания файла перезапустите демон D-Bus с помощью:
sudo killall -s HUP dbus-daemon
Это действие заблокирует доступ Chrome к MPRIS, что даст возможность управлять мультимедиа ключами только через Audacious.
Заключение
Предотвращение захвата управления мультимедийными клавишами браузером Chrome — это многогранная задача, но с правильными настройками и инструментами, такими как playerctl
или ограничениями в D-Bus, вы можете обеспечить стабильное и беспроблемное взаимодействие с вашим аудиоплеером. Эти шаги помогут вам вернуть контроль над мультимедийным воспроизведением и наслаждаться не только музыкой, но и видео без лишних хлопот.