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
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)