xfce4/xfwm4에서 최근에 초점을 맞춘 응용 프로그램 창을 활성화하는 방법은 무엇입니까?

xfce4/xfwm4에서 최근에 초점을 맞춘 응용 프로그램 창을 활성화하는 방법은 무엇입니까?

특정 애플리케이션(F1 크롬, F2 터미널 등)에 기능 키를 사용합니다. 올바른 응용 프로그램을 활성화하기 위해 바로 가기 키에 바인딩된 스크립트가 있는데 작동하지만 최근에 초점을 맞춘 창을 활성화하지 않습니다. 스크립트는 wmctrl -lx생성 순서와 반대 순서로 나열된 창을 나열합니다. "가장 가까운 터미널 창 활성화" 스크립트를 작성할 수 있도록 특정 창의 활성화 순서를 요청하거나 추적할 수 있는 방법이 있습니까?

또는 창을 반복할 때 사용되는 창 스택 순서를 유지하여 내 문제를 해결할 수 있는 것처럼 보이지만 xfwm4해당 창 스택 순서를 가져오는 명령줄 인터페이스가 표시되지 않습니다.

답변1

스크립트에서는 wmctrl, xprop및 를 사용하여 awk창 관리자가 관리하는 활성화 시간을 사용할 수 있습니다. (예를 들어wm-spec 1.5). 예를 들어 다음과 같이 (여러 줄) 명령줄을 사용합니다.

W=$(wmctrl -l | \
    awk '$ ~ "Terminal" {print $1;}' | while read x ; do \
      echo "$x $(xprop -id $(xprop -id $x \
                             | awk '$1 ~ /_NET_WM_USER_TIME/ {print $NF}' \
                             ) \
                 | awk '{print $NF}' \
                 )" ; \
      done | awk '$2>t {i=$1; t=$2} END {print i}' \
    )

즉:

  1. 필터링을 통해 목록을 전달하여 wmctrl지정된 애플리케이션의 창 ID(위 예에서는 "터미널")를 선택합니다.
  2. 이를 (가장 안쪽)에 전달하여 xprop마지막으로 사용된 창 ID를 가져옵니다.
  3. xprop다른 (외부)를 사용하여 원래 창의 "가장 창"의 (단일) 속성 인 해당 타임스탬프를 가져옵니다 _NET_WM_USER_TIME_WINDOW.
  4. awk가장 큰 타임스탬프가 있는 ID를 보고하는 필터를 통해 생성된 모든 ID 및 타임스탬프 행을 전달합니다 .

관련 정보