DESCARGO DE RESPONSABILIDAD: Según el comentario de Brenden, esto podría estar desactualizado y ya no funcionar con las versiones más nuevas de Ubuntu. Además, esté preparado para perder las ventanas abiertas.
Ahora lo obtuve para Unity (acabo de reemplazar mi shell de GNOME con Unity sin cerrar sesión ni cerrar ventanas):
- Ir a tty1 [Ctrl]+[Alt]+[F1]
- Escriba
DISPLAY=:0
para que los programas sepan en qué puerto encontrar el X-Server export DISPLAY
unity --replace
ognome-shell --replace
(también puede reemplazar GNOME-Shell por unity o Unity por GNOME-Shell)
Esto solo funciona si X-Server o GNOME no 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 interfaz de usuario 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 X-Server, mientras que la posición y los bordes de las ventanas son administrados por el administrador de ventanas integrado en Unity o GNOM-Shell, por lo que hay una manera de reemplazarlos solo sin reiniciar las aplicaciones en 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.