Як перезапустити заморожений екран в Ubuntu, не втрачаючи жодних відкритих вікон?


12

У мене був пристрій під керуванням Ubuntu 12.04 LTS, його екран замерз. Як правило, я просто перескочив на доступний tty, тобто Ctrl- Alt- F1і виконав команду /etc/init.d/lightdm restartабо service lightdm restart. Однак це вбиває все, що я відкрив. Як я цього уникаю?


1
Ви цього не можете досягти. Це lightdm, який відображає / керує Windows у системі x.
Apple II

Це також знищить все, що ви відкрили, але раз ctrl-alt-backspace перезапустить X. Це простіше, ніж перейти на TTY, увійти в систему та попросити X перезапустити себе. Я не впевнений, чи все ще працює.

@Douglas B. Staple - це не працює з Ubuntu 12.04 LTS. Не впевнений, чи він все ще працює з іншими дистрибутивами, чи це специфічно для Unity.
PeanutsMonkey

Можливо, є якийсь спосіб замінити менеджер вікон під час роботи. (Це можливо принаймні з GNOME-Shell або з диспетчером вікон i3, щоб це було можливо).
FSMaxB

@FSMaxB - Чи можете ви, будь ласка, детальніше розглянути, як цього можна досягти, використовуючи Gnome-Shell або i3 Window Manager?
PeanutsMonkey

Відповіді:


12

ВІДМОВА: Відповідно до коментаря Бредена, це може бути застарілим і більше не працюватиме з новішими версіями Ubuntu. Також будьте готові, що ви можете втратити відкриті вікна.

Тепер я отримав це для Unity (я просто замінив свою оболонку GNOME на єдність, не виходячи з системи або закриваючи вікна):

  1. Перейдіть до tty1 [Ctrl] + [Alt] + [F1]
  2. Введіть DISPLAY=:0так, щоб програми знали, на якому порту знайти X-сервер
  3. export DISPLAY
  4. unity --replaceабо gnome-shell --replace(ви також можете замінити GNOME-Shell на єдність або Unity на GNOME-Shell)

Це працює лише в тому випадку, якщо X-сервер або GNOME заморожені, але лише Unity або GNOME-оболонка.

Як це працює: Зв'язок між програмами та X-сервером для відображення їх інтерфейсу працює через мережевий сокет. Зазвичай це "localhost: 0" short ": 0". Встановлюючи змінну DISPLAY, програми знають, де знайти X-сервер для зв'язку з ним, тому програми відображаються на X-сервері на tty7, навіть якщо програма працює на tty1.

Вмістом вікон керує X-сервер, тоді як положенням і межами вікон керує менеджер вікон, інтегрований в єдність або оболонку GNOM, тому існує спосіб замінити їх лише без перезавантаження програм на X- Сервер.

PS: Я просто описую, наскільки я це розумію, тому, будь ласка, відредагуйте та виправте мене, якщо я помиляюся в деяких пунктах.

EDIT: Для GNOME-Shell є ще один спосіб його перезапустити. Після зміни на tty просто введіть pkill -HUP gnome-shell, я не знаю, чи є щось подібне для Unity.


Це спрацювало як диво. Насправді це сьогодні мене врятувало. Дуже дякую. Я був би дуже вдячний, якби ви могли детальніше розібратися з тим, що кожен з кроків виконує крок 1. Я не зовсім розумію, що відбувається під кришкою.
PeanutsMonkey

Дякуємо за відповідь! Зверніть увагу на єдність --help говорить: "- замініть Запуск єдності /! \ Це для сумісності з іншими інтерфейсами робочого столу і діє так само, як і єдність без
Том,

Також я виявив, що мені потрібно було запустити єдність через sudo, щоб врятувати свої вікна.
Том

2
- місце замінено, і нічого не робить, і це рішення перезапустить сеанс, тобто ви втратите всі свої вікна :(
Бренден

Ще працює у 2018 році
користувач000001
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.