1
0
mirror of https://github.com/mintty/wsltty.git synced 2025-11-04 17:11:54 +00:00

Compare commits

...

34 Commits

Author SHA1 Message Date
Thomas Wolff
bbe0dd4e56 3.8.0.2, workaround for corrupted display (mintty/mintty#1332) 2025-08-28 00:00:00 +00:00
mintty
39151ffe8e hints to prevent display corruption 2025-08-27 00:00:00 +00:00
mintty
25460e4bbd project page refers to display glitches explicitly (mintty/mintty#1332) 2025-08-26 00:00:00 +00:00
mintty
a7f1720a22 fix missing git upload 2025-08-24 00:00:00 +00:00
mintty
92210d81d7 3.8.0 2025-08-22 00:00:00 +00:00
mintty
c0094d675f 3.8.0 2025-08-22 00:00:00 +00:00
mintty
e863c572ef deploy terminfo files, in order to support pty mode for wsl.exe 2025-08-20 00:00:00 +00:00
mintty
92edf8b257 simplify installer build file 2025-08-20 00:00:00 +00:00
mintty
d09d08d518 tweak README; sort package references according to update status 2025-08-20 00:00:00 +00:00
Thomas Wolff
7074ff02b9 3.7.8 2025-03-29 00:00:00 +00:00
Thomas Wolff
4e0bbddcc0 revise command-line launch scripts, support arguments (#365) 2025-03-29 00:00:00 +00:00
Thomas Wolff
68e11e5775 revise command-line launch scripts, support arguments (#365) 2025-03-29 00:00:00 +00:00
Thomas Wolff
36c134820b 3.7.7 2024-12-21 14:34:46 +01:00
Thomas Wolff
ef2ab5f6e4 3.7.7 2024-12-21 13:59:07 +01:00
mintty
ee57a229b0 3.7.6.2 2024-12-02 14:00:14 +01:00
mintty
3c7d8f3a18 fix git handling for mintty download 2024-12-02 13:59:48 +01:00
mintty
937058f703 provide script to refresh shortcut icon after renaming installation dir (#359) 2024-11-23 12:29:17 +01:00
mintty
52b6a57e09 2024-11-23 12:23:38 +01:00
mintty
d7b4840c92 portable installation supports Unicode folder names 2024-11-23 04:52:47 +01:00
mintty
05a439b5b0 fix handling of empty/non-empty folder parameters 2024-11-23 04:52:25 +01:00
mintty
a7b8792e76 tweak portable install; support renaming installation dir (#359) 2024-11-22 17:11:02 +01:00
mintty
440fbec6c7 2024-11-22 17:09:52 +01:00
mintty
49d7a79941 support portable installation into folder with space (#359) 2024-11-22 17:09:10 +01:00
mintty
6261ec43ec supported update installation into selected folder (#359) 2024-11-22 17:07:45 +01:00
Thomas Wolff
033d9aceb2 update home page section on Requirements 2024-11-18 19:17:09 +01:00
mintty
be4e7fef44 download mintty via git; fix wsltty version info 2024-10-10 22:54:54 +02:00
mintty
a2df28017b 3.7.6 2024-10-10 22:35:16 +02:00
mintty
09972471b9 add rluetzner's patch Get VmId from registry (#356) 2024-10-10 22:33:39 +02:00
mintty
c13340b328 decouple wslbridge build from download to support build of patched version 2024-10-10 22:32:18 +02:00
mintty
8d7ffa75bb 3.7.5 2024-09-17 10:56:47 +02:00
mintty
305fd0f273 2024-09-17 10:56:29 +02:00
mintty
fb1bf601e9 3.7.4 2024-07-03 19:23:59 +02:00
mintty
adc7036609 3.7.3 2024-06-29 00:08:29 +02:00
mintty
fef944e1bb 3.7.2 2024-06-27 05:23:41 +02:00
9 changed files with 302 additions and 141 deletions

View 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();

View File

@@ -18,17 +18,52 @@ WSLtty components
--- ---
### Requirements ### ### Launching WSL ###
Wsltty does not seem to work with WSL V2 mode since release 2.0.0 (#343). Since wsltty 3.8.0, mintty launches WSL using the native Windows launcher
As a workaround until a solution in the wslbridge gateway, it is suggested gateway `wsl.exe`. Previously, this approach used to fail due to two problems:
to install [release 1.3.17](https://github.com/microsoft/WSL/releases/tag/1.3.17); * The wslbridge approach would fail in notoriously frequent cases
maybe uninstall WSL first, see [issue 343 comment](https://github.com/mintty/wsltty/issues/343#issuecomment-1818367512). due to its need to use undocumented Windows APIs.
Another remedy could be to configure your WSL distributions to run in WSL V1 mode, for example: * Using `wsl.exe` directly, the _conhost_ layer hooked into the
`wsl --set-version Ubuntu 1`. workflow used to obstruct transparent terminal operation in multiple ways.
The _conhost_ layer has meanwhile been modernised and its enforced detour
through the Windows console API has been dropped, in the course of the
Windows Terminal project. The new _conhost_, however, has not yet been
deployed with Windows (as of summer 2025) and will probably not be
deployed with Windows 10 anymore. So in order to get fully transparent
terminal interaction between WSL and wsltty, the updated _conhost_ needs
to be patched into Windows manually, following the instructions in the
[mintty wiki, section Interaction with WSL](https://github.com/mintty/mintty/wiki/Tips#interaction-with-wsl-and-other-windows-programs)
to patch OpenConsole into your Windows as conhost replacement.
#### Troubleshooting display corruption ####
With the new conhost/conpty layer unfortunately display appears broken
in certain cases. Two workarounds are available, both setting an option
in a config file (%APPDATA%/wsltty/config):
* `Baud=999999`
or
* `WSLbridge=2`.
The latter switches back to the wslbridge launching approach; the
wslbridge2 gateway is still deployed with wsltty for that matter.
(If for a very old Windows 10 version you still need the original
wslbridge gateway, set `WSLbridge=1` and deploy it manually.)
#### WSL bridge requirements in previous releases ####
To connect to WSL, wsltty used 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). 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 ### ### Installation from this repository ###
@@ -56,6 +91,13 @@ Portable installation does not install any start menu or desktop shortcuts
and no context menu entries. It creates a shortcut in the selected and no context menu entries. It creates a shortcut in the selected
portable installation folder to start the default WSL distribution. 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 #### #### Installation from archive ####
In case a local anti-virus guard barfs about the wsltty installer, the In case a local anti-virus guard barfs about the wsltty installer, the
@@ -106,14 +148,6 @@ invoke one of
* `winget install wsltty` * `winget install wsltty`
* `winget upgrade wsltty` * `winget upgrade wsltty`
#### Chocolatey ####
([Check package](https://community.chocolatey.org/packages/wsltty))
If you use the [Chocolatey package manager](https://chocolatey.org/),
invoke one of
* `choco install wsltty`
* `choco upgrade wsltty`
#### Scoop #### #### Scoop ####
([Check package](https://scoop.sh/#/apps?q=wsltty)) ([Check package](https://scoop.sh/#/apps?q=wsltty))
@@ -124,6 +158,14 @@ then, invoke one of
* `scoop install wsltty` * `scoop install wsltty`
* `scoop update wsltty` * `scoop update wsltty`
#### Chocolatey ####
([Check package](https://community.chocolatey.org/packages/wsltty))
If you use the [Chocolatey package manager](https://chocolatey.org/),
invoke one of
* `choco install wsltty`
* `choco upgrade wsltty`
### Uninstallation ### ### Uninstallation ###
To uninstall wsltty desktop, start menu, and context menu integration: To uninstall wsltty desktop, start menu, and context menu integration:
@@ -210,6 +252,8 @@ WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps
* For each installed WSL distribution, e.g. Ubuntu, a command script like `Ubuntu~.bat` to start in the WSL user home * For each installed WSL distribution, e.g. Ubuntu, a command script like `Ubuntu~.bat` to start in the WSL user home
* `WSL.bat` and `WSL~.bat` to start the default WSL distribution * `WSL.bat` and `WSL~.bat` to start the default WSL distribution
The scripts accept an optional invocation command (since 3.7.8).
Given that `%LOCALAPPDATA%\Microsoft\WindowsApps` is in your PATH, Given that `%LOCALAPPDATA%\Microsoft\WindowsApps` is in your PATH,
the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R. the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R.
@@ -322,13 +366,13 @@ the [Mintty manual page](http://mintty.github.io/mintty.1.html),
including a [Hints and Tips page](https://github.com/mintty/mintty/wiki/Tips). including a [Hints and Tips page](https://github.com/mintty/mintty/wiki/Tips).
It is based on [Cygwin](http://cygwin.com) It is based on [Cygwin](http://cygwin.com)
and includes its runtime library ([sources](http://mirrors.dotsrc.org/cygwin/x86/release/cygwin)). and includes its runtime library ([sources](http://mirrors.dotsrc.org/cygwin/x86_64/release/cygwin)).
For interacting with WSL, [wslbridge](https://github.com/rprichard/wslbridge) For interacting with WSL, [wslbridge](https://github.com/rprichard/wslbridge)
used to be the gateway prototype. used to be the gateway prototype.
Many thanks for this enabling gateway go to Ryan Prichard. Many thanks for this enabling gateway go to Ryan Prichard.
For recent changes in WSL, particularly WSL mode V2, the new gateway For later changes in WSL, particularly WSL mode V2, the new gateway
[wslbridge2](https://github.com/Biswa96/wslbridge2) is used instead. [wslbridge2](https://github.com/Biswa96/wslbridge2) was used instead.
Many thanks for this further development and maintenance go to Biswapriyo Nath. Many thanks for this further development and maintenance go to Biswapriyo Nath.

View File

@@ -1 +1 @@
3.7.1 3.8.0.2

View File

@@ -155,17 +155,40 @@ regtool () {
} }
fi fi
mkbat () {
if $config echo Creating "$1.bat"
then while read line; do echo "$line"; done <</EOB > mkbat.bat while read line; do echo "$line"; done <<-\/EOB > "$1".bat
@echo off @echo off
echo Creating %1.bat rem Start mintty terminal for WSL
echo @echo off> %1.bat rem get basename of this script file,
echo rem Start mintty terminal for WSL package %name% in current directory>> %1.bat rem use it to select WSL distribution and homedir flag
echo %target% -i "%icon%" %minttyargs% %bridgeargs% %%*>> %1.bat set dist=%~n0
/EOB
fi rem start in current directory
set cdir=
rem if script name ends with ~, extract WSL distribution and param -~
if "%dist:~-1%" == "~" set cdir=-~ && set dist=%dist:~0,-1%
rem map WSL default distribution
if "%dist%" == "WSL" set dist=
rem check if we have an explicit -d DIST parameter
if "%1" == "-d" set dist=%2 && shift && shift
chcp 65001 > nul:
if "%1" == "" goto login
:cmd
"%LOCALAPPDATA%/wsltty/bin/mintty.exe" -i "%LOCALAPPDATA%/wsltty/wsl.ico" --WSL="%dist%" --configdir="%APPDATA%/wsltty" %cdir% %*
goto end
:login
"%LOCALAPPDATA%/wsltty/bin/mintty.exe" -i "%LOCALAPPDATA%/wsltty/wsl.ico" --WSL="%dist%" --configdir="%APPDATA%/wsltty" %cdir% -
:end
/EOB
}
if $custominst && $config && ! $remove if $custominst && $config && ! $remove
then then
@@ -366,7 +389,8 @@ config () {
copy "$name Terminal %.lnk" "$APPDATA\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty" copy "$name Terminal %.lnk" "$APPDATA\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty"
# launch script in . -> WSLtty home, WindowsApps launch folder # launch script in . -> WSLtty home, WindowsApps launch folder
cmd /C mkbat.bat "$name" #cmd /C mkbat.bat "$name"
mkbat "$name"
copy "$name.bat" "$LOCALAPPDATA\\Microsoft\\WindowsApps" copy "$name.bat" "$LOCALAPPDATA\\Microsoft\\WindowsApps"
# store backup copies in installation dir # store backup copies in installation dir
@@ -402,7 +426,8 @@ config () {
fi fi
# launch script in ~ -> WSLtty home, WindowsApps launch folder # launch script in ~ -> WSLtty home, WindowsApps launch folder
cmd /C mkbat.bat "$name~" #cmd /C mkbat.bat "$name~"
mkbat "$name~"
copy "$name~.bat" "$LOCALAPPDATA\\Microsoft\\WindowsApps" copy "$name~.bat" "$LOCALAPPDATA\\Microsoft\\WindowsApps"
# store backup copies in installation dir # store backup copies in installation dir

View File

@@ -1,27 +1,54 @@
@echo off @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" 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 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 set instdir=%f%\wsltty
if exist %f%\LICENSE.mintty set instdir=%f%
if "%f%"=="" ( if "%f%"=="" (
echo no installation echo No installation selected
pause
exit exit
) else if not exist "%f%" ( ) else if not exist "%f%" (
echo invalid installation folder %instdir% echo Invalid installation folder %instdir%
pause
exit exit
) )
rem call main installation
call install "%instdir%" "%instdir%" /P 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 rem create shortcut
cd /D "%instdir%" cd /D "%instdir%"
rem set drive-relative path for shortcut working directory and icon
set instpath=%instdir:~2% set instpath=%instdir:~2%
set target=%%COMSPEC%% set target=%%COMSPEC%%
set minttyargs=/C bin\mintty.exe --WSL= --icon=/wsl.ico --configdir=. -~ set minttyargs=/C bin\mintty.exe --WSL= --icon=/wsl.ico --configdir=. -~
set bridgeargs= - set bridgeargs= -
set wdir=%instpath% rem set wdir=%instpath%
rem let mkshortcut set working directory to empty:
set wdir=.
set icon=%instpath%\wsl.ico set icon=%instpath%\wsl.ico
cscript /nologo mkshortcut.vbs "/name:WSL Terminal Portable" cscript /nologo mkshortcut.vbs "/name:WSL Terminal Portable"

View File

@@ -12,9 +12,18 @@ call dequote oldroot
call dequote oldhomedir call dequote oldhomedir
set oldconfigdir="%oldhomedir%\.config\mintty" set oldconfigdir="%oldhomedir%\.config\mintty"
call dequote oldconfigdir 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 :deploy
@@ -86,6 +95,8 @@ copy mintty.ico "%installdir%\usr\share\mintty\icon"
mkdir "%installdir%\usr\share\mintty\emojis" 2> nul: mkdir "%installdir%\usr\share\mintty\emojis" 2> nul:
copy getemojis "%installdir%\usr\share\mintty\emojis" 2> nul: copy getemojis "%installdir%\usr\share\mintty\emojis" 2> nul:
copy getflags "%installdir%\usr\share\mintty\emojis" 2> nul: copy getflags "%installdir%\usr\share\mintty\emojis" 2> nul:
mkdir "%installdir%\usr\share\terminfo" 2> nul:
copy terminfo.zoo "%installdir%\usr\share\terminfo"
rem create Start Menu Folder rem create Start Menu Folder
@@ -113,6 +124,8 @@ cd /D "%installdir%\usr\share\mintty\themes"
"%installdir%\bin\zoo" xO themes "%installdir%\bin\zoo" xO themes
cd /D "%installdir%\usr\share\mintty\sounds" cd /D "%installdir%\usr\share\mintty\sounds"
"%installdir%\bin\zoo" xO sounds "%installdir%\bin\zoo" xO sounds
cd /D "%installdir%\usr\share\terminfo"
"%installdir%\bin\zoo" xO terminfo
cd /D "%installdir%" cd /D "%installdir%"
@@ -142,6 +155,14 @@ mkdir "%configdir%\emojis" 2> nul:
copy "%installdir%\usr\share\mintty\emojis\getemojis" "%configdir%\emojis" 2> nul: copy "%installdir%\usr\share\mintty\emojis\getemojis" "%configdir%\emojis" 2> nul:
copy "%installdir%\usr\share\mintty\emojis\getflags" "%configdir%\emojis" 2> nul: copy "%installdir%\usr\share\mintty\emojis\getflags" "%configdir%\emojis" 2> nul:
rem 3.8.0.2: create global config file for troubleshooting
mkdir "%installdir%\etc" 2> nul:
echo ###########################>"%installdir%\etc\minttyrc"
echo # Troubleshooting>>"%installdir%\etc\minttyrc"
echo # To work around a pty interworking issue between wsl and cygwin,>>"%installdir%\etc\minttyrc"
echo # we need to apply this configuration for now:>>"%installdir%\etc\minttyrc"
echo Baud=999999>>"%installdir%\etc\minttyrc"
rem create config file if it does not yet exist rem create config file if it does not yet exist
if exist "%configdir%\config" goto appconfig if exist "%configdir%\config" goto appconfig
echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config" echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config"

110
makefile
View File

@@ -9,36 +9,23 @@
# make wsltty build the software, using the local copy of mintty # make wsltty build the software, using the local copy of mintty
# wsltty release ##############################
ver=3.7.1 # mintty and wsltty release versions
wslttyver=3.8.0.2
# wsltty appx release - must have 4 parts! minttyver=3.8.0
verx=3.7.1.1
minrepo=git@github.com:mintty/mintty.git
############################## ##############################
# mintty release version # wsltty appx release (obsolete) - must have 4 parts!
appxver=$(wslttyver).1
minttyver=3.7.1
############################## ##############################
# wslbridge2 repository # wslbridge2 repository and release version
repo=Biswa96/wslbridge2 repo=Biswa96/wslbridge2
wslbridgever=0.13
# 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)
# wslbridge2 fork repository and version # wslbridge2 fork repository and version
#repo=mintty/wslbridge2 #repo=mintty/wslbridge2
@@ -50,13 +37,30 @@ archive=v$(wslbridgever)
wslbridgedir=wslbridge2-$(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 # mintty branch or commit version
#minttyver=master #minttyver=master
# wslbridge branch or commit to build from source; # 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 # build backend on a musl-libc-based distribution
@@ -73,10 +77,15 @@ WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
all: all-$(notdir $(CURDIR)) all: all-$(notdir $(CURDIR))
all-wsltty: check pkg # targets and version checking
all-wsltty: check committed pkg
all-wsltty.appx: appx all-wsltty.appx: appx
committed:
if git status -suno | sed -e "s,^..,," | grep .; then false; fi
############################################################################# #############################################################################
# target checking and some defs # target checking and some defs
@@ -120,14 +129,14 @@ checkarch:
############################################################################# #############################################################################
# patch version information for appx package configuration # patch version information for appx package configuration
fix-verx: fix-appxver:
echo patching $(WINSDKVER) into Launcher config echo patching $(WINSDKVER) into Launcher config
cd Launcher; sed -i~ -e "/<supportedRuntime / s,Version=v[.0-9]*,Version=$(WINSDKVER)," app.config cd Launcher; sed -i~ -e "/<supportedRuntime / s,Version=v[.0-9]*,Version=$(WINSDKVER)," app.config
echo patched app.config echo patched app.config
cd Launcher; sed -i~ -e "/<TargetFrameworkVersion>/ s,v[.0-9]*,$(WINSDKVER)," Launcher.csproj cd Launcher; sed -i~ -e "/<TargetFrameworkVersion>/ s,v[.0-9]*,$(WINSDKVER)," Launcher.csproj
echo patched Launcher.csproj echo patched Launcher.csproj
echo patching $(verx) into app config echo patching $(appxver) into app config
sed -i~ -e '/<Identity / s,Version="[.0-9]*",Version="$(verx)",' AppxManifest.xml sed -i~ -e '/<Identity / s,Version="[.0-9]*",Version="$(appxver)",' AppxManifest.xml
echo patched AppxManifest.xml echo patched AppxManifest.xml
############################################################################# #############################################################################
@@ -154,8 +163,15 @@ wslbridge-source: $(wslbridgedir).zip
#cd $(wslbridgedir); patch -p1 < ../0001-notify-size-change-inband.patch #cd $(wslbridgedir); patch -p1 < ../0001-notify-size-change-inband.patch
# patch to https://github.com/Biswa96/wslbridge2/commit/41575379b416703c49e2687e957440239a4cdfb7 # patch to https://github.com/Biswa96/wslbridge2/commit/41575379b416703c49e2687e957440239a4cdfb7
#cd $(wslbridgedir); patch -p0 < ../0002-add-com-for-lifted-wsl.patch #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 echo ------------- Compiling wslbridge2 frontend
mkdir -p bin mkdir -p bin
# frontend build # frontend build
@@ -165,7 +181,7 @@ wslbridge-frontend: wslbridge-source
windir=$(shell cd "${WINDIR}"; pwd) windir=$(shell cd "${WINDIR}"; pwd)
wslbridge-backend: wslbridge-source wslbridge-backend:
echo ------------- Compiling wslbridge2 backend echo ------------- Compiling wslbridge2 backend
#uname -m | grep x86_64 #uname -m | grep x86_64
mkdir -p bin mkdir -p bin
@@ -176,15 +192,21 @@ wslbridge-backend: wslbridge-source
# extract binaries # extract binaries
cp $(wslbridgedir)/bin/wslbridge2-backend bin/ 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 $(wgeto) https://github.com/mintty/mintty/archive/$(minttyver).zip -o mintty-$(minttyver).zip
unzip -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" wslbuild=LDFLAGS="-static -static-libgcc -s"
appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX
wslversion=VERSION_SUFFIX=" wsltty $(ver)" WSLTTY_VERSION="$(ver)" wslversion=VERSION_SUFFIX=" wsltty $(wslttyver)" WSLTTY_VERSION="$(wslttyver)"
appxversion=VERSION_SUFFIX=" wsltty appx $(verx)" WSLTTY_VERSION="$(verx)" appxversion=VERSION_SUFFIX=" wsltty appx $(appxver)" WSLTTY_VERSION="$(appxver)"
mintty-build: mintty-build:
# ensure rebuild of version-specific check and message # ensure rebuild of version-specific check and message
@@ -205,11 +227,18 @@ mintty-build-appx:
cp mintty-$(minttyver)/bin/mintty.exe bin/ cp mintty-$(minttyver)/bin/mintty.exe bin/
strip bin/mintty.exe strip bin/mintty.exe
terminfoxt=78/xterm 78/xterm-vt220 78/xterm-256color 78/xterm-direct
terminfovt=76/vt100 76/vt220 76/vt340 76/vt420 76/vt525
terminfomt=6d/mintty 6d/mintty-direct
terminfo=$(terminfoxt) $(terminfovt) $(terminfomt)
mintty-pkg: mintty-pkg:
cp mintty-$(minttyver)/LICENSE LICENSE.mintty cp mintty-$(minttyver)/LICENSE LICENSE.mintty
cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../ cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../
cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.zoo ../../ cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.zoo ../../
cd mintty-$(minttyver)/sounds; zoo a sounds *.wav *.WAV *.md; mv sounds.zoo ../../ cd mintty-$(minttyver)/sounds; zoo a sounds *.wav *.WAV *.md; mv sounds.zoo ../../
cd /usr/share/terminfo; zoo a /tmp/terminfo $(terminfo)
mv /tmp/terminfo.zoo .
# add charnames.txt to support "Character Info" # add charnames.txt to support "Character Info"
cd mintty-$(minttyver)/src; sh ./mknames cd mintty-$(minttyver)/src; sh ./mknames
cp mintty-$(minttyver)/src/charnames.txt . cp mintty-$(minttyver)/src/charnames.txt .
@@ -248,7 +277,7 @@ appx-bin:
cp /bin/cygwin1.dll bin/ cp /bin/cygwin1.dll bin/
cp /bin/cygwin-console-helper.exe bin/ cp /bin/cygwin-console-helper.exe bin/
CAB=wsltty-$(ver)-$(arch) CAB=wsltty-$(wslttyver)-$(arch)
copcab: ver copcab: ver
mkdir -p $(CAB) mkdir -p $(CAB)
@@ -261,6 +290,7 @@ copcab: ver
cp lang.zoo $(CAB)/ cp lang.zoo $(CAB)/
cp themes.zoo $(CAB)/ cp themes.zoo $(CAB)/
cp sounds.zoo $(CAB)/ cp sounds.zoo $(CAB)/
cp terminfo.zoo $(CAB)/
cp charnames.txt $(CAB)/ cp charnames.txt $(CAB)/
cp bin/wslbridge2.exe $(CAB)/ cp bin/wslbridge2.exe $(CAB)/
cp bin/wslbridge2-backend $(CAB)/ cp bin/wslbridge2-backend $(CAB)/
@@ -292,16 +322,16 @@ cab:
normal-installer: normal-installer:
# prepare build of installer # prepare build of installer
rm -f rel/$(CAB)-install.exe rm -f rel/$(CAB)-install.exe
sed -e "s,%version%,$(ver)," -e "s,%arch%,$(arch)," makewinx.cfg > rel/wsltty.SED sed -e "s,%version%,$(wslttyver)," -e "s,%arch%,$(arch)," makewinx.cfg > rel/wsltty.SED
# build installer # build installer
cd rel; iexpress /n wsltty.SED cd rel; iexpress /n /q wsltty.SED
silent-installer: silent-installer:
# prepare build of installer # prepare build of installer
rm -f rel/$(CAB)-install-quiet.exe rm -f rel/$(CAB)-install-quiet.exe
cd rel; sed -e "/ShowInstallProgramWindow/ s/0/1/" -e "/HideExtractAnimation/ s/0/1/" -e "/InstallPrompt/ s/=.*/=/" -e "/FinishMessage/ s/=.*/=/" -e "/TargetName/ s/install.exe/install-quiet.exe/" wsltty.SED > wsltty-quiet.SED cd rel; sed -e "/ShowInstallProgramWindow/ s/0/1/" -e "/HideExtractAnimation/ s/0/1/" -e "/InstallPrompt/ s/=.*/=/" -e "/FinishMessage/ s/=.*/=/" -e "/TargetName/ s/install.exe/install-quiet.exe/" wsltty.SED > wsltty-quiet.SED
# build installer # build installer
cd rel; iexpress /n wsltty-quiet.SED cd rel; iexpress /n /q wsltty-quiet.SED
InstallPrompt=Install Mintty terminal for WSL Portable? InstallPrompt=Install Mintty terminal for WSL Portable?
FinishMessage=Mintty for WSL Portable installation finished FinishMessage=Mintty for WSL Portable installation finished
@@ -311,7 +341,7 @@ portable-installer:
rm -f rel/$(CAB)-install-portable.exe rm -f rel/$(CAB)-install-portable.exe
cd rel; sed -e "/InstallPrompt/ s/=.*/=$(InstallPrompt)/" -e "/FinishMessage/ s/=.*/=$(FinishMessage)/" -e "/AppLaunched/ s/install/install-portable/" -e "/TargetName/ s/install.exe/install-portable.exe/" wsltty.SED > wsltty-portable.SED cd rel; sed -e "/InstallPrompt/ s/=.*/=$(InstallPrompt)/" -e "/FinishMessage/ s/=.*/=$(FinishMessage)/" -e "/AppLaunched/ s/install/install-portable/" -e "/TargetName/ s/install.exe/install-portable.exe/" wsltty.SED > wsltty-portable.SED
# build installer # build installer
cd rel; iexpress /n wsltty-portable.SED cd rel; iexpress /n /q wsltty-portable.SED
install: cop installbat install: cop installbat
@@ -319,7 +349,7 @@ installbat:
cd rel; cmd /C install cd rel; cmd /C install
ver: ver:
echo $(ver) > VERSION echo $(wslttyver) > VERSION
mintty: mintty-get mintty-build mintty: mintty-get mintty-build
@@ -338,7 +368,7 @@ pkg: wslbridge cygwin mintty-get mintty-build mintty-pkg installer
wsltty-appx: wslbridge appx-bin mintty-get mintty-build-appx mintty-appx wsltty-appx: wslbridge appx-bin mintty-get mintty-build-appx mintty-appx
# appx package target: # appx package target:
appx: wsltty-appx fix-verx appx: wsltty-appx fix-appxver
sh ./build.sh sh ./build.sh
############################################################################# #############################################################################

View File

@@ -1,5 +1,5 @@
[Version] [Version]
Class=IEXPRESS Class=IExpress
SEDVersion=3 SEDVersion=3
[Options] [Options]
@@ -23,7 +23,7 @@ UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles SourceFiles=SourceFiles
[Strings] [Strings]
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)? InstallPrompt=Install Mintty terminal for WSL?
DisplayLicense= DisplayLicense=
FinishMessage=Mintty for WSL installed - for documentation and configuration see https://github.com/mintty/wsltty FinishMessage=Mintty for WSL installed - for documentation and configuration see https://github.com/mintty/wsltty
TargetName=wsltty-%version%-%arch%-install.exe TargetName=wsltty-%version%-%arch%-install.exe
@@ -32,71 +32,41 @@ AppLaunched=cmd.exe /c install.bat
PostInstallCmd=<None> PostInstallCmd=<None>
AdminQuietInstCmd= AdminQuietInstCmd=
UserQuietInstCmd= UserQuietInstCmd=
FILE0="cygwin1.dll"
FILE1="cygwin-console-helper.exe"
FILE2="mintty.exe"
FILE3="wslbridge2.exe"
FILE4="wslbridge2-backend"
FILE5="LICENSE.mintty"
FILE6="LICENSE.wslbridge2"
FILE7="config-distros.sh"
FILE8="configure WSL shortcuts.lnk"
FILE9="charnames.txt"
FILE10="VERSION"
FILE11="dash.exe"
FILE12="regtool.exe"
FILE13="install.bat"
FILE14="uninstall.bat"
FILE15="tux.ico"
FILE16="add to context menu.lnk"
FILE17="add default to context menu.lnk"
FILE18="remove from context menu.lnk"
FILE19="wsltty home & help.url"
FILE20="zoo.exe"
FILE21="lang.zoo"
FILE22="themes.zoo"
FILE23="sounds.zoo"
FILE24="mintty.ico"
FILE25="mkshortcut.vbs"
FILE26="dequote.bat"
FILE27="cmd2.bat"
FILE28="install-portable.bat"
FILE29="getemojis"
FILE30="getflags"
[SourceFiles] [SourceFiles]
SourceFiles0=. SourceFiles0=.
[SourceFiles0] [SourceFiles0]
%FILE0%= cygwin1.dll=
%FILE1%= cygwin-console-helper.exe=
%FILE2%= mintty.exe=
%FILE3%= wslbridge2.exe=
%FILE4%= wslbridge2-backend=
%FILE5%= LICENSE.mintty=
%FILE6%= LICENSE.wslbridge2=
%FILE7%= config-distros.sh=
%FILE8%= configure WSL shortcuts.lnk=
%FILE9%= charnames.txt=
%FILE10%= VERSION=
%FILE11%= dash.exe=
%FILE12%= regtool.exe=
%FILE13%= install.bat=
%FILE14%= uninstall.bat=
%FILE15%= tux.ico=
%FILE16%= add to context menu.lnk=
%FILE17%= add default to context menu.lnk=
%FILE18%= remove from context menu.lnk=
%FILE19%= wsltty home & help.url=
%FILE20%= zoo.exe=
%FILE21%= lang.zoo=
%FILE22%= themes.zoo=
%FILE23%= sounds.zoo=
%FILE24%= terminfo.zoo=
%FILE25%= mintty.ico=
%FILE26%= mkshortcut.vbs=
%FILE27%= dequote.bat=
%FILE28%= cmd2.bat=
%FILE29%= install-portable.bat=
%FILE30%= getemojis=
getflags=

View File

@@ -29,10 +29,14 @@ rem wscript.echo "minttyargs: " & minttyargs
rem wscript.echo lnk.Arguments rem wscript.echo lnk.Arguments
rem Start in: rem Start in:
rem Working directory; Arguments.Named would take "/wdir:C:\..." parameters
rem wdir = Wscript.Arguments.Named("wdir") rem wdir = Wscript.Arguments.Named("wdir")
rem Working directory; function ExpandEnvironmentStrings cannot pass empty
wdir = wshell.ExpandEnvironmentStrings("%wdir%") wdir = wshell.ExpandEnvironmentStrings("%wdir%")
if IsEmpty(wdir) then if IsEmpty(wdir) then
lnk.WorkingDirectory = "%USERPROFILE%" lnk.WorkingDirectory = "%USERPROFILE%"
elseif wdir = "." then
lnk.WorkingDirectory = ""
else else
lnk.WorkingDirectory = wdir lnk.WorkingDirectory = wdir
end if end if