ВІДМОВА: Відповідно до коментаря Бредена, це може бути застарілим і більше не працюватиме з новішими версіями Ubuntu. Також будьте готові, що ви можете втратити відкриті вікна.
Тепер я отримав це для Unity (я просто замінив свою оболонку GNOME на єдність, не виходячи з системи або закриваючи вікна):
- Перейдіть до tty1 [Ctrl] + [Alt] + [F1]
- Введіть
DISPLAY=:0
так, щоб програми знали, на якому порту знайти X-сервер
export DISPLAY
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.