mirror of
				https://github.com/mintty/wsltty.git
				synced 2025-11-04 09:01:52 +00:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					ee57a229b0 | ||
| 
						 | 
					3c7d8f3a18 | ||
| 
						 | 
					937058f703 | ||
| 
						 | 
					52b6a57e09 | ||
| 
						 | 
					d7b4840c92 | ||
| 
						 | 
					05a439b5b0 | ||
| 
						 | 
					a7b8792e76 | ||
| 
						 | 
					440fbec6c7 | ||
| 
						 | 
					49d7a79941 | ||
| 
						 | 
					6261ec43ec | ||
| 
						 | 
					033d9aceb2 | ||
| 
						 | 
					be4e7fef44 | ||
| 
						 | 
					a2df28017b | ||
| 
						 | 
					09972471b9 | ||
| 
						 | 
					c13340b328 | ||
| 
						 | 
					8d7ffa75bb | ||
| 
						 | 
					305fd0f273 | ||
| 
						 | 
					fb1bf601e9 | ||
| 
						 | 
					adc7036609 | ||
| 
						 | 
					fef944e1bb | 
							
								
								
									
										40
									
								
								0012-get-vmid-from-registry.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								0012-get-vmid-from-registry.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
--- wslbridge2/src/wslbridge2.cpp	2024-10-10 20:20:21.931891800 +0000
 | 
			
		||||
+++ wslbridge2-0.12/src/wslbridge2.cpp	2024-10-08 09:31:35.954145800 +0000
 | 
			
		||||
@@ -228,6 +228,26 @@ static void start_dummy(std::wstring wsl
 | 
			
		||||
     CloseHandle(pi.hThread);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
+bool GetIdFromRegistry(GUID *guid) {
 | 
			
		||||
+    HKEY hKeyRoot = HKEY_LOCAL_MACHINE;
 | 
			
		||||
+    std::wstring subKey = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\HostComputeService\\VolatileStore\\ComputeSystem";
 | 
			
		||||
+    HKEY hKey;
 | 
			
		||||
+    if (RegOpenKeyEx(hKeyRoot, subKey.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS) {
 | 
			
		||||
+        DWORD index = 0;
 | 
			
		||||
+        WCHAR keyName[256];
 | 
			
		||||
+        DWORD keyNameSize = sizeof(keyName) / sizeof(keyName[0]);
 | 
			
		||||
+
 | 
			
		||||
+        while (RegEnumKeyEx(hKey, index, keyName, &keyNameSize, nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS) {
 | 
			
		||||
+            RegCloseKey(hKey);
 | 
			
		||||
+            std::wstring id = L"{" + std::wstring(keyName) + L"}";
 | 
			
		||||
+            return IIDFromString(id.c_str(), guid) == S_OK;
 | 
			
		||||
+        }
 | 
			
		||||
+        RegCloseKey(hKey);
 | 
			
		||||
+    }
 | 
			
		||||
+    return false;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+
 | 
			
		||||
 int main(int argc, char *argv[])
 | 
			
		||||
 {
 | 
			
		||||
     /* Minimum requirement Windows 10 build 17763 aka. version 1809 */
 | 
			
		||||
@@ -387,8 +407,8 @@ int main(int argc, char *argv[])
 | 
			
		||||
         if (LiftedWSLVersion)
 | 
			
		||||
             start_dummy(wslPath, wslCmdLine, distroName, debugMode);
 | 
			
		||||
 
 | 
			
		||||
-        const HRESULT hRes = GetVmId(&DistroId, &VmId, LiftedWSLVersion);
 | 
			
		||||
-        if (hRes != 0)
 | 
			
		||||
+        const bool hRes = GetIdFromRegistry(&VmId);
 | 
			
		||||
+        if (!hRes)
 | 
			
		||||
             fatal("GetVmId: %s\n", GetErrorMessage(hRes).c_str());
 | 
			
		||||
 
 | 
			
		||||
         inputSock = win_vsock_create();
 | 
			
		||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							@@ -20,15 +20,16 @@ WSLtty components
 | 
			
		||||
 | 
			
		||||
### Requirements ###
 | 
			
		||||
 | 
			
		||||
Wsltty does not seem to work with WSL V2 mode since release 2.0.0 (#343).
 | 
			
		||||
As a workaround until a solution in the wslbridge gateway, it is suggested 
 | 
			
		||||
to install [release 1.3.17](https://github.com/microsoft/WSL/releases/tag/1.3.17); 
 | 
			
		||||
maybe uninstall WSL first, see [issue 343 comment](https://github.com/mintty/wsltty/issues/343#issuecomment-1818367512).
 | 
			
		||||
Another remedy could be to configure your WSL distributions to run in WSL V1 mode, for example:
 | 
			
		||||
`wsl --set-version Ubuntu 1`.
 | 
			
		||||
To connect to WSL, wsltty uses wslbridge2, which uses undocumented 
 | 
			
		||||
Windows APIs that have been changed various times, so wslbridge2 needed 
 | 
			
		||||
to catch up with incompatible changes, particularly to support WSL V2.
 | 
			
		||||
(See e.g. issue #343; to work with WSL V2, wsltty 2.0.0 needed a WSL update 
 | 
			
		||||
to [release 1.3.17](https://github.com/microsoft/WSL/releases/tag/1.3.17).)
 | 
			
		||||
 | 
			
		||||
Since release 3.0.5, WSLtty requires Windows version 1809 (the November 2018 release).
 | 
			
		||||
 | 
			
		||||
By end of 2024, wsltty works again with recent updates of the WSL subsystem.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
### Installation from this repository ###
 | 
			
		||||
@@ -56,6 +57,13 @@ Portable installation does not install any start menu or desktop shortcuts
 | 
			
		||||
and no context menu entries. It creates a shortcut in the selected 
 | 
			
		||||
portable installation folder to start the default WSL distribution.
 | 
			
		||||
 | 
			
		||||
Note: For an update installation, either the parent directory or the target 
 | 
			
		||||
directory itself can be selected.
 | 
			
		||||
 | 
			
		||||
Note: If you rename or move the installation directory, the icon of the 
 | 
			
		||||
“WSL Terminal Portable” shortcut will not work anymore; re-run the 
 | 
			
		||||
install-portable.bat script in the installation folder to refresh it.
 | 
			
		||||
 | 
			
		||||
#### Installation from archive ####
 | 
			
		||||
 | 
			
		||||
In case a local anti-virus guard barfs about the wsltty installer, the 
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +1,54 @@
 | 
			
		||||
@echo off
 | 
			
		||||
 | 
			
		||||
chcp 65001 > nul
 | 
			
		||||
 | 
			
		||||
if not exist "WSL Terminal Portable.lnk" goto install
 | 
			
		||||
echo Rebuilding WSL Terminal Portable shortcut
 | 
			
		||||
set instdir=%~dp0
 | 
			
		||||
goto shortcut
 | 
			
		||||
 | 
			
		||||
:install
 | 
			
		||||
 | 
			
		||||
echo Installing WSL Terminal Portable
 | 
			
		||||
echo Select target folder in popup dialog ...
 | 
			
		||||
 | 
			
		||||
set sel="Select folder to place installation of portable wsltty"
 | 
			
		||||
 | 
			
		||||
for /f "usebackq delims=" %%f in (`powershell "(new-object -COM Shell.Application).BrowseForFolder(0, '%sel%', 0, 0).self.path"`) do set f=%%f
 | 
			
		||||
set instdir=%f%\wsltty
 | 
			
		||||
if exist %f%\LICENSE.mintty set instdir=%f%
 | 
			
		||||
 | 
			
		||||
if "%f%"=="" (
 | 
			
		||||
	echo no installation
 | 
			
		||||
	echo No installation selected
 | 
			
		||||
	pause
 | 
			
		||||
	exit
 | 
			
		||||
) else if not exist "%f%" (
 | 
			
		||||
	echo invalid installation folder %instdir%
 | 
			
		||||
	echo Invalid installation folder %instdir%
 | 
			
		||||
	pause
 | 
			
		||||
	exit
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
rem call main installation
 | 
			
		||||
call install "%instdir%" "%instdir%" /P
 | 
			
		||||
rem this already changes into "%instdir%"
 | 
			
		||||
 | 
			
		||||
rem copy additional portable installation files
 | 
			
		||||
rem do this after call install as that deletes previous .bat files
 | 
			
		||||
copy "%~dp0\install-portable.bat" .
 | 
			
		||||
dir "%instdir%"\install-portable.bat
 | 
			
		||||
 | 
			
		||||
:shortcut
 | 
			
		||||
 | 
			
		||||
rem create shortcut
 | 
			
		||||
cd /D "%instdir%"
 | 
			
		||||
rem set drive-relative path for shortcut working directory and icon
 | 
			
		||||
set instpath=%instdir:~2%
 | 
			
		||||
set target=%%COMSPEC%%
 | 
			
		||||
set minttyargs=/C bin\mintty.exe --WSL= --icon=/wsl.ico --configdir=. -~
 | 
			
		||||
set bridgeargs= -
 | 
			
		||||
set wdir=%instpath%
 | 
			
		||||
rem set wdir=%instpath%
 | 
			
		||||
rem let mkshortcut set working directory to empty:
 | 
			
		||||
set wdir=.
 | 
			
		||||
set icon=%instpath%\wsl.ico
 | 
			
		||||
cscript /nologo mkshortcut.vbs "/name:WSL Terminal Portable"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								install.bat
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								install.bat
									
									
									
									
									
								
							@@ -12,9 +12,18 @@ call dequote oldroot
 | 
			
		||||
call dequote oldhomedir
 | 
			
		||||
set oldconfigdir="%oldhomedir%\.config\mintty"
 | 
			
		||||
call dequote oldconfigdir
 | 
			
		||||
if not "%1" == "" set refinstalldir=%1 && set installdir=%1
 | 
			
		||||
if not "%2" == "" set refconfigdir=%2 && set configdir=%2
 | 
			
		||||
 | 
			
		||||
rem override installdir, configdir if parameters given
 | 
			
		||||
set arg1=%1
 | 
			
		||||
call dequote arg1
 | 
			
		||||
if "%arg1%" == "%%arg1%%" goto deploy
 | 
			
		||||
set refinstalldir=%arg1%
 | 
			
		||||
set installdir=%arg1%
 | 
			
		||||
set arg2=%2
 | 
			
		||||
call dequote arg2
 | 
			
		||||
if "%arg2%" == "%%arg2%%" goto deploy
 | 
			
		||||
set refconfigdir=%arg2%
 | 
			
		||||
set configdir=%arg2%
 | 
			
		||||
 | 
			
		||||
:deploy
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										72
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								makefile
									
									
									
									
									
								
							@@ -10,35 +10,24 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# wsltty release
 | 
			
		||||
ver=3.7.1
 | 
			
		||||
ver=3.7.6.2
 | 
			
		||||
 | 
			
		||||
# wsltty appx release - must have 4 parts!
 | 
			
		||||
verx=3.7.1.1
 | 
			
		||||
verx=3.7.6.2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
# mintty release version
 | 
			
		||||
 | 
			
		||||
minttyver=3.7.1
 | 
			
		||||
minttyver=3.7.6
 | 
			
		||||
 | 
			
		||||
minrepo=git@github.com:mintty/mintty.git
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
 | 
			
		||||
# wslbridge2 repository
 | 
			
		||||
# wslbridge2 repository and release version
 | 
			
		||||
repo=Biswa96/wslbridge2
 | 
			
		||||
 | 
			
		||||
# wslbridge2 master release version
 | 
			
		||||
wslbridgever=0.12
 | 
			
		||||
 | 
			
		||||
# wslbridge2 latest version
 | 
			
		||||
#archive=master
 | 
			
		||||
#wslbridgedir=wslbridge2-$(archive)
 | 
			
		||||
 | 
			
		||||
# wslbridge2 branch or commit version (from fix-window-resize branch) and dir
 | 
			
		||||
#commit=70e0dcea1db122d076ce1578f2a45280cc92d09f
 | 
			
		||||
#commit=8b6dd7ee2b3102d72248990c21764c5cf86c6612
 | 
			
		||||
#archive=$(commit)
 | 
			
		||||
#wslbridgedir=wslbridge2-$(archive)
 | 
			
		||||
 | 
			
		||||
wslbridgever=0.13
 | 
			
		||||
 | 
			
		||||
# wslbridge2 fork repository and version
 | 
			
		||||
#repo=mintty/wslbridge2
 | 
			
		||||
@@ -50,13 +39,30 @@ archive=v$(wslbridgever)
 | 
			
		||||
wslbridgedir=wslbridge2-$(wslbridgever)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# wslbridge2 latest version
 | 
			
		||||
#archive=master
 | 
			
		||||
#wslbridgedir=wslbridge2-$(archive)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# wslbridge2 branch or commit version (from fix-window-resize branch) and dir
 | 
			
		||||
#commit=70e0dcea1db122d076ce1578f2a45280cc92d09f
 | 
			
		||||
#commit=8b6dd7ee2b3102d72248990c21764c5cf86c6612
 | 
			
		||||
# trying post-0.12 WSL V2 patches:
 | 
			
		||||
#commit=5b2b652d1a7355b004e7860b4370a585737e5ac9
 | 
			
		||||
#commit=274530b35a05df203d3a69f0e28d5015844f39bd
 | 
			
		||||
# pixel size patch + fix (retagged as 0.13):
 | 
			
		||||
#commit=a7162d852ff438d2d5a8dd8dae61795addb3d980
 | 
			
		||||
#archive=$(commit)
 | 
			
		||||
#wslbridgedir=wslbridge2-$(archive)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
 | 
			
		||||
# mintty branch or commit version
 | 
			
		||||
#minttyver=master
 | 
			
		||||
 | 
			
		||||
# wslbridge branch or commit to build from source;
 | 
			
		||||
wslbridge=wslbridge-frontend wslbridge-backend
 | 
			
		||||
wslbridge=wslbridge-source wslbridge-frontend wslbridge-backend
 | 
			
		||||
 | 
			
		||||
##############################
 | 
			
		||||
# build backend on a musl-libc-based distribution
 | 
			
		||||
@@ -73,10 +79,15 @@ WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
 | 
			
		||||
 | 
			
		||||
all:	all-$(notdir $(CURDIR))
 | 
			
		||||
 | 
			
		||||
all-wsltty:	check pkg
 | 
			
		||||
# targets and version checking
 | 
			
		||||
 | 
			
		||||
all-wsltty:	check committed pkg
 | 
			
		||||
 | 
			
		||||
all-wsltty.appx:	appx
 | 
			
		||||
 | 
			
		||||
committed:
 | 
			
		||||
	if git status -suno | sed -e "s,^..,," | grep .; then false; fi
 | 
			
		||||
 | 
			
		||||
#############################################################################
 | 
			
		||||
# target checking and some defs
 | 
			
		||||
 | 
			
		||||
@@ -154,8 +165,15 @@ wslbridge-source:	$(wslbridgedir).zip
 | 
			
		||||
	#cd $(wslbridgedir); patch -p1 < ../0001-notify-size-change-inband.patch
 | 
			
		||||
	# patch to https://github.com/Biswa96/wslbridge2/commit/41575379b416703c49e2687e957440239a4cdfb7
 | 
			
		||||
	#cd $(wslbridgedir); patch -p0 < ../0002-add-com-for-lifted-wsl.patch
 | 
			
		||||
	# patch to fix WSL 2 launching, again
 | 
			
		||||
	# this was replaced with another patch upstream
 | 
			
		||||
	#cd $(wslbridgedir); patch -p1 < ../0012-get-vmid-from-registry.patch
 | 
			
		||||
	# patch to add WINCH/pty pixel size support (Biswa96/wslbridge2#44)
 | 
			
		||||
	#cd $(wslbridgedir); patch -p1 < ../0013-pty-pixel-size.patch
 | 
			
		||||
	# patch to fix the pixel patch of 0.13
 | 
			
		||||
	#cd $(wslbridgedir); patch -p1 < ../0013-pty-pixel-size-fix.patch
 | 
			
		||||
 | 
			
		||||
wslbridge-frontend:	wslbridge-source
 | 
			
		||||
wslbridge-frontend:
 | 
			
		||||
	echo ------------- Compiling wslbridge2 frontend
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
	# frontend build
 | 
			
		||||
@@ -165,7 +183,7 @@ wslbridge-frontend:	wslbridge-source
 | 
			
		||||
 | 
			
		||||
windir=$(shell cd "${WINDIR}"; pwd)
 | 
			
		||||
 | 
			
		||||
wslbridge-backend:	wslbridge-source
 | 
			
		||||
wslbridge-backend:
 | 
			
		||||
	echo ------------- Compiling wslbridge2 backend
 | 
			
		||||
	#uname -m | grep x86_64
 | 
			
		||||
	mkdir -p bin
 | 
			
		||||
@@ -176,10 +194,16 @@ wslbridge-backend:	wslbridge-source
 | 
			
		||||
	# extract binaries
 | 
			
		||||
	cp $(wslbridgedir)/bin/wslbridge2-backend bin/
 | 
			
		||||
 | 
			
		||||
mintty-get:
 | 
			
		||||
mintty-get:	mintty-git	# mintty-download or mintty-git
 | 
			
		||||
	cp mintty-$(minttyver)/icon/terminal.ico mintty.ico
 | 
			
		||||
 | 
			
		||||
mintty-download:
 | 
			
		||||
	$(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
 | 
			
		||||
 | 
			
		||||
mintty-git:
 | 
			
		||||
	test -d mintty-$(minttyver) || git clone --branch $(minttyver) --depth 1 $(minrepo) mintty-$(minttyver)
 | 
			
		||||
	cd mintty-$(minttyver); git checkout $(minttyver)
 | 
			
		||||
 | 
			
		||||
wslbuild=LDFLAGS="-static -static-libgcc -s"
 | 
			
		||||
appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ UserQuietInstCmd=%UserQuietInstCmd%
 | 
			
		||||
SourceFiles=SourceFiles
 | 
			
		||||
 | 
			
		||||
[Strings]
 | 
			
		||||
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
 | 
			
		||||
InstallPrompt=Install Mintty terminal for WSL?
 | 
			
		||||
DisplayLicense=
 | 
			
		||||
FinishMessage=Mintty for WSL installed - for documentation and configuration see https://github.com/mintty/wsltty
 | 
			
		||||
TargetName=wsltty-%version%-%arch%-install.exe
 | 
			
		||||
 
 | 
			
		||||
@@ -29,10 +29,14 @@ rem wscript.echo "minttyargs: " & minttyargs
 | 
			
		||||
rem wscript.echo lnk.Arguments
 | 
			
		||||
 | 
			
		||||
rem Start in:
 | 
			
		||||
rem Working directory; Arguments.Named would take "/wdir:C:\..." parameters
 | 
			
		||||
rem wdir = Wscript.Arguments.Named("wdir")
 | 
			
		||||
rem Working directory; function ExpandEnvironmentStrings cannot pass empty
 | 
			
		||||
wdir = wshell.ExpandEnvironmentStrings("%wdir%")
 | 
			
		||||
if IsEmpty(wdir) then
 | 
			
		||||
  lnk.WorkingDirectory = "%USERPROFILE%"
 | 
			
		||||
elseif wdir = "." then
 | 
			
		||||
  lnk.WorkingDirectory = ""
 | 
			
		||||
else
 | 
			
		||||
  lnk.WorkingDirectory = wdir
 | 
			
		||||
end if
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user