ショートカットを使用してウィンドウバーからウィンドウを開く方法はありますか

ショートカットを使用してウィンドウバーからウィンドウを開く方法はありますか

ショートカットを使用して、ウィンドウ バーからウィンドウを開く方法はありますか? たとえば、左側の最初のウィンドウを開くには Ctrl+1、左側の 2 番目のウィンドウを開くには Ctrl+2 です。

現時点では xfce4 を使用していますが、xfce4 では不可能な場合、これを許可する他のデスクトップ環境はありますか?

同じアプリケーションに対して複数のウィンドウを開いているため、アプリケーションに関連するソートカットを検索するのではなく、以下で述べるようにウィンドウに関連するソートカットを検索します。

答え1

ちょっとしたスクリプトとシステムへのちょっとした操作で、まさにあなたが説明したとおりに配置できます。

材料

  1. wmctrl; インストールする必要がある可能性があります。
  2. 以下のスクリプト
  3. xprop、ウィンドウのプロパティを取得します。これはすでにシステムにインストールされています。
  4. Xfceパネル設定の設定変更
  5. 追加のキーボードショートカット

設定方法

  • インストールwmctrl

    sudo apt-get install wmctrl
    
  • ディレクトリ~/bin/home/<yourname>/bin)を作成します。以下のスクリプトを空のファイルにコピーし、panel_navigate(拡張子なし)として保存します~/bin実行可能にする

  • パネル設定を変更する:
    設定マネージャ > 「パネル」 > 「項目」(タブ) > 「ウィンドウボタン」 >

    • 「並べ替え順序」 > 選択:タイムスタンプ
    • 「ウィンドウのグループ化」>「しない」を選択
    • 「すべてのワークスペースまたはビューポートのウィンドウを表示する」がオンになっていることを確認します。国連チェックした

    ここに画像の説明を入力してください

  • キーボード ショートカットを追加します。
    設定マネージャ > 「キーボード」 > 「アプリケーション ショートカット」に移動し、「追加」を選択します。次のコマンドを追加します。

    panel_navigate 1
    

    キーの組み合わせCtrl+に設定します1

    ここに画像の説明を入力してください

  • 今、あなたは選択することができます:

    • この手順を繰り返して、+panel_navigate 2の下に追加します(9まで)。Ctrl2

    (保存オプション)または(設定ファイルを手動で編集することに抵抗がない場合):

    • ファイルを編集できます:

      ~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
      

      キーボード ショートカット ( xfce) が保存されている場所です。 でファイルを開きmousepad、次のような行を探します。

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      

      その行をコピーして次の行(挿入)に貼り付け、1 の両方の出現を 2 に変更すると、次のようになります。

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      <property name="&lt;Primary&gt;2" type="string" value="panel_navigate 2"/>
      

    等々..

    インデントがまったく同じであることを確認します。手順を 9 まで繰り返します。

ログアウトして再度ログインすると動作するはずです:

Ctrl+1

ここに画像の説明を入力してください

Ctrl+3

ここに画像の説明を入力してください

等々...

スクリプト

#!/usr/bin/env python3

import subprocess
import sys

def get_value(command):
    return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()

def run_command(command):
    subprocess.Popen(["/bin/bash", "-c", command])

current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
    data = get_value("xprop -id "+item[0])
    if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
        panel.append(item)
try:
    window = panel[int(sys.argv[1])-1][0]
    run_command("wmctrl -ia "+window)
except IndexError:
    pass

説明

解決策は、便宜的なものです。 コマンド によって呼び出されるウィンドウリストは、wmcrl -lウィンドウの古さによって順序付けられていることに気付きました。 xfce パネルに同じこと (設定) を実行させることで、両方の順序が完全に対応します。 スクリプトは、ウィンドウ リストを作成し、「実際の」可視ウィンドウ ( を使用xprop) をフィルター処理し、コマンド によってpanel_navigate、ウィンドウの番号 (左から右へ) を引数として選択したウィンドウに切り替えます。

問題

1 つの例外に気付きました: IDLE (Python インタープリター) ウィンドウには pid 0 があり、そのプロパティは によって「調査」できませんxprop。ウィンドウはウィンドウ リストに表示されず、スクリプトによってスキップされます。

注記

キーの組み合わせCtrl+はテスト中にエラーを発生しませんでしたが、一部のアプリケーションでは競合する可能性があります。(例) + +<number>を選択する方が安全かもしれません。 CtrlAlt1

答え2

同じアプリケーションかどうかは不明ただし、 では をUnity使用してアプリケーションを切り替えることができますsuper+number。たとえば、super + 1= ランチャーの最初の項目、super + 2= ランチャーの 2 番目の項目、super + n= ランチャーの n 番目の項目です。これは、ランチャーに配置された任意の項目を開くのにも役立ちます。たとえば、nautilus がランチャーの最初の項目である場合、 はsuper + 1nautilus ファイル マネージャーを開きます。

関連情報