La herramienta de línea de comandos de Linux wmctrl
le permite enumerar todas las ventanas o todos los escritorios, entre otras cosas. En el modo de listado de escritorios, el escritorio actual está marcado con un asterisco.
Necesito una herramienta que pueda descubrir el título de la ventana actualmente activa. Desafortunadamente, wmctrl
no tiene una ayuda que haga esto, a pesar de saber qué ventana está activa actualmente (ver :ACTIVE:
marcador).
¿Existe otra herramienta de línea de comandos que pueda proporcionarme la identificación de la ventana y/o el título de la ventana actual?
Respuesta1
Instalar xdotool
y luego ejecutar
xdotool getwindowfocus getwindowname
Dará, por ejemplo, para la página web actual abierta en Firefox:
linux - Detecting currently active window - Super User - Mozilla Firefox
Respuesta2
Esto es más directo y solo usa xprop
y cut
:
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
Estos comandos son solo una extracción de propiedades de la ventana raíz y la ventana de la aplicación, pero según la solicitud de Lorenzo von Matterhorn:
Primero,
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
Extrae la
_NET_ACTIVE_WINDOW
propiedad de la raíz, lo que le proporciona el XID de la ventana activa. Le32x '\t$0'
indicaxprop
que formatee la salida de una manera quecut
pueda analizarse fácilmente más adelante.Luego, extraiga solo el XID de la salida con
cut -f 2
Luego, pase el XID como parámetro a
xprop -id XID _NET_WM_NAME
Que imprime el nombre de esa ventana.
Respuesta3
La hay, pero no hay una respuesta o solución corta.
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
resultado:
0x03800004 0 16459 xxxxxxxxxx /bin/bash
En uso:
$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
sed 's/^0x/0x0/'); done
0x03800004 0 16459 xxxxxxxxxx /bin/bash
0x020000a4 0 13524 xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)
Respuesta4
Relativamente corto y maneja correctamente los nombres de ventanas que contienen comillas:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME |
sed -nr 's/.*= "(.*)"$/\1/p'