WSL: когда я пытаюсь использовать графический пакет, появляется ошибка “Не удается открыть дисплей”

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

Я прохожуTutorial по адресу: https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-11-with-gui-support#5-install-and-use-a-gui-package

После установки приложений X11 я пытаюсь следовать уроку и открыть xeyes:

xeyes &

Я получаю следующий ответ:

Ошибка: Не удается открыть дисплей

У меня была такая же проблема. Что я сделал:

  1. закрыл терминал
  2. открыл новый терминал
  3. выполнил wsl --update
  4. перезапустил ubuntu ubuntu
  5. выполнил xeyes &

Это решило мою проблему.

Откройте C:\Users\<username>\.wslconfig

Найдите строку: guiApplications=false и измените её на guiApplications=true.
Если вы не можете найти строку, добавьте её в файл.

Перезагрузите компьютер (или просто выполните wsl --shutdown, затем wsl, как предложил @bkakilli).

У меня была такая же проблема вчера. Что исправило её сегодня:

  1. Обновление WSL до WSL2 (https://www.scaler.com/topics/linux-terminal-for-windows/)
  2. Установка Xming для Windows (https://sourceforge.net/projects/xming/)

После шагов 1 и 2 я всё равно получил ошибку “Не удается открыть дисплей”

  1. Раздел 4.2 следующей статьи объясняет, как установить переменные окружения (https://datacadamia.com/ssh/x11/display)

После подтверждения оболочки (bash в моем случае), установка переменной DISPLAY с помощью следующей команды позволила мне отображать команды X11 (например, xclock и т. д.) в Xming:

$ export DISPLAY=localhost:0.0

У меня была такая же проблема сегодня с Ubuntu 22.04, jammy. Чтобы исправить, я выполнил следующие шаги (хотя не уверен, что все они необходимы)

-> Проверил и установил xhost+

$ xhost +

-> Проверил и установил x11vnc

$ sudo dnf install x11vnc
$ sudo ufw allow 5900/tcp
$ sudo firewall-cmd --add-service=vnc-server

-> Установил порт дисплея с помощью скрипта

$ export DISPLAY=:0

Я использовал эти ссылки для справки
https://linuxconfig.org/how-to-share-your-desktop-in-linux-using-x11vnc
https://linuxconfig.org/fixing-the-cannot-open-display-error-on-linux

если вы используете процессор серии F с ядром i (core i5-9400F), вам необходимо установить GPU (версия Ubuntu должна быть 20.04 или новее)
см.: https://ubuntu.com/tutorials/enabling-gpu-acceleration-on-ubuntu-on-wsl2-with-the-nvidia-cuda-platform#1-overview

У меня это не работало при установке, которую я сделал через Магазин Windows. Я несколько раз пытался выполнять wsl --update, модифицировал .wslconfig, обновлял Windows …

Что в конце концов помогло, так это новая установка Ubuntu из PowerShell с использованием wsl --install -d Ubuntu-24.04!!!

Ответ или решение

WSL: Ошибка "Can’t open display" при использовании GUI приложений

Если вы столкнулись с ошибкой "Can’t open display" при попытке запустить GUI приложение, такое как xeyes, в Windows Subsystem for Linux (WSL), это может быть связано с несколькими причинами. Данная статья поможет вам разобраться в проблеме и предложит возможные решения.

Причины возникновения ошибки

  1. Настройки WSL: Параметры конфигурации могут быть установлены некорректно.
  2. Отсутствие X серверов: Для запуска GUI приложений требуется наличие X сервера, такого как Xming или VcXsrv, на вашем компьютере.
  3. Переменные окружения: Не все необходимые переменные окружения могут быть настроены, что ведет к ошибке.

Решения проблемы

Вот несколько шагов, которые помогут вам устранить ошибку "Can’t open display":

1. Проверьте наличие X сервера

Убедитесь, что у вас установлен и запущен X сервер (например, Xming или VcXsrv). Если вы еще не установили ни один из них, скачайте и установите:

Запустите X сервер перед тем, как вызывать GUI приложение из WSL.

2. Настройка переменной DISPLAY

В WSL вам необходимо установить переменную окружения DISPLAY. Выполните следующие команды в терминале WSL:

export DISPLAY=localhost:0.0

Эта команда указывает на то, что GUI приложения должны отображаться на локальном X сервере. Если вы используете WSL2, попробуйте также следующие варианты:

export DISPLAY=$(ip route | awk '/default/ { print $3 }'):0.0

Этот код получает IP-адрес вашей WSL инсталляции и устанавливает его в качестве значения для DISPLAY.

3. Измените настройки в .wslconfig

Убедитесь, что файл конфигурации WSL (C:\Users\<ваше_имя>\.wslconfig) настроен правильно. Добавьте или измените строку:

guiApplications=true

После внесения изменений перезапустите WSL с помощью команд:

wsl --shutdown
wsl

4. Обновите WSL

В некоторых случаях, проблема может быть связана с устаревшей версией WSL. Обновите WSL, используя команду:

wsl --update

Затем перезапустите вашу дистрибуцию Ubuntu и повторите попытку запуска вашего GUI приложения.

5. Установка дополнительных пакетов

В некоторых случаях требуются дополнительные пакеты. Убедитесь, что вы установили x11-apps:

sudo apt update
sudo apt install x11-apps

После этого попробуйте снова запустить xeyes:

xeyes &

Заключение

Ошибки отображения GUI приложений в WSL могут быть вызваны разными факторами, включая неправильные настройки, отсутствие X сервера и некорректные переменные окружения. Следуя предложенным шагам, вы сможете решить проблему "Can’t open display" и успешно запускать ваши GUI приложения в среде WSL. Если ни одно из решений не помогло, рассмотреть возможность переустановки WSL или дистрибутива Ubuntu, как это сделали некоторые пользователи.

Этот путь поможет вам быстро решить проблему и оценить все преимущества, которые предоставляет WSL для разработки и использования Linux-приложений в Windows.

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

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