Текст и данные · Инструкция
Как запускать Linux GUI-приложения в WSL 2
Запускать Linux GUI-приложения в WSL 2 можно без ручной установки отдельного X-сервера: современный WSL включает WSLg.
Короткий ответ
Проверьте WSL 2, выполните `wsl --update`, затем `wsl --shutdown`, установите GUI-пакет внутри дистрибутива и запустите его по имени. Окно должно появиться на рабочем столе Windows и участвовать в Alt+Tab.
Что даёт WSLg и чего от него не ждать
Microsoft описывает WSLg как интеграцию отдельных Linux GUI-приложений с рабочим столом Windows: они могут появляться в меню «Пуск», закрепляться на панели задач, переключаться через Alt+Tab и использовать общий буфер. Поддерживаются X11 и Wayland. Это не отдельный полноценный Linux desktop session; задача WSLg — запуск приложений рядом с Windows-программами. Для аппаратно ускоренного OpenGL Microsoft рекомендует актуальный Windows-драйвер GPU. В официальной инструкции отдельно сказано, что графическая интеграция поддерживается WSL 2, а не WSL 1. Поэтому при проблеме первым делом проверяют архитектуру дистрибутива и обновление WSL, а не пытаются поверх современного WSLg ставить старый сторонний X-сервер.
Совет: Если сложное приложение не открывается, сначала проверьте простое `xcalc` или `xclock`. Это отделяет проблему WSLg от проблемы конкретного пакета.
Установка и первый запуск GUI-приложения
- В PowerShell выполните `wsl -l -v` и убедитесь, что нужный дистрибутив имеет VERSION 2. Если там 1, сначала переведите его штатной командой WSL.
- Выполните `wsl --update`. После завершения запустите `wsl --shutdown`, чтобы новая версия WSL и графических компонентов стартовала в чистой сессии.
- Откройте дистрибутив и обновите индекс пакетов его менеджером. В Ubuntu/Debian это обычно `sudo apt update`.
- Установите тестовый GUI-пакет. Microsoft приводит GIMP, Nautilus, VLC и `x11-apps`; для диагностики проще начать с `x11-apps`.
- Запустите `xcalc`, `xclock` или нужную программу из терминала. Оставьте терминал открытым, чтобы видеть stderr, если приложение завершится с ошибкой.
- После успешного запуска проверьте меню «Пуск» по имени дистрибутива: часть установленных GUI-приложений регистрируется там как обычные ярлыки.
Важно: Для актуального WSLg вручную задавать DISPLAY обычно не требуется. Старые строки `export DISPLAY=..` в `.bashrc` могут мешать современной схеме.
Быстрая диагностика
- `wsl -l -v`. VERSION 2. WSLg не работает как штатная GUI-интеграция WSL 1
- `wsl --update`. WSL актуален. Обновить и перезапустить
- GPU driver. Актуальный Windows-драйвер. Обновить драйвер производителя
- Простое GUI-приложение. Окно появляется. Диагностировать WSLg
- Старый DISPLAY. Нет принудительного значения без необходимости. Временно убрать кастомизацию
Предупреждение: WSLg предназначен для отдельных приложений, а не для запуска полного Linux desktop environment в окне.
Почему DISPLAY чаще всего не нужно задавать вручную
Старые инструкции по WSL часто предлагали найти IP Windows, прописать DISPLAY и установить сторонний X-сервер. Это было актуально для ранних схем, но современный WSLg сам подготавливает графическое окружение. Если вы мигрировали давно созданный дистрибутив, в `.bashrc`, `.profile` или `/etc/environment` могли остаться старые переменные. Временно отключите их и повторите запуск. Не путайте ошибку «command not found» с графической проблемой: первая означает, что пакет не установлен или не в PATH. Ошибка библиотеки требует ремонта зависимостей внутри Linux. А если процесс стартует, но графический канал недоступен, тогда уже имеет смысл проверять WSLg и системный журнал.
Перед установкой тяжёлого GUI
- Дистрибутив работает как WSL 2.
- WSL обновлён и перезапущен.
- Windows-драйвер GPU актуален.
- Старые ручные DISPLAY-настройки не вмешиваются.
- Простое X11-приложение успешно открывается.
Практические ограничения
GUI в WSL удобно для Linux-инструментов, которые нужны рядом с Windows, но поведение не обязано полностью совпадать с нативным Linux-десктопом. Производительность файлового доступа зависит от того, где хранятся данные: для Linux-инструментов большие проекты обычно удобнее держать в Linux-файловой системе, а не постоянно работать по `/mnt/c`. Отдельные приложения могут иметь собственные требования к звуку, GPU или системным сервисам. Если проблема воспроизводится только в одном пакете, запускайте его из терминала и читайте диагностический вывод — это быстрее, чем менять глобальную конфигурацию WSL без доказательств.
Что проверить, если простое GUI-приложение запускается, а нужное — нет
Если `xcalc` или другое простое окно открывается, а конкретная программа падает, базовая цепочка WSLg уже, скорее всего, работает и дальнейшая диагностика должна быть направлена на приложение. Запускайте его из терминала, а не только из ярлыка, чтобы увидеть сообщения о библиотеке, сокете, доступе к файлам или unsupported backend. Проверьте, не запускаете ли вы программу через `sudo` без необходимости: окружение root может отличаться и не получать те же пользовательские переменные и доступы. Если приложение появилось в меню «Пуск», но старый ярлык не стартует после обновления пакета, попробуйте командный запуск и затем перезапуск WSL, прежде чем переустанавливать всю подсистему. Для тяжёлых графических программ также сравните поведение на маленьком локальном файле внутри Linux и на файле через `/mnt/c`; это помогает отделить проблему интерфейса от медленного доступа к множеству файлов через границу файловых систем. При странном масштабе или нескольких мониторах сначала обновите WSL и Windows GPU driver, потому что именно штатная интеграция отвечает за вывод окна. Не добавляйте одновременно сторонний X-сервер, кастомный DISPLAY и WSLg — три разных маршрута усложняют причину сбоя. Хорошая диагностика идёт от минимального рабочего GUI к конкретному приложению по одному изменению за раз.
Как отделить проблему WSLg от ошибки самого приложения
Если окно не появилось, запускайте диагностику от простого к сложному. Сначала проверьте `wsl -l -v`, затем `wsl --update` и перезапуск подсистемы. После этого установите одно небольшое приложение из примеров Microsoft и убедитесь, что оно открывает окно. Если простой тест работает, WSLg в целом исправен, а искать причину нужно в конкретном пакете: отсутствующей библиотеке, неправильной переменной окружения, конфликтующем старом конфиге или особенностях самого GUI. Если не работает даже тест, посмотрите, не переопределяете ли вы `DISPLAY`, `WAYLAND_DISPLAY` или связанные переменные в профиле shell. Старые инструкции для WSL 1 часто добавляли их вручную, тогда как WSLg настраивает графическое окружение автоматически. Ещё один полезный приём — запускать приложение из терминала, а не ярлыка «Пуск»: stderr остаётся перед глазами и обычно показывает точную библиотеку или ресурс, на котором остановился старт. Так вы не смешиваете две разные неисправности — графическую подсистему WSL и сам Linux-пакет.
Практическая проверка результата
Если приложение стартует, но не показывает окно, проверьте, не осталось ли процесса в фоне, и запустите его повторно из терминала с выводом ошибок. Не делайте вывод по одному ярлыку в меню Windows: он может быть устаревшим после обновления пакета. Перезапуск через `wsl --shutdown` полезен после обновления WSL, но не должен заменять чтение ошибки самого приложения. Чем точнее вы отделите сбой WSLg от сбоя конкретного пакета, тем меньше риск переустановить рабочую подсистему без необходимости.
Что учитывать
Старые инструкции по WSL часто предлагали найти IP Windows, прописать DISPLAY и установить сторонний X-сервер. Это было актуально для ранних схем, но современный WSLg сам подготавливает графическое окружение. Если вы мигрировали давно созданный дистрибутив, в `.bashrc`, `.profile` или `/etc/environment` могли остаться старые переменные. Временно отключите их и повторите запуск. Не путайте ошибку «command not found» с графической проблемой: первая означает, что пакет не установлен или не в PATH…
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. Run Linux GUI apps with WSL). Пример и формулировки — редакция N1RO на 2026-09-20.