LIFO順にスウェイレジスタウィンドウを表示

LIFO順にスウェイレジスタウィンドウを表示

私は主にワークスペースに表示したくないウィンドウ(jupyterやrygelサーバーなどのターミナルウィンドウ、転送など)を隠すためにswayスクラッチパッドを使用します。

ところで、スクラッチパッドの表示順序がFIFOですが、LIFO順序に変換したいと思います。

私はこれがもっと役に立つと思います。最後の隠されたウィンドウは、何らかの理由で長い時間前に隠された端末ではなく、必要なウィンドウである可能性が最も高いです。

表示順序を変更する方法はありますか?

ありがとう

答え1

前述のように、Swayでは、スクラッチパッドは先入れ先出し(FIFO)シーケンスのスタックとして機能します。この順序を後入れ先出し(LIFO)に置き換える組み込み機能はありませんが、カスタムスクリプトまたは特定のコマンドを使用してこの制限を解決できます。

考えられるいくつかのアプローチは次のとおりです。

  • カスタムスクリプト:

    swaymsgを使用してスクラッチパッドウィンドウのリストを照会し、最後に送信されたウィンドウに焦点を当てるスクリプトを作成できます。スクリプトは解析された出力を取得し、スクラッチswaymsg -t get_treeパッドでウィンドウを見つけ、それを使用して最後に追加されたswaymsg [criteria] focusウィンドウに焦点を合わせます。

  • 手動選択:

    自動順序に依存するのではなく、キーバインディングを使用して表示するスクラッチパッドウィンドウを選択できます。たとえば、Sway設定ですべてのスクラッチパッドウィンドウを一覧表示し、1つを選択できるモードを定義できます。

    以下は、手動選択を実装する方法の例です。

    # Enter the scratchpad selection mode
    bindsym $mod+minus mode "scratchpad_selection"
    
    # Define the scratchpad selection mode
    mode "scratchpad_selection" {
        bindsym $key1 [criteria for window 1] scratchpad show, mode "default"
        bindsym $key2 [criteria for window 2] scratchpad show, mode "default"
        # ... More keybindings for each window
        bindsym Escape mode "default"
    }
    

    これは単なるテンプレートなので、新しい一般的なスクラッチパッドウィンドウを追加するたびにSway設定を手動で更新する必要があります。ただし、表示されるウィンドウを直接制御できます。

最近使用した(MRU)ウィンドウに集中:スクラッチパッドのウィンドウを繰り返して、最近アクティブなウィンドウを選択して、最近使用したウィンドウに集中できます。最後に使用されたウィンドウを確認するには、より複雑なスクリプトが必要になる場合があります。

Swayとi3はプロセス間通信(IPC)インターフェースを介して制御されるため、これらのカスタマイズには外部スクリプトが必要なことがよくあります。 BashやPythonなどの言語のスクリプトにまだ慣れていない場合は、これらの回避策を効率的に実装する方法を学ぶのに時間を費やすことができます。

関連情報