mirror of
				https://github.com/mintty/wsltty.git
				synced 2025-11-04 00:51:52 +00:00 
			
		
		
		
	Compare commits
	
		
			67 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					5136d7e878 | ||
| 
						 | 
					0d39faaaf6 | ||
| 
						 | 
					d61e551236 | ||
| 
						 | 
					3f60e3f48c | ||
| 
						 | 
					a207cae3a8 | ||
| 
						 | 
					79c3f9e450 | ||
| 
						 | 
					75c67869bf | ||
| 
						 | 
					7776748081 | ||
| 
						 | 
					bac370cfce | ||
| 
						 | 
					975dbb9398 | ||
| 
						 | 
					432b71d2fd | ||
| 
						 | 
					1b41dfa1e0 | ||
| 
						 | 
					336db2f19b | ||
| 
						 | 
					1f67e41333 | ||
| 
						 | 
					0520b71e1f | ||
| 
						 | 
					92b982690e | ||
| 
						 | 
					f0a3449ada | ||
| 
						 | 
					3d4055a63b | ||
| 
						 | 
					2fb994604a | ||
| 
						 | 
					5da3a053a9 | ||
| 
						 | 
					ad65aa9931 | ||
| 
						 | 
					c9acce8d76 | ||
| 
						 | 
					1533c27b36 | ||
| 
						 | 
					3e3eaf6e31 | ||
| 
						 | 
					482df018c9 | ||
| 
						 | 
					23fc790c26 | ||
| 
						 | 
					e5c67ecc7c | ||
| 
						 | 
					20075c6378 | ||
| 
						 | 
					05ce002fc6 | ||
| 
						 | 
					cc37c6c2d5 | ||
| 
						 | 
					5ef4879be2 | ||
| 
						 | 
					97699c2010 | ||
| 
						 | 
					4316b754da | ||
| 
						 | 
					b8171d61a6 | ||
| 
						 | 
					d7f14146fd | ||
| 
						 | 
					46ee1b4c1c | ||
| 
						 | 
					27a9ce6f42 | ||
| 
						 | 
					e88e60a786 | ||
| 
						 | 
					dfeaf49ae9 | ||
| 
						 | 
					fd81d580d6 | ||
| 
						 | 
					3281c12216 | ||
| 
						 | 
					46ab74d6b4 | ||
| 
						 | 
					a5b546ee4a | ||
| 
						 | 
					fc8e7cda45 | ||
| 
						 | 
					b23a0a4b3d | ||
| 
						 | 
					a2414e0dc7 | ||
| 
						 | 
					963a40d919 | ||
| 
						 | 
					017b05c48c | ||
| 
						 | 
					52b03a43d9 | ||
| 
						 | 
					26a1abb148 | ||
| 
						 | 
					e7709798c5 | ||
| 
						 | 
					37c5e0dc40 | ||
| 
						 | 
					55c034ec66 | ||
| 
						 | 
					df054073ef | ||
| 
						 | 
					ace39cbd03 | ||
| 
						 | 
					e9b2e108f7 | ||
| 
						 | 
					f66c87cc62 | ||
| 
						 | 
					36e0d9c58a | ||
| 
						 | 
					5db1916332 | ||
| 
						 | 
					8911503a87 | ||
| 
						 | 
					55792acd8d | ||
| 
						 | 
					b8330e46d8 | ||
| 
						 | 
					65553b90ef | ||
| 
						 | 
					2fb7d02091 | ||
| 
						 | 
					4c7eb01b93 | ||
| 
						 | 
					0fd1dd9077 | ||
| 
						 | 
					64c2d04b56 | 
@@ -1,4 +1,4 @@
 | 
			
		||||
mintty is copyright 2008-13 Andy Koppe, 2015-16 Thomas Wolff.
 | 
			
		||||
mintty is copyright 2008-13 Andy Koppe, 2015-18 Thomas Wolff.
 | 
			
		||||
 | 
			
		||||
Licensed under the terms of the GNU General Public License version 3 or later,
 | 
			
		||||
amended with the bundling clause to clarify ambiguous interpretation.
 | 
			
		||||
@@ -17,6 +17,8 @@ See LICENSE.PuTTY for PuTTY's copyright notice, contributors, and license.
 | 
			
		||||
The sources of PuTTY 0.60 can be downloaded from
 | 
			
		||||
ftp://ftp.chiark.greenend.org.uk/users/sgtatham/putty-0.60.
 | 
			
		||||
 | 
			
		||||
The minibidi algorithm is under MIT license as quoted in the source file.
 | 
			
		||||
 | 
			
		||||
Sixel code (sixel.c) is relicensed under GPL like mintty with the 
 | 
			
		||||
permission of its author (kmiya@culti); Sixel colour conversion code 
 | 
			
		||||
(sixel_hls.c) is licensed by its author Ross Combs under the license 
 | 
			
		||||
@@ -31,3 +33,7 @@ The colour schemes / theme files bundled with mintty are included
 | 
			
		||||
under various licenses. The source and license or permission are 
 | 
			
		||||
quoted in the respective theme files.
 | 
			
		||||
 | 
			
		||||
Bell sounds files are included, mostly under the creative commons license 
 | 
			
		||||
(https://creativecommons.org/publicdomain/zero/1.0/), see also the README 
 | 
			
		||||
in the sounds subdirectory.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2016 Ryan Prichard
 | 
			
		||||
Copyright (c) 2017 Google LLC
 | 
			
		||||
Copyright (c) 2017-2018 Google LLC
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										79
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								README.md
									
									
									
									
									
								
							@@ -15,9 +15,11 @@ WSLtty components
 | 
			
		||||
* optional context menu entries for Windows Explorer to start WSL terminals in the respective folder
 | 
			
		||||
* install/uninstall context menu items from Start Menu subfolder `WSLtty`
 | 
			
		||||
 | 
			
		||||
### Installation ###
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
#### WSLtty installer ####
 | 
			
		||||
### Installation from this repository ###
 | 
			
		||||
 | 
			
		||||
#### WSLtty installer ([Download](https://github.com/mintty/wsltty/releases) standalone installation) ####
 | 
			
		||||
 | 
			
		||||
Run the [installer](https://github.com/mintty/wsltty/releases) to install 
 | 
			
		||||
the components listed above.
 | 
			
		||||
@@ -40,16 +42,52 @@ 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.
 | 
			
		||||
 | 
			
		||||
### Installation with other package management environments ###
 | 
			
		||||
 | 
			
		||||
#### Chocolatey ####
 | 
			
		||||
 | 
			
		||||
If you use the [Chocolatey package manager](https://chocolatey.org/), 
 | 
			
		||||
invoke one of
 | 
			
		||||
<img height=222 align=right src=https://github.com/mintty/wsltty.appx/raw/master/wsltty.appx.png>
 | 
			
		||||
* `choco install wsltty`
 | 
			
		||||
* `choco upgrade wsltty`
 | 
			
		||||
 | 
			
		||||
#### Scoop ####
 | 
			
		||||
 | 
			
		||||
If you use the [Scoop package manager](https://scoop.sh/), 
 | 
			
		||||
* `scoop bucket add extras`
 | 
			
		||||
 | 
			
		||||
then, invoke one of
 | 
			
		||||
* `scoop install wsltty`
 | 
			
		||||
* `scoop update wsltty`
 | 
			
		||||
 | 
			
		||||
#### Windows Appx package ####
 | 
			
		||||
 | 
			
		||||
A Windows Appx package and certificate is available in the [wsltty.appx](https://github.com/mintty/wsltty.appx/) repository.
 | 
			
		||||
 | 
			
		||||
<br clear=all>
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Invocation ###
 | 
			
		||||
 | 
			
		||||
WSLtty can be invoked with
 | 
			
		||||
* installed Start Menu shortcuts (or Desktop shortcuts if copied there)
 | 
			
		||||
* *.bat scripts
 | 
			
		||||
* *.bat scripts (optionally with WSL command as parameters)
 | 
			
		||||
* 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 essential options.
 | 
			
		||||
 | 
			
		||||
#### WSL 2 ####
 | 
			
		||||
 | 
			
		||||
Due to some incompatible changes by Microsoft, wslbridge cannot connect 
 | 
			
		||||
in WSL 2 mode at this time.
 | 
			
		||||
Workaround:
 | 
			
		||||
* `wsl --set-default-version 1`
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Configuration ###
 | 
			
		||||
 | 
			
		||||
#### Start Menu and Desktop shortcuts ####
 | 
			
		||||
@@ -68,6 +106,12 @@ One Desktop shortcut is installed:
 | 
			
		||||
Other, distribution-specific shortcuts can be copied to the desktop 
 | 
			
		||||
from the Start Menu if desired.
 | 
			
		||||
 | 
			
		||||
The Start menu folder WSLtty contains the link 
 | 
			
		||||
<img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`configure WSL shortcuts`.
 | 
			
		||||
This function is initially run when wsltty is installed.
 | 
			
		||||
If should be rerun after adding or removing WSL distributions, 
 | 
			
		||||
in order to create the respective set of shortcuts in the Start menu.
 | 
			
		||||
 | 
			
		||||
#### Command line scripts `wsl*.bat` ####
 | 
			
		||||
 | 
			
		||||
WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps` 
 | 
			
		||||
@@ -86,9 +130,23 @@ WSLtty provides context menu entries for all installed WSL distributions
 | 
			
		||||
and one for the configured default distribution,
 | 
			
		||||
to start a respective WSL terminal in a specific folder from an Explorer window.
 | 
			
		||||
They are not installed by default.
 | 
			
		||||
 | 
			
		||||
To add launch entries for the default or all WSL distributions to the 
 | 
			
		||||
Explorer context menu, or remove them, run the respective script from the 
 | 
			
		||||
Start Menu subfolder `WSLtty`.
 | 
			
		||||
Start Menu subfolder `WSLtty`:
 | 
			
		||||
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`add default to context menu`
 | 
			
		||||
  adds context menu entries for the default WSL distribution
 | 
			
		||||
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`add to context menu`
 | 
			
		||||
  adds context menu entries for all WSL distributions
 | 
			
		||||
* <img align=absmiddle height=25 src=https://user-images.githubusercontent.com/12740416/57078483-a7846a00-6cee-11e9-9c5e-8c2e9e56cae4.png>`remove from context menu`
 | 
			
		||||
  removes context menu entries for WSL distributions
 | 
			
		||||
 | 
			
		||||
#### Icon ####
 | 
			
		||||
 | 
			
		||||
Wsltty installation and the mintty terminal try to use the icon of the 
 | 
			
		||||
respective WSL distribution. If it cannot be determined, a penguin icon 
 | 
			
		||||
is used as a default. You can replace it with your preferred fallback icon 
 | 
			
		||||
by replacing the icon file `%LOCALAPPDATA%\wsltty\wsl.ico`.
 | 
			
		||||
 | 
			
		||||
#### Mintty settings ####
 | 
			
		||||
 | 
			
		||||
@@ -117,13 +175,18 @@ Note:
 | 
			
		||||
  If you define `HOME` at Windows level, this changes accordingly.
 | 
			
		||||
  Note, however, that the WSL `HOME` is a completely different setting.
 | 
			
		||||
 | 
			
		||||
#### Shell selection ####
 | 
			
		||||
#### Shell selection and Login shell ####
 | 
			
		||||
 | 
			
		||||
The WSLtty deployment does not impose a shell preference anymore.
 | 
			
		||||
However, the intermediate gateways (`wslbridge` and its backend and the `bash.exe` Windows launcher) 
 | 
			
		||||
are also involved. To invoke your favourite shell, you may append 
 | 
			
		||||
a shell pathname to the mintty invocation (in shortcuts, scripts, or context menu entries), 
 | 
			
		||||
or handle shell replacement within the WSL startup scripts (esp. `.profile`).
 | 
			
		||||
are also involved.
 | 
			
		||||
 | 
			
		||||
To invoke your favourite shell or launch the shell in login mode, 
 | 
			
		||||
you may append a shell pathname and an optional `-l` parameter 
 | 
			
		||||
to the mintty invocation (in shortcuts, scripts, or context menu entries):
 | 
			
		||||
* `%LOCALAPPDATA%\wsltty\bin\mintty.exe --WSL= --configdir="%APPDATA%\wsltty" /bin/bash -l`
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Components and Credits ###
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,14 +1,17 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
 | 
			
		||||
PATH=/bin:$PATH
 | 
			
		||||
installdir=${installdir:-'%LOCALAPPDATA%\wsltty'}
 | 
			
		||||
configdir=${configdir:-'%APPDATA%\wsltty'}
 | 
			
		||||
 | 
			
		||||
PATH=/bin:"$PATH":$SYSTEMROOT/System32
 | 
			
		||||
 | 
			
		||||
contextmenu=false
 | 
			
		||||
remove=false
 | 
			
		||||
alldistros=true
 | 
			
		||||
config=true
 | 
			
		||||
 | 
			
		||||
case "`basename $0`" in
 | 
			
		||||
wsl*)
 | 
			
		||||
case "/$0" in
 | 
			
		||||
*/wsl*)
 | 
			
		||||
  config=false;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
@@ -94,23 +97,33 @@ echo Creating %1.bat
 | 
			
		||||
 | 
			
		||||
echo @echo off> %1.bat
 | 
			
		||||
echo rem Start mintty terminal for WSL package %name% in current directory>> %1.bat
 | 
			
		||||
echo %target% -i "%icon%" %minttyargs% %bridgeargs%>> %1.bat
 | 
			
		||||
echo %target% -i "%icon%" %minttyargs% %bridgeargs% %%*>> %1.bat
 | 
			
		||||
/EOB
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
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 || echo "No WSL packages registered" >&2) |
 | 
			
		||||
(
 | 
			
		||||
  if $alldistros
 | 
			
		||||
  then  regtool list "$lxss" 2>/dev/null
 | 
			
		||||
  else  true
 | 
			
		||||
  fi && echo || echo "No WSL packages registered" >&2) |
 | 
			
		||||
while read guid
 | 
			
		||||
do
 | 
			
		||||
appex () {
 | 
			
		||||
  while read line
 | 
			
		||||
  do
 | 
			
		||||
	case "$line" in
 | 
			
		||||
	*Application*Executable*)
 | 
			
		||||
		for item in $line
 | 
			
		||||
		do	case "$item" in
 | 
			
		||||
			Executable=*)
 | 
			
		||||
				eval $item
 | 
			
		||||
				echo "$Executable"
 | 
			
		||||
				break;;
 | 
			
		||||
			esac
 | 
			
		||||
		done
 | 
			
		||||
		break;;
 | 
			
		||||
	esac
 | 
			
		||||
  done < $*
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
config () {
 | 
			
		||||
  guid="$1"
 | 
			
		||||
  ok=false
 | 
			
		||||
  case $guid in
 | 
			
		||||
  {*)
 | 
			
		||||
@@ -130,18 +143,28 @@ do
 | 
			
		||||
    if package=`regtool -q get "$lxss/$guid/PackageFamilyName"`
 | 
			
		||||
    then
 | 
			
		||||
    	instdir=`regtool get "$schema/$package/Schemas/PackageFullName"`
 | 
			
		||||
    	if [ -r "$ProgramW6432/WindowsApps/$instdir/images/icon.ico" ]
 | 
			
		||||
    	# get actual executable path (may not match $distro) from app manifest
 | 
			
		||||
    	manifest="$ProgramW6432/WindowsApps/$instdir/AppxManifest.xml"
 | 
			
		||||
    	psh_cmd='([xml]$(Get-Content '"\"$manifest\""')).Package.Applications.Application.Executable'
 | 
			
		||||
    	executable=`appex "$manifest"`
 | 
			
		||||
    	if [ -r "$ProgramW6432/WindowsApps/$instdir/$executable" ]
 | 
			
		||||
    	then	icon="%PROGRAMFILES%/WindowsApps/$instdir/$executable"
 | 
			
		||||
    	elif [ -r "$ProgramW6432/WindowsApps/$instdir/images/icon.ico" ]
 | 
			
		||||
    	then	icon="%PROGRAMFILES%/WindowsApps/$instdir/images/icon.ico"
 | 
			
		||||
    	else	icon="%LOCALAPPDATA%/wsltty/wsl.ico"
 | 
			
		||||
    	else	icon="$installdir"'\wsl.ico'
 | 
			
		||||
    	fi
 | 
			
		||||
    	root="$basepath/rootfs"
 | 
			
		||||
    elif [ -f "$basepath/$distro.exe" ]
 | 
			
		||||
    then
 | 
			
		||||
    	icon="$basepath/$distro.exe"
 | 
			
		||||
    	root="$basepath/rootfs"
 | 
			
		||||
    else
 | 
			
		||||
    	icon="%LOCALAPPDATA%/lxss/bash.ico"
 | 
			
		||||
    	root="$basepath"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    minttyargs='--wsl --rootfs="'"$root"'" --configdir="%APPDATA%\wsltty" -o Locale=C -o Charset=UTF-8 /bin/wslbridge '
 | 
			
		||||
    minttyargs='--WSL="'"$distro"'" --configdir="%APPDATA%\wsltty"'
 | 
			
		||||
    minttyargs='--wsl --rootfs="'"$root"'" --configdir="'"$configdir"'" -o Locale=C -o Charset=UTF-8 /bin/wslbridge '
 | 
			
		||||
    minttyargs='--WSL="'"$distro"'" --configdir="'"$configdir"'"'
 | 
			
		||||
    #if [ -z "$launch" ]
 | 
			
		||||
    #then	bridgeargs='-t /bin/bash'
 | 
			
		||||
    #else	bridgeargs='-l "'"$launch"'" -t /bin/bash'
 | 
			
		||||
@@ -150,11 +173,11 @@ do
 | 
			
		||||
    bridgeargs='--distro-guid "'"$guid"'" -t'
 | 
			
		||||
 | 
			
		||||
    ok=true;;
 | 
			
		||||
  "")	# WSL default installation
 | 
			
		||||
  DefaultDistribution|"")	# WSL default installation
 | 
			
		||||
    distro=
 | 
			
		||||
    name=WSL
 | 
			
		||||
    icon="%LOCALAPPDATA%/wsltty/wsl.ico"
 | 
			
		||||
    minttyargs='--WSL= --configdir="%APPDATA%\wsltty"'
 | 
			
		||||
    icon="$installdir"'\wsl.ico'
 | 
			
		||||
    minttyargs='--WSL= --configdir="'"$configdir"'"'
 | 
			
		||||
    bridgeargs='-t'
 | 
			
		||||
 | 
			
		||||
    ok=true;;
 | 
			
		||||
@@ -165,29 +188,37 @@ do
 | 
			
		||||
  echoc "- (launcher $launcher)"
 | 
			
		||||
  echoc "- icon $icon"
 | 
			
		||||
  echoc "- root $root"
 | 
			
		||||
  target='%LOCALAPPDATA%\wsltty\bin\mintty.exe'
 | 
			
		||||
  bridgeargs=" "
 | 
			
		||||
  target="$installdir"'\bin\mintty.exe'
 | 
			
		||||
  bridgeargs=" "	# deprecated
 | 
			
		||||
 | 
			
		||||
  if $ok && [ -n "$distro" ]
 | 
			
		||||
  then	# fix #163: backend missing +x with certain mount options
 | 
			
		||||
	echo Setting +x wslbridge-backend for distro "'$distro'"
 | 
			
		||||
	(cd "$LOCALAPPDATA/wsltty/bin"; wsl.exe -d "$distro" chmod +x wslbridge-backend)
 | 
			
		||||
#	(cd "$LOCALAPPDATA/wsltty/bin"; "$SYSTEMROOT/System32/bash.exe" "$guid" -c chmod +x wslbridge-backend)
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if $ok && $config
 | 
			
		||||
  then
 | 
			
		||||
    export target minttyargs bridgeargs icon
 | 
			
		||||
    export name target minttyargs bridgeargs icon
 | 
			
		||||
 | 
			
		||||
    if $contextmenu
 | 
			
		||||
    then
 | 
			
		||||
      # context menu entries
 | 
			
		||||
      #cmd /C mkcontext "$name"
 | 
			
		||||
      direckey='HKEY_CURRENT_USER\Software\Classes\Directory'
 | 
			
		||||
      keyname="${name}_Terminal"
 | 
			
		||||
      if $remove
 | 
			
		||||
      then
 | 
			
		||||
        reg delete "$direckey\\shell\\$name" /f
 | 
			
		||||
        reg delete "$direckey\\Background\\shell\\$name" /f
 | 
			
		||||
        reg delete "$direckey\\shell\\$keyname" /f
 | 
			
		||||
        reg delete "$direckey\\Background\\shell\\$keyname" /f
 | 
			
		||||
      else
 | 
			
		||||
        reg add "$direckey\\shell\\$name" /d "$name Terminal" /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 $bridgeargs" /f
 | 
			
		||||
        reg add "$direckey\\Background\\shell\\$name" /d "$name Terminal" /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 $bridgeargs" /f
 | 
			
		||||
        reg add "$direckey\\shell\\$keyname" /d "$name Terminal" /f
 | 
			
		||||
        reg add "$direckey\\shell\\$keyname" /v Icon /d "$icon" /f
 | 
			
		||||
        cmd /C reg add "$direckey\\shell\\$keyname\\command" /d "\"$target\" -i \"$icon\" --dir \"%1\" $minttyargs $bridgeargs" /f
 | 
			
		||||
        reg add "$direckey\\Background\\shell\\$keyname" /d "$name Terminal" /f
 | 
			
		||||
        reg add "$direckey\\Background\\shell\\$keyname" /v Icon /d "$icon" /f
 | 
			
		||||
        cmd /C reg add "$direckey\\Background\\shell\\$keyname\\command" /d "\"$target\" -i \"$icon\" $minttyargs $bridgeargs" /f
 | 
			
		||||
      fi
 | 
			
		||||
    else
 | 
			
		||||
      # invocation shortcuts and scripts
 | 
			
		||||
@@ -203,8 +234,8 @@ do
 | 
			
		||||
 | 
			
		||||
        # launch script in . -> WSLtty home, WindowsApps launch folder
 | 
			
		||||
        cmd /C mkbat.bat "$name"
 | 
			
		||||
        cmd /C copy "$name.bat" "%LOCALAPPDATA%\\wsltty\\$name.bat"
 | 
			
		||||
        cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name.bat"
 | 
			
		||||
        cmd /C copy "$name.bat" "$installdir"
 | 
			
		||||
        cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
 | 
			
		||||
 | 
			
		||||
        # prepare versions to target WSL home directory
 | 
			
		||||
        #bridgeargs="-C~ $bridgeargs"
 | 
			
		||||
@@ -216,15 +247,36 @@ do
 | 
			
		||||
 | 
			
		||||
        # default desktop shortcut in ~ -> Desktop
 | 
			
		||||
        if [ "$name" = "WSL" ]
 | 
			
		||||
        then	cmd /C copy "$name Terminal.lnk" "%USERPROFILE%\\Desktop"
 | 
			
		||||
        then
 | 
			
		||||
              #cmd /C copy "$name Terminal.lnk" "%USERPROFILE%\\Desktop"
 | 
			
		||||
              #cmd /C copy "$name Terminal.lnk" "%APPDATA%\\..\\Desktop\\"
 | 
			
		||||
              # the above does not work reliably (see #166)
 | 
			
		||||
              # determine actual Desktop folder
 | 
			
		||||
              desktopkey='\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop'
 | 
			
		||||
              desktop=`regtool get "$desktopkey"`
 | 
			
		||||
              cmd /C copy "$name Terminal.lnk" "$desktop\\"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # launch script in ~ -> WSLtty home, WindowsApps launch folder
 | 
			
		||||
        cmd /C mkbat.bat "$name~"
 | 
			
		||||
        cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\wsltty\\$name~.bat"
 | 
			
		||||
        cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name~.bat"
 | 
			
		||||
        cmd /C copy "$name~.bat" "$installdir"
 | 
			
		||||
        cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# ensure proper parameter passing to cmd /C
 | 
			
		||||
chcp.com 65001 # just in case; seems to work without as well
 | 
			
		||||
 | 
			
		||||
# configure for all distros, plus default distro
 | 
			
		||||
for guid in `
 | 
			
		||||
  if $alldistros
 | 
			
		||||
  then  regtool list "$lxss" 2>/dev/null
 | 
			
		||||
  else  echo DefaultDistribution
 | 
			
		||||
  fi || echo "No WSL packages registered" >&2
 | 
			
		||||
`
 | 
			
		||||
do	config $guid
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								install.bat
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								install.bat
									
									
									
									
									
								
							@@ -26,9 +26,13 @@ copy "add to context menu.lnk" "%installdir%"
 | 
			
		||||
copy "add default to context menu.lnk" "%installdir%"
 | 
			
		||||
copy "remove from context menu.lnk" "%installdir%"
 | 
			
		||||
copy "configure WSL shortcuts.lnk" "%installdir%"
 | 
			
		||||
copy wsl.ico "%installdir%"
 | 
			
		||||
rem copy "WSL Terminal.lnk" "%installdir%"
 | 
			
		||||
rem copy "WSL Terminal %%.lnk" "%installdir%"
 | 
			
		||||
copy config-distros.sh "%installdir%"
 | 
			
		||||
copy mkshortcut.vbs "%installdir%"
 | 
			
		||||
copy uninstall.bat "%installdir%"
 | 
			
		||||
rem allow persistent customization of default icon:
 | 
			
		||||
if not exist "%installdir%\wsl.ico" copy tux.ico "%installdir%\wsl.ico"
 | 
			
		||||
 | 
			
		||||
if not exist "%installdir%\bin" goto instbin
 | 
			
		||||
rem move previous programs possibly in use out of the way
 | 
			
		||||
@@ -57,6 +61,13 @@ mkdir "%installdir%\usr\share\mintty\lang"
 | 
			
		||||
copy lang.zoo "%installdir%\usr\share\mintty\lang"
 | 
			
		||||
mkdir "%installdir%\usr\share\mintty\themes"
 | 
			
		||||
copy themes.zoo "%installdir%\usr\share\mintty\themes"
 | 
			
		||||
mkdir "%installdir%\usr\share\mintty\sounds"
 | 
			
		||||
copy sounds.zoo "%installdir%\usr\share\mintty\sounds"
 | 
			
		||||
mkdir "%installdir%\usr\share\mintty\info"
 | 
			
		||||
copy charnames.txt "%installdir%\usr\share\mintty\info"
 | 
			
		||||
mkdir "%installdir%\usr\share\mintty\icon"
 | 
			
		||||
copy tux.ico "%installdir%\usr\share\mintty\icon"
 | 
			
		||||
copy mintty.ico "%installdir%\usr\share\mintty\icon"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
rem create Start Menu Folder
 | 
			
		||||
@@ -71,6 +82,8 @@ copy "add to context menu.lnk" "%smf%"
 | 
			
		||||
copy "add default to context menu.lnk" "%smf%"
 | 
			
		||||
copy "remove from context menu.lnk" "%smf%"
 | 
			
		||||
copy "configure WSL shortcuts.lnk" "%smf%"
 | 
			
		||||
rem copy "WSL Terminal.lnk" "%smf%"
 | 
			
		||||
rem copy "WSL Terminal %%.lnk" "%smf%"
 | 
			
		||||
rem clean up previous installation
 | 
			
		||||
rmdir /S /Q "%smf%\context menu shortcuts"
 | 
			
		||||
 | 
			
		||||
@@ -79,6 +92,8 @@ cd /D "%installdir%\usr\share\mintty\lang"
 | 
			
		||||
"%installdir%\bin\zoo" xO lang
 | 
			
		||||
cd /D "%installdir%\usr\share\mintty\themes"
 | 
			
		||||
"%installdir%\bin\zoo" xO themes
 | 
			
		||||
cd /D "%installdir%\usr\share\mintty\sounds"
 | 
			
		||||
"%installdir%\bin\zoo" xO sounds
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:migrate configuration
 | 
			
		||||
@@ -101,8 +116,8 @@ rmdir "%oldroot%\home"
 | 
			
		||||
 | 
			
		||||
rem create user config directory and subfolders
 | 
			
		||||
mkdir "%configdir%\lang"
 | 
			
		||||
mkdir "%configdir%\sounds"
 | 
			
		||||
mkdir "%configdir%\themes"
 | 
			
		||||
mkdir "%configdir%\sounds"
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										131
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								makefile
									
									
									
									
									
								
							@@ -2,17 +2,24 @@
 | 
			
		||||
# build a wsltty installer package:
 | 
			
		||||
# configure ver=... and minttyver= in this makefile
 | 
			
		||||
# make targets:
 | 
			
		||||
# make [all]	to build a distributable installer (default)
 | 
			
		||||
# make pkg	to build an installer, bypassing the system checks
 | 
			
		||||
# make wsltty	to build an installer using the local copy of mintty
 | 
			
		||||
# make [all]	build a distributable installer (default)
 | 
			
		||||
# make pkg	build an installer, bypassing the system checks
 | 
			
		||||
# make wsltty	build the software, using the local copy of mintty
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# wsltty release
 | 
			
		||||
ver=1.8.3
 | 
			
		||||
ver=3.0.2.2
 | 
			
		||||
 | 
			
		||||
# wsltty appx release - must have 4 parts!
 | 
			
		||||
verx=3.0.2.2
 | 
			
		||||
 | 
			
		||||
# Windows SDK version for appx
 | 
			
		||||
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack
 | 
			
		||||
WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
# mintty release version
 | 
			
		||||
minttyver=2.8.3
 | 
			
		||||
minttyver=3.0.2
 | 
			
		||||
 | 
			
		||||
# or mintty branch or commit version
 | 
			
		||||
#minttyver=master
 | 
			
		||||
@@ -35,10 +42,23 @@ wslbridge=wslbridge-frontend wslbridge-backend
 | 
			
		||||
# after 0.2.4, from branch login-mode:
 | 
			
		||||
wslbridge-commit=04a060505860915c99bc336dbeb80269771a80b7
 | 
			
		||||
 | 
			
		||||
# after 0.2.4, from branch wslpath:
 | 
			
		||||
wslbridge-commit=29df86d87135caec8424c08f031ce121a3a39ae1
 | 
			
		||||
 | 
			
		||||
# after 0.2.4, merged wslpath branch:
 | 
			
		||||
wslbridge-commit=06fb7acba28d7f37611f3911685af214739895a0
 | 
			
		||||
 | 
			
		||||
# after 0.2.4, with --backend option:
 | 
			
		||||
wslbridge-commit=47b41bec6c32da58ab01de9345087b1a4fd836e3
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# default target
 | 
			
		||||
 | 
			
		||||
all:	check pkg
 | 
			
		||||
all:	all-$(notdir $(CURDIR))
 | 
			
		||||
 | 
			
		||||
all-wsltty:	check pkg
 | 
			
		||||
 | 
			
		||||
all-wsltty.appx:	appx
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# target checking and some defs
 | 
			
		||||
@@ -61,20 +81,32 @@ wget=curl -R -L --connect-timeout 55 -O
 | 
			
		||||
wgeto=curl -R -L --connect-timeout 55
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# system check;
 | 
			
		||||
# for now, let's enforce Cygwin 32-Bit as the container for wsltty
 | 
			
		||||
# just in case there is a 32-Bit WSL released (-> 32 bit), and to ensure 
 | 
			
		||||
# the path name drag-and-drop adaptation works (-> cygwin, not msys)
 | 
			
		||||
# system check:
 | 
			
		||||
# - ensure the path name drag-and-drop adaptation works (-> Cygwin, not MSYS)
 | 
			
		||||
# - 64 Bit (x86_64) for more stable invocation (avoid fork issues)
 | 
			
		||||
 | 
			
		||||
check:
 | 
			
		||||
	# checking suitable host environment; run `make pkg` to bypass
 | 
			
		||||
	# check cygwin (vs msys) for proper drag-and-drop paths:
 | 
			
		||||
	uname | grep CYGWIN
 | 
			
		||||
	# check 32 bit (vs 64 bit) to ensure 32-Bit Windows support, just in case:
 | 
			
		||||
	# check 32 bit to ensure 32-Bit Windows support, just in case:
 | 
			
		||||
	#uname -m | grep i686
 | 
			
		||||
	# check 64 bit (vs 32 bit) to provide 64-Bit stability support:
 | 
			
		||||
	# check 64 bit to provide 64-Bit stability support:
 | 
			
		||||
	uname -m | grep x86_64
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# patch version information for appx package configuration
 | 
			
		||||
 | 
			
		||||
fix-verx:
 | 
			
		||||
	echo patching $(WINSDKVER) into Launcher config
 | 
			
		||||
	cd Launcher; sed -i~ -e "/<supportedRuntime / s,Version=v[.0-9]*,Version=$(WINSDKVER)," app.config
 | 
			
		||||
	echo patched app.config
 | 
			
		||||
	cd Launcher; sed -i~ -e "/<TargetFrameworkVersion>/ s,v[.0-9]*,$(WINSDKVER)," Launcher.csproj
 | 
			
		||||
	echo patched Launcher.csproj
 | 
			
		||||
	echo patching $(verx) into app config
 | 
			
		||||
	sed -i~ -e '/<Identity / s,Version="[.0-9]*",Version="$(verx)",' AppxManifest.xml
 | 
			
		||||
	echo patched AppxManifest.xml
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# generation
 | 
			
		||||
 | 
			
		||||
@@ -88,37 +120,78 @@ wslbridge-package:
 | 
			
		||||
	tr -d '\015' < wslbridge-$(wslbridgever)-$(sys)/LICENSE.txt > LICENSE.wslbridge
 | 
			
		||||
 | 
			
		||||
wslbridge-source:	wslbridge-$(wslbridge-commit).zip
 | 
			
		||||
	$(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)/backend; patch -T -p1 < ../../wslbridge-backend-static.patch
 | 
			
		||||
	tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge
 | 
			
		||||
 | 
			
		||||
wslbridge-$(wslbridge-commit).zip:
 | 
			
		||||
	$(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip
 | 
			
		||||
 | 
			
		||||
wslbridge-frontend:	wslbridge-source
 | 
			
		||||
	echo ------------- Compiling wslbridge frontend
 | 
			
		||||
	cd wslbridge-$(wslbridge-commit)/frontend; make
 | 
			
		||||
	strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/
 | 
			
		||||
 | 
			
		||||
wslbridge-backend:	wslbridge-source
 | 
			
		||||
	cd wslbridge-$(wslbridge-commit)/backend; wslbridge make
 | 
			
		||||
#wslbridge-backend:	wslbridge-source
 | 
			
		||||
# tweak dependency to support build testing on non-Windows 10:
 | 
			
		||||
backend-bin=wslbridge-$(wslbridge-commit)/out/wslbridge-backend
 | 
			
		||||
backend-src=wslbridge-$(wslbridge-commit)/backend/wslbridge-backend.cc
 | 
			
		||||
wslbridge-backend:	$(backend-bin) wslbridge-source
 | 
			
		||||
$(backend-bin):	$(backend-src)
 | 
			
		||||
	echo ------------- Compiling wslbridge backend
 | 
			
		||||
	cd wslbridge-$(wslbridge-commit)/backend; if uname -m | grep x86_64; then cmd /C wsl make; else wslbridge make; fi
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	cp wslbridge-$(wslbridge-commit)/out/wslbridge-backend bin/
 | 
			
		||||
 | 
			
		||||
mintty:	mintty-get mintty-build
 | 
			
		||||
 | 
			
		||||
mintty-get:
 | 
			
		||||
	$(wgeto) https://github.com/mintty/mintty/archive/$(minttyver).zip -o mintty-$(minttyver).zip
 | 
			
		||||
	unzip -o mintty-$(minttyver).zip
 | 
			
		||||
	cp mintty-$(minttyver)/icon/terminal.ico mintty.ico
 | 
			
		||||
 | 
			
		||||
wslbuild=LDFLAGS="-static -static-libgcc -s"
 | 
			
		||||
appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX
 | 
			
		||||
wslversion=VERSION_SUFFIX="– wsltty $(ver)" WSLTTY_VERSION="$(ver)"
 | 
			
		||||
appxversion=VERSION_SUFFIX="– wsltty appx $(verx)" WSLTTY_VERSION="$(verx)"
 | 
			
		||||
 | 
			
		||||
mintty-build:
 | 
			
		||||
	# ensure rebuild of version-specific check and message
 | 
			
		||||
	rm -f mintty-$(minttyver)/bin/*/windialog.o
 | 
			
		||||
	# build mintty
 | 
			
		||||
	cd mintty-$(minttyver)/src; make $(wslbuild) $(wslversion)
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	cp mintty-$(minttyver)/bin/mintty.exe bin/
 | 
			
		||||
	strip bin/mintty.exe
 | 
			
		||||
 | 
			
		||||
mintty-build-appx:
 | 
			
		||||
	# ensure rebuild of version-specific check and message
 | 
			
		||||
	rm -f mintty-$(minttyver)/bin/*/windialog.o
 | 
			
		||||
	# build mintty
 | 
			
		||||
	cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion)
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	cp mintty-$(minttyver)/bin/mintty.exe bin/
 | 
			
		||||
	strip bin/mintty.exe
 | 
			
		||||
 | 
			
		||||
mintty-pkg:
 | 
			
		||||
	cp mintty-$(minttyver)/LICENSE LICENSE.mintty
 | 
			
		||||
	cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../
 | 
			
		||||
	cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.zoo ../../
 | 
			
		||||
	cd mintty-$(minttyver)/sounds; zoo a sounds *.wav *.WAV *.md; mv sounds.zoo ../../
 | 
			
		||||
	# add charnames.txt to support "Character Info"
 | 
			
		||||
	cd mintty-$(minttyver)/src; sh ./mknames
 | 
			
		||||
	cp mintty-$(minttyver)/src/charnames.txt .
 | 
			
		||||
 | 
			
		||||
mintty-appx:
 | 
			
		||||
	mkdir -p usr/share/mintty
 | 
			
		||||
	cd usr/share/mintty; mkdir -p lang themes sounds info
 | 
			
		||||
	cp mintty-$(minttyver)/lang/*.po usr/share/mintty/lang/
 | 
			
		||||
	cp mintty-$(minttyver)/themes/*[!~] usr/share/mintty/themes/
 | 
			
		||||
	cp mintty-$(minttyver)/sounds/*.wav usr/share/mintty/sounds/
 | 
			
		||||
	cp mintty-$(minttyver)/sounds/*.WAV usr/share/mintty/sounds/
 | 
			
		||||
	# add charnames.txt to support "Character Info"
 | 
			
		||||
	cd mintty-$(minttyver)/src; sh ./mknames
 | 
			
		||||
	cp mintty-$(minttyver)/src/charnames.txt usr/share/mintty/info/
 | 
			
		||||
 | 
			
		||||
cygwin:
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
@@ -128,6 +201,11 @@ cygwin:
 | 
			
		||||
	cp /bin/regtool.exe bin/
 | 
			
		||||
	cp /bin/zoo.exe bin/
 | 
			
		||||
 | 
			
		||||
appx-bin:
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	cp /bin/cygwin1.dll bin/
 | 
			
		||||
	cp /bin/cygwin-console-helper.exe bin/
 | 
			
		||||
 | 
			
		||||
cop:	ver
 | 
			
		||||
	mkdir -p rel
 | 
			
		||||
	rm -fr rel/wsltty-$(ver)-install.exe
 | 
			
		||||
@@ -140,6 +218,8 @@ cop:	ver
 | 
			
		||||
	cp bin/zoo.exe rel/
 | 
			
		||||
	cp lang.zoo rel/
 | 
			
		||||
	cp themes.zoo rel/
 | 
			
		||||
	cp sounds.zoo rel/
 | 
			
		||||
	cp charnames.txt rel/
 | 
			
		||||
	cp bin/wslbridge.exe rel/
 | 
			
		||||
	cp bin/wslbridge-backend rel/
 | 
			
		||||
	cp LICENSE.* rel/
 | 
			
		||||
@@ -162,9 +242,22 @@ installbat:
 | 
			
		||||
ver:
 | 
			
		||||
	echo $(ver) > VERSION
 | 
			
		||||
 | 
			
		||||
pkg:	wslbridge cygwin mintty cab
 | 
			
		||||
mintty:	mintty-get mintty-build
 | 
			
		||||
 | 
			
		||||
wsltty:	wslbridge cygwin mintty-build cab
 | 
			
		||||
mintty-usr:	mintty-get mintty-appx
 | 
			
		||||
 | 
			
		||||
# local wsltty build target:
 | 
			
		||||
wsltty:	wslbridge cygwin mintty-build mintty-pkg
 | 
			
		||||
 | 
			
		||||
# standalone wsltty package build target:
 | 
			
		||||
pkg:	wslbridge cygwin mintty-get mintty-build mintty-pkg cab
 | 
			
		||||
 | 
			
		||||
# appx package contents target:
 | 
			
		||||
wsltty-appx:	wslbridge appx-bin mintty-get mintty-build-appx mintty-appx
 | 
			
		||||
 | 
			
		||||
# appx package target:
 | 
			
		||||
appx:	wsltty-appx fix-verx
 | 
			
		||||
	sh ./build.sh
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								makewinx.cfg
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								makewinx.cfg
									
									
									
									
									
								
							@@ -25,7 +25,7 @@ SourceFiles=SourceFiles
 | 
			
		||||
[Strings]
 | 
			
		||||
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
 | 
			
		||||
DisplayLicense=
 | 
			
		||||
FinishMessage=Mintty for WSL installed - for documentation see https://github.com/mintty/wsltty
 | 
			
		||||
FinishMessage=Mintty for WSL installed - for documentation and configuration see https://github.com/mintty/wsltty
 | 
			
		||||
TargetName=wsltty-%version%-install.exe
 | 
			
		||||
FriendlyName=wsltty
 | 
			
		||||
AppLaunched=cmd.exe /c install.bat
 | 
			
		||||
@@ -41,13 +41,13 @@ FILE5="LICENSE.mintty"
 | 
			
		||||
FILE6="LICENSE.wslbridge"
 | 
			
		||||
FILE7="config-distros.sh"
 | 
			
		||||
FILE8="configure WSL shortcuts.lnk"
 | 
			
		||||
FILE9="mkshortcut.vbs"
 | 
			
		||||
FILE9="charnames.txt"
 | 
			
		||||
FILE10="VERSION"
 | 
			
		||||
FILE11="dash.exe"
 | 
			
		||||
FILE12="regtool.exe"
 | 
			
		||||
FILE13="install.bat"
 | 
			
		||||
FILE14="uninstall.bat"
 | 
			
		||||
FILE15="wsl.ico"
 | 
			
		||||
FILE15="tux.ico"
 | 
			
		||||
FILE16="add to context menu.lnk"
 | 
			
		||||
FILE17="add default to context menu.lnk"
 | 
			
		||||
FILE18="remove from context menu.lnk"
 | 
			
		||||
@@ -55,6 +55,9 @@ FILE19="wsltty home & help.url"
 | 
			
		||||
FILE20="zoo.exe"
 | 
			
		||||
FILE21="lang.zoo"
 | 
			
		||||
FILE22="themes.zoo"
 | 
			
		||||
FILE23="sounds.zoo"
 | 
			
		||||
FILE24="mkshortcut.vbs"
 | 
			
		||||
FILE25="mintty.ico"
 | 
			
		||||
 | 
			
		||||
[SourceFiles]
 | 
			
		||||
SourceFiles0=.
 | 
			
		||||
@@ -83,4 +86,7 @@ SourceFiles0=.
 | 
			
		||||
%FILE20%=
 | 
			
		||||
%FILE21%=
 | 
			
		||||
%FILE22%=
 | 
			
		||||
%FILE23%=
 | 
			
		||||
%FILE24%=
 | 
			
		||||
%FILE25%=
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ rem lnk.Arguments = Wscript.Arguments.Named("arguments")
 | 
			
		||||
lnk.TargetPath = wshell.ExpandEnvironmentStrings("%target%")
 | 
			
		||||
minttyargs = wshell.ExpandEnvironmentStrings("%minttyargs%")
 | 
			
		||||
bridgeargs = wshell.ExpandEnvironmentStrings("%bridgeargs%")
 | 
			
		||||
lnk.Arguments = minttyargs & bridgeargs
 | 
			
		||||
lnk.Arguments = minttyargs & " " & bridgeargs
 | 
			
		||||
rem wscript.echo "minttyargs: " & minttyargs
 | 
			
		||||
rem wscript.echo lnk.Arguments
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								wsl.ico → tux.ico
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								wsl.ico → tux.ico
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
		 Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 472 KiB  | 
							
								
								
									
										76
									
								
								wslbridge-backend-static.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								wslbridge-backend-static.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
diff -rup old/Makefile new/Makefile
 | 
			
		||||
--- old/Makefile	2018-05-06 01:12:36.000000000 +0200
 | 
			
		||||
+++ new/Makefile	2019-07-24 22:29:12.874257700 +0200
 | 
			
		||||
@@ -8,7 +8,9 @@ all : ../out/wslbridge-backend
 | 
			
		||||
 		-static-libgcc -static-libstdc++ \
 | 
			
		||||
 		-D_GNU_SOURCE \
 | 
			
		||||
 		-DWSLBRIDGE_VERSION=$(shell cat ../VERSION.txt) \
 | 
			
		||||
-		-Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread
 | 
			
		||||
+		-Wall -O2 $< ../common/SocketIo.cc -o $@ \
 | 
			
		||||
+		-ldl -lutil -static -pthread \
 | 
			
		||||
+		-Wl,--whole-archive -lpthread -Wl,--no-whole-archive
 | 
			
		||||
 	$(STRIP) $@
 | 
			
		||||
 
 | 
			
		||||
 clean:
 | 
			
		||||
diff -rup old/wslbridge-backend.cc new/wslbridge-backend.cc
 | 
			
		||||
--- old/wslbridge-backend.cc	2018-05-06 01:12:36.000000000 +0200
 | 
			
		||||
+++ new/wslbridge-backend.cc	2019-07-24 22:55:25.324307400 +0200
 | 
			
		||||
@@ -494,6 +494,58 @@ static void frontendVersionCheck(const c
 | 
			
		||||
 
 | 
			
		||||
 } // namespace
 | 
			
		||||
 
 | 
			
		||||
+#define getpwuid _getpwuid
 | 
			
		||||
+
 | 
			
		||||
+#include <dlfcn.h>
 | 
			
		||||
+typedef struct passwd * (*__getpwuid_t)(int uid);
 | 
			
		||||
+
 | 
			
		||||
+struct passwd * getpwuid(int uid)
 | 
			
		||||
+{
 | 
			
		||||
+    void * dl = dlopen(0, 0);
 | 
			
		||||
+printf("dlopen %p\n", dl);
 | 
			
		||||
+    if (dl) {
 | 
			
		||||
+        struct passwd * (*__getpwuid)(int uid) =
 | 
			
		||||
+            (__getpwuid_t)dlsym(dl, "getpwuid");
 | 
			
		||||
+printf("dlsym %p\n", __getpwuid);
 | 
			
		||||
+        if (__getpwuid)
 | 
			
		||||
+            return __getpwuid(uid);
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
+    FILE * pwd = fopen("/etc/passwd", "r");
 | 
			
		||||
+    if (pwd) {
 | 
			
		||||
+        char pwbuf[222];
 | 
			
		||||
+        static struct passwd pw;
 | 
			
		||||
+        pw.pw_shell = 0;
 | 
			
		||||
+        while (fgets(pwbuf, sizeof pwbuf, pwd)) {
 | 
			
		||||
+            char * sep = strchr(pwbuf, ':');
 | 
			
		||||
+            if (!sep) continue;
 | 
			
		||||
+            sep = strchr(++sep, ':');
 | 
			
		||||
+            if (!sep) continue;
 | 
			
		||||
+            int pwuid;
 | 
			
		||||
+            if (sscanf(sep, ":%d:", &pwuid) == 1 && pwuid == uid) {
 | 
			
		||||
+                // pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
 | 
			
		||||
+                //                  ^
 | 
			
		||||
+                sep = strchr(++sep, ':');
 | 
			
		||||
+                if (!sep) continue;
 | 
			
		||||
+                sep = strchr(++sep, ':');
 | 
			
		||||
+                if (!sep) continue;
 | 
			
		||||
+                sep = strchr(++sep, ':');
 | 
			
		||||
+                if (!sep) continue;
 | 
			
		||||
+                sep = strchr(++sep, ':');
 | 
			
		||||
+                if (!sep) continue;
 | 
			
		||||
+                pw.pw_shell = ++sep;
 | 
			
		||||
+                sep = strchr(++sep, '\n');
 | 
			
		||||
+                if (sep)
 | 
			
		||||
+                    *sep = 0;
 | 
			
		||||
+                break;
 | 
			
		||||
+            }
 | 
			
		||||
+        }
 | 
			
		||||
+        fclose(pwd);
 | 
			
		||||
+        return &pw;
 | 
			
		||||
+    }
 | 
			
		||||
+    return 0;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 int main(int argc, char *argv[]) {
 | 
			
		||||
 
 | 
			
		||||
     // If the backend crashes, it prints a message to its stderr, which is a
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								wsltty.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								wsltty.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB  | 
		Reference in New Issue
	
	Block a user