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'
합니다 .xprop
cut
그런 다음 다음을 사용하여 출력에서 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'