
Итак, я купил эту клавиатуру для своего ноутбука, на котором нет клавиш управления мультимедиа, и я очень привык нажимать кнопку воспроизведения/паузы на своем ноутбуке, чтобы приостановить воспроизведение любого медиа в фоновом режиме. Однако с этой клавиатурой мне приходится создавать собственные сочетания клавиш, чтобы делать это из-за отсутствия клавиш управления мультимедиа. До сих пор мне удавалось создавать сочетания клавиш для управления громкостью.
Исследования и мои попытки:
Я нашел эту страницу, на которой показана команда для имитации клавиш мультимедиа из терминала. https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181. Команда есть,
xdotool key XF86AudioPlay
но когда я создаю из этого сочетание клавиш, перейдя кНастройки > Клавиатура > Сочетания клавиш приложений. Кажется, это не работает.Когда я нажимаю сочетание клавиш, которое я установилСупер+F11Использование моего процессора немного увеличивается, что означает, что ярлык работает. Я подтвердил это, изменив команду, которую выполняет ярлык, на
exo-open --launch WebBrowser
которую, как вы могли подумать, открывается мой веб-браузер, когда я нажимаюСупер+F11.Теперь, поскольку я немного знаю 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
. ).