Potrzebuję rozwiązania, aby uzyskać bieżące informacje o aktywnym (skoncentrowanym) oknie na pulpicie Gnome 2. Najbardziej interesuje mnie proces uruchamiania tego okna i tytułu okna.
Czy to możliwe?
ROZWIĄZANIE:
Uzyskiwanie tytułu okna:
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Uzyskiwanie nazwy procesu:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
lub:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Prostsze (IMO) niż rozwiązania OP (czyli bez
ps
,grep
iawk
), aby uzyskać nazwę procesu:Lub jeśli chcesz koniec linii:
źródło
cat /proc/
jest przyjemny (i prawdopodobnie szybszy, ponieważ nie wymaga grepowania całegops
wyjścia). Dodałem go do odpowiedniego rozwiązania, aby przyszli użytkownicy mogli go znaleźć.Wypróbuj komendę xwininfo, http://www.xfree86.org/4.2.0/xwininfo.1.html , zdecydowanie zwraca tytuł okna i jeśli chodzi o proces, cóż ...
X przypisał mu identyfikator i stał się nadrzędnym identyfikatorem PID okna, a także ukrywałby go domyślnie, więc zakładając, że Gnome obsługuje NET_WM_PID, jak pokazuje łatka z 2001 roku, http://mail.gnome.org/ archives / gtk-devel-list / 2001-October / msg00238.html , a następnie możemy przejrzeć ten post, http://www.mail-archive.com/[email protected]/msg05809.html , w którym autor pisze krótki program C do konwersji Window ID na PID, voila.
źródło
xwininfo
wymaga ręcznego wybrania potrzebnego okna. Miałem nadzieję, że uda mi się uzyskać skoncentrowane okno z bash.Wiem, że pytanie jest stare, ale uważam, że
xprop
należy tutaj również wspomnieć. Jest łatwo dostępny pod X. Można go używać w interaktywny sposób:xprop
i wybierz żądane okno za pomocą kursora myszyWM_NAME
daje tytuł okna,_NET_WM_PID
daje pidLub możesz bezpośrednio powiedzieć,
xprop
które okno potrzebujesz, przekazując-id
lub-name
opcję. Za pomocąawk
możesz uzyskać identyfikator aktywnego okna i przekazać go wxprop
ten sposób (pobranego stąd ):Wreszcie, korzystając z Your Favorite Tool ™ (np.
grep
Lubsed
), możesz wyodrębnić potrzebne wartości. Na przykładpid
dane wyjściowe powyższego polecenia można potokować dosed
:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'
źródło