Myślę, że xdotool getactivewindow
tego 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 getwindowpid
przykład getactivewindow
umieszcza identyfikator na stosie okien i getwindowpid
uż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 getactivewindow
wybrać okno zainteresowania w ciągu dwóch sekund.
Korzystanie xdotool
z innych narzędzi do obsługi okien jest komplikowane :
Podczas gdy xdotool
dane 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
xdotool getactivewindow
polecenia 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)