Gtk-WARNING **: 22:21:47.873: не удается открыть дисплей:1 / xhost: не удалось открыть дисплей:1

Вопрос или проблема

Итак, дело вот в чем: по какой-то причине сейчас я не могу открывать графические приложения из терминала. Что меня удивляет, так это то, что я могу запустить 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-серверу) для отображения своего интерфейса.

Основные причины:

  1. Неверная переменная DISPLAY: Обычно, переменная среды DISPLAY устанавливается в :0, что означает, что графический интерфейс доступен на первом дисплее. Использование :1 может означать, что вы попытаетесь подключиться ко второму дисплею, который может не существовать.

  2. Проблемы с пользователем и разрешениями: Если вы запускаете графическое приложение как пользователь root (например, через su или sudo su), то у вас могут возникнуть проблемы с доступом к дисплею, принадлежащему текущему пользователю.

  3. Отключение дисплейного менеджера: Если вы отключили дисплейный менеджер (например, lightdm), то ваш графический интерфейс может не запускаться должным образом, что приводит к невозможности инициализации сервера.

Решения

  1. Проверка и установка переменной DISPLAY:

    Выполните следующую команду для установки правильной переменной DISPLAY:

    export DISPLAY=:0

    После этого попробуйте запустить ваше графическое приложение снова:

    gedit
  2. Использование команды xhost:

    Если вы продолжаете сталкиваться с проблемами, вам может помочь команда xhost. Однако важно запустить её от имени пользователя, под которым вы хотите использовать графические приложения:

    xhost +

    Это позволит всем пользователям подключаться к вашему дисплею, но это решение может быть не безопасным. Лучше указывать конкретного пользователя, если возможно.

  3. Избежание запуска приложений с привилегиями root:

    Если вы случайно изменили пользователя на root, и вам необходимо запустить графическое приложение, сделайте это без su или sudo, или добавьте пользователя в группу, имеющую доступ к дисплею, с помощью xhost.

  4. Восстановление дисплейного менеджера:

    Если вы отключили ваш дисплейный менеджер (например, lightdm), это может быть причиной проблем с инициализацией графического интерфейса. Попробуйте снова его включить:

    sudo systemctl start lightdm
  5. Изменение режима входа в систему:

    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. Если у вас возникли дополнительные вопросы или вы хотите углубиться в определённый аспект, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...