バックグラウンドで実行されているオーディオ/ビデオを再生/一時停止するキーボードショートカットをどのように作成できますか?

バックグラウンドで実行されているオーディオ/ビデオを再生/一時停止するキーボードショートカットをどのように作成できますか?

だから私はラップトップ用にこのキーボードを購入しました。このキーボードにはメディアキーがなく、バックグラウンドで再生中のすべてのメディアを一時停止するためにノートパソコンの再生/一時停止ボタンを押すのに非常に慣れていました。ただし、このキーボードにはメディアキーがないため、これを行うにはキーボードショートカットを直接作成する必要があります。これまでの音量調整のためのキーボードショートカットを正常に作成しました。

研究と私の試み:

  1. 端末でメディアキーをエミュレートするコマンドを示すこのページが見つかりました。 https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181。コマンドは、xdotool key XF86AudioPlay次のようにキーボードショートカットを作成するときです。設定>キーボード>アプリショートカット。これはうまくいかないようです。

  2. 設定したキーボードショートカットを押すとスーパー+F11CPU使用量がわずかに増加したが、これはショートカットが動作していることを意味する。exo-open --launch WebBrowserお分かりのように、ショートカットキーを押すと、Webブラウザが開くショートカット実行コマンドを変更してこれを確認しました。スーパー+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 Wikiでは、現在再生中のメディアを制御するためにこのソフトウェアが呼び出されることを発見しました。優先順位が何であるかを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)。

関連情報