mirror of
				https://github.com/mintty/wsltty.git
				synced 2025-11-04 09:01:52 +00:00 
			
		
		
		
	Compare commits
	
		
			10 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					975dbb9398 | ||
| 
						 | 
					432b71d2fd | ||
| 
						 | 
					1b41dfa1e0 | ||
| 
						 | 
					336db2f19b | ||
| 
						 | 
					1f67e41333 | ||
| 
						 | 
					0520b71e1f | ||
| 
						 | 
					92b982690e | ||
| 
						 | 
					f0a3449ada | ||
| 
						 | 
					3d4055a63b | ||
| 
						 | 
					2fb994604a | 
@@ -33,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.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							@@ -99,6 +99,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` 
 | 
			
		||||
@@ -117,9 +123,16 @@ 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 ####
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,14 +104,8 @@ fi
 | 
			
		||||
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
 | 
			
		||||
config () {
 | 
			
		||||
  guid="$1"
 | 
			
		||||
  ok=false
 | 
			
		||||
  case $guid in
 | 
			
		||||
  {*)
 | 
			
		||||
@@ -151,7 +145,7 @@ do
 | 
			
		||||
    bridgeargs='--distro-guid "'"$guid"'" -t'
 | 
			
		||||
 | 
			
		||||
    ok=true;;
 | 
			
		||||
  "")	# WSL default installation
 | 
			
		||||
  DefaultDistribution|"")	# WSL default installation
 | 
			
		||||
    distro=
 | 
			
		||||
    name=WSL
 | 
			
		||||
    icon="$installdir"'\wsl.ico'
 | 
			
		||||
@@ -169,6 +163,13 @@ do
 | 
			
		||||
  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 name target minttyargs bridgeargs icon
 | 
			
		||||
@@ -218,7 +219,14 @@ 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
 | 
			
		||||
@@ -229,4 +237,18 @@ do
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -60,6 +60,8 @@ 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"
 | 
			
		||||
@@ -89,6 +91,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
 | 
			
		||||
@@ -111,8 +115,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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								makefile
									
									
									
									
									
								
							@@ -8,10 +8,10 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# wsltty release
 | 
			
		||||
ver=1.9.8
 | 
			
		||||
ver=3.0.1.2
 | 
			
		||||
 | 
			
		||||
# wsltty appx release - must have 4 parts!
 | 
			
		||||
verx=1.9.8.0
 | 
			
		||||
verx=3.0.1.2
 | 
			
		||||
 | 
			
		||||
# Windows SDK version for appx
 | 
			
		||||
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack
 | 
			
		||||
@@ -19,7 +19,7 @@ WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
# mintty release version
 | 
			
		||||
minttyver=2.9.8
 | 
			
		||||
minttyver=3.0.1
 | 
			
		||||
 | 
			
		||||
# or mintty branch or commit version
 | 
			
		||||
#minttyver=master
 | 
			
		||||
@@ -121,18 +121,26 @@ wslbridge-package:
 | 
			
		||||
 | 
			
		||||
wslbridge-source:	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
 | 
			
		||||
#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/
 | 
			
		||||
@@ -154,6 +162,7 @@ mintty-build:
 | 
			
		||||
	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
 | 
			
		||||
@@ -162,20 +171,24 @@ mintty-build-appx:
 | 
			
		||||
	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 info
 | 
			
		||||
	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/
 | 
			
		||||
@@ -205,6 +218,7 @@ 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/
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -55,8 +55,9 @@ FILE19="wsltty home & help.url"
 | 
			
		||||
FILE20="zoo.exe"
 | 
			
		||||
FILE21="lang.zoo"
 | 
			
		||||
FILE22="themes.zoo"
 | 
			
		||||
FILE23="mkshortcut.vbs"
 | 
			
		||||
FILE24="mintty.ico"
 | 
			
		||||
FILE23="sounds.zoo"
 | 
			
		||||
FILE24="mkshortcut.vbs"
 | 
			
		||||
FILE25="mintty.ico"
 | 
			
		||||
 | 
			
		||||
[SourceFiles]
 | 
			
		||||
SourceFiles0=.
 | 
			
		||||
@@ -87,4 +88,5 @@ SourceFiles0=.
 | 
			
		||||
%FILE22%=
 | 
			
		||||
%FILE23%=
 | 
			
		||||
%FILE24%=
 | 
			
		||||
%FILE25%=
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								wslbridge-backend-static.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								wslbridge-backend-static.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
diff -rup orig/Makefile new/Makefile
 | 
			
		||||
--- orig/Makefile	2018-05-06 01:12:36.000000000 +0200
 | 
			
		||||
+++ new/Makefile	2019-05-01 08:16:53.647051200 +0200
 | 
			
		||||
@@ -5,7 +5,7 @@ all : ../out/wslbridge-backend
 | 
			
		||||
 ../out/wslbridge-backend : wslbridge-backend.cc ../common/SocketIo.cc ../common/SocketIo.h ../VERSION.txt Makefile
 | 
			
		||||
 	mkdir -p ../out
 | 
			
		||||
 	$(CXX) -std=c++11 -fno-exceptions \
 | 
			
		||||
-		-static-libgcc -static-libstdc++ \
 | 
			
		||||
+		-static -static-libgcc -static-libstdc++ \
 | 
			
		||||
 		-D_GNU_SOURCE \
 | 
			
		||||
 		-DWSLBRIDGE_VERSION=$(shell cat ../VERSION.txt) \
 | 
			
		||||
 		-Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread
 | 
			
		||||
diff -rup orig/wslbridge-backend.cc new/wslbridge-backend.cc
 | 
			
		||||
--- orig/wslbridge-backend.cc	2018-05-06 01:12:36.000000000 +0200
 | 
			
		||||
+++ new/wslbridge-backend.cc	2019-05-01 08:19:12.799688500 +0200
 | 
			
		||||
@@ -494,6 +494,45 @@ static void frontendVersionCheck(const c
 | 
			
		||||
 
 | 
			
		||||
 } // namespace
 | 
			
		||||
 
 | 
			
		||||
+#define getpwuid _getpwuid
 | 
			
		||||
+
 | 
			
		||||
+struct passwd * getpwuid(int 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
 | 
			
		||||
		Reference in New Issue
	
	Block a user