Как создать ярлык в Windows 10 для запуска приложения WSL2 GUI в VcXsrv

Как создать ярлык в Windows 10 для запуска приложения WSL2 GUI в VcXsrv

Я пытаюсь создать ярлык для Firefox из WSL2 в Windows 10 Home, но у меня не получается. Я использую VcXsrv, который я настроил на автоматический запуск. Я не могу использовать WSLg, так как у меня не Windows 11.

Можно ли использовать приложения, например Firefox, в ярлыках Windows без необходимости DISPLAYручного экспорта?

решение1

Похоже, вы:

  • У вас уже есть DISPLAYправильно настроенная переменная, и вы можете запустить Firefox из командной строки в VcXsrv. Это отличное начало.

  • Нено DISPLAYэкспортировать переменную в ~/.bashrc, поскольку вы упоминаете о необходимости экспортировать ее вручную.

Если это так, то вам сначала нужно экспортировать переменную в вашей конфигурации запуска. Если вы уже сделали эту часть, перейдите к"Командная строка сочетания клавиш"раздел ниже.

Экспортировать DISPLAY при запуске

Добавьте следующее к вашему ~/.bashrc:

export DISPLAY="$(hostname).local:0"

Который использует mDNS для выбора правильного IP-адреса на основе моегоответ здесь по теме. Если у вас есть другая DISPLAYнастройка, которая вам подходит, вы можете использовать ее, но я считаю, что hostnameбазовый подход в большинстве случаев является наиболее простым.

Затем:

source ~/.bashrc

чтобы он перечитал конфигурацию. Вы также можете перезапустить оболочку, чтобы убедиться. Затем убедитесь, что Firefox запущен.

Сочетание клавиш командной строки

Вышеуказанное работает, когда вы находитесь винтерактивныйshell, так как файл rc создан для интерактивных оболочек. Однако, когда вы запускаете Firefox через ярлык, вам нужно будет использовать команду wsl.exe, и по умолчанию этоне являетсяинтерактивная (или входная) оболочка.

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

wsl -e bash -lic "firefox"

Это запустит Bash:

  • В качестве оболочки входа ( -l), которая будет источником вашего~/.bash_profile
  • Как интерактивная оболочка ( -i), которая будет источником вашего~/.bashrc
  • И выполните команду ( -c) firefox

решение2

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

wsl -e bash -lic "nohup firefox &"

"&" в linux означает "запустить в фоне". Без "&" у нас активное окно с родительским процессом (bash), с "&", но без "nohup" наш процесс завершится вместе с родительским (bash windows).

С «nohup» и «&» все выглядит красиво — только процесс Firefox.

решение3

Дальше к:

Ярлык Windows (целевая команда)

Это то, что работает лучше всего и наиболее надежно для меня в моих конкретных обстоятельствах, т.е. Windows 10 с WSL2 Debian.

C:\Windows\System32\wsl.exe -d Debian -- bash -lic "nohup firefox &"

Примечание (при переходе с GWSL)

Если вы использовали GWSL для запуска приложений с графическим интерфейсом пользователя до обновления до WSL2, обязательно дважды проверьте свои файлы ~/.bashrc& ~/.profile(или ~/.bash_profile), чтобы удалить все конфигурации, размещенные там GWSL, которые могут непреднамеренно перезаписать DISPLAYпеременную среды на что-то недопустимое, содержащее IP-адрес вашего сервера имен (из /etc/resolve.conf).

В моем случае устаревшие конфигурации GWSL были установлены DISPLAYвместо 1.1.1.1:0.0, :0что привело к поломке.

решение4

Пытаясь запустить Xilinx IDE в WSL с требуемой средой и моим рабочим каталогом, я получил следующее:

wsl.exe -e bash -lic ". /opt/Xilinx/14.7/ISE_DS/settings64.sh && cd /mnt/c/Users/%username%/Documents/ISE_Projects && nohup ise &"

Объединение команд с использованием && позволило мне принудительно задать нужную среду и рабочий каталог перед запуском программы.

Похоже, замена %username% работает.

Связанный контент