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

Compare commits

..

21 Commits
1.9.2 ... 3.0.1

Author SHA1 Message Date
mintty
432b71d2fd 3.0.1 2019-05-28 07:33:38 +02:00
mintty
1b41dfa1e0 determine Desktop folder from registry (#166) 2019-05-22 10:40:41 +02:00
mintty
336db2f19b package sounds (mintty/mintty#711) 2019-05-03 05:01:28 +02:00
mintty
1f67e41333 avoid %USERPROFILE% (#166) 2019-05-02 16:53:33 +02:00
mintty
0520b71e1f improve description to configure shortcuts and context menu entries (#166) 2019-05-02 16:04:58 +02:00
mintty
92b982690e facilitate build testing on non-Windows 10 2019-05-02 16:04:22 +02:00
mintty
f0a3449ada static linking of wslbridge-backend to make it work in all distros (#156),
own (partial) implementation of getpwuid to this aim
2019-05-01 11:01:10 +02:00
mintty
3d4055a63b chmod +x wslbridge-backend for all distros (#163) 2019-05-01 10:59:21 +02:00
mintty
2fb994604a 3.0.0 2019-04-11 16:13:49 +02:00
mintty
5da3a053a9 1.9.8 2019-03-15 11:01:28 +01:00
mintty
ad65aa9931 1.9.7 2019-03-15 00:50:56 +01:00
mintty
c9acce8d76 generic parameter list (#147) 2019-02-18 17:13:31 +01:00
mintty
1533c27b36 allow WSL commands as parameters to .bat invocation scripts (#147) 2019-02-17 13:47:51 +01:00
mintty
3e3eaf6e31 1.9.6 2019-01-20 19:53:22 +01:00
mintty
482df018c9 deploy two icons (#132) 2019-01-20 19:52:40 +01:00
mintty
23fc790c26 deploy two icons, allow previous icon to persist (#132),
do not deploy WSL default .lnk files anymore
2019-01-20 19:49:49 +01:00
mintty
e5c67ecc7c tweak registry key names to avoid collision with existing keys and enable context menu invocation of default WSL (#141) 2019-01-06 12:08:25 +01:00
mintty
20075c6378 allow persistent customization of default icon (#132) 2019-01-01 14:53:48 +01:00
mintty
05ce002fc6 1.9.5 2018-12-05 11:18:55 +01:00
mintty
cc37c6c2d5 1.9.4 controls 2018-11-14 08:06:26 +01:00
mintty
5ef4879be2 1.9.3 2018-10-05 18:55:39 +02:00
10 changed files with 192 additions and 44 deletions

View File

@@ -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.

View File

@@ -73,7 +73,7 @@ A Windows Appx package and certificate is available in the [wsltty.appx](https:/
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
@@ -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,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 ####

View File

@@ -1 +1 @@
1.9.2
3.0.1

View File

@@ -97,21 +97,15 @@ 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
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'
@@ -167,28 +161,36 @@ do
echoc "- icon $icon"
echoc "- root $root"
target="$installdir"'\bin\mintty.exe'
bridgeargs=" "
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
@@ -217,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
@@ -228,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

View File

@@ -26,11 +26,12 @@ 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 Terminal.lnk" "%installdir%"
copy "WSL Terminal %%.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%"
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
@@ -59,10 +60,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 wsl.ico "%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
@@ -77,8 +81,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%"
copy "WSL Terminal.lnk" "%smf%"
copy "WSL Terminal %%.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"
@@ -87,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
@@ -109,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"

View File

@@ -8,14 +8,18 @@
# wsltty release
ver=1.9.2
ver=3.0.1
# wsltty appx release
verx=0.9.2
# wsltty appx release - must have 4 parts!
verx=3.0.1.0
# 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.9.2
minttyver=3.0.1
# or mintty branch or commit version
#minttyver=master
@@ -90,6 +94,19 @@ check:
# 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
@@ -104,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/
@@ -123,6 +148,7 @@ wslbridge-backend: wslbridge-source
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
@@ -136,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
@@ -144,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/
@@ -187,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/
@@ -224,7 +256,7 @@ pkg: wslbridge cygwin mintty-get mintty-build mintty-pkg cab
wsltty-appx: wslbridge appx-bin mintty-get mintty-build-appx mintty-appx
# appx package target:
appx: wsltty-appx
appx: wsltty-appx fix-verx
sh ./build.sh
#############################################################################

View File

@@ -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
@@ -47,7 +47,7 @@ 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,9 +55,9 @@ FILE19="wsltty home & help.url"
FILE20="zoo.exe"
FILE21="lang.zoo"
FILE22="themes.zoo"
FILE23="WSL Terminal %.lnk"
FILE24="WSL Terminal.lnk"
FILE25="mkshortcut.vbs"
FILE23="sounds.zoo"
FILE24="mkshortcut.vbs"
FILE25="mintty.ico"
[SourceFiles]
SourceFiles0=.

View File

@@ -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

View File

Before

Width:  |  Height:  |  Size: 472 KiB

After

Width:  |  Height:  |  Size: 472 KiB

View 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