Detectando ventana actualmente activa

Detectando ventana actualmente activa

La herramienta de línea de comandos de Linux wmctrlle 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, wmctrlno 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 xdotooly 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 xpropy 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_WINDOWpropiedad de la raíz, lo que le proporciona el XID de la ventana activa. Le 32x '\t$0'indica xpropque formatee la salida de una manera que cutpueda analizarse fácilmente más adelante.

  • Luego, extraiga solo el XID de la salida concut -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'

información relacionada