AVISO LEGAL: De acordo com o comentário de Brenden, isso pode estar desatualizado e não funcionar mais com as versões mais recentes do Ubuntu. Além disso, esteja preparado para perder as janelas abertas.
Agora eu o comprei para o Unity (apenas substituí meu shell do GNOME por unity sem sair ou fechar as janelas):
- Vá para tty1 [Ctrl] + [Alt] + [F1]
- Digite
DISPLAY=:0
para que os programas saibam em qual porta encontrar o X-Server
export DISPLAY
unity --replace
ou gnome-shell --replace
(você também pode substituir o GNOME-Shell pela unidade ou Unity pelo GNOME-Shell)
Isso funciona apenas se o X-Server ou o GNOME não estiver congelado, mas apenas o Unity ou o GNOME-Shell.
Como funciona: a comunicação entre os programas e o X-Server para exibir sua interface do usuário está funcionando em um soquete de rede. Isso normalmente está em "localhost: 0" short ": 0". Ao definir a variável DISPLAY, os programas sabem onde encontrar o X-Server para se comunicar com ela; portanto, os programas são exibidos no X-Server no tty7, mesmo que o programa esteja sendo executado no tty1.
O conteúdo das janelas é gerenciado pelo X-Server, enquanto a posição e as bordas das janelas são gerenciadas pelo gerenciador de janelas integrado na unidade ou pelo shell GNOM, para que haja uma maneira de substituí-los apenas sem reiniciar os aplicativos no X- Servidor.
PS: Estou apenas descrevendo o que entendo, por isso edite e corrija-me se estiver errado em alguns pontos.
EDIT:
Para o GNOME-Shell, há outra maneira de reiniciá-lo. Depois de mudar para tty, basta digitar pkill -HUP gnome-shell
, não sei se há algo semelhante para o Unity.