Necesito una solución para obtener la información de ventana activa (enfocada) actual en un escritorio Gnome 2. Estoy principalmente interesado en el proceso que ejecuta esa ventana y el título de la ventana.
¿Es posible?
SOLUCIÓN:
Obtener el título de la ventana:
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Obteniendo el nombre del proceso:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
o:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

Más simple (IMO) que la solución de OP (es decir
ps, singrepyawk), para obtener el nombre del proceso:O si quieres un final de línea:
fuente
cat /proc/es agradable (y podría decirse que es más rápido, ya que no implica englobar todo elpsresultado). Lo agregué a la solución en el cuerpo de la pregunta, para que los futuros usuarios puedan encontrarlo.Pruebe el comando xwininfo, http://www.xfree86.org/4.2.0/xwininfo.1.html , definitivamente devuelve el título de la ventana y, en lo que respecta al proceso, bueno ...
X le asignó un ID y se convirtió en el PID principal de la ventana y también lo ocultaría de manera predeterminada, por lo tanto, suponiendo que Gnome tenga soporte para NET_WM_PID, como lo indica este parche de 2001, http://mail.gnome.org/ archives / gtk-devel-list / 2001-October / msg00238.html , luego podemos revisar esta publicación, http://www.mail-archive.com/[email protected]/msg05809.html , donde el autor escribe un programa C corto para convertir la identificación de la ventana en PID, listo.
fuente
xwininfome obliga a seleccionar manualmente la ventana necesaria. Esperaba una forma de obtener la ventana enfocada de bash.Sé que la pregunta es antigua, pero creo que
xproptambién debería mencionarse aquí. Está disponible en X. Se puede usar de forma interactiva:xpropy seleccione la ventana que desea con el cursor del mouse, luegoWM_NAMEte da el título de la ventana, te_NET_WM_PIDda el pidO puede decir directamente
xpropqué ventana necesita al pasar-idu-nameopción. Utilizandoawkpuedes obtener la identificación de la ventana activa y volver a pasarla asíxprop(tomada de aquí ):Finalmente, usando Your Favourite Tool ™ (p. Ej.
grepOsed) puede obtener los valores necesarios. Por ejemplo, parapidla salida del comando anterior se puede canalizar ased:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'fuente