¿Comando de Shell para poner una ventana de programa frente a otra?

Respuestas:

14

Nota:

  • Puede encontrar más información sobre xdotool aquí .
karthick87
fuente
Seguro edite su publicación justo cuando estoy componiendo la mía ... :()
frabjous
Puede encontrar el nombre de su ventana con wmctrl -l El nombre es el texto después del último guión: <ID de ventana> <ID de escritorio> <máquina del cliente> <título de la ventana>
jorfus
8

Otra opción es xdotool :

xdotool search --class Nautilus windowactivate

precioso
fuente
2
Me falla conXGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
Tino
Probablemente el error aquí - en mi experiencia --classname o --name (si se conoce) funciona a veces cuando --class no lo hace.
frabjous
En mi caso, fue posible abrir una ventana usando la ID xwininfoy emitiendo varios xdotoolcomandos diferentes adicionales (que ya no recuerdo). Cuando intenté automatizar eso (para deshacerme xwininfo) obtuve artefactos visuales debido a ventanas ocultas que también fueron seleccionadas. Simplemente no encontré una forma genérica de abordar las ventanas arbitrarias correctamente. Después de cambiar a wmctrl -atodo, inmediatamente funcionó a la perfección sin necesidad de ajustes adicionales. Tenga en cuenta que me gusta xdotool, pero parece difícil subir solo la ventana correcta.
Tino
2

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 a 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 para evitar lo XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)mencionado en algunos comentarios.
  • Al momento de escribir este artículo, el xdotoolproyecto está estancado desde 2015. Sin embargo, sigue siendo mi herramienta de elección. Por razones personales, Jordan Sissel (el autor original) no es tan activo como él, así que no dudes en contribuir al proyecto.
Sylvain Leroux
fuente