web-dev-qa-db-ja.com

場所に基づいてGNOMEのウィンドウにフォーカスするためのキーボードショートカットを割り当てる方法はありますか?

基本的にGNOMEを使い続けたいのですが、i3 WMの動作をエミュレートして、ウィンドウの場所に基づいてウィンドウのフォーカスを調整できるようにします。現在のウィンドウの右側にウィンドウの焦点を合わせる、左側のウィンドウに焦点を合わせるなど。ほとんど機能するwmutilsを調べましたが、GNOMEでは機能しません。それを行う別の方法はありますか?

3
Jonathan

長い答えは短いです:拡張子を使用してください Windowsを置く (「キーボードを使用してフォーカスを移動する」はそれをすべて言います)

まず、現在は実際には不可能であることを確認します

  1. この機能は、GnomeShell CheatSheetにも、Gnome3> Keyboardにもリストされていないようです。残念ながら、キーボードショートカットの完全なリストはどこにもありません。
  2. 私はextensions.gnome.orgにアクセスして、あなたが望むことをする拡張機能を探しましたが、私が見つけたのは、あなたが望むものではない「switcher」と呼ばれる拡張機能だけです。 90ページの結果を調べなかったので、他のことをする前にそこで徹底的に検索する必要があります実際には それを行うための拡張機能があります 、それは '' Put Window ''と呼ばれ、OPは私が書いた後にそれを見つけましたこの答えなので、以下は情報提供のために保管されています。

  3. Alt-tabを使用してそれを実行することを決定できます。これは、Gnome3の方法のようです。

それからあなたは自分でそれを可能にしようとします

私は物事を行う3つの方法を見ます:

  • Gnome3拡張機能を作成します(ただし、必要なものを実装するために必要なすべての機能があるかどうかはわかりません)。私はそれをしようとしませんでした。
  • Gnome3を変更します(ただし、それはおそらくあなたが期待している答えではありません)。私はそれをしようとしませんでした。
  • X11/Wayland/Mirを使用してください。 X11で何をしようとしたかを以下に説明します。 注意してください、X11はまもなくレガシーソフトウェアになります!そして、現在、Wayland/Mirではそれができないかもしれません(しかし、私はチェックしませんでした)

Xdotoolを使用してX11でそれを実行しようとしました

このソリューションは完全には機能していません。それは何よりも楽しみのためのハックです

私のデモを試すことができます select.sh スクリプト。これは約200行のbashスクリプトなので、ここでは説明しませんが、以下でどのように機能するかを説明します。それを使用するには:

  1. xdotoolをシステムにインストールします。リポジトリにあるはずです:)
  2. git clone https://gitlab.com/gabrieldevillers/xdotool-i3ization
  3. gnome3>キーボード>ショートカット>パーソナルショートカットに移動し、それぞれコマンドで4つのエントリを追加します/path/to/select.sh *direction* どこ *direction*はそれぞれupdownleftまたはrightです。

スクリプトの問題:

  1. 遅いです(しかし使用可能:試してみてください)
  2. ウィンドウは重なってはいけません。これは、ウィンドウがユーザーに表示されているかどうかを判断する方法がなかったという事実を置き換えるために使用した条件です(「部分的に非表示のウィンドウの表示領域の計算」および「X:ウィンドウが表示されているかどうかを確認する」の質問を参照してください)このウェブサイトの「ユーザーに、つまり他の人にカバーされていない」)。この必要性は、i3とGnome3の大きな違いによるものです。Gnome3ではウィンドウがオーバーラップする可能性があります(そして、それらはオーバーラップします本当に頻繁に)。

スクリプトのアルゴリズム:

  1. 潜在的なウィンドウのリストを取得します。名前があり、同じワークスペースにある必要があります(オプションですか?ただし、コード「-1」の奇妙なワークスペースがあることに注意してください)。除外したウィンドウのリストには含まれません(オプションの場合もあります)。私はそれから始めて、可能性を保ちました)、見えるようにします(X11の意味では、Gnome2のように、削減されないことを意味します!)
  2. このリストをフィルタリングして、ウィンドウを正しい場所に配置します(スクリプトのこの部分には、改善の余地がたくさんあります)
  3. あなたに最も近いものを取ります(ここでもあなたは私のスクリプトを改善することができます)
2