Je pense que xdotool getactivewindow
c'est ce que vous voulez - l'avez-vous essayé?
Il imprime l'id de la fenêtre (à partir de la pile de fenêtres) s'il n'y a pas d'autres sous-commandes xdotool sur la ligne de commande.
Par xdotool getactivewindow getwindowpid
exemple, getactivewindow
place l'id sur la pile de fenêtres et getwindowpid
utilise cet id pour interroger le PID. Notez que l'exécution de cette commande dans le terminal renvoie toujours l'ID de la fenêtre du terminal, car elle est active. Afin d'obtenir l'ID d'une autre fenêtre, essayez de sleep 2s && xdotool getactivewindow
sélectionner la fenêtre d'intérêt dans l'intervalle de temps de deux secondes.
Il y a une complication lors de l'utilisation xdotool
avec d'autres outils pour la gestion des fenêtres:
Alors que la xdotool
sortie utilise des nombres décimaux pour les identifiants windwo, la plupart des autres outils utilisent des nombres hexadécimaux pour la sortie (ils prennent généralement en charge les deux pour l'entrée).
Par exemple, si vous trouvez une fenêtre avec xdotool getactivewindow
, vous ne trouverez pas le résultat dans la sortie de xwininfo -root -tree
, qui répertorie toutes les fenêtres. Il doit d'abord être converti en un nombre hexadécimal:
$ xdotool getactivewindow
69206716
$ printf 0x%x 69206716
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
0x42002bc (has no name): ("konsole" "Konsole") 1154x781+0+0 +1289+498
Conversion décimale en hexadécimal:
printf 0x%x 69206716
Conversion hexadécimal en décimal:
printf %i 0x42002bc
xdotool getactivewindow
commande et le problème est qu'elle n'imprime pas le résultat dans le terminal. Il enregistre le résultat dans la pile de fenêtres. Cette commande imprime un certain nombre mais ce n'est pas l'ID de fenêtre (par exemple 35651588)