1
0
mirror of https://github.com/mintty/wsltty.git synced 2025-11-09 19:41:51 +00:00

Compare commits

..

14 Commits

Author SHA1 Message Date
Thomas Wolff
ec0b5560ee 2025-09-02 00:00:00 +00:00
mintty
2cd1819d8b 3.8.0.3 2025-08-30 00:00:00 +00:00
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
6 changed files with 174 additions and 112 deletions

View File

@@ -18,9 +18,40 @@ WSLtty components
---
### Requirements ###
### Launching WSL ###
To connect to WSL, wsltty uses wslbridge2, which uses undocumented
Since wsltty 3.8.0, mintty launches WSL using the native Windows launcher
gateway `wsl.exe` by default.
Proper display in certain cases depends on an up-to-date version of the
Windows conpty layer. Its version currently deployed with Windows has
unfortunately still some problems. There are two ways to fix this:
* Revert to the previous launching method for now. The problem is that
this way of launching WSL does not appear to work on some users systems.
For this solution, configure this in config file `%APPDATA%/wsltty/config`.
`WSLbridge=2`
* Update the Windows conpty layer manually, by replacing
`%SYSTEMROOT%/System32/conhost.exe` 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).
#### Launcher and display interworking background ####
The approach to use wsl.exe directly used to fail because the
_conhost_ layer hooked into the workflow used to obstruct transparent
terminal operation in multiple ways.
The _conhost_ layer has meanwhile been modernised, including the _conpty_
layer, 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 linked above,
to patch OpenConsole into your Windows as conhost replacement.
#### The wslbridge approach ####
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
@@ -30,6 +61,12 @@ Since release 3.0.5, WSLtty requires Windows version 1809 (the November 2018 rel
By end of 2024, wsltty works again with recent updates of the WSL subsystem.
Configuration option `WSLbridge=2` switches back to the previous
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.)
---
### Installation from this repository ###
@@ -114,14 +151,6 @@ invoke one of
* `winget install 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 ####
([Check package](https://scoop.sh/#/apps?q=wsltty))
@@ -132,6 +161,14 @@ then, invoke one of
* `scoop install 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 ###
To uninstall wsltty desktop, start menu, and context menu integration:
@@ -218,6 +255,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
* `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,
the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R.
@@ -330,13 +369,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).
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)
used to be the gateway prototype.
Many thanks for this enabling gateway go to Ryan Prichard.
For recent changes in WSL, particularly WSL mode V2, the new gateway
[wslbridge2](https://github.com/Biswa96/wslbridge2) is used instead.
For later changes in WSL, particularly WSL mode V2, the new gateway
[wslbridge2](https://github.com/Biswa96/wslbridge2) was used instead.
Many thanks for this further development and maintenance go to Biswapriyo Nath.

View File

@@ -1 +1 @@
3.7.7
3.8.0.3

View File

@@ -155,17 +155,40 @@ regtool () {
}
fi
if $config
then while read line; do echo "$line"; done <</EOB > mkbat.bat
@echo off
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
/EOB
fi
mkbat () {
echo Creating "$1.bat"
while read line; do echo "$line"; done <<-\/EOB > "$1".bat
@echo off
rem Start mintty terminal for WSL
rem get basename of this script file,
rem use it to select WSL distribution and homedir flag
set dist=%~n0
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
then
@@ -302,7 +325,7 @@ config () {
if $ok && ! $remove && [ -n "$distro" ]
then # fix #163: backend missing +x with certain mount options
echo Setting +x wslbridge2 backends for distro "'$distro'"
echo Setting +x wslbridge2 backend for distro "'$distro'"
(cd "$INSTDIR"; cd bin; PATH="${WINDIR}/Sysnative:${PATH}" wsl.exe -d "$distro" chmod +x wslbridge2-backend)
# (cd "$LOCALAPPDATA/wsltty/bin"; wsl.exe -d "$distro" chmod +x wslbridge2-backend)
# (cd ... ; "$SYSTEMROOT/System32/bash.exe" "$guid" -c chmod +x wslbridge2-backend)
@@ -366,7 +389,8 @@ config () {
copy "$name Terminal %.lnk" "$APPDATA\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty"
# 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"
# store backup copies in installation dir
@@ -402,7 +426,8 @@ config () {
fi
# 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"
# store backup copies in installation dir

View File

@@ -95,6 +95,8 @@ copy mintty.ico "%installdir%\usr\share\mintty\icon"
mkdir "%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:
mkdir "%installdir%\usr\share\terminfo" 2> nul:
copy terminfo.zoo "%installdir%\usr\share\terminfo"
rem create Start Menu Folder
@@ -122,6 +124,8 @@ cd /D "%installdir%\usr\share\mintty\themes"
"%installdir%\bin\zoo" xO themes
cd /D "%installdir%\usr\share\mintty\sounds"
"%installdir%\bin\zoo" xO sounds
cd /D "%installdir%\usr\share\terminfo"
"%installdir%\bin\zoo" xO terminfo
cd /D "%installdir%"
@@ -151,6 +155,24 @@ mkdir "%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:
goto noetc
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"
goto etcok
:noetc
rem 3.8.0.3: remove previous troubleshooting patch
if exist "%installdir%\etc\minttyrc" del "%installdir%\etc\minttyrc"
if exist "%installdir%\etc" rmdir "%installdir%\etc"
:etcok
rem create config file if it does not yet exist
if exist "%configdir%\config" goto appconfig
echo # To use common configuration in %%APPDATA%%\mintty, simply remove this file>"%configdir%\config"

View File

@@ -9,20 +9,18 @@
# make wsltty build the software, using the local copy of mintty
# wsltty release
ver=3.7.7
# wsltty appx release - must have 4 parts!
verx=3.7.7.1
##############################
# mintty release version
# mintty and wsltty release versions
wslttyver=3.8.0.3
minttyver=3.7.7
minttyver=3.8.0
minrepo=git@github.com:mintty/mintty.git
##############################
# wsltty appx release (obsolete) - must have 4 parts!
appxver=$(wslttyver).1
##############################
# wslbridge2 repository and release version
@@ -131,14 +129,14 @@ checkarch:
#############################################################################
# patch version information for appx package configuration
fix-verx:
fix-appxver:
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 patching $(appxver) into app config
sed -i~ -e '/<Identity / s,Version="[.0-9]*",Version="$(appxver)",' AppxManifest.xml
echo patched AppxManifest.xml
#############################################################################
@@ -207,8 +205,8 @@ mintty-git:
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)"
wslversion=VERSION_SUFFIX=" wsltty $(wslttyver)" WSLTTY_VERSION="$(wslttyver)"
appxversion=VERSION_SUFFIX=" wsltty appx $(appxver)" WSLTTY_VERSION="$(appxver)"
mintty-build:
# ensure rebuild of version-specific check and message
@@ -229,11 +227,18 @@ mintty-build-appx:
cp mintty-$(minttyver)/bin/mintty.exe bin/
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:
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 ../../
cd /usr/share/terminfo; zoo a /tmp/terminfo $(terminfo)
mv /tmp/terminfo.zoo .
# add charnames.txt to support "Character Info"
cd mintty-$(minttyver)/src; sh ./mknames
cp mintty-$(minttyver)/src/charnames.txt .
@@ -272,7 +277,7 @@ appx-bin:
cp /bin/cygwin1.dll bin/
cp /bin/cygwin-console-helper.exe bin/
CAB=wsltty-$(ver)-$(arch)
CAB=wsltty-$(wslttyver)-$(arch)
copcab: ver
mkdir -p $(CAB)
@@ -285,6 +290,7 @@ copcab: ver
cp lang.zoo $(CAB)/
cp themes.zoo $(CAB)/
cp sounds.zoo $(CAB)/
cp terminfo.zoo $(CAB)/
cp charnames.txt $(CAB)/
cp bin/wslbridge2.exe $(CAB)/
cp bin/wslbridge2-backend $(CAB)/
@@ -316,16 +322,16 @@ cab:
normal-installer:
# prepare build of installer
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
cd rel; iexpress /n wsltty.SED
cd rel; iexpress /n /q wsltty.SED
silent-installer:
# prepare build of installer
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
# build installer
cd rel; iexpress /n wsltty-quiet.SED
cd rel; iexpress /n /q wsltty-quiet.SED
InstallPrompt=Install Mintty terminal for WSL Portable?
FinishMessage=Mintty for WSL Portable installation finished
@@ -335,7 +341,7 @@ portable-installer:
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
# build installer
cd rel; iexpress /n wsltty-portable.SED
cd rel; iexpress /n /q wsltty-portable.SED
install: cop installbat
@@ -343,7 +349,7 @@ installbat:
cd rel; cmd /C install
ver:
echo $(ver) > VERSION
echo $(wslttyver) > VERSION
mintty: mintty-get mintty-build
@@ -362,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
# appx package target:
appx: wsltty-appx fix-verx
appx: wsltty-appx fix-appxver
sh ./build.sh
#############################################################################

View File

@@ -1,5 +1,5 @@
[Version]
Class=IEXPRESS
Class=IExpress
SEDVersion=3
[Options]
@@ -32,71 +32,41 @@ AppLaunched=cmd.exe /c install.bat
PostInstallCmd=<None>
AdminQuietInstCmd=
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]
SourceFiles0=.
[SourceFiles0]
%FILE0%=
%FILE1%=
%FILE2%=
%FILE3%=
%FILE4%=
%FILE5%=
%FILE6%=
%FILE7%=
%FILE8%=
%FILE9%=
%FILE10%=
%FILE11%=
%FILE12%=
%FILE13%=
%FILE14%=
%FILE15%=
%FILE16%=
%FILE17%=
%FILE18%=
%FILE19%=
%FILE20%=
%FILE21%=
%FILE22%=
%FILE23%=
%FILE24%=
%FILE25%=
%FILE26%=
%FILE27%=
%FILE28%=
%FILE29%=
%FILE30%=
cygwin1.dll=
cygwin-console-helper.exe=
mintty.exe=
wslbridge2.exe=
wslbridge2-backend=
LICENSE.mintty=
LICENSE.wslbridge2=
config-distros.sh=
configure WSL shortcuts.lnk=
charnames.txt=
VERSION=
dash.exe=
regtool.exe=
install.bat=
uninstall.bat=
tux.ico=
add to context menu.lnk=
add default to context menu.lnk=
remove from context menu.lnk=
wsltty home & help.url=
zoo.exe=
lang.zoo=
themes.zoo=
sounds.zoo=
terminfo.zoo=
mintty.ico=
mkshortcut.vbs=
dequote.bat=
cmd2.bat=
install-portable.bat=
getemojis=
getflags=