Spazio di lavoro separato per il secondo schermo

17

Vorrei ottenere un comportamento del genere: Quando utilizzo lo schermo del mio portatile, viene utilizzato il mio primo spazio di lavoro. Quando collego un secondo schermo (tramite HDMI), viene utilizzato un secondo spazio di lavoro e tutte le nuove finestre aperte su questo secondo schermo verranno posizionate nel secondo spazio, tranne che per il passaggio dello spazio di lavoro sul secondo schermo in un altro spazio di lavoro.

Quando scollego il mio secondo schermo tutte le finestre rimarranno negli spazi di lavoro in cui sono state create e posso passare agli spazi di lavoro sul mio laptop per vederle.

Questo comportamento è già possibile?

    
posta velop 12.10.2016 - 10:17

1 risposta

1
  

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, dato che stai scherzando con la tua X e hai sicuramente 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 a cui riesco a pensare è 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 dover sposta finestre tra diversi Xserver che in generale non è possibile.

  • Poiché non è possibile spostare finestre tra diversi Xservers , abbiamo bisogno di un tipo di proxy come < a href="https://en.wikipedia.org/wiki/Xmove"> xmove o Xpra per fare questo per noi. Penso che le finestre poi vivano in una sessione separata Xfvb a nascondi le finestre. Puoi allegare e scollegare alla sessione.

  • Indipendentemente dal metodo utilizzato, è necessario un evento quando il monitor viene scollegato. L'evento dovrebbe attivarsi quando lo schermo è disconnesso e anche quando viene ricollegato. È possibile eseguire il daemonize dello script per controllare l'evento.

Preferirei la soluzione usando Xpra per vari motivi. Posso solo darti qualche suggerimento su come farlo. Le soluzioni non sono complete ma dovrebbero iniziare.

Soluzione Xinerama

Configurazione

L'installazione di Xinerama deve essere estesa per avere una configurazione statica: Vedi link

vedi anche falso terzo schermo e Xdummy

ottiene le finestre interessate

Possiamo utilizzare xdotool per cercare finestre. Successivamente possiamo controllare la loro posizione e spostarli. Sto assumendo due monitor con configurazione 1920x1080 . Quanto segue sposta tutte le finestre dalla schermata xinerama a destra a sinistra.

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 laptop (schermo0) a una terza schermata (virtuale) se un monitor viene collegato. Allo stesso tempo puoi spostare qualsiasi finestra che è archiviata nella terza schermata sulla prima schermata.

Soluzione XPRA

Per utilizzare Xpra per spostare le finestre, tutte le finestre devono essere gestite da Xpra in precedenza. 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 la schermata disconnessa in esecuzione in una sessione xpra separata e collegarla / scollegarla quando il monitor cambia.

xpra attach :99
xpra detatch :99

Esiste anche una estensione della shell gnome continuata che potrebbe essere utile se vuoi spostare manualmente una finestra dal nascosto :99 al normale :0 tra le visualizzazioni di xpra avviate.

L'evento

  • Puoi guardare disconnessione / riconnessione di un display specifico

  • forse stai attento alle dimensioni modificate del tuo xinerama usando xwininfo per renderlo indipendente dal monitor non collegato se vuoi cioè estendere la configurazione a 3 monitor e scollegare un dispositivo arbitrario. Nota che questo funzionerà solo con la soluzione xpra.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

risposta data ukos 16.02.2018 - 17:13

Leggi altre domande sui tag