Created
January 29, 2018 01:35
-
-
Save stormdragon2976/ba9ead601a06d694feda1e829e478eb8 to your computer and use it in GitHub Desktop.
Enable sound in WSL for tintin++ accessibility packs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
echo - This scripts automates process of installing Windows Subsystem for Linux (WSL) | |
REM Due some limitations, this script has to be can't be executed under PowerShell | |
Get-ChildItem >nul 2>&1 | |
if %errorLevel% == 0 ( | |
echo # Swich to CMD | |
cmd /c start "" %0 | |
exit 0 | |
) | |
echo Do you want to install PulseAudio Windows service? | |
set INSTALL_PULSE= | |
set /P INSTALL_PULSE=Install and register pulseaudio? (y/n): %=% | |
set BASH=C:\Windows\System32\bash.exe | |
if not exist %BASH% call :install_wsl | |
call :get_linux_user | |
echo Main Linux user is: %linux_user% | |
call :fix_wsl | |
call :install_base_packages | |
call :fix_libpulse0 | |
If /I "%INSTALL_PULSE%"=="y" call :install_pulse | |
echo - | |
echo - Done | |
pause | |
goto :eof | |
:check_permissions | |
net session >nul 2>&1 | |
if %errorLevel% == 0 ( | |
goto :eof | |
) else ( | |
call :missing_admin | |
) | |
goto :eof | |
:get_linux_user | |
%BASH% -c "whoami > ./tmpFile" | |
if not %errorLevel% == 0 call :missing_admin | |
set /p linux_user= < tmpFile | |
del tmpFile | |
goto :eof | |
goto :eof | |
:install_pulse | |
REM installs third party soft what allows to connect to Linux subsystem and pass audio stream to Windows. | |
SET "LINUXTMP=$(echo '%TMP:\=\\%' | sed -e 's|\\|/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/mnt/\L\1\E/\2|')" | |
echo LINUXTMP = "%LINUXTMP%" | |
ECHO --- PulseAudio... | |
%BASH% -c "rm -fr '%LINUXTMP%/pulseaudio.zip'" | |
%BASH% -c "wget -cO '%LINUXTMP%/pulseaudio.zip' 'http://bosmans.ch/pulseaudio/pulseaudio-1.1.zip'" | |
ECHO --- Extracting PulseAudio | |
md "%TMP%\pulseaudio" | |
%BASH% -c "unzip -o '%LINUXTMP%/pulseaudio.zip' -d '%LINUXTMP%/pulseaudio'" | |
ECHO --- Installing PulseAudio | |
xcopy /e /Y "%TMP%\pulseaudio" "%AppData%\PulseAudio\" | |
ECHO --- Setting PulseAudio to run at startup | |
echo set ws=wscript.createobject("wscript.shell") > "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\start_pulseaudio.vbe" | |
echo ws.run "%AppData%\PulseAudio\bin\pulseaudio.exe --exit-idle-time=-1",0 >> "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\start_pulseaudio.vbe" | |
REM Recomended/required settings | |
echo load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1 >> "%AppData%\PulseAudio\etc\pulse\default.pa" | |
ECHO --- Setting PulseAudio | |
"%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\start_pulseaudio.vbe" | |
ECHO When prompted, DO NOT allow 'pulseaudio' access to any of your networks. It doesn't need access. | |
goto :eof | |
:install_wsl | |
call :check_permissions | |
echo -- Enable developer mode in Windows | |
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" | |
echo -- Install WSL | |
powershell -noprofile -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux" | |
echo -- Install Ubuntu | |
lxrun /install /y | |
echo | |
echo - Please Reboot your computer before continue | |
set /p in= Do you want to reboot now? (y/n) | |
if "%in%" == "y" ( | |
shutdown -r -f -t 10 | |
) | |
exit 0 | |
:wsl_start_sudo | |
if not "%linux_user%" == "root" ( | |
echo -- Switch linux user to root | |
lxrun /setdefaultuser root | |
) | |
goto :eof | |
:wsl_stop_sudo | |
if not "%linux_user%" == "root" ( | |
echo -- Switch linux user to `%linux_user%` | |
lxrun /setdefaultuser %linux_user% | |
) | |
goto :eof | |
:fix_wsl | |
echo -- Fix WSL installation | |
call :wsl_start_sudo | |
echo -- Fix settings for root user | |
call :fix_user_wsl_settings | |
echo --- Fix sudo command | |
%BASH% -c "if cat /etc/hosts | grep `hostname` >> /dev/null ; then echo OK; else echo '127.0.0.1 `hostname`' >> /etc/hosts; fi" | |
REM %BASH% -c "echo '127.0.0.1 `hostname`' >> /etc/hosts" | |
echo --- Update packages | |
%BASH% -c "apt-get update && apt-get -y upgrade" | |
call :wsl_stop_sudo | |
if not "%linux_user%" == "root" ( | |
echo -- Fix settings for main user | |
call :fix_user_wsl_settings | |
) | |
goto :eof | |
:fix_user_wsl_settings | |
echo --- Fix default language | |
%BASH% -c "if cat ~/.bashrc | grep LANG=en_US.utf8 >> /dev/null ; then echo OK; else echo LANG=en_US.utf8 >> ~/.bashrc; fi" | |
goto :eof | |
:install_base_packages | |
echo -- Install base packages | |
call :wsl_start_sudo | |
%BASH% -c "apt-get install -y unzip git-core sox sox-fmt-all vorbistools tintin++ vim" | |
call :wsl_stop_sudo | |
goto :eof | |
:fix_libpulse0 | |
call :wsl_start_sudo | |
echo -- Fix pulse audio | |
%BASH% -c "add-apt-repository ppa:therealkenc/wsl-pulseaudio -y" | |
%BASH% -c "apt-get update && apt-get upgrade && apt-get install -y libpulse0" | |
call :wsl_stop_sudo | |
%BASH% -c "if cat ~/.bashrc | grep 'export PULSE_SERVER=tcp:localhost' >> /dev/null ; then echo OK; else echo 'export PULSE_SERVER=tcp:localhost' >> ~/.bashrc; fi" | |
goto :eof | |
:missing_admin | |
echo Please run this script as an administrator | |
exit 1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment