WSL2: GUI + AUDIO
June 27, 2020
Грфика
Введите в 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
избавляет от некоторых сообщений об ошибках.