web-dev-qa-db-ja.com

キーボードショートカットとしてのwmctrl && xdotool

私のワークフローでは、常にchromeのタブ1〜3を変更しない特定のページとして使用しています。

で2番目のタブに移動するキーボードショートカットを作成したい Super+Shift+S

端末から次のbashスクリプトを実行すると、期待どおりに動作しますが、GUIのキーボードショートカット設定からのキーバインディングに関連付けると、Chrome 2番目のコマンドに進みます。

wmctrl -a chrome && xdotool key Ctrl+2

任意の助けをいただければ幸いです。

2
emilraji

次のようにwmctrlxdotoolの間にsleepを挿入してみてください:

wmctrl -a " Google Chrome" && sleep 0.5s && xdotool key Ctrl+2

必要に応じてsleep値を増減して遊ぶことができます。

"chrome"を少なくとも "-Google Chrome"に置き換えることで、コマンドをもう少し具体的にすることもできます。そうすれば、wmctrlがフォーカスを上げるために間違ったウィンドウを選択する可能性が低くなります。つまり、文字列が長いほど、wmctrlがタイトルに "chrome"が含まれている他のアプリケーションのウィンドウを発生させてフォーカスする可能性が低くなります。 wmctrl -lまたはwmctrl -lxに表示されます。


xdotoolのみを使用していてもsleepを必要とするルートは次のとおりです。

xdotool search --name " - Google Chrome" windowactivate %1 && sleep 0.5s && xdotool key Ctrl+2

ノート:

  • sleep値、私はそれをしない機能しているように見える最小値に減らしますが、時代に応じてできるだけ高く保ちますシステムが他の目的でリソースを使用している可能性がある場合。
  • sleepに単位が指定されていない場合、デフォルトはsecondsですが、どの場合でもsを含めたい。
  • xdotoolを含むスクリプト/コマンドを実行するためにキーボードショートカットを使用するときにsleepを要求する根拠は この回答で説明されています
2
DK Bose