
Supongamos que tiene varias ventanas abiertas distribuidas en varios monitores. Luego pasa a usar un solo monitor (tal vez porque quitó su computadora portátil de su estación de acoplamiento). Todas tus ventanas están ahora en una sola pantalla.
Luego vuelve a la configuración de varios monitores. Ahora tiene más espacio en la pantalla, pero inicialmente todas sus ventanas están apiladas en un solo monitor. Sería bueno que sus ventanas volvieran al monitor en el que estaban originalmente.
¿Alguna idea sobre cómo hacer que esto suceda?
Respuesta1
xdotool
Idea aproximada, pero puedes lograr lo que deseas creando un par de comandos usandoxdotool
. Luego podrá ejecutarlos en consecuencia cuando tenga 1 o 2 monitores conectados.
Hay un ejemplo bastante bueno de cómo puedes hacer esto en este artículo titulado:Xubuntu – mover ventanas entre monitores.
extracto de la sección: Mover la ventana activa al otro monitor (¡por fin!)
Esto es lo que debemos hacer:
- Encuentra la ventana activa
- Obtenga su estado maximizado y recuérdelo
- Eliminar maximización
- Obtener su geometría
- Calcular la nueva posición
- Muévelo
- Maximizar según el estado anterior
- Levántalo
Aquí hay un script que hace eso:
wid=`xdotool getactivewindow`
max_state=`xprop -id $wid _NET_WM_STATE`
wmctrl -ir $wid -b remove,maximized_vert,maximized_horz
eval `xdotool getwindowgeometry --shell $wid`
new_x=1600
if [[ "$X" -ge "$new_x" ]]; then
new_x=0
fi
xdotool windowmove $wid $new_x $Y
if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then
wmctrl -ir $wid -b add,maximized_vert,maximized_horz
fi
xdotool windowraise $wid
Método más interactivo
También encontré otro enfoque que también lo usé, xdotool
pero lo envolví en un script de shell que luego podía asociar con una tecla de acceso directo. Con este método, puede seleccionar una ventana para que esté elevada y enfocada y, al presionar la combinación de teclas de acceso directo, enviará la aplicación a otra ventana. El artículo se titula:Mover Windows entre monitores.
El método proporciona el siguiente script windowmove.sh
:
#!/bin/bash
if [ $1 -eq 2 ]
then
POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3`
POS2=0
else
POS1=0
POS2=0
fi
/usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2
exit 0
POS1 calcula el ancho de su pantalla principal utilizando la salida de xrandr. Si descubre que el script no puede mover las ventanas hacia la derecha, pero sí hacia la izquierda, intente reemplazar esa línea con POS1=1920 y reemplace 1920 con el ancho en píxeles de su monitor principal.
Luego ejecute el subprograma Enlaces de teclado:
$ gnome-keybinding-properties
NOTA:Esto se puede ejecutar desde diferentes lugares en diferentes distribuciones a través de la GUI.
Cree 2 combinaciones de teclas utilizando estos 2 inicios de aplicaciones:
- vinculando el comando #1:
./Scripts/windowmove.sh 1
- comando vinculante # 2:
./Scripts/windowmove.sh 2
Respuesta2
No es necesario xdotool
. Puede registrar todas las ubicaciones de las ventanas y luego restaurarlas con solo wmctrl
:
Registro:wmctrl -lG > ${rcfile}
Lugar:
while read row; do
IFS=" " read id g x y w h _ <<< ${row}
wmctrl -ir ${id} -e 0,${x},${y},${w},${h}
done < ${rcfile}