Estoy bastante seguro de que es imposible hacerlo. La razón parece ser que los entornos de ventanas como GNOME esperan que el software maneje esto, y los fabricantes de software esperan que los entornos de ventanas manejen esto.
Devilspie es una buena idea, pero coincide con el patrón (es decir, si name == 'google-chrome'). Entonces, ¿qué sucede si abro dos navegadores? ¿Ambos se trasladan al mismo espacio de trabajo? Tengo 6x3 = 18 espacios de trabajo, cada uno con una instancia particular de cromo. Sería útil si pudiera cambiar el nombre de estos programas (es decir, 'google-chrome1', 'google-chrome2' ...) pero no puedo encontrar una manera de hacerlo. Entonces tenemos que usar wmctrl.
wmctrl es un poco mejor b / c además de usar títulos de ventanas, también puede usar ID de ventana o simplemente usar la ventana resaltada actualmente. Las ID de ventanas son difíciles de obtener b / c, no se generan de inmediato. Vea abajo
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
pero luego el control no se devuelve a la línea de comando hasta DESPUÉS de que sale gedit. Todo lo que tenemos que hacer para evitar esto es poner una &
señal
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
pero ahora el control es, el 99.999% de las veces, regresó a la línea de comando ANTES de que los administradores de la ventana inicien la ventana y no hay forma de encontrar la identificación de la ventana. Hay que configurar una técnica de bucle muy compleja para comprobar si se han creado ventanas nuevas y adivinar si es la ventana que estamos buscando.
Verificar la ventana activa a través de la bandera :ACTIVE:
tiene el mismo problema, no espera a que el programa termine de ejecutarse.
wmctrl
me parece un programa muy extraño. Parece que fue diseñado para personas sin mouse o incapaces de arrastrar físicamente sus programas a través de espacios de trabajo.