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):
- Vaya a tty1 [Ctrl] + [Alt] + [F1]
- Escriba
DISPLAY=:0
para que los programas sepan en qué puerto encontrar el X-Server
export DISPLAY
unity --replace
o 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.