Запретить MPRIS распознавать приложение

Запретить MPRIS распознавать приложение

У меня часто работает мой аудиоплеер (обычно Audacious v. 3.9) при запущенном браузере Chrome. Если я открываю видео в Chrome, оно, кажется, «забирает» элементы управления MPRIS из аудиоплеера. Единственный способ заставить мои сочетания клавиш управлять Audacious — закрыть Chrome.

Должен быть способ помешать MPRIS распознавать Chrome как "медиаплеер". Я предполагаю, что проблема в том, что одно (или оба) из этих приложений не "заявляют" о том, что 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? Любая помощь в настройке будет высоко оценена.

ПсЯ использую Ubuntu 18.04 LTS.

решение1

Хотя все равно было бы неплохо узнать, существует ли решение этой проблемы, «управляемое MPRIS», обходной путь существует с использованием настроек в самом Chrome.

Похоже, Chrome довольно агрессивно "захватывает" контроль над клавишами/ярлыками мультимедиа. Это можно отключить, выполнив следующие шаги:найдено в постена сайте GHacks.net:

Вы можете отключить флаг Hardware Media Key Handling в Chrome в настоящее время, чтобы запретить Google Chrome ограничивать доступ к медиа-ключам. Вот как это делается:

  1. Загрузите chrome://flags/#hardware-media-key-handlingадресную строку Chrome; при загрузке должен открыться нужный флаг.
  2. Установите флаг обработки аппаратных ключей носителя наНеполноценный.
  3. Перезапустите Google Chrome.

Когда я включил этот переключатель на своем компьютере, Chrome предложил кнопку «Перезапустить», которая перезапустила браузер с сохранением вкладок из предыдущего/перезапущенного сеанса.

Это решает мою проблему спредостережениечто если есть «решение» MPRIS (т.е. использовать спецификацию MPRIS, чтобы «скрыть» потенциальный медиаплеер), я все равно хотел бы знать. ;)

решение2

Я только что «обнаружил»Playerctl(или,на Github). playerctl— замечательный инструмент командной строки, который решает некоторые (все?) проблемы OP. Из официального раздела «О программе»:

Playerctl — это утилита командной строки и библиотека для управления медиаплеерами, реализующими спецификацию интерфейса MPRIS D-Bus. Playerctl упрощает привязку действий плеера, таких как воспроизведение и пауза, к клавишам мультимедиа. Вы также можете получить метаданные о воспроизводимой дорожке, такие как исполнитель и название, для интеграции в генераторы statusline или другие инструменты командной строки.

Для более продвинутых пользователей Playerctl предоставляет интроспективную библиотеку, доступную на вашем любимом языке сценариев, которая обеспечивает более детальный контроль, например возможность подписываться на события медиаплеера или получать метаданные, такие как исполнитель и название воспроизводимой дорожки.

Это очень простой способ использования элементов управления MPRIS при нацеливании на определенные медиаплееры, среди многого другого. Его можно использовать для прямого решения основной проблемы OP следующим образом:

  1. Установить playerctl,легко из.deb
  2. Определите игрока, которым вы хотите управлять. Это можно сделать либо так, как это сделал OP, из отдельного завершающего элемента в ответах на $ qdbus org.mpris.*, либо (используя playerctlсебя) с помощью $ playerctl --list-all.
  3. Затем вы можете указать элементы управления, которые вы хотите использовать с именем этого игрока, например: $ playerctl --player=audacious play-pause(который переключает воспроизведение/паузу). Теперь никакой другой игрок, связанный с MPRIS, не сможет «украсть» эту инструкцию.
  4. Назначьте эту команду сочетанию клавиш (Настройки > Устройства > Клавиатура > +).

Таким образом, становится простым делом выбрать инструкции MPRIS, которые не будут «перехвачены» каким-либо другим проигрывателем/приложением, что и является основной проблемой OP.

Полный набор инструкций доступен по адресуGitHub readme Playerctl.

Связанный контент