ESCLUSIONE DI RESPONSABILITÀ: Secondo il commento di Brenden, questo potrebbe essere obsoleto e non funzionare più con le versioni più recenti di Ubuntu. Inoltre, tieni presente che potresti perdere le finestre aperte.
Ora l'ho preso per Unity (ho appena sostituito la mia shell GNOME con unity senza disconnettermi o chiudere finestre):
- Vai a tty1 [Ctrl]+[Alt]+[F1]
- Digita
DISPLAY=:0
in modo che i programmi sappiano su quale porta trovare l'X-Server export DISPLAY
unity --replace
ognome-shell --replace
(puoi anche sostituire GNOME-Shell con unity o Unity con GNOME-Shell)
Funziona solo se non l'X-Server o GNOME è bloccato, ma solo Unity o GNOME-Shell.
Come funziona:la comunicazione tra i programmi e l'X-Server per la visualizzazione della loro interfaccia utente funziona su un socket di rete. Questo normalmente è a "localhost:0" breve ":0". Impostando la variabile DISPLAY, i programmi sanno dove trovare l'X-Server per comunicare con esso, quindi i programmi vengono visualizzati sull'X-Server su tty7 anche se il programma è in esecuzione su tty1.
Il contenuto delle finestre è gestito dall'X-Server mentre la posizione e i bordi delle finestre sono gestiti dal window manager integrato in unity o dalla shell GNOM quindi c'è un modo per sostituirle solo senza riavviare le applicazioni sull'X- Server.
PS:sto solo descrivendo quello che ho capito, quindi per favore modificami e correggimi se sbaglio in alcuni punti.
MODIFICA: Per GNOME-Shell, c'è un altro modo per riavviarlo. Dopo essere passato a tty digita semplicemente pkill -HUP gnome-shell
, non so se esiste qualcosa di simile per Unity.