현재 활성화된 창 감지

현재 활성화된 창 감지

Linux 명령줄 도구를 사용하면 wmctrl무엇보다도 모든 창 또는 모든 데스크탑을 나열할 수 있습니다. 데스크탑 목록 모드에서는 현재 데스크탑에 별표가 표시됩니다.

현재 활성화된 창의 제목을 알아낼 수 있는 도구가 필요합니다. 불행하게도 wmctrl현재 활성화된 창이 무엇인지 알고 있음에도 불구하고 이 작업을 수행하는 도우미가 없습니다( :ACTIVE:마커 참조).

현재 창의 창 ID 및/또는 창 제목을 제공할 수 있는 다른 명령줄 도구가 있습니까?

답변1

설치 xdotool후 실행

xdotool getwindowfocus getwindowname

예를 들어 Firefox에서 열린 현재 웹페이지에 대해 다음과 같이 표시됩니다.

linux - Detecting currently active window - Super User - Mozilla Firefox

답변2

이는 더 직접적이며 다음만 사용 xprop합니다 cut.

xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME

이러한 명령은 루트 창과 응용 프로그램 창에서 속성을 추출한 것일 뿐이지만 Lorenzo von Matterhorn의 요청에 따라 다음과 같습니다.

  • 첫 번째,

    xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
    

    _NET_ACTIVE_WINDOW활성 창의 XID를 제공하는 루트에서 속성을 추출합니다 . 나중에 쉽게 구문 분석할 수 있는 방식으로 출력 형식을 지정하도록 지시 32x '\t$0'합니다 .xpropcut

  • 그런 다음 다음을 사용하여 출력에서 ​​XID만 추출합니다.cut -f 2

  • 그런 다음 XID를 매개변수로 전달합니다.

    xprop -id XID _NET_WM_NAME
    

해당 창의 이름이 인쇄됩니다.

답변3

있지만 짧은 대답이나 해결책은 없습니다.

$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
    awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')

결과:

0x03800004  0 16459  xxxxxxxxxx /bin/bash

사용:

$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
    grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
    sed 's/^0x/0x0/'); done

0x03800004  0 16459  xxxxxxxxxx /bin/bash
0x020000a4  0 13524  xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)

답변4

비교적 짧으며 따옴표가 포함된 창 이름을 올바르게 처리합니다.

xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | 
sed -nr 's/.*= "(.*)"$/\1/p'

관련 정보