ZASTRZEŻENIE: Zgodnie z komentarzem Brenden, może to być przestarzałe i nie działać już z nowszymi wersjami Ubuntu. Przygotuj się również na utratę otwartych okien.
Teraz mam go dla Unity (właśnie zastąpiłem moją powłokę GNOME jednością bez wylogowywania się i zamykania okien):
- Idź do tty1 [Ctrl] + [Alt] + [F1]
- Wpisz
DISPLAY=:0
, aby programy wiedziały, na jakim porcie znaleźć X-Server
export DISPLAY
unity --replace
lub gnome-shell --replace
(możesz także zastąpić GNOME-Shell jednością lub Unity przez GNOME-Shell)
Działa to tylko wtedy, gdy X-Server lub GNOME nie jest zamrożony, ale tylko Unity lub GNOME-Shell.
Jak to działa: Komunikacja między programami a X-Server do wyświetlania ich interfejsu użytkownika działa przez gniazdo sieciowe. Zwykle jest to „localhost: 0” short ”: 0”. Ustawiając zmienną DISPLAY, programy wiedzą, gdzie znaleźć X-Server do komunikacji z nim, więc programy są wyświetlane na X-serwerze na tty7, nawet jeśli program działa na tty1.
Treścią okien zarządza X-Server, natomiast pozycją i granicami okien zarządza menedżer okien zintegrowany w jedności lub powłoce GNOM, więc istnieje sposób na zastąpienie tylko ich bez ponownego uruchamiania aplikacji na X- Serwer.
PS: Po prostu opisuję to, co rozumiem, więc popraw mnie i popraw, jeśli się mylę.
EDYCJA:
W przypadku GNOME-Shell istnieje inny sposób na jego ponowne uruchomienie. Po zmianie na tty po prostu wpisz pkill -HUP gnome-shell
, nie wiem, czy jest coś podobnego do Unity.