diff --git a/README.md b/README.md index db00921..bab6e6c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Mintty as a terminal for Bash on Ubuntu on Windows / WSL. +Mintty as a terminal for WSL (Windows Subsystem for Linux). @@ -6,14 +6,14 @@ Mintty as a terminal for Bash on Ubuntu on Windows / WSL. WSLtty components * wsltty package components (see below) in the user’s local application folder - `%LOCALAPPDATA%` (where WSL is also installed) -* a wsltty configuration directory in the user’s application folder `%APPDATA%`; - “home”-located configuration files from a previously installed version - will be migrated to the new default location -* Start Menu and Desktop shortcuts to start a WSL bash (with some variations, see below) -* optional context menu entries for Windows Explorer to start a WSL bash in the respective folder -* install/uninstall context menu items from Start Menu subfolder -* `wsl*.bat` scripts to invoke wsltty manually (with some variations and invocation options, see below) + `%LOCALAPPDATA%` +* a wsltty configuration directory in the user’s application folder `%APPDATA%` + (“home”-located configuration files from a previously installed version + will be migrated to the new default location) +* Start Menu shortcuts to start a WSL shell (with some variations, see below) +* `*.bat` scripts to invoke WSL from the command line (see below) +* optional context menu entries for Windows Explorer to start a WSL shell in the respective folder +* install/uninstall context menu items from Start Menu subfolder `WSLtty` * an uninstall script that can be invoked manually to remove shortcuts and context menu entries ### Installation ### @@ -36,6 +36,7 @@ Note this has to be done within a Cygwin environment. #### Installation to non-default locations #### +(For experts) Within the installation process, provide parameters to the script `install.bat`. The optional first parameter designates the installation target, the optional second parameter designates the configuration directory. @@ -43,37 +44,55 @@ the optional second parameter designates the configuration directory. ### Invocation ### WSLtty can be invoked with -* installed desktop shortcuts or Start menu shortcuts -* wsl*.bat scripts generated into the installation directory -* Explorer context menu (if installed from the Start menu) +* installed Start Menu shortcuts (or Desktop shortcuts if copied there) +* *.bat scripts +* Explorer context menu (if installed from the Start Menu `WSLtty` subfolder) Starting the mintty terminal directly from the WSLtty installation location -is discouraged because that would bypass the `--configdir` option. +is discouraged because that would bypass some essential options. ### Configuration ### #### Command line scripts `wsl*.bat` #### -WSLtty installs the following scripts in its application folder `%LOCALAPPDATA%\wsltty`: -* `wsl.bat` to start a WSL bash in the current folder/directory -* `wsl~.bat` to start a WSL bash in the WSL user home -* `wsl-l.bat` to start a WSL login bash +WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps` +(and a copy in its application folder `%LOCALAPPDATA%\wsltty`): -To enable invocation of these scripts from WIN+R or from cmd.exe, -copy them from `%LOCALAPPDATA%\wsltty` into `%SYSTEMROOT%\System32`, -renaming them as desired. -(The package does not do this to avoid trouble with missing admin privileges.) +* For each installed WSL distribution D, D`.bat` to start in the current folder/directory +* For each installed WSL distribution D, D`~.bat` to start in the WSL user home +* `wsl.bat` to start the default WSL installation in the current folder/directory +* `wsl~.bat` to start the default WSL installation in the WSL user home +* `wsl-l.bat` to start the default WSL installation with a login shell + +Given that `%LOCALAPPDATA%\Microsoft\WindowsApps` is in your PATH, +the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R. #### Start Menu and Desktop shortcuts #### -The Start Menu subfolder WSLtty offers three shortcuts: -* `WSL Bash % in Mintty` to start a WSL bash in the Windows %USERPROFILE% home -* `WSL Bash ~ in Mintty` to start a WSL bash in the WSL user home -* `WSL Bash -l in Mintty` to start a WSL login bash +In the Start Menu, the following shortcuts are installed: +* For each installed WSL distribution D, D` in Mintty` to start in the WSL user home -To ensure a login bash to start in your Linux home directory, +In the Start Menu subfolder WSLtty, the following shortcuts are installed: +* For each installed WSL distribution D, D` in Mintty` to start in the Windows %USERPROFILE% home +* For each installed WSL distribution D, D` ~ in Mintty` to start in the WSL user home +* `WSL % in Mintty` to start the default WSL installation in the Windows %USERPROFILE% home +* `WSL ~ in Mintty` to start the default WSL installation in the WSL user home +* `WSL -l in Mintty` to start the default WSL installation with a login shell + +WSLtty does not install Desktop shortcuts. If you want them, copy the +desired ones from the Start Menu subfolder `WSLtty`. + +To ensure a login shell to start in your Linux home directory, add a `cd` command to your `$HOME/.profile` on Linux side. +#### Context menu entries #### + +WSLtty provides context menu entries for all installed WSL distributions, +to start a respective WSL shell in a specific folder from an Explorer window. +They are not installed by default. +To add or remove context menu entries, run the respective script from the +Start Menu subfolder `WSLtty`. + #### Mintty settings #### Mintty can maintain its configuration file in various locations, @@ -103,9 +122,9 @@ Note: #### Shell selection #### -To invoke your favourite shell, simply replace `/bin/bash` with its pathname -in the Desktop shortcuts, `wsl*.bat` invocation scripts, -or Explorer context menu commands (configured in `config-context-menu.bat`). +To invoke your favourite shell, replace `/bin/bash` with its pathname +in the Desktop or Start Menu shortcuts and `*.bat` launch scripts, +or Explorer context menu commands. ### Components ### diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..972ef76 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.7.9 diff --git a/WSL % in Mintty.lnk b/WSL % in Mintty.lnk new file mode 100755 index 0000000..f51f7cf Binary files /dev/null and b/WSL % in Mintty.lnk differ diff --git a/WSL -l in Mintty.lnk b/WSL -l in Mintty.lnk new file mode 100755 index 0000000..0c75c1c Binary files /dev/null and b/WSL -l in Mintty.lnk differ diff --git a/WSL Bash % in Mintty.lnk b/WSL Bash % in Mintty.lnk deleted file mode 100755 index e5d7644..0000000 Binary files a/WSL Bash % in Mintty.lnk and /dev/null differ diff --git a/WSL Bash -l in Mintty.lnk b/WSL Bash -l in Mintty.lnk deleted file mode 100755 index 5bedb16..0000000 Binary files a/WSL Bash -l in Mintty.lnk and /dev/null differ diff --git a/WSL Bash ~ in Mintty.lnk b/WSL Bash ~ in Mintty.lnk deleted file mode 100755 index 5189f8a..0000000 Binary files a/WSL Bash ~ in Mintty.lnk and /dev/null differ diff --git a/WSL ~ in Mintty.lnk b/WSL ~ in Mintty.lnk new file mode 100755 index 0000000..9b666e6 Binary files /dev/null and b/WSL ~ in Mintty.lnk differ diff --git a/add to context menu.lnk b/add to context menu.lnk index 54cd89e..f4b00ea 100755 Binary files a/add to context menu.lnk and b/add to context menu.lnk differ diff --git a/config-context-menu.bat b/config-context-menu.bat deleted file mode 100755 index 522d6f3..0000000 --- a/config-context-menu.bat +++ /dev/null @@ -1,59 +0,0 @@ -@echo off - -if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty -if "%configdir%" == "" set configdir=%APPDATA%\wsltty - - -if "%1"=="/U" goto remove -if "%1"=="/u" goto remove - - -:add -rem add to Explorer context menu - -set userdirname=HKEY_CURRENT_USER\Software\Classes\Directory\shell -set userdirpane=HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell - -rem WSL in Mintty -set label=WSL in Mintty -rem set here=in this directory -set here=Here - -rem WSL icon -set icon=%LOCALAPPDATA%\lxss\bash.ico - -rem WSL target shell -set shell=/bin/bash - -rem Mintty invocation -set cmd=%installdir%\bin\mintty.exe -set cset=-o Locale=C -o Charset=UTF-8 -set opts=--wsl -h err -set arg=/bin/wslbridge -t %shell% -set target0=\"%cmd%\" %opts% %cset% --configdir \"%configdir%\" -i \"%icon%\" %arg% -rem set target1=\"%cmd%\" %opts% %cset% --configdir \"%configdir%\" -i \"%icon%\" /bin/dash -c \"cd '%%1'; exec %arg%\" -set target1=\"%cmd%\" %opts% %cset% --configdir \"%configdir%\" -i \"%icon%\" --dir \"%%1\" %arg% - -rem Registry entries -reg add "%userdirname%\wsltty" /d "%label% %here%" /f -reg add "%userdirname%\wsltty" /v Icon /d "%icon%" /f -reg add "%userdirname%\wsltty\command" /d "%target1%" /f -reg add "%userdirpane%\wsltty" /d "%label% %here%" /f -reg add "%userdirpane%\wsltty" /v Icon /d "%icon%" /f -reg add "%userdirpane%\wsltty\command" /d "%target0%" /f - -goto end - - -:remove -rem remove from Explorer context menu - -rem delete Explorer context menu -set userdirname=HKEY_CURRENT_USER\Software\Classes\Directory\shell -set userdirpane=HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell - -reg delete "%userdirname%\wsltty" /f -reg delete "%userdirpane%\wsltty" /f - - -:end diff --git a/config-distros.sh b/config-distros.sh new file mode 100755 index 0000000..b89f52f --- /dev/null +++ b/config-distros.sh @@ -0,0 +1,159 @@ +#! /bin/sh + +contextmenu=false +remove=false +case "$1" in +-contextmenu) contextmenu=true + shift;; +-contextmenu-remove) + contextmenu=true + remove=true + shift;; +-shortcuts-remove) + remove=true + shift;; +esac + +# test w/o WSL: call this script with REGTOOLFAKE=true dash config-distros.sh +if ${REGTOOLFAKE:-false} +then +regtool () { + case "$1" in + -*) shift;; + esac + key=`echo $2 | sed -e 's,.*{\(.*\)}.*,\1,' -e t -e d` + case "$1.$2" in + list.*) if $contextmenu + then echo "{0}" + else echo "{1}"; echo "{2}" + fi;; + get.*/DistributionName) echo "distro$key";; + get.*/BasePath) echo "C:\\Program\\{$key}\\State";; + get.*/PackageFamilyName) echo "distro{$key}";; + get.*/PackageFullName) echo "C:\\Program\\{$key}";; + esac +} +fi + +# dash built-in echo enforces interpretation of \t etc +echoc () { + cmd /c echo $* +} + +while read line; do echo "$line"; done < mkbat.bat +@echo off +echo Creating %1.bat + +echo @echo off> %1.bat +echo rem Start mintty terminal for WSL package %distro% in current directory>> %1.bat +echo %target% -i "%icon%" %minttyargs% %bridgeargs%>> %1.bat + +echo Created %1.bat +/EOB + +PATH=/bin:$PATH + +lxss="/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss" +schema="/HKEY_CURRENT_USER/Software/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/SystemAppData" + +(regtool list "$lxss" 2>/dev/null || echo "No WSL packages registered" >&2) | +while read guid +do + case $guid in + {*) + distro=`regtool get "$lxss/$guid/DistributionName"` + case "$distro" in + Legacy) name="Bash on Windows" + launch= + launcher="$SYSTEMROOT/System32/bash.exe" + ;; + *) name="$distro" + launch="$distro" + launcher="$LOCALAPPDATA/Microsoft/WindowsApps/$distro.exe" + ;; + esac + basepath=`regtool get "$lxss/$guid/BasePath"` + if package=`regtool -q get "$lxss/$guid/PackageFamilyName"` + then instdir=`regtool get "$schema/$package/Schemas/PackageFullName"` + if [ -r "$PROGRAMFILES/WindowsApps/$instdir/images/icon.ico" ] + then icon="%PROGRAMFILES%/WindowsApps/$instdir/images/icon.ico" + else icon="%LOCALAPPDATA%/wsltty/wsl.ico" + fi + root="$basepath/rootfs" + else icon="%LOCALAPPDATA%/lxss/bash.ico" + root="$basepath" + fi + echoc "distro $distro" + echoc "- guid $guid" + echoc "- (launcher $launcher)" + echoc "- icon $icon" + echoc "- root $root" + + target='%LOCALAPPDATA%\wsltty\bin\mintty.exe' + minttyargs='--wsl --rootfs="'"$root"'" -h err --configdir="%APPDATA%\wsltty" -o Locale=C -o Charset=UTF-8 /bin/wslbridge ' + #if [ -z "$launch" ] + #then bridgeargs='-t /bin/bash' + #else bridgeargs='-l "'"$launch"'" -t /bin/bash' + #fi + bridgeargs="--distro-guid $guid -t /bin/bash" + + export target minttyargs bridgeargs icon + export distro + + if $contextmenu + then + # create context menu entry + #cmd /C mkcontext "$name" + direckey='HKEY_CURRENT_USER\Software\Classes\Directory' + if $remove + then + reg delete "$direckey\\shell\\$name" /f + reg delete "$direckey\\Background\\shell\\$name" /f + else + reg add "$direckey\\shell\\$name" /d "$name in Mintty Here" /f + reg add "$direckey\\shell\\$name" /v Icon /d "$icon" /f + cmd /C reg add "$direckey\\shell\\$name\\command" /d "\"$target\" -i \"$icon\" --dir \"%1\" $minttyargs $brigdeargs" /f + reg add "$direckey\\Background\\shell\\$name" /d "$name in Mintty Here" /f + reg add "$direckey\\Background\\shell\\$name" /v Icon /d "$icon" /f + cmd /C reg add "$direckey\\Background\\shell\\$name\\command" /d "\"$target\" -i \"$icon\" $minttyargs $brigdeargs" /f + fi + else + + if $remove + then + cmd /C del "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\$name ~ in Mintty.lnk" + cmd /C del "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name.bat" + cmd /C del "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name~.bat" + else + # create desktop/start menu shortcut + cscript /nologo mkshortcut.vbs "/name:$name in Mintty" + # copy to Start Menu WSLtty subfolder + rem cmd /C mkdir "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty\\WinUser" + cmd /C copy "$name in Mintty.lnk" "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty" + + # create command-line launch script + cmd /C mkbat.bat "$name" + #cmd /C mkbat.bat "$name in Mintty" + # copy to WSLtty home and to WindowsApps launch folder + cmd /C copy "$name.bat" "%LOCALAPPDATA%\\wsltty\\$name.bat" + cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name.bat" + + # prepare versions to target WSL home directory + bridgeargs="-C~ $bridgeargs" + + # create optional addition desktop shortcut + cscript /nologo mkshortcut.vbs "/name:$name ~ in Mintty" + # copy to Start Menu + cmd /C copy "$name ~ in Mintty.lnk" "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs" + + # create command-line launch script + cmd /C mkbat.bat "$name~" + #cmd /C mkbat.bat "$name~ in Mintty" + # copy to WSLtty home and to WindowsApps launch folder + cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\wsltty\\$name~.bat" + cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name~.bat" + fi + + fi;; + esac +done diff --git a/configure WSL shortcuts.lnk b/configure WSL shortcuts.lnk new file mode 100755 index 0000000..7da0fbc Binary files /dev/null and b/configure WSL shortcuts.lnk differ diff --git a/install.bat b/install.bat index 20746a2..3c1bff9 100755 --- a/install.bat +++ b/install.bat @@ -22,19 +22,26 @@ echo set refinstalldir=%refinstalldir%>> setdirs.bat echo set installdir=%installdir%>> setdirs.bat echo set refconfigdir=%refconfigdir%>> setdirs.bat echo set configdir=%configdir%>> setdirs.bat +copy setdirs.bat + uninstall.bat "%installdir%\uninstall.bat" + copy setdirs.bat + wsl.bat "%installdir%\wsl.bat" copy setdirs.bat + wsl~.bat "%installdir%\wsl~.bat" copy setdirs.bat + wsl-l.bat "%installdir%\wsl-l.bat" -copy setdirs.bat + uninstall.bat "%installdir%\uninstall.bat" -copy setdirs.bat + config-context-menu.bat "%installdir%\config-context-menu.bat" copy "add to context menu.lnk" "%installdir%" copy "remove from context menu.lnk" "%installdir%" +copy "configure WSL shortcuts.lnk" "%installdir%" +copy wsl.ico "%installdir%" +copy config-distros.sh "%installdir%" +copy mkshortcut.vbs "%installdir%" +rem clean up previous installation +del "%installdir%\config-context-menu.bat" mkdir "%installdir%\bin" copy cygwin1.dll "%installdir%\bin" copy cygwin-console-helper.exe "%installdir%\bin" -rem copy dash.exe "%installdir%\bin" +copy dash.exe "%installdir%\bin" +copy regtool.exe "%installdir%\bin" copy mintty.exe "%installdir%\bin" copy zoo.exe "%installdir%\bin" copy wslbridge.exe "%installdir%\bin" @@ -49,30 +56,46 @@ copy po.zoo "%installdir%\usr\share\mintty\lang" rem generate shortcuts -set icon=%%LOCALAPPDATA%%\lxss\bash.ico +rem set icon=%%LOCALAPPDATA%%\lxss\bash.ico +set lxicon=%%LOCALAPPDATA%%\lxss\bash.ico +set icon=%%LOCALAPPDATA%%\wsltty\wsl.ico +if exist "%installdir%\wsl.ico" goto iconok +if exist "%lxicon" copy "%lxicon" "%installdir%\wsl.ico" +:iconok + set target=%refinstalldir%\bin\mintty.exe set minttyargs=--wsl -h err --configdir="%refconfigdir%" -o Locale=C -o Charset=UTF-8 /bin/wslbridge set bridgeargs=-t /bin/bash -cscript mkshortcut.vbs "/name:WSL Bash %% in Mintty" +cscript mkshortcut.vbs "/name:WSL %% in Mintty" set bridgeargs=-C~ -t /bin/bash -cscript mkshortcut.vbs "/name:WSL Bash ~ in Mintty" +cscript mkshortcut.vbs "/name:WSL ~ in Mintty" set bridgeargs=-t /bin/bash -l -cscript mkshortcut.vbs "/name:WSL Bash -l in Mintty" +cscript mkshortcut.vbs "/name:WSL -l in Mintty" rem create Start Menu Folder set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty mkdir "%smf%" copy "wsltty home & help.url" "%smf%" -copy "WSL Bash %% in Mintty.lnk" "%smf%" -copy "WSL Bash ~ in Mintty.lnk" "%smf%" -copy "WSL Bash -l in Mintty.lnk" "%smf%" -mkdir "%smf%\context menu shortcuts" -copy "add to context menu.lnk" "%smf%\context menu shortcuts" -copy "remove from context menu.lnk" "%smf%\context menu shortcuts" +copy "add to context menu.lnk" "%smf%" +copy "remove from context menu.lnk" "%smf%" +copy "configure WSL shortcuts.lnk" "%smf%" +rem clean up previous installation +rmdir /S /Q "%smf%\context menu shortcuts" + +rem create launch shortcuts for default WSL distro +copy "WSL %% in Mintty.lnk" "%smf%" +copy "WSL ~ in Mintty.lnk" "%smf%" +copy "WSL -l in Mintty.lnk" "%smf%" +rem clean up previous installation +del "%smf%\WSL Bash %% in Mintty.lnk" +del "%smf%\WSL Bash ~ in Mintty.lnk" +del "%smf%\WSL Bash -l in Mintty.lnk" + +goto sysconfig rem create Desktop Shorcuts -copy "WSL Bash %% in Mintty.lnk" "%USERPROFILE%\Desktop" -copy "WSL Bash ~ in Mintty.lnk" "%USERPROFILE%\Desktop" +copy "WSL %% in Mintty.lnk" "%USERPROFILE%\Desktop" +copy "WSL ~ in Mintty.lnk" "%USERPROFILE%\Desktop" :sysconfig @@ -108,5 +131,10 @@ mkdir "%configdir%\themes" rem create config file if it does not yet exist if not exist "%configdir%\config" echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config" +rem distro-specific stuff: shortcuts and launch scripts +cd "%installdir%" +bin\dash.exe "%installdir%\config-distros.sh" +bin\dash.exe "%installdir%\config-distros.sh" -contextmenu + :end diff --git a/makefile b/makefile index 0818f58..c37b643 100644 --- a/makefile +++ b/makefile @@ -9,10 +9,11 @@ all: check pkg # wsltty release -ver=0.7.8.3 +#ver=1.7.9 +ver=0.7.9 # mintty release version -#minttyver=2.7.8 +#minttyver=2.7.9 minttyver=master # wslbridge backend version @@ -23,7 +24,11 @@ wslbridgever=0.2.3 # therefore using "master" below #wslbridge-frontend=wslbridge-frontend # release 0.2.1 is updated and complete, no separate frontend build needed: -wslbridge-frontend= +#wslbridge-frontend= +#wslbridge-commit=master +# use --distro-guid option: +wslbridge-frontend=wslbridge-frontend +wslbridge-commit=cb22e3f6f989cefe5b6599d3c04422ded74db664 ############################################################################# # target checking and some defs @@ -70,16 +75,16 @@ wslbridge-backend: tar xvzf wslbridge-$(wslbridgever)-$(sys).tar.gz mkdir -p bin cp wslbridge-$(wslbridgever)-$(sys)/wslbridge* bin/ - cp wslbridge-$(wslbridgever)-$(sys)/LICENSE.txt LICENSE.wslbridge + tr -d '\015' < wslbridge-$(wslbridgever)-$(sys)/LICENSE.txt > LICENSE.wslbridge wslbridge-frontend: - $(wgeto) https://github.com/rprichard/wslbridge/archive/master.zip -o wslbridge-master.zip - unzip -o wslbridge-master.zip - cd wslbridge-master/frontend; make - strip wslbridge-master/out/wslbridge.exe + $(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip + unzip -o wslbridge-$(wslbridge-commit).zip + cd wslbridge-$(wslbridge-commit)/frontend; make + strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe mkdir -p bin - cp wslbridge-master/out/wslbridge.exe bin/ - cp wslbridge-master/LICENSE.txt LICENSE.wslbridge + cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/ + tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge mintty: mintty-get mintty-build @@ -98,7 +103,8 @@ cygwin: mkdir -p bin cp /bin/cygwin1.dll bin/ cp /bin/cygwin-console-helper.exe bin/ - #cp /bin/dash.exe bin/ + cp /bin/dash.exe bin/ + cp /bin/regtool.exe bin/ cp /bin/zoo.exe bin/ cop: ver @@ -107,16 +113,20 @@ cop: ver sed -e "s,%version%,$(ver)," makewinx.cfg > rel/wsltty.SED cp bin/cygwin1.dll rel/ cp bin/cygwin-console-helper.exe rel/ - #cp bin/dash.exe rel/ + cp bin/dash.exe rel/ + cp bin/regtool.exe rel/ cp bin/mintty.exe rel/ cp bin/zoo.exe rel/ cp po.zoo rel/ cp bin/wslbridge.exe rel/ cp bin/wslbridge-backend rel/ cp LICENSE.* rel/ + cp VERSION rel/ cp *.lnk rel/ + cp *.ico rel/ cp *.url rel/ cp *.bat rel/ + cp *.sh rel/ cp *.vbs rel/ cab: cop diff --git a/makewinx.cfg b/makewinx.cfg index f47ceae..e22ec58 100644 --- a/makewinx.cfg +++ b/makewinx.cfg @@ -23,9 +23,9 @@ UserQuietInstCmd=%UserQuietInstCmd% SourceFiles=SourceFiles [Strings] -InstallPrompt=Install Mintty terminal for WSL / Ubuntu on Windows? +InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)? DisplayLicense= -FinishMessage=Mintty for WSL installed - for documentation see https://github.com/mintty/mintty/wiki/Tips +FinishMessage=Mintty for WSL installed - for documentation see https://github.com/mintty/wsltty TargetName=wsltty-%version%-install.exe FriendlyName=wsltty AppLaunched=cmd.exe /c install.bat @@ -39,21 +39,26 @@ FILE3="wslbridge.exe" FILE4="wslbridge-backend" FILE5="LICENSE.mintty" FILE6="LICENSE.wslbridge" -FILE7="WSL Bash % in Mintty.lnk" -FILE8="WSL Bash ~ in Mintty.lnk" -FILE9="WSL Bash -l in Mintty.lnk" +FILE7="WSL % in Mintty.lnk" +FILE8="WSL ~ in Mintty.lnk" +FILE9="WSL -l in Mintty.lnk" FILE10="wsl.bat" FILE11="wsl~.bat" FILE12="wsl-l.bat" FILE13="install.bat" FILE14="uninstall.bat" -FILE15="config-context-menu.bat" +FILE15="wsl.ico" FILE16="add to context menu.lnk" FILE17="remove from context menu.lnk" FILE18="wsltty home & help.url" FILE19="zoo.exe" FILE20="po.zoo" -FILE21=mkshortcut.vbs +FILE21="dash.exe" +FILE22="regtool.exe" +FILE23="config-distros.sh" +FILE24="configure WSL shortcuts.lnk" +FILE25="mkshortcut.vbs" +FILE26="VERSION" [SourceFiles] SourceFiles0=. @@ -81,4 +86,9 @@ SourceFiles0=. %FILE19%= %FILE20%= %FILE21%= +%FILE22%= +%FILE23%= +%FILE24%= +%FILE25%= +%FILE26%= diff --git a/mkshortcut.vbs b/mkshortcut.vbs index 96502d7..c61224b 100755 --- a/mkshortcut.vbs +++ b/mkshortcut.vbs @@ -8,11 +8,13 @@ rem -l rem /arguments:--wsl -h err -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash -l rem /target:%LOCALAPPDATA%\wsltty\bin\mintty.exe rem /workingdir:%USERPROFILE% -rem /icon:%LOCALAPPDATA%\lxss\bash.ico +rem rem /icon:%LOCALAPPDATA%\lxss\bash.ico +rem /icon:%LOCALAPPDATA%\wsltty\wsl.ico rem General - Name: name = Wscript.Arguments.Named("name") & ".lnk" set wshell = WScript.CreateObject("WScript.Shell") +wscript.echo "Creating " & name set lnk = wshell.CreateShortcut(name) rem Target: @@ -23,8 +25,8 @@ lnk.TargetPath = wshell.ExpandEnvironmentStrings("%target%") minttyargs = wshell.ExpandEnvironmentStrings("%minttyargs%") bridgeargs = wshell.ExpandEnvironmentStrings("%bridgeargs%") lnk.Arguments = minttyargs & bridgeargs -wscript.echo "minttyargs: " & minttyargs -wscript.echo lnk.Arguments +rem wscript.echo "minttyargs: " & minttyargs +rem wscript.echo lnk.Arguments rem Start in: rem lnk.WorkingDirectory = Wscript.Arguments.Named("workingdir") @@ -35,9 +37,10 @@ rem icon = Wscript.Arguments.Named("icon") rem rem iconoffset = Wscript.Arguments.Named("iconoffset") rem rem icon = icon & ", " & iconoffset icon = wshell.ExpandEnvironmentStrings("%icon%") -wscript.echo "icon: " & icon +rem wscript.echo "icon: " & icon lnk.IconLocation = icon -rem lnk.IconLocation = "%LOCALAPPDATA%\lxss\bash.ico" +rem rem lnk.IconLocation = "%LOCALAPPDATA%\lxss\bash.ico" +rem lnk.IconLocation = "%LOCALAPPDATA%\wsltty\wsl.ico" rem Shorcut key: rem lnk.HotKey = "ALT+CTRL+W" @@ -50,3 +53,5 @@ rem lnk.IconLocation = Wscript.Arguments.Named("desc") rem lnk.Description = "WSLtty" lnk.Save +wscript.echo "Created " & name +wscript.echo diff --git a/remove from context menu.lnk b/remove from context menu.lnk index f638405..293b03a 100755 Binary files a/remove from context menu.lnk and b/remove from context menu.lnk differ diff --git a/uninstall.bat b/uninstall.bat index 87497c9..a445df6 100755 --- a/uninstall.bat +++ b/uninstall.bat @@ -9,20 +9,26 @@ rem delete Start Menu Folder set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty rmdir /S /Q "%smf%" -rem delete Desktop Shortcuts -del "%USERPROFILE%\Desktop\WSL Bash % in Mintty.lnk" -del "%USERPROFILE%\Desktop\WSL Bash ~ in Mintty.lnk" +rem delete Desktop Shortcuts (not installed anymore) +rem del "%USERPROFILE%\Desktop\WSL % in Mintty.lnk" +rem del "%USERPROFILE%\Desktop\WSL ~ in Mintty.lnk" + + +:start menu + +cd %installdir% +bin\dash.exe config-distros.sh -shortcuts-remove :explorer context menu -call "%installdir%\config-context-menu.bat" /U +cd %installdir% +bin\dash.exe config-distros.sh -contextmenu-remove :undeploy cd %installdir% - rem currently not removing software diff --git a/wsl-l.bat b/wsl-l.bat index 7598534..9aa084d 100755 --- a/wsl-l.bat +++ b/wsl-l.bat @@ -1,15 +1,13 @@ @echo off -rem Start mintty terminal for WSL in home directory +rem Start mintty terminal for WSL with login shell if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty if "%configdir%" == "" set configdir=%APPDATA%\wsltty rem To enable invocation of this script from WIN+R or from cmd.exe, -rem you may want to copy this script into "%SYSTEMROOT%\System32" +rem you may want to copy this script into "%SYSTEMROOT%\System32", +rem or include the installation folder "%LOCALAPPDATA%\wsltty" in your PATH -rem You may want a variant of this script without trailing "-l" -rem to start in the current directory from cmd.exe - -"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash -l +"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\wsltty\wsl.ico" /bin/wslbridge -t /bin/bash -l diff --git a/wsl.bat b/wsl.bat index 62d3fdd..af4ed8c 100755 --- a/wsl.bat +++ b/wsl.bat @@ -1,15 +1,13 @@ @echo off -rem Start mintty terminal for WSL in home directory +rem Start mintty terminal for WSL in current directory if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty if "%configdir%" == "" set configdir=%APPDATA%\wsltty rem To enable invocation of this script from WIN+R or from cmd.exe, -rem you may want to copy this script into "%SYSTEMROOT%\System32" +rem you may want to copy this script into "%SYSTEMROOT%\System32", +rem or include the installation folder "%LOCALAPPDATA%\wsltty" in your PATH -rem You may want a variant of this script without trailing "-l" -rem to start in the current directory from cmd.exe - -"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash +"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\wsltty\wsl.ico" /bin/wslbridge -t /bin/bash diff --git a/wsl.ico b/wsl.ico new file mode 100755 index 0000000..3d860db Binary files /dev/null and b/wsl.ico differ diff --git a/wsl~.bat b/wsl~.bat index bdc6ffd..47f64d1 100755 --- a/wsl~.bat +++ b/wsl~.bat @@ -1,15 +1,13 @@ @echo off -rem Start mintty terminal for WSL in home directory +rem Start mintty terminal for WSL in WSL home directory if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty if "%configdir%" == "" set configdir=%APPDATA%\wsltty rem To enable invocation of this script from WIN+R or from cmd.exe, -rem you may want to copy this script into "%SYSTEMROOT%\System32" +rem you may want to copy this script into "%SYSTEMROOT%\System32", +rem or include the installation folder "%LOCALAPPDATA%\wsltty" in your PATH -rem You may want a variant of this script without trailing "-l" -rem to start in the current directory from cmd.exe - -"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -C~ -t /bin/bash +"%installdir%\bin\mintty.exe" --wsl -h err "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\wsltty\wsl.ico" /bin/wslbridge -C~ -t /bin/bash