Jak uzyskać identyfikator okna ze stosu okien xdotool


12

Potrzebuję id okna, które jest aktywne lub skoncentrowane. Próbuję użyć xdotoolpolecenia. Jest polecenie:

xdotool getactivewindow

wynik jest zapisywany w stosie okien. Chcę uzyskać identyfikator widnow z tego stosu okien. Komenda

xdotool getactivewindow getwindowpid

mnie nie zadowala. Nie chcę uzyskać identyfikatora okna według identyfikatora procesu.

Odpowiedzi:


11

Myślę, że xdotool getactivewindowtego właśnie chcesz - próbowałeś?

Wyświetla identyfikator okna (ze stosu okien), jeśli w wierszu poleceń nie ma już żadnych komend xdotool.

Na xdotool getactivewindow getwindowpidprzykład getactivewindowumieszcza identyfikator na stosie okien i getwindowpidużywa tego identyfikatora do zapytania o PID. Pamiętaj, że uruchomienie tej komendy w terminalu zawsze zwróci identyfikator okna terminala, ponieważ jest ona aktywna. Aby uzyskać identyfikator z innego okna, spróbuj sleep 2s && xdotool getactivewindowwybrać okno zainteresowania w ciągu dwóch sekund.


Korzystanie xdotoolz innych narzędzi do obsługi okien jest komplikowane :

Podczas gdy xdotooldane wyjściowe używają liczb dziesiętnych dla identyfikatorów windwo, większość innych narzędzi używa liczb szesnastkowych jako danych wyjściowych (zwykle obsługują oba dane wejściowe).

Na przykład, jeśli znajdziesz okno z xdotool getactivewindow, nie znajdziesz wyniku na wyjściu xwininfo -root -tree, który zawiera listę wszystkich okien. Najpierw należy go przekonwertować na liczbę szesnastkową:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


Konwersja dziesiętnej na szesnastkową:

printf 0x%x 69206716

Konwersja szesnastkowej na dziesiętną:

printf %i 0x42002bc

Próbowałem xdotool getactivewindowpolecenia i problem polega na tym, że nie wyświetla wyniku w terminalu. Zapisuje wynik na stosie okien. To polecenie wypisuje pewną liczbę, ale nie jest to identyfikator okna (np. 35651588)
— Mariusz

Jak myślisz, dlaczego 35651588 nie jest identyfikatorem okna?
— Volker Siegel,

Tak, myślę, że 35651588 nie jest identyfikatorem okna. Możesz zobaczyć identyfikator systemu Windows za pomocą polecenia xwininfo, np. xwininfo -root -tree- to polecenie drukuje wszystkie okna, a okna mają inne typy numeracji.
— Mariusz

1
xwininfopokazuje identyfikator okna jako liczby szesnastkowe, a xdotool pokazuje liczby dziesiętne, ale jest taki sam.
— Volker Siegel,

masz rację. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
— Mariusz

1

To polecenie działa dla mnie

xdotool key --window "$(xdotool getactivewindow)" F5

Wersja xdotool 3.20160805.1


xdotool getactivewindow key F5powinien dać ten sam wynik
— użytkownik3804598,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.