사용자가 xfce의 터미널에서 활성 창을 전환하고 있는지 확인

사용자가 xfce의 터미널에서 활성 창을 전환하고 있는지 확인

xfce4에서 필터링된 창 목록(특정 응용 프로그램의 창만) 간에 전환할 수 있도록 키보드 단축키를 구현하려고 합니다. 필요하지 않은 창을 숨긴 다음 일반적인 창 선택 메커니즘(Alt+Tab 사용)을 사용하여 나머지 창에서 창을 선택함으로써 이를 달성하고 싶습니다.

필터링 및 숨기기가 잘 작동합니다. 내 단축키에서는 창을 xdotool누르고 선택을 시작하는 척하는 데 사용합니다 . alt+tab하지만 내 스크립트에서 창 선택이 완료되었는지 어떻게 확인할 수 있는지 모르겠습니다. 나중에 선택에서 제외된 창을 숨김 해제해야 하기 때문입니다.

창 선택 프로세스가 여전히 활성 상태인지 확인하는 데 사용할 수 있는 프로세스나 창 ID 또는 기타 항목이 있습니까?

답변1

이것이 귀하의 스크립트에서 어떻게 작동하는지 잘 모르겠지만 일반적으로 사용자가 를 사용하여 창을 누르고 선택한 다음 를 놓는다는 alt것을 알고 있습니다 . 이 경우 키를 놓으면 선택이 끝났는지 확인할 수 있습니다.tabalt

다양한 방법으로 X11 키보드 이벤트를 모니터링할 수 있으며 그 중 하나는 를 사용하는 것입니다 . 예를 들어 키보드에서 Alt를 xinput --test-xi2 --root놓으면 다음과 같은 결과가 표시 됩니다.Meta_R

EVENT type 14 (RawKeyRelease)
    device: 3 (9)
    detail: 105
...
EVENT type 3 (KeyRelease)
    device: 9 (9)
    detail: 105
...
    modifiers: locked 0 latched 0 base 0x9 effective: 0x8

여기서 요점은세부 사항이것이 열쇠의 키코드이고,유효한 수정자, 이벤트 전에 누른 Shift 키의 비트 마스크는 에 해당하므로 0x8입니다 mod1. 따라서 수정자가 0이거나 세부 정보가 105인 KeyRelease 또는 RawKeyRelease(제 경우에는 중간)를 사용하여 이벤트를 찾을 수 있습니다. 테스트 또는 및 에서 xmodmap -pk키 코드를 찾을 수 있습니다 xmodmap -pm.

alt다음은 누르거나 놓을 때 종료되는 나에게 효과적이었습니다 .

sed -n '
 /modifiers:.* 0$/q
 /KeyRelease/{n;n;/ 105$/q}
' < <(xinput --test-xi2 --root)

bash 프로세스 교체 사용에 유의하세요 <(). 파이프를 사용하면 스크립트가 파이프가 완료될 때까지 기다리게 되며, 이는 xinputSIGPIPE가 수신된 후 이벤트에 대해서만 수행됩니다.

관련 정보