Questo comportamento è già possibile?
Tutto è possibile in Linux. Avrai bisogno di alcune conoscenze di base su Xserver , un po 'di tempo e un sistema su cui testare, poiché stai scherzando con la tua X e sicuramente avrai bisogno del browser in esecuzione se hai bisogno di aiuto :-)
Secondo me ci sono tre possibili soluzioni:
Le configurazioni multimonitor utilizzano Xinerama . La soluzione più semplice che mi viene in mente è quella di aggiungere un terzo schermo virtuale alla tua configurazione e spostare semplicemente le finestre lì usando xdotool. Ci sono alcuni aspetti negativi di questa soluzione, ma non richiederebbe lo sforzo di spostare le finestre tra i diversi Xserver, cosa che in generale non è possibile.
Dal momento che non è possibile spostare finestre tra Xserver diversi , abbiamo bisogno di una sorta di proxy come xmove o Xpra per fare questo per noi. Penso che le finestre vivano quindi in una sessione Xfvb separata per nascondere le finestre. È possibile allegare e staccare alla sessione.
Indipendentemente dal metodo utilizzato, è necessario un evento quando il monitor viene scollegato. L'evento dovrebbe essere attivato quando lo schermo è disconnesso e anche quando ricollegato. Puoi demonizzare lo script per guardare l'evento.
Preferirei la soluzione usando Xpra per vari motivi. Posso solo darti alcuni suggerimenti su come farlo. Le soluzioni non sono complete ma dovrebbero iniziare.
Soluzione di Xinerama
Impostare
L'installazione di Xinerama deve essere estesa per avere una configurazione statica: vedi https://help.ubuntu.com/community/XineramaHowTo
vedi anche il terzo schermo falso e Xdummy
Windows interessato
Possiamo usare xdotool per cercare windows. Successivamente possiamo controllare la loro posizione e spostarli. Sto assumendo due monitor con 1920x1080
configurazione. Quanto segue sposta tutte le finestre da destra a sinistra sullo schermo xinerama.
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 '.*')"
Ora puoi spostare tutte le finestre dallo schermo del tuo laptop (schermo 0) a un terzo schermo (virtuale) se viene collegato un monitor. Allo stesso tempo, puoi spostare qualsiasi finestra memorizzata nella terza schermata nella prima schermata.
Soluzione XPRA
Per poter usare Xpra per spostare le finestre, tutte le finestre devono essere gestite da Xpra prima. Devi avviare l'intero desktop usando Xpra all'avvio del sistema. Due volte uno è il desktop principale in cui lavori e l'altro è principalmente un desktop virtuale.
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
Ora puoi avere Windows per lo schermo disconnesso in esecuzione in una sessione xpra separata e collegarti / staccarti da esso quando il monitor cambia.
xpra attach :99
xpra detatch :99
Esiste anche un'estensione della shell di gnome che potrebbe essere utile se si desidera spostare manualmente una finestra da quella nascosta :99
a quella normale :0
tra i display xpra avviati.
L'evento
È possibile controllare la disconnessione / riconnessione di un display specifico
forse cerca le dimensioni modificate del tuo xinerama usando xwininfo per averlo indipendente dal monitor non collegato se vuoi, ad esempio, estendere la configurazione a 3 monitor e scollegare un dispositivo arbitrario. Nota che funzionerà solo con la soluzione xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0