Различные окна программы ведут себя по-разному в WSL2
Я использую WSL2 в Windows 11 с дистрибутивом Debian. Чтобы использовать приложения с графическим интерфейсом, я запускаю VcXsrv XLaunch с номером отображения, установленным на 0, с несколькими окнами, без запуска клиента, без использования собственного opengl и с отключенным контролем доступа. Для некоторых приложений (например, Paraview, Firefox) они ведут себя так, как я ожидал бы от них на машине с Linux: мой значок курсора выглядит как GNOME, я могу сделать окна полноэкранными, значок на панели задач такой, каким он должен быть.
В других приложениях, например Eclipse, окно ведет себя странным образом: у меня значок курсора по-прежнему GNOME-y, но я не могу переместить окно или сделать его полноэкранным, а значок на панели задач представляет собой пингвина и пингвина поменьше. Также стоит отметить, что Eclipse запускается через Java (я думаю), и при его запуске я получаю ошибку SLF4J + предупреждение GLib-GObject.
Я не знаю, является ли это ошибкой WSL, или я не установил подходящие драйверы дисплея или что-то в этом роде, но меня беспокоит то, что разные приложения с графическим интерфейсом ведут себя по-разному. Может ли кто-нибудь объяснить, почему это происходит, и/или порекомендовать исправление?
Изменить: Прикрепляю скриншоты, чтобы показать, о чем я говорю:
Главное, на что следует обратить внимание, это то, что на верхней панели Eclipse IDE есть только значок X — у него нет значков свертывания/полноэкранного режима. На самом деле я даже перетаскивать окно не могу, оно просто занимает весь экран несмотря ни на что.
Окно Firefox ведет себя так же, как и любое другое. У него есть значки закрытия/свертывания/полноэкранного режима, и я могу перетаскивать окно, когда оно не в полноэкранном режиме.
Ниже приведен скриншот значков, которые появляются на панели задач:
Firefox использует обычный значок Firefox, а Eclipse IDE использует в качестве значка пингвина Linux.
Возможно, также стоит отметить, что у меня установлен Firefox в моей основной ОС Windows, а также в WSL.
1 ответ
Windows 11 поставляется с собственными возможностями графического пользовательского интерфейса WSL2 на основе сервера отображения Wayland. В мире Linux в настоящее время широко используются два сервера отображения: Wayland, новая блестящая штука, которая предназначена для будущего рабочего стола Linux, и X11, оригинальный сервер отображения, унаследованный от UNIX.
Переопределяя переменную X11, вы указываете любому приложению, работающему на X11, использовать ваш сервер отображения VcXsrv X11, но на WSL2 все еще существует сервер отображения Wayland, который может использоваться приложениями, которые его поддерживают.
Firefox в Ubuntu по умолчанию использует X11, если вы не переопределите его, поэтому он использует ожидаемый вами VcXsrv. Ваша установка Eclipse, работающая через Java, поддерживает Wayland и использует его по умолчанию, минуя вашу конфигурацию VcXsrv (на что указывает меньший из двух пингвинов на значке панели задач).
Значок для приложений с графическим интерфейсом WSL2, использующих собственную технологию Microsoft (т. е. по умолчанию, а не через вашу собственную службу X11), должен отображать любой значок, настроенный в файле приложения, установленном для/usr/share/applications
. Если значок не указан или не связан с ним.desktop
файл, то Windows по умолчанию будет отображать большого пингвина на панели задач. Во всех приложениях с графическим интерфейсом WSL2, использующих технологию Microsoft, отображается маленький пингвин, указывающий на то, что они работают в WSL2 — именно поэтому у вас есть два пингвина.
Вы можете выбрать один из двух вариантов действий:
- Вы можете использовать встроенную поддержку графического интерфейса WSL2 для приложений Wayland и X11, устраняя необходимость устанавливать
DISPLAY
переменная и требование запуска собственного сервера X11. - Вы можете убедиться, что в вашей среде WSL2 нет переменной
WAYLAND_DISPLAY
установите и продолжайте использовать собственную настройку X11. Вы можете удалить переменную с помощью:unset WAYLAND_DISPLAY
в БАШ.