Как создать сочетание клавиш для воспроизведения/приостановки любого аудио/видео, работающего в фоновом режиме?

Как создать сочетание клавиш для воспроизведения/приостановки любого аудио/видео, работающего в фоновом режиме?

Итак, я купил эту клавиатуру для своего ноутбука, на котором нет клавиш управления мультимедиа, и я очень привык нажимать кнопку воспроизведения/паузы на своем ноутбуке, чтобы приостановить воспроизведение любого медиа в фоновом режиме. Однако с этой клавиатурой мне приходится создавать собственные сочетания клавиш, чтобы делать это из-за отсутствия клавиш управления мультимедиа. До сих пор мне удавалось создавать сочетания клавиш для управления громкостью.

Исследования и мои попытки:

  1. Я нашел эту страницу, на которой показана команда для имитации клавиш мультимедиа из терминала. https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181. Команда есть, xdotool key XF86AudioPlayно когда я создаю из этого сочетание клавиш, перейдя кНастройки > Клавиатура > Сочетания клавиш приложений. Кажется, это не работает.

  2. Когда я нажимаю сочетание клавиш, которое я установилСупер+F11Использование моего процессора немного увеличивается, что означает, что ярлык работает. Я подтвердил это, изменив команду, которую выполняет ярлык, наexo-open --launch WebBrowser которую, как вы могли подумать, открывается мой веб-браузер, когда я нажимаюСупер+F11.

  3. Теперь, поскольку я немного знаю C/C++, я создал эту программу-обертку, которая делает ровно то же самое.

#include <stdlib.h>

int main() {
    system("xdotool key XF86AudioPlay");
}

и назначил ярлык для запуска этой программы, но увы!! она все еще не работает.

Как мне получить команду, которую XFCE выполняет при нажатии кнопки воспроизведения/паузы по умолчанию на клавиатуре моего ноутбука, поскольку она, по-видимому, воспроизводит/приостанавливает любое медиа-содержимое, воспроизводимое в фоновом режиме.

Я использую XFCE на Arch Linux. Обычно я слушаю музыку на Rhytmbox Music Play.

решение1

Если вы хотите только управлять, rhythmboxто достаточно будет rhythmbox-client --playпросто воспроизвести песню или rhythmbox-client --pauseпоставить ее на паузу.

Но я нашел это программное обеспечение, которое называется playerctlв какой-то Arch wiki, которое управляет текущим воспроизводимым медиа. Я не уверен на 100%, каков его приоритет, но когда у меня открыто видео YouTube, оно управляет им по умолчанию, а не возится с Rhythmbox. Чтобы переключиться между воспроизведением и паузой, запустите playerctl play-pause. Чтобы перейти к следующему видео/музыке, которые вы запускаете playerctl next, и для предыдущего видео/музыки, запустите playerctl previous.

Я не уверен на 100%, работает ли это в каком-либо другом дистрибутиве и доступно ли это вообще, но у меня это работает в Arch.

решение2

Rhythmbox, похоже, поддерживает обе rhythmbox-client --play/--pauseкоманды, а также команды D-Bus, отправленные с помощьюdbus-send , как описано вэтот вопрос на AskUbuntuиэтот вопрос здесь, на U&L.SE, как указано в ответе AskUbuntu.

Короче говоря, dbus-sendкоманда будет такой:

dbus-send --print-reply --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

при условии, что сначала необходимо включить MPRIS API Rhythmbox.

Но если вам также нужно управлять любыми видео YouTube с помощью тех же нажатий клавиш, вам, вероятно, понадобятся эти нажатия клавиш для активации скрипта, который определяет, какой проигрыватель в данный момент воспроизводит видео, и отправляет правильные команды либо в Rhythmbox, либо в любой веб-браузер (или другое приложение), который вы используете для воспроизведения видео YouTube. А для браузера команда/нажатие клавиши должны быть отправлены для правильной вкладки браузера, которая не обязательно будет текущей...

решение3

Я нашел то же, что и вы: команда xdotool key XF86AudioPlayработает из оболочки, но не из ярлыка или панели запуска приложений. Поэтому я пришел к выводу, что она xdotoolработает только при запуске из интерактивной оболочки. И как ни странно, я заставил ее работать в сочетаниях клавиш и значках панели запуска (например, на панели задач) с помощью следующей команды:

bash -i -c 'xdotool key XF86AudioPlay'

Как только вы убираете -iпереключатель, тем самым делая его bashнеинтерактивным, он перестает работать. Не знаю, почему так...

Преимущество этого XF86AudioPlayметода в том, что он также подходит для приостановки воспроизведения видео YouTube в фоновом режиме, например, в Firefox.


Обновлять

Хорошо, я выяснил, почему это происходит. В моем .bashrcя изменил $LD_LIBRARY_PATH, что было необходимо для xdotoolзапуска. Однако этого не произошло при входе в мой сеанс GUI (XFCE). Поэтому любая программа, запущенная непосредственно из GUI (например, лаунчер или Alt+F2), а не из терминала, не увидит измененный $LD_LIBRARY_PATH, таким образом, потеряв некоторые библиотеки.

Так что правильным решением на самом деле было поместить изменения в $LD_LIBRARY_PATHвместо .profile. .bashrcТаким образом, XFCE будет выполнять их при входе в систему, и все программы смогут их увидеть. Тем не менее, я оставлю старый ответ здесь для будущих посетителей.

решение4

Если вы используете Audacious, вы можете использовать

audacious -t

для переключения между паузой и воспроизведением (см man audacious. ).

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