Вопрос или проблема
Итак, дело вот в чем: по какой-то причине сейчас я не могу открывать графические приложения из терминала. Что меня удивляет, так это то, что я могу запустить gedit (например) с помощью сочетания клавиш (я настроил его на Ctrl + Alt + G), но из терминала я получаю эту ошибку:
Не удалось инициализировать сервер: Не удалось подключиться: Соединение отклонено`
(gedit:6690): Gtk-WARNING **: 22:38:15.851: не удается открыть дисплей: 1
Я попробовал что-то, что нашел в интернете:
xhost +
это нужно (если я правильно понял), чтобы разрешить всем приложениям запускать графический сервер, но выводит:
xhost: не удается открыть дисплей "1"
Я не понимаю, почему я получаю эту ошибку, потому что час назад я мог запускать графические приложения из терминала. Так что любая помощь будет оценена 🙂
PS: эта ошибка происходит со всеми приложениями, которые я пытался запустить из терминала
Обычно это DISPLAY=:0
, а не DISPLAY=:1
, так что выполните следующую команду, чтобы проверить, в этом ли проблема.
DISPLAY=:0 gedit
Если это работает, вы можете сделать это более или менее постоянным, выполнив следующую команду:
export DISPLAY=:0
После экспорта правильной переменной DISPLAY вы сможете нормально запускать графические приложения из терминала:
gedit
Я нашел проблему: проблема в том, что я отключил свой дисплейный менеджер (lightdm), потому что он не позволяет мне войти (цикл входа), и я думал, что это его единственная функция.
Но когда я снова настроил lightdm, я смог запустить gedit из терминала без проблем, так что технически я решил свою проблему, но теперь у меня другая проблема: когда Ubuntu загружается, как напрямую показать вход в консоль вместо графического входа.
Но я попробую решить это позже…
В любом случае, спасибо @mchid 🙂
Возможно, вы вошли в систему под своим личным пользователем, а затем сделали что-то вроде ‘su’ или ‘sudo su’ в окне терминала? Тогда рабочий стол будет принадлежать вам, но вы пытаетесь запустить приложение от имени root. Вы получите эту ошибку о дисплее, потому что root не владеет дисплеем. Вы были на правильном пути с ‘xhost +’, но вам нужно выполнить это перед тем, как сменить идентичность с ‘su’.
Ответ или решение
Ошибка, с которой вы столкнулись, связана с управлением отображением графического интерфейса в системе Linux, использующей X Window System. Давайте разберём каждую часть проблемы и предложим решения.
Анализ проблемы
Когда вы видите сообщение об ошибке, например:
Unable to init server: Could not connect: Connection refused
(gedit:6690): Gtk-WARNING **: 22:38:15.851: cannot open display: 1
это указывает на то, что программа (в данном случае gedit) не может подключиться к графическому серверу (X-серверу) для отображения своего интерфейса.
Основные причины:
-
Неверная переменная DISPLAY: Обычно, переменная среды
DISPLAY
устанавливается в:0
, что означает, что графический интерфейс доступен на первом дисплее. Использование:1
может означать, что вы попытаетесь подключиться ко второму дисплею, который может не существовать. -
Проблемы с пользователем и разрешениями: Если вы запускаете графическое приложение как пользователь root (например, через
su
илиsudo su
), то у вас могут возникнуть проблемы с доступом к дисплею, принадлежащему текущему пользователю. -
Отключение дисплейного менеджера: Если вы отключили дисплейный менеджер (например, lightdm), то ваш графический интерфейс может не запускаться должным образом, что приводит к невозможности инициализации сервера.
Решения
-
Проверка и установка переменной DISPLAY:
Выполните следующую команду для установки правильной переменной
DISPLAY
:export DISPLAY=:0
После этого попробуйте запустить ваше графическое приложение снова:
gedit
-
Использование команды xhost:
Если вы продолжаете сталкиваться с проблемами, вам может помочь команда
xhost
. Однако важно запустить её от имени пользователя, под которым вы хотите использовать графические приложения:xhost +
Это позволит всем пользователям подключаться к вашему дисплею, но это решение может быть не безопасным. Лучше указывать конкретного пользователя, если возможно.
-
Избежание запуска приложений с привилегиями root:
Если вы случайно изменили пользователя на root, и вам необходимо запустить графическое приложение, сделайте это без
su
илиsudo
, или добавьте пользователя в группу, имеющую доступ к дисплею, с помощьюxhost
. -
Восстановление дисплейного менеджера:
Если вы отключили ваш дисплейный менеджер (например, lightdm), это может быть причиной проблем с инициализацией графического интерфейса. Попробуйте снова его включить:
sudo systemctl start lightdm
-
Изменение режима входа в систему:
If you want to configure your system to boot directly to the console without loading the graphical interface, you can change the default target. Run the following command:
sudo systemctl set-default multi-user.target
И чтобы вернуться к графическому режиму, выполните:
sudo systemctl set-default graphical.target
Заключение
Сторонний доступ к графическому дисплею позволяет запускать приложения без проблем. Не забывайте проверять права доступа и корректность переменной DISPLAY
. Если у вас возникли дополнительные вопросы или вы хотите углубиться в определённый аспект, не стесняйтесь задавать их.