ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Согласно комментарию Брендена, это может быть устаревшим и больше не работать с более новыми версиями Ubuntu. Также, пожалуйста, будьте готовы, что вы можете потерять свои открытые окна.
Теперь я получил его для Unity (я просто заменил оболочку GNOME на Unity без выхода из системы или закрытия окон):
- Перейти к tty1 [Ctrl] + [Alt] + [F1]
- Введите
DISPLAY=:0
так, чтобы программы знали, на каком порту найти X-сервер
export DISPLAY
unity --replace
или gnome-shell --replace
(вы также можете заменить GNOME-Shell на Unity или Unity на GNOME-Shell)
Это работает, только если X-сервер или GNOME не заблокированы, а только Unity или GNOME-Shell.
Как это работает: связь между программами и X-сервером для отображения их пользовательского интерфейса работает через сетевой сокет. Обычно это "localhost: 0" short ": 0". Устанавливая переменную DISPLAY, программы знают, где найти X-сервер для связи с ним, поэтому программы отображаются на X-сервере на tty7, даже если программа работает на tty1.
Содержимое окон управляется X-сервером, тогда как положение и границы окон управляются встроенным в единство оконным менеджером или оболочкой GNOM, так что есть способ заменить только их, не перезапуская приложения на X-сервере. Сервер.
PS: я просто описываю то, что я понимаю, поэтому, пожалуйста, отредактируйте и исправьте меня, если я ошибаюсь в некоторых моментах.
РЕДАКТИРОВАТЬ:
для GNOME-Shell, есть еще один способ перезапустить его. После перехода на tty просто введите pkill -HUP gnome-shell
, я не знаю, есть ли что-то подобное для Unity.