Gnome (Ubuntu): ¿cómo traer una ventana de programa al frente usando una línea de comando desde la terminal?

14

Tengo un cierto entorno de trabajo con docenas de ventanas abiertas. ¿Cómo puedo traer al frente una ventana con un nombre / título conocido programáticamente o usando la línea de comando?

GJ
fuente

Respuestas:

12

Solía ​​usar wmctrl -a <name>, que funciona bien, pero recientemente cambié a xdotool, por ejemplo:

xdotool search --name <name-or-regex-for-name> windowraise

Tiene muchas otras características también.

Instalar:

sudo apt-get install xdotool

precioso
fuente
55
xdotool windowraiselleva la ventana al frente, pero no enfoca la ventana ni cambia al escritorio con la ventana. en cambio, windowactivatehará los tres.
jozxyqk
6

Bueno, después de sudo apt-get install wmctrl-ing, se puede jugar con este script bash:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Que encontré aquí

digitxp
fuente
44
No es necesario utilizar los corchetes ni los backticks:if ! wmctrl -l | grep -q "$WINTITLE"
pausa hasta nuevo aviso.
wmctrltiene una -iopción, que admite trabajar con la ventana con su identificador hexadecimal. Y para que pueda hacer esto wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai, que haría algo similar
vlad-ardelean
0

Cuando se usa xdotool, parece difícil poner al frente todas las ventanas para una aplicación o clase dada usando solo un comando. Termino teniendo mejores resultados envolviéndolo en un forbucle en el nivel de shell. Usando Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Pocos comentarios:

  • Por defecto, xdotool searchbuscará el patrón (aquí Firefox) en el nombre de la ventana, clase y nombre de clase. Si desea restringir el espacio de búsqueda, usar los pertinentes --class, --nameo --classnamelas opciones.
  • La --desktop 0opción limita la búsqueda al primer escritorio. Esto parece ser una solución alternativa para evitar lo XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)mencionado en algunos comentarios.
  • En el momento de escribir estas líneas, el xdotoolproyecto está estancado desde 2015. Sigue siendo mi herramienta de elección. Por razones personales, Jordan Sissel (el autor original) no es tan activo como lo fue en el pasado, así que no dude en contribuir al proyecto.


Esta es una copia de una respuesta que publiqué en AskUbuntu , pero creo que es independiente del sabor de Linux, por lo que también puede ser útil aquí.

Sylvain Leroux
fuente