Gnome 2 데스크탑에서 현재 활성 (초점) 창 정보를 가져 오는 솔루션이 필요합니다. 나는 주로 해당 창과 창 제목을 실행하는 프로세스에 관심이 있습니다.
가능합니까?
해결책:
창 제목 얻기 :
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
프로세스 이름 얻기 :
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
또는:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
답변
다용도 X 윈도우 자동화 도구 인 xdotool 을 사용할 수 있습니다 .
focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")
(나는 집중과 능동의 차이점이 무엇인지 모른다.)
( wmctrl 이 이것을 할 수 있다고 생각 했지만 분명히 그렇지 않습니다.)
답변
다음과 같이 간단합니다.
xdotool getactivewindow getwindowname
행운이 있기를 바랍니다.
답변
프로세스 이름을 얻으려면 OP 솔루션보다 (IMO) 더 간단합니다 (즉 ps
, grep
및 awk
, 없이 ).
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
또는 줄 끝을 원한다면 :
echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)
답변
xwininfo 명령 ( http://www.xfree86.org/4.2.0/xwininfo.1.html)을 사용해보십시오 . 창 제목을 반환하고 프로세스가 진행되는 한 …
X는 ID를 할당하고 창의 부모 PID가되었으며 기본적으로이를 숨겨서 Gnome이 NET_WM_PID를 지원한다고 가정하면 2001 년의이 패치는 http://mail.gnome.org/ archives / gtk-devel-list / 2001-October / msg00238.html 이면이 게시물 ( http://www.mail-archive.com/devel@xfree86.org/msg05809.html)을 검토 할 수 있습니다 . 윈도우 ID를 PID로 변환하는 짧은 C 프로그램입니다.
답변
나는 그 질문이 오래되었다는 것을 알고 있지만 xprop
여기에서도 언급해야한다고 생각 합니다. X에서 쉽게 구할 수 있습니다. 대화식으로 사용할 수 있습니다.
xprop
마우스 커서를 사용하여 원하는 창을 입력 하고 선택한 다음WM_NAME
창의 제목을_NET_WM_PID
제공하고 pid를 제공합니다
또는 xprop
전달 -id
또는 -name
옵션 을 통해 필요한 창을 직접 알 수 있습니다 . 를 사용 awk
하면 활성 창 ID를 가져 와서 다음 xprop
과 같이 다시 전달할 수 있습니다 ( here ).
xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}")
마지막으로, Favorite Tool ™ (예 : grep
또는 sed
)을 사용하여 필요한 값을 정리할 수 있습니다. 예를 들어 pid
, 위 명령의 출력은 다음으로 파이프 될 수 있습니다 sed
.sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'