Jak zrestartować zamrożony ekran w Ubuntu bez utraty otwartych okien?


12

Miałem urządzenie z systemem Ubuntu 12.04 LTS ma zawieszony ekran. Ogólnie po prostu wskoczyłem na dostępny tty, tj. Ctrl- Alt- F1i wykonałem polecenie /etc/init.d/lightdm restartlub service lightdm restart. To jednak zabija wszystko, co mam otwarte. Jak tego uniknąć?


1
Nie możesz tego osiągnąć. Jest to lightdm, który wyświetla / zarządza oknami w systemie x.
— Apple II

To również zabije wszystko, co masz otwarte, ale dawno temu ctrl-alt-backspace zrestartowałby X. To łatwiejsze niż przejście na TTY, zalogowanie się i poproszenie X o ponowne uruchomienie. Nie jestem jednak pewien, czy nadal działa.

@Douglas B. Staple - nie działa z Ubuntu 12.04 LTS. Nie jestem pewien, czy nadal działa z innymi dystrybucjami, czy też jest to specyficzne dla Unity.
— PeanutsMonkey

Może istnieć sposób na zastąpienie menedżera okien podczas działania. (Jest to możliwe przynajmniej z powłoką GNOME lub z menedżerem okien i3, więc może być jakiś sposób).
— FSMaxB

@ FSMaxB - Czy możesz wyjaśnić, w jaki sposób można to osiągnąć za pomocą Gnome-Shell lub Menedżera okien i3?
— PeanutsMonkey

Odpowiedzi:


12

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):

  1. Idź do tty1 [Ctrl] + [Alt] + [F1]
  2. Wpisz DISPLAY=:0, aby programy wiedziały, na jakim porcie znaleźć X-Server
  3. export DISPLAY
  4. unity --replacelub 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.


To działało jak cud. W rzeczywistości uratowało mnie to dzisiaj. Dzięki wielkie. Byłbym bardzo wdzięczny, gdybyś mógł opracować, co każdy krok robi poza krokiem 1. Nie bardzo rozumiem, co dzieje się pod maską.
— PeanutsMonkey

Dziękuję za odpowiedź! Uwaga jedność - help mówi: „--replace Uruchom jedność /! \ To jest dla zgodności z innymi interfejsami pulpitu i działa tak samo, jak jedność bez --replace”
— Tom

Odkryłem również, że muszę uruchomić jedność poprzez sudo, aby zapisać moje okna.
— Tom

2
--replace jest przestarzałe i nic nie robi, a to rozwiązanie zrestartuje sesję, co oznacza, że ​​stracisz wszystkie okna :(
— Brenden

Nadal działa w 2018 r.
— 000001
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.