LIFO 순서로 스웨이 레지스터 창 표시

LIFO 순서로 스웨이 레지스터 창 표시

나는 주로 작업 공간에 표시하고 싶지 않은 창(jupyter 또는 rygel 서버와 같은 터미널 창, 전송 등)을 숨기기 위해 sway 스크래치패드를 사용합니다.

그런데 스크래치패드의 표시 순서가 FIFO인데 LIFO 순서로 변환하고 싶습니다.

나는 이것이 더 유용할 것이라고 생각합니다. 마지막 숨겨진 창은 어떤 이유로든 오래 전에 숨긴 터미널이 아니라 필요한 창일 가능성이 가장 높습니다.

표시 순서를 바꾸는 방법이 있나요?

감사해요

답변1

앞서 살펴본 것처럼 Sway에서 스크래치패드는 FIFO(선입선출) 순서의 스택으로 작동합니다. 이 순서를 LIFO(후입선출)로 바꾸는 기본 제공 기능은 없지만 사용자 정의 스크립트나 특정 명령을 사용하여 이 제한 사항을 해결할 수 있습니다.

고려할 수 있는 몇 가지 접근 방식은 다음과 같습니다.

  • 사용자 정의 스크립트:

    swaymsg를 사용하여 스크래치패드 창 목록을 쿼리한 다음 가장 최근에 전송된 창에 초점을 맞추는 스크립트를 작성할 수 있습니다. 스크립트는 구문 분석된 출력을 가져와 swaymsg -t get_tree스크래치패드에서 창을 찾은 다음 이를 사용하여 swaymsg [criteria] focus가장 최근에 추가된 창에 초점을 맞춥니다.

  • 수동 선택:

    자동 순서에 의존하는 대신 키 바인딩을 사용하여 표시할 스크래치패드 창을 선택할 수 있습니다. 예를 들어 Sway 구성에서 모든 스크래치 패드 창을 나열하고 하나를 선택할 수 있는 모드를 정의할 수 있습니다.

    다음은 수동 선택을 구현하는 방법의 예입니다.

    # 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과 같은 언어의 스크립팅에 아직 익숙하지 않은 경우 이러한 해결 방법을 효율적으로 구현하는 방법을 배우는 데 시간을 할애할 수 있습니다.

관련 정보