Gnome에서 활성 창 프로세스 / 제목을 검색 할 수 있습니까?


28

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

답변:


17

다용도 X 윈도우 자동화 도구 인 xdotool 을 사용할 수 있습니다 .

focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")

(나는 집중과 능동의 차이점이 무엇인지 모른다.)

( wmctrl 이 이것을 할 수 있다고 생각 했지만 분명히 그렇지 않습니다.)


26

다음과 같이 간단합니다.

xdotool getactivewindow getwindowname

행운이 있기를 바랍니다.


이것은 효과가 있습니다. 누군가 왜 다운 다운되었는지 설명 할 수 있습니까?
lfzawacki

7

프로세스 이름을 얻으려면 OP 솔루션보다 (IMO) 더 간단합니다 (즉 ps, grepawk, 없이 ).

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

또는 줄 끝을 원한다면 :

echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)

예, cat /proc/훌륭합니다 (전체 ps출력을 잡는 것을 포함하지 않기 때문에 아마도 더 빠릅니다 ). 질문 본문의 솔루션에 추가 했으므로 향후 사용자가 찾을 수 있습니다.
Rogach

4

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 프로그램입니다.


그러나 xwininfo필요한 창을 수동으로 선택해야합니다. 나는 bash에서 집중된 창을 얻는 방법을 원했다.
Rogach

`xwininfo -root -children | grep -oEi '창 id : (? [0-9a-zA-Z] +) | grep -oEi '(? 0-9a-zA-Z)'-편집 : 손가락이 미끄러 져 창 ID에 대한 정규식이 잘못되었습니다. : 다양한 기준이 다른 사이트를 확인 davygoat.com/software/rizzle/How_it_works.html를
rhoyerboat

이 명령은 "루트"창 ID 만 제공하고 활성 ID는 제공하지 않습니다. (
Rogach

1

나는 그 질문이 오래되었다는 것을 알고 있지만 xprop여기에서도 언급해야한다고 생각 합니다. X에서 쉽게 구할 수 있습니다. 대화식으로 사용할 수 있습니다.

  1. xprop마우스 커서를 사용하여 원하는 창을 입력 하고 선택한 다음
  2. 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'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.