¿Cómo reinicio una pantalla congelada en Ubuntu sin perder ninguna ventana abierta?

12

Tenía un dispositivo con Ubuntu 12.04 LTS que tiene la pantalla congelada. En general, simplemente salté a un tty disponible, es decir Ctrl, Alt- F1y ejecuté el comando /etc/init.d/lightdm restarto service lightdm restart. Sin embargo, esto mata todo lo que tengo abierto. ¿Cómo evito esto?

CacahuetesMonkey
fuente
1
No puedes lograr esto. Es lightdm que muestra / administra ventanas en el sistema x.
Apple II
Esto también matará todo lo que tenga abierto, pero una vez ctrl-alt-backspace reiniciaría X. Eso es más fácil que cambiar a un TTY, iniciar sesión y pedirle a X que se reinicie. Sin embargo, no estoy seguro de si todavía funciona.
@ Douglas B. Grapa: no funciona con Ubuntu 12.04 LTS. No estoy seguro de si todavía funciona con otras distribuciones o si esto es específico de Unity.
PeanutsMonkey
Puede haber alguna forma de reemplazar el administrador de ventanas mientras se ejecuta. (Es posible con el GNOME-Shell al menos, o con el administrador de ventanas i3, por lo que podría haber alguna forma).
FSMaxB
@FSMaxB: ¿podría explicar cómo se puede lograr esto utilizando Gnome-Shell o i3 Window Manager?
PeanutsMonkey

Respuestas:

12

DESCARGO DE RESPONSABILIDAD: Según el comentario de Brenden, esto podría estar desactualizado y ya no funcionaría con versiones más nuevas de Ubuntu. Además, esté preparado para que pueda perder sus ventanas abiertas.

Ahora lo obtuve para Unity (acabo de reemplazar mi shell GNOME con unity sin cerrar sesión o cerrar ventanas):

  1. Vaya a tty1 [Ctrl] + [Alt] + [F1]
  2. Escriba DISPLAY=:0para que los programas sepan en qué puerto encontrar el X-Server
  3. export DISPLAY
  4. unity --replaceo gnome-shell --replace(también puede reemplazar GNOME-Shell por la unidad o Unity por el GNOME-Shell)

Esto solo funciona si no X-Server o GNOME están congelados, sino solo Unity o GNOME-Shell.

Cómo funciona: la comunicación entre los programas y el X-Server para mostrar su IU funciona a través de un socket de red. Esto normalmente está en "localhost: 0" corto ": 0". Al configurar la variable DISPLAY, los programas saben dónde encontrar el X-Server para comunicarse con él, por lo que los programas se muestran en el X-Server en tty7 incluso si el programa se ejecuta en tty1.

El contenido de las ventanas es administrado por el X-Server, mientras que la posición y los bordes de las ventanas son administrados por el administrador de ventanas integrado en la unidad o el GNOM-shell, por lo que hay una manera de reemplazarlos solo sin reiniciar las aplicaciones en el X- Servidor.

PD: Solo estoy describiendo lo que entiendo, así que edíteme y corríjame si me equivoco en algunos puntos.

EDITAR: Para GNOME-Shell, hay otra forma de reiniciarlo. Después de cambiar a tty simplemente escriba pkill -HUP gnome-shell, no sé si hay algo similar para Unity.

FSMaxB
fuente
Eso funcionó como un milagro. De hecho, me salvó hoy. Muchas gracias. Estaría muy agradecido si pudiera elaborar lo que cada uno de los pasos hace en el paso 1. No entiendo muy bien lo que está sucediendo debajo del capó.
PeanutsMonkey 01 de
¡Gracias por responder! Tenga en cuenta la unidad --help dice: "--replace Run unity /! \ Esto es por compatibilidad con otras interfaces de escritorio y actúa igual que ejecutar la unidad sin --replace"
Tom
También descubrí que tenía que ejecutar la unidad a través de sudo para guardar mis ventanas.
Tom
2
--sustituir está en desuso y no hace nada y esta solución reiniciará su sesión, lo que significa que perderá todas sus ventanas :(
Brenden
Todavía funciona en 2018
user000001