J'ai besoin d'une solution pour obtenir les informations de la fenêtre active (focalisée) sur un bureau Gnome 2. Je suis principalement intéressé par le processus exécutant cette fenêtre et le titre de la fenêtre.
C'est possible?
SOLUTION:
Obtenir le titre de la fenêtre:
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Obtenir le nom du processus:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
ou:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Plus simple (IMO) que la solution OP (c'est-à-dire sans
ps
,grep
etawk
), pour obtenir le nom du processus:Ou si vous voulez une fin de ligne:
la source
cat /proc/
c'est bien (et sans doute plus rapide, car cela n'implique pas de saluer toute laps
sortie). Je l'ai ajouté à la solution dans le corps de la question, afin que les futurs utilisateurs puissent le trouver.Essayez la commande xwininfo, http://www.xfree86.org/4.2.0/xwininfo.1.html , elle renvoie définitivement le titre de la fenêtre et en ce qui concerne le processus, eh bien ...
X lui a attribué un ID et est devenu le PID parent de la fenêtre et le cacherait également par défaut, donc, en supposant que Gnome a NET_WM_PID pris en charge, comme ce patch de 2001 l'indique, http://mail.gnome.org/ archives / gtk-devel-list / 2001-octobre / msg00238.html , nous pourrons ensuite consulter cet article, http://www.mail-archive.com/[email protected]/msg05809.html , où l'auteur écrit un programme C court pour convertir l'ID de fenêtre en PID, le tour est joué.
la source
xwininfo
m'oblige à sélectionner manuellement la fenêtre souhaitée. J'espérais un moyen d'obtenir la fenêtre focalisée de bash.Je sais que la question est ancienne, mais je pense
xprop
également qu'il convient de la mentionner ici. Il est facilement disponible sous X. Il peut être utilisé de manière interactive:xprop
et sélectionnez la fenêtre souhaitée à l'aide du curseur de la souris, puisWM_NAME
vous donne le titre de la fenêtre,_NET_WM_PID
donne le pidOu vous pouvez dire directement
xprop
quelle fenêtre vous avez besoin en passant-id
ou en-name
option. En utilisant,awk
vous pouvez obtenir l'ID de la fenêtre active et le renvoyer àxprop
cela (extrait d' ici ):Enfin, en utilisant Your Favorite Tool ™ (par exemple
grep
oused
), vous pouvez récupérer les valeurs nécessaires. Par exemple,pid
la sortie de la commande ci-dessus peut être dirigée verssed
:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'
la source