Come riavviare una schermata congelata in Ubuntu senza perdere alcuna finestra aperta?


12

Ho avuto un dispositivo che esegue Ubuntu 12.04 LTS con il suo blocco dello schermo. Generalmente ho semplicemente saltato su un tty disponibile, cioè Ctrl- Alt- F1ed eseguito il comando /etc/init.d/lightdm restarto service lightdm restart. Questo però uccide tutto ciò che ho aperto. Come evito questo?


1
Non puoi raggiungerlo. È lightdm che visualizza / gestisce windows nel sistema x.
Apple II

Questo ucciderà anche tutto ciò che hai aperto, ma una volta ctrl-alt-backspace riavvierebbe X. È più facile che passare a un TTY, accedere e chiedere a X di riavviarsi. Non sono sicuro che funzioni comunque.

@Douglas B. Staple - Non funziona con Ubuntu 12.04 LTS. Non sono sicuro se funziona ancora con altre distribuzioni o se questo è specifico per Unity.
PeanutsMonkey

Potrebbe esserci un modo per sostituire il gestore delle finestre durante l'esecuzione. (È possibile almeno con GNOME-Shell o con i3 window manager, quindi potrebbe esserci un modo).
FSMaxB,

@FSMaxB - Potresti per favore approfondire come ottenere questo risultato usando Gnome-Shell o i3 Window Manager?
PeanutsMonkey,

Risposte:


12

NOTA BENE: Secondo il commento di Brenden, questo potrebbe essere obsoleto e non funzionare più con le versioni più recenti di Ubuntu. Inoltre, ti preghiamo di essere pronto a perdere le finestre aperte.

Ora l'ho preso per Unity (ho appena sostituito la mia shell GNOME con unità senza disconnettersi o chiudere Windows):

  1. Vai a tty1 [Ctrl] + [Alt] + [F1]
  2. Digitare in DISPLAY=:0modo che i programmi sappiano su quale porta trovare l'X-Server
  3. export DISPLAY
  4. unity --replaceoppure gnome-shell --replace(puoi anche sostituire GNOME-Shell con unità o Unity con GNOME-Shell)

Funziona solo se non si blocca X-Server o GNOME ma solo Unity o GNOME-Shell.

Come funziona: la comunicazione tra i programmi e l'X-Server per la visualizzazione dell'interfaccia utente funziona su un socket di rete. Normalmente si trova in "localhost: 0" short ": 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 di Windows è gestito da X-Server mentre la posizione e i bordi di Windows sono gestiti dal gestore di finestre integrato nell'unità o nella shell GNOM, quindi c'è un modo per sostituirli solo senza riavviare le applicazioni su X- Server.

PS: sto solo descrivendo ciò che capisco che sia, quindi per favore modifica e correggimi se sbaglio in alcuni punti.

EDIT: Per GNOME-Shell, c'è un altro modo per riavviarlo. Dopo essere passato a tty semplicemente digitando pkill -HUP gnome-shell, non so se c'è qualcosa di simile per Unity.


Ha funzionato come un miracolo. In effetti mi ha salvato oggi. Grazie mille. Le sarei così grato se potessi elaborare ciò che ciascuno dei passaggi fa tranne il passaggio 1. Non capisco bene cosa stia succedendo sotto il cofano.
PeanutsMonkey

Grazie per la risposta! Nota unità --help dice: "--replace Esegui unità /! \ Questo è per compatibilità con altre interfacce desktop e agisce come se fosse in esecuzione unità senza --replace"
Tom

Inoltre ho scoperto che dovevo eseguire l'unità tramite sudo per salvare le mie finestre.
Tom,

2
--replace è deprecato e non fa nulla e questa soluzione riavvierà la sessione, il che significa che perdi tutte le finestre :(
Brenden,

Funziona ancora nel 2018
user000001
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.