¿Es este comportamiento ya posible?
Todo es posible en Linux. Necesitará algunos conocimientos básicos sobre el Xserver , algo de tiempo y un sistema para probar, ya que está jugando con su X y ciertamente necesita que se ejecute el navegador si necesita ayuda :-)
En mi opinión, hay tres posibles soluciones:
Las configuraciones multimonitor utilizan Xinerama . La solución más simple que se me ocurre es agregar una tercera pantalla virtual a su configuración y simplemente mover las ventanas allí usando xdotool. Hay algunas desventajas en esta solución, pero no requeriría el esfuerzo de mover ventanas entre diferentes servidores X, lo que en general no es posible.
Como no es posible mover ventanas entre diferentes servidores X , necesitamos un tipo de proxy como xmove o Xpra para hacer esto por nosotros. Creo que las ventanas viven en una sesión Xfvb separada para ocultar las ventanas. Puede adjuntar y separar a la sesión.
Independientemente del método que esté utilizando, necesita un evento cuando el monitor se desconecte. El evento debe activarse cuando la pantalla se desconecta y también cuando se vuelve a conectar. Puede demonizar la secuencia de comandos para ver el evento.
Preferiría la solución usando Xpra por varias razones. Solo puedo darte algunos indicios de cómo hacerlo. Las soluciones no están completas pero deberían ayudarlo a comenzar.
Solución Xinerama
Preparar
La configuración de Xinerama debe ampliarse para tener una configuración estática: consulte https://help.ubuntu.com/community/XineramaHowTo
ver también tercera pantalla falsa y Xdummy
obtener ventanas afectadas
Podemos usar xdotool para buscar ventanas. Luego podemos verificar su posición y moverlos. Asumo dos monitores con 1920x1080
configuración. Lo siguiente moverá todas las ventanas de la pantalla de xinerama de derecha a izquierda.
while read xwindowid; do
eval $(xdotool getwindowgeometry --shell "$xwindowid")
if (( X > 1920 && X <= (1920 * 2))); then
xdotool windowmove --relative $WINDOW -1920 y
fi
done <<< "$(xdotool search --screen 0 '.*')"
Ahora puede mover todas las ventanas desde la pantalla de su computadora portátil (screen0) a una tercera pantalla (virtual) si se conecta un monitor. Al mismo tiempo, puede mover cualquier ventana almacenada en la tercera pantalla a la primera pantalla.
Solución XPRA
Para usar Xpra para mover las ventanas, todas las ventanas deben ser administradas por Xpra antes. Tienes que iniciar todo el escritorio usando XPRA en el inicio del sistema. Dos veces uno es su escritorio principal donde trabaja y el otro es principalmente un escritorio virtual.
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
Ahora puede tener Windows para la pantalla desconectada ejecutándose en una sesión xpra separada y adjuntarla / desconectarla cuando el monitor cambie.
xpra attach :99
xpra detatch :99
También hay una extensión de shell de gnome dicontinued que podría ser útil si desea mover manualmente una ventana de lo oculto :99
a lo normal :0
entre las pantallas xpra iniciadas.
El evento
Puede ver la desconexión / reconexión de una pantalla específica
tal vez esté atento a las dimensiones cambiadas de su xinerama usando xwininfo para que sea independiente del monitor desconectado si lo desea, es decir, extender su configuración a 3 monitores y desconectar un dispositivo arbitrario. Tenga en cuenta que esto solo funcionará para la solución xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0