WSL2: GUI + AUDIO

Грфика

Введите в bash что бы объявить переменную DISPLAY с адресом дисплейного сервера и делегируйте отрисовку OpenGL к X Window System Server

export DISPLAY=$(cat /etc/resolv.conf | grep -Po "(?<=nameserver\s)([\d.]+)"):0
export LIBGL_ALWAYS_INDIRECT=1

Или добавьте в ~/.bashrc автоинициализацию переменных при старте

cat <<- "EOF" | tee -a ~/.bashrc > /dev/null
export DISPLAY=$(cat /etc/resolv.conf | grep -Po "(?<=nameserver\s)([\d.]+)"):0
export LIBGL_ALWAYS_INDIRECT=1
EOF
source ~/.bashrc

Скачайте и установите VcXsrv

  • в настройках отображения выбирите режим множество окон
  • оставьте запуск без клиента
  • поставьте чекбокс Disable Access Control
  • добавьте параметр -swcursor для отрисовки курсора программой
  • и параметр -screen 0 @1 что бы выводить окна на первый монитор если у вас их несколько
  • сохраните конфигурацию в удобном месте с названием например wsl.xlaunch
  • и нажмите Finish что бы запустить VcXsrv

Для проверки установите Chromium

sudo snap install chromium

Проверить версию хрома можно по этой ссылке chrome://settings/help

Звук

Для настройки звука скачайте и распакуйте PulseAudio

В powershell с правами администратора выполните из директории PulseAudio

Add-Content etc\pulse\default.pa -Value 'load-module module-waveout sink_name=output source_name=input record=0'
Add-Content etc\pulse\default.pa -Value 'load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1'
Add-Content etc\pulse\daemon.conf -Value 'exit-idle-time = -1'

И создайте задачу для Windows

schtasks /create /tn "pulseaudio" /sc onstart /np /rl highest /f /tr "powershell Start-Process -FilePath $((Get-Location).Path)\bin\pulseaudio.exe -WorkingDirectory $((Get-Location).Path)"
schtasks /run /tn "pulseaudio"

Удалить задачу можно командой

schtasks /delete /tn "pulseaudio" /f

в WSL объявите переменную PULSE_SERVER

export PULSE_SERVER=tcp:$(cat /etc/resolv.conf | grep -Po "(?<=nameserver\s)([\d.]+)")

Или добавьте в ~/.bashrc автоинициализацию переменной при старте

cat <<- "EOF" | tee -a ~/.bashrc > /dev/null
export PULSE_SERVER=tcp:$(cat /etc/resolv.conf | grep -Po "(?<=nameserver\s)([\d.]+)")
EOF
source ~/.bashrc

А так же дополнительно установите libpulse

sudo apt-get install -y libpulse0

Для теста давайте запустим что-нибудь интересное со звуком, напрмер supertux

sudo snap install supertux
supertux --renderer sdl

Параметр --renderer sdl избавляет от некоторых сообщений об ошибках.

Надеюсь Вам было интересно, подпишитесь на канал это дает мне больше мотивации создавать более интересные видео и чаще