J'ai besoin d'une solution pour obtenir les informations actuelles actives (ciblées) de la fenêtre sur un bureau GNOME 2. Je suis surtout intéressé par le processus qui exécute ce titre de fenêtre et de fenêtre.
Est-il 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
Vous pouvez utiliser xdotool , un outil d'automatisation de fenêtre X polyvalent.
focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")
(Je ne sais pas quelle est la différence entre ciblée et active.)
(Je pensais wmctrl pourrait faire cela, mais apparemment pas.)
C'est aussi simple que ceci:
xdotool getactivewindow getwindowname
Bonne chance espérons que cela fonctionne pour vous!
Plus simple (imo) que la solution de OP (c'est-à-dire sans ps
, grep
et awk
), pour obtenir le nom du processus:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Ou si vous voulez une fin de ligne:
echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)
Essayez la commande xwininfo, http://www.xfree86.org/4.2.0/xwinininfo.1.html , cela renvoie définitivement le titre de la fenêtre et aussi loin que le processus va, eh bien ...
X a-t-il attribué une carte d'identité et devient le PID parent de la fenêtre et la dissimulera également par défaut, en supposant que GNOME a Net_wm_pid pris en charge, car ce correctif de 2001 indique qu'il a, http: // mail. gnome.org/archives/gtk-devel-list/2001-october/msg00238.html , nous pouvons ensuite passer en revue cet article, http://www.mail-archive.com/devel@xfree86. Org/msg05809.html , où l'auteur écrit un programme Court C pour convertir une ID de fenêtre en PID, voici.
Je sais que la question est vieille, mais je me sens xprop
Il faut également 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 directement dire xprop
quelle fenêtre vous avez besoin en passant -id
Ou -name
. Utilisation awk
Vous pouvez obtenir l'ID de fenêtre active et le transmettre à xprop
comme celui-ci (pris à partir de ici ):
xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}")
Enfin, en utilisant votre outil préféré ™ (E.G. grep
ou sed
) Vous pouvez grep-out les valeurs nécessaires. Par exemple, pour pid
La sortie de la commande ci-dessus peut être canalisée sur sed
: sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'