백그라운드에서 실행 중인 오디오/비디오를 재생/일시 중지하는 키보드 단축키를 어떻게 만들 수 있나요?

백그라운드에서 실행 중인 오디오/비디오를 재생/일시 중지하는 키보드 단축키를 어떻게 만들 수 있나요?

그래서 저는 노트북용으로 이 키보드를 구입했습니다. 이 키보드에는 미디어 키가 없으며, 백그라운드에서 재생 중인 모든 미디어를 일시 정지하기 위해 노트북의 재생/일시 정지 버튼을 누르는 데 매우 익숙했습니다. 하지만 이 키보드에는 미디어 키가 없기 때문에 이를 수행하려면 키보드 단축키를 직접 만들어야 합니다. 지금까지 볼륨 조절을 위한 키보드 단축키를 성공적으로 만들었습니다.

연구와 나의 시도:

  1. 터미널에서 미디어 키를 에뮬레이트하는 명령을 보여주는 이 페이지를 찾았습니다. https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181. 명령은 xdotool key XF86AudioPlay다음을 통해 키보드 단축키를 만들 때입니다 .설정 > 키보드 > 앱 단축키. 이것은 작동하지 않는 것 같습니다.

  2. 내가 설정한 키보드 단축키를 누르면슈퍼+F11CPU 사용량이 약간 증가했는데 이는 바로가기가 작동하고 있음을 의미합니다. exo-open --launch WebBrowser짐작할 수 있듯이 단축키를 누르면 웹 브라우저가 열리는 바로가기 실행 명령을 변경하여 이를 확인했습니다.슈퍼+F11.

  3. 이제 저는 C/C++에 대해 조금 알고 있기 때문에 똑같은 일을 하는 래퍼를 만들었습니다.

#include <stdlib.h>

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

프로그램을 실행하기 위한 바로가기를 매핑했지만 아쉽습니다! 여전히 작동하지 않습니다.

랩톱 키보드의 기본 재생/일시 중지 버튼을 눌렀을 때 XFCE 명령이 실행되도록 하려면 어떻게 해야 합니까? 이 버튼은 백그라운드에서 재생 중인 모든 미디어를 재생/일시 중지하는 것처럼 보입니다.

저는 Arch Linux에서 XFCE를 사용하고 있습니다. 저는 주로 리듬박스 뮤직 플레이어로 음악을 듣습니다.

답변1

단지 노래 rhythmbox재생 이나 노래 일시 정지를 제어하고 싶다면 이것으로 충분합니다 .rhythmbox-client --playrhythmbox-client --pause

playerctl하지만 일부 Arch 위키에서는 현재 재생 중인 미디어를 제어하기 위해 이 소프트웨어가 호출되는 것을 발견했습니다 . 우선순위가 무엇인지 100% 확신할 수는 없지만 YouTube 비디오를 열면 Rhythmbox를 건드리지 않고 기본적으로 이를 제어합니다. 재생과 일시정지 간을 전환하려면 를 실행하세요 playerctl play-pause. 실행한 다음 비디오/음악 playerctl next과 실행한 이전 비디오/음악으로 이동합니다 playerctl previous.

이것이 다른 배포판에서도 작동할지, 아니면 전혀 사용할 수 있을지는 100% 확신할 수 없지만, Arch에서는 작동합니다.

답변2

rhythmbox-client --play/--pauseRhythmbox는 두 명령을 모두 지원하는 것뿐만 아니라 dbus-send다음에 설명된 대로 전송된 D-Bus 명령을 사용하는 것으로 보입니다.AskUbuntu에 대한 이 질문그리고이 질문은 AskUbuntu 답변에서 링크된 U&L.SE에 있습니다..

간단히 말해서 dbus-send명령은 다음과 같습니다.

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

전제 조건은 Rhythmbox의 MPRIS API를 먼저 활성화해야 한다는 것입니다.

그러나 이와 동일한 키 입력을 사용하여 YouTube 비디오를 제어해야 하는 경우 현재 재생 중인 플레이어를 찾아 Rhythmbox 또는 네트워크에 올바른 명령을 보낼 수 있는 스크립트를 활성화하려면 이러한 키 입력이 필요할 수 있습니다. 브라우저(또는 기타 응용 프로그램) YouTube 동영상을 재생하는 데 사용됩니다. 브라우저의 경우 현재 브라우저 탭이 아닐 수도 있는 올바른 브라우저 탭에 대해 명령/키 입력을 전송해야 합니다.

답변3

나는 당신과 같은 것을 발견했습니다. 명령은 xdotool key XF86AudioPlay셸에서 실행되지만 바로 가기 또는 응용 프로그램 실행 프로그램에서는 실행되지 않습니다. 그래서 저는 xdotool이것이 대화형 셸에서 실행될 때만 작동한다는 결론에 도달했습니다 . 흥미롭게도 다음 명령을 사용하여 키보드 단축키와 실행기 아이콘(예: 작업 표시줄)이 모두 작동하도록 했습니다.

bash -i -c 'xdotool key XF86AudioPlay'

스위치를 제거하여 비대화형 -i으로 만들면 작동이 중지됩니다. bash왜 이런 일이 발생하는지 모르겠습니다 ...

이 방법의 좋은 점 XF86AudioPlay은 Firefox의 백그라운드에서 재생되는 Youtube 비디오를 일시 중지하는데도 작동한다는 것입니다.


고쳐 쓰다

좋아, 왜 이런 일이 일어나는지 알아요. 내 안의 무엇인가 .bashrc가 바뀌었습니다 $LD_LIBRARY_PATH. 그것은 xdotool달리기에 꼭 필요한 것입니다. 그러나 내 GUI 세션(XFCE)에 로그인하면 이런 일이 발생하지 않습니다. 따라서 터미널이 아닌 GUI(예: 실행기 또는 Alt+F2)에서 직접 실행되는 모든 프로그램은 수정된 프로그램을 볼 수 없으므로 $LD_LIBRARY_PATH일부 라이브러리가 손실됩니다.

따라서 올바른 해결책은 $LD_LIBRARY_PATH실제로 . 이런 식으로 XFCE는 로그인 시 이를 실행하고 모든 프로그램에서 이를 볼 수 있습니다. 그럼에도 불구하고 향후 방문자를 위해 이전 답변을 여기에 남겨 두겠습니다..profile.bashrc

답변4

Audacious를 사용하는 경우 다음을 사용할 수 있습니다.

audacious -t

일시 중지와 재생 간을 전환합니다( 참조 man audacious).

관련 정보