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

Compare commits

..

45 Commits

Author SHA1 Message Date
mintty
5136d7e878 3.0.2.2 beta 2019-07-24 23:32:05 +02:00
mintty
0d39faaaf6 deploy uninstall.bat in installation directory (#170, ~#175, ~#15) 2019-07-24 23:30:49 +02:00
mintty
d61e551236 backend patch v3, linking properly (#169), with dlopen for getpwuid (#156) 2019-07-24 23:06:41 +02:00
mintty
3f60e3f48c find proper icon and rootfs for wsldl-built distros (#169) 2019-07-24 22:38:36 +02:00
mintty
a207cae3a8 3.0.2 2019-07-13 11:20:31 +02:00
mintty
79c3f9e450 ensure cmd.exe is available in PATH during installation/configuration (#172) 2019-07-07 19:07:48 +02:00
mintty
75c67869bf instruction to disable WSL 2 (#171) 2019-07-03 13:06:30 +02:00
mintty
7776748081 do without powershell to determine the exe with the icon 2019-05-28 22:31:08 +02:00
mintty
bac370cfce Merge pull request #111 from caksoylar/patch-1
use icon from exe if determined from manifest
2019-05-28 22:30:26 +02:00
mintty
975dbb9398 3.0.1.2 2019-05-28 19:49:33 +02:00
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
mintty
97699c2010 1.9.2 2018-10-03 19:27:14 +02:00
mintty
4316b754da prepare for 1.9.1 2018-09-21 17:44:31 +02:00
mintty
b8171d61a6 do without basename (which isn't installed) 2018-09-21 17:44:02 +02:00
mintty
d7f14146fd consider manually tuned installdir and configdir (#119) 2018-09-14 00:08:19 +02:00
mintty
46ee1b4c1c quote PATH setting (#121) 2018-09-13 23:07:48 +02:00
mintty
27a9ce6f42 remove hen-or-egg dependency on wslbridge-backend (#118) 2018-07-23 20:53:31 +02:00
mintty
e88e60a786 Merge pull request #114 from rasa/patch-1
Add scoop install instructions to readme.md (#30)
2018-07-05 11:09:57 +02:00
Ross Smith II
dfeaf49ae9 Add scoop install instructions to readme.md 2018-07-04 17:59:07 -07:00
Cem Aksoylar
fc8e7cda45 slashes in paths consistency 2018-06-20 23:29:57 -07:00
Cem Aksoylar
b23a0a4b3d restore deleted root definition, fallback to icon.ico first 2018-06-20 23:29:41 -07:00
Cem Aksoylar
a2414e0dc7 restore tabs 2018-06-20 23:13:38 -07:00
Cem Aksoylar
963a40d919 restore missing fi 2018-06-10 16:06:43 -07:00
Cem Aksoylar
017b05c48c fix EOL, restore misdeleted chunk on original L138-141, tabs to spaces 2018-06-10 12:15:21 -07:00
C Aksoylar
52b03a43d9 Fix missing icons for distros
Instead of looking for `images\icon.ico` in `$instdir` for each distro, instead check inside AppxManifest.xml for the executable name and point to it for the shortcut icon as suggested in https://github.com/mintty/wsltty/issues/110#issuecomment-395999015.
2018-06-10 11:35:20 -07:00
10 changed files with 271 additions and 62 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 The sources of PuTTY 0.60 can be downloaded from
ftp://ftp.chiark.greenend.org.uk/users/sgtatham/putty-0.60. 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 Sixel code (sixel.c) is relicensed under GPL like mintty with the
permission of its author (kmiya@culti); Sixel colour conversion code permission of its author (kmiya@culti); Sixel colour conversion code
(sixel_hls.c) is licensed by its author Ross Combs under the license (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 under various licenses. The source and license or permission are
quoted in the respective theme files. 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

@@ -52,6 +52,15 @@ invoke one of
* `choco install wsltty` * `choco install wsltty`
* `choco upgrade wsltty` * `choco upgrade wsltty`
#### Scoop ####
If you use the [Scoop package manager](https://scoop.sh/),
* `scoop bucket add extras`
then, invoke one of
* `scoop install wsltty`
* `scoop update wsltty`
#### Windows Appx package #### #### Windows Appx package ####
A Windows Appx package and certificate is available in the [wsltty.appx](https://github.com/mintty/wsltty.appx/) repository. A Windows Appx package and certificate is available in the [wsltty.appx](https://github.com/mintty/wsltty.appx/) repository.
@@ -64,12 +73,19 @@ A Windows Appx package and certificate is available in the [wsltty.appx](https:/
WSLtty can be invoked with WSLtty can be invoked with
* installed Start Menu shortcuts (or Desktop shortcuts if copied there) * 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) * Explorer context menu (if installed from the Start Menu `WSLtty` subfolder)
Starting the mintty terminal directly from the WSLtty installation location Starting the mintty terminal directly from the WSLtty installation location
is discouraged because that would bypass essential options. is discouraged because that would bypass essential options.
#### WSL 2 ####
Due to some incompatible changes by Microsoft, wslbridge cannot connect
in WSL 2 mode at this time.
Workaround:
* `wsl --set-default-version 1`
--- ---
### Configuration ### ### Configuration ###
@@ -90,6 +106,12 @@ One Desktop shortcut is installed:
Other, distribution-specific shortcuts can be copied to the desktop Other, distribution-specific shortcuts can be copied to the desktop
from the Start Menu if desired. 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` #### #### Command line scripts `wsl*.bat` ####
WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps` WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps`
@@ -108,9 +130,23 @@ WSLtty provides context menu entries for all installed WSL distributions
and one for the configured default distribution, and one for the configured default distribution,
to start a respective WSL terminal in a specific folder from an Explorer window. to start a respective WSL terminal in a specific folder from an Explorer window.
They are not installed by default. They are not installed by default.
To add launch entries for the default or all WSL distributions to the 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 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 #### #### Mintty settings ####

View File

@@ -1 +1 @@
1.9.0.2 3.0.2.2

View File

@@ -1,14 +1,17 @@
#! /bin/sh #! /bin/sh
PATH=/bin:$PATH installdir=${installdir:-'%LOCALAPPDATA%\wsltty'}
configdir=${configdir:-'%APPDATA%\wsltty'}
PATH=/bin:"$PATH":$SYSTEMROOT/System32
contextmenu=false contextmenu=false
remove=false remove=false
alldistros=true alldistros=true
config=true config=true
case "`basename $0`" in case "/$0" in
wsl*) */wsl*)
config=false;; config=false;;
esac esac
@@ -94,23 +97,33 @@ echo Creating %1.bat
echo @echo off> %1.bat echo @echo off> %1.bat
echo rem Start mintty terminal for WSL package %name% in current directory>> %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 /EOB
fi fi
PATH=/bin:$PATH
lxss="/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss" lxss="/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss"
schema="/HKEY_CURRENT_USER/Software/Classes/Local Settings/Software/Microsoft/Windows/CurrentVersion/AppModel/SystemAppData" 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) | appex () {
( while read line
if $alldistros do
then regtool list "$lxss" 2>/dev/null case "$line" in
else true *Application*Executable*)
fi && echo || echo "No WSL packages registered" >&2) | for item in $line
while read guid do case "$item" in
do Executable=*)
eval $item
echo "$Executable"
break;;
esac
done
break;;
esac
done < $*
}
config () {
guid="$1"
ok=false ok=false
case $guid in case $guid in
{*) {*)
@@ -130,18 +143,28 @@ do
if package=`regtool -q get "$lxss/$guid/PackageFamilyName"` if package=`regtool -q get "$lxss/$guid/PackageFamilyName"`
then then
instdir=`regtool get "$schema/$package/Schemas/PackageFullName"` instdir=`regtool get "$schema/$package/Schemas/PackageFullName"`
if [ -r "$ProgramW6432/WindowsApps/$instdir/images/icon.ico" ] # get actual executable path (may not match $distro) from app manifest
manifest="$ProgramW6432/WindowsApps/$instdir/AppxManifest.xml"
psh_cmd='([xml]$(Get-Content '"\"$manifest\""')).Package.Applications.Application.Executable'
executable=`appex "$manifest"`
if [ -r "$ProgramW6432/WindowsApps/$instdir/$executable" ]
then icon="%PROGRAMFILES%/WindowsApps/$instdir/$executable"
elif [ -r "$ProgramW6432/WindowsApps/$instdir/images/icon.ico" ]
then icon="%PROGRAMFILES%/WindowsApps/$instdir/images/icon.ico" then icon="%PROGRAMFILES%/WindowsApps/$instdir/images/icon.ico"
else icon="%LOCALAPPDATA%/wsltty/wsl.ico" else icon="$installdir"'\wsl.ico'
fi fi
root="$basepath/rootfs" root="$basepath/rootfs"
elif [ -f "$basepath/$distro.exe" ]
then
icon="$basepath/$distro.exe"
root="$basepath/rootfs"
else else
icon="%LOCALAPPDATA%/lxss/bash.ico" icon="%LOCALAPPDATA%/lxss/bash.ico"
root="$basepath" root="$basepath"
fi fi
minttyargs='--wsl --rootfs="'"$root"'" --configdir="%APPDATA%\wsltty" -o Locale=C -o Charset=UTF-8 /bin/wslbridge ' minttyargs='--wsl --rootfs="'"$root"'" --configdir="'"$configdir"'" -o Locale=C -o Charset=UTF-8 /bin/wslbridge '
minttyargs='--WSL="'"$distro"'" --configdir="%APPDATA%\wsltty"' minttyargs='--WSL="'"$distro"'" --configdir="'"$configdir"'"'
#if [ -z "$launch" ] #if [ -z "$launch" ]
#then bridgeargs='-t /bin/bash' #then bridgeargs='-t /bin/bash'
#else bridgeargs='-l "'"$launch"'" -t /bin/bash' #else bridgeargs='-l "'"$launch"'" -t /bin/bash'
@@ -150,11 +173,11 @@ do
bridgeargs='--distro-guid "'"$guid"'" -t' bridgeargs='--distro-guid "'"$guid"'" -t'
ok=true;; ok=true;;
"") # WSL default installation DefaultDistribution|"") # WSL default installation
distro= distro=
name=WSL name=WSL
icon="%LOCALAPPDATA%/wsltty/wsl.ico" icon="$installdir"'\wsl.ico'
minttyargs='--WSL= --configdir="%APPDATA%\wsltty"' minttyargs='--WSL= --configdir="'"$configdir"'"'
bridgeargs='-t' bridgeargs='-t'
ok=true;; ok=true;;
@@ -165,29 +188,37 @@ do
echoc "- (launcher $launcher)" echoc "- (launcher $launcher)"
echoc "- icon $icon" echoc "- icon $icon"
echoc "- root $root" echoc "- root $root"
target='%LOCALAPPDATA%\wsltty\bin\mintty.exe' 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 if $ok && $config
then then
export target minttyargs bridgeargs icon export name target minttyargs bridgeargs icon
if $contextmenu if $contextmenu
then then
# context menu entries # context menu entries
#cmd /C mkcontext "$name" #cmd /C mkcontext "$name"
direckey='HKEY_CURRENT_USER\Software\Classes\Directory' direckey='HKEY_CURRENT_USER\Software\Classes\Directory'
keyname="${name}_Terminal"
if $remove if $remove
then then
reg delete "$direckey\\shell\\$name" /f reg delete "$direckey\\shell\\$keyname" /f
reg delete "$direckey\\Background\\shell\\$name" /f reg delete "$direckey\\Background\\shell\\$keyname" /f
else else
reg add "$direckey\\shell\\$name" /d "$name Terminal" /f reg add "$direckey\\shell\\$keyname" /d "$name Terminal" /f
reg add "$direckey\\shell\\$name" /v Icon /d "$icon" /f reg add "$direckey\\shell\\$keyname" /v Icon /d "$icon" /f
cmd /C reg add "$direckey\\shell\\$name\\command" /d "\"$target\" -i \"$icon\" --dir \"%1\" $minttyargs $bridgeargs" /f cmd /C reg add "$direckey\\shell\\$keyname\\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\\$keyname" /d "$name Terminal" /f
reg add "$direckey\\Background\\shell\\$name" /v Icon /d "$icon" /f reg add "$direckey\\Background\\shell\\$keyname" /v Icon /d "$icon" /f
cmd /C reg add "$direckey\\Background\\shell\\$name\\command" /d "\"$target\" -i \"$icon\" $minttyargs $bridgeargs" /f cmd /C reg add "$direckey\\Background\\shell\\$keyname\\command" /d "\"$target\" -i \"$icon\" $minttyargs $bridgeargs" /f
fi fi
else else
# invocation shortcuts and scripts # invocation shortcuts and scripts
@@ -203,8 +234,8 @@ do
# 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"
cmd /C copy "$name.bat" "%LOCALAPPDATA%\\wsltty\\$name.bat" cmd /C copy "$name.bat" "$installdir"
cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name.bat" cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
# prepare versions to target WSL home directory # prepare versions to target WSL home directory
#bridgeargs="-C~ $bridgeargs" #bridgeargs="-C~ $bridgeargs"
@@ -216,15 +247,36 @@ do
# default desktop shortcut in ~ -> Desktop # default desktop shortcut in ~ -> Desktop
if [ "$name" = "WSL" ] 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 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~"
cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\wsltty\\$name~.bat" cmd /C copy "$name~.bat" "$installdir"
cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name~.bat" cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
fi fi
fi fi
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 done

View File

@@ -26,11 +26,13 @@ copy "add to context menu.lnk" "%installdir%"
copy "add default to context menu.lnk" "%installdir%" copy "add default to context menu.lnk" "%installdir%"
copy "remove from context menu.lnk" "%installdir%" copy "remove from context menu.lnk" "%installdir%"
copy "configure WSL shortcuts.lnk" "%installdir%" copy "configure WSL shortcuts.lnk" "%installdir%"
copy "WSL Terminal.lnk" "%installdir%" rem copy "WSL Terminal.lnk" "%installdir%"
copy "WSL Terminal %%.lnk" "%installdir%" rem copy "WSL Terminal %%.lnk" "%installdir%"
copy wsl.ico "%installdir%"
copy config-distros.sh "%installdir%" copy config-distros.sh "%installdir%"
copy mkshortcut.vbs "%installdir%" copy mkshortcut.vbs "%installdir%"
copy uninstall.bat "%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 if not exist "%installdir%\bin" goto instbin
rem move previous programs possibly in use out of the way rem move previous programs possibly in use out of the way
@@ -59,10 +61,13 @@ mkdir "%installdir%\usr\share\mintty\lang"
copy lang.zoo "%installdir%\usr\share\mintty\lang" copy lang.zoo "%installdir%\usr\share\mintty\lang"
mkdir "%installdir%\usr\share\mintty\themes" mkdir "%installdir%\usr\share\mintty\themes"
copy themes.zoo "%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" mkdir "%installdir%\usr\share\mintty\info"
copy charnames.txt "%installdir%\usr\share\mintty\info" copy charnames.txt "%installdir%\usr\share\mintty\info"
mkdir "%installdir%\usr\share\mintty\icon" 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 rem create Start Menu Folder
@@ -77,8 +82,8 @@ copy "add to context menu.lnk" "%smf%"
copy "add default to context menu.lnk" "%smf%" copy "add default to context menu.lnk" "%smf%"
copy "remove from context menu.lnk" "%smf%" copy "remove from context menu.lnk" "%smf%"
copy "configure WSL shortcuts.lnk" "%smf%" copy "configure WSL shortcuts.lnk" "%smf%"
copy "WSL Terminal.lnk" "%smf%" rem copy "WSL Terminal.lnk" "%smf%"
copy "WSL Terminal %%.lnk" "%smf%" rem copy "WSL Terminal %%.lnk" "%smf%"
rem clean up previous installation rem clean up previous installation
rmdir /S /Q "%smf%\context menu shortcuts" rmdir /S /Q "%smf%\context menu shortcuts"
@@ -87,6 +92,8 @@ cd /D "%installdir%\usr\share\mintty\lang"
"%installdir%\bin\zoo" xO lang "%installdir%\bin\zoo" xO lang
cd /D "%installdir%\usr\share\mintty\themes" cd /D "%installdir%\usr\share\mintty\themes"
"%installdir%\bin\zoo" xO themes "%installdir%\bin\zoo" xO themes
cd /D "%installdir%\usr\share\mintty\sounds"
"%installdir%\bin\zoo" xO sounds
:migrate configuration :migrate configuration
@@ -109,8 +116,8 @@ rmdir "%oldroot%\home"
rem create user config directory and subfolders rem create user config directory and subfolders
mkdir "%configdir%\lang" mkdir "%configdir%\lang"
mkdir "%configdir%\sounds"
mkdir "%configdir%\themes" mkdir "%configdir%\themes"
mkdir "%configdir%\sounds"
rem create config file if it does not yet exist 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" 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 # wsltty release
ver=1.9.0.2 ver=3.0.2.2
# wsltty appx release # wsltty appx release - must have 4 parts!
verx=0.9.0.2 verx=3.0.2.2
# 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 # mintty release version
minttyver=2.9.0 minttyver=3.0.2
# or mintty branch or commit version # or mintty branch or commit version
#minttyver=master #minttyver=master
@@ -90,6 +94,19 @@ check:
# check 64 bit to provide 64-Bit stability support: # check 64 bit to provide 64-Bit stability support:
uname -m | grep x86_64 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 # generation
@@ -104,28 +121,37 @@ wslbridge-package:
wslbridge-source: wslbridge-$(wslbridge-commit).zip wslbridge-source: wslbridge-$(wslbridge-commit).zip
unzip -o 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 tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge
wslbridge-$(wslbridge-commit).zip: wslbridge-$(wslbridge-commit).zip:
$(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip $(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip
wslbridge-frontend: wslbridge-source wslbridge-frontend: wslbridge-source
echo ------------- Compiling wslbridge frontend
cd wslbridge-$(wslbridge-commit)/frontend; make cd wslbridge-$(wslbridge-commit)/frontend; make
strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe
mkdir -p bin mkdir -p bin
cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/ cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/
wslbridge-backend: wslbridge-source #wslbridge-backend: wslbridge-source
cd wslbridge-$(wslbridge-commit)/backend; wslbridge make # 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 mkdir -p bin
cp wslbridge-$(wslbridge-commit)/out/wslbridge-backend bin/ cp wslbridge-$(wslbridge-commit)/out/wslbridge-backend bin/
mintty-get: mintty-get:
$(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
wslbuild=LDFLAGS="-static -static-libgcc -s" wslbuild=LDFLAGS="-static -static-libgcc -s"
appxbuild=$(wslbuild) -DWSLTTY_APPX appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX
wslversion=VERSION_SUFFIX=" wsltty $(ver)" WSLTTY_VERSION="$(ver)" wslversion=VERSION_SUFFIX=" wsltty $(ver)" WSLTTY_VERSION="$(ver)"
appxversion=VERSION_SUFFIX=" wsltty appx $(verx)" WSLTTY_VERSION="$(verx)" appxversion=VERSION_SUFFIX=" wsltty appx $(verx)" WSLTTY_VERSION="$(verx)"
@@ -136,6 +162,7 @@ mintty-build:
cd mintty-$(minttyver)/src; make $(wslbuild) $(wslversion) cd mintty-$(minttyver)/src; make $(wslbuild) $(wslversion)
mkdir -p bin mkdir -p bin
cp mintty-$(minttyver)/bin/mintty.exe bin/ cp mintty-$(minttyver)/bin/mintty.exe bin/
strip bin/mintty.exe
mintty-build-appx: mintty-build-appx:
# ensure rebuild of version-specific check and message # ensure rebuild of version-specific check and message
@@ -144,20 +171,24 @@ mintty-build-appx:
cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion) cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion)
mkdir -p bin mkdir -p bin
cp mintty-$(minttyver)/bin/mintty.exe bin/ cp mintty-$(minttyver)/bin/mintty.exe bin/
strip bin/mintty.exe
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 ../../
# 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 .
mintty-appx: mintty-appx:
mkdir -p usr/share/mintty 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)/lang/*.po usr/share/mintty/lang/
cp mintty-$(minttyver)/themes/*[!~] usr/share/mintty/themes/ 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" # 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 usr/share/mintty/info/ cp mintty-$(minttyver)/src/charnames.txt usr/share/mintty/info/
@@ -187,6 +218,7 @@ cop: ver
cp bin/zoo.exe rel/ cp bin/zoo.exe rel/
cp lang.zoo rel/ cp lang.zoo rel/
cp themes.zoo rel/ cp themes.zoo rel/
cp sounds.zoo rel/
cp charnames.txt rel/ cp charnames.txt rel/
cp bin/wslbridge.exe rel/ cp bin/wslbridge.exe rel/
cp bin/wslbridge-backend 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 wsltty-appx: wslbridge appx-bin mintty-get mintty-build-appx mintty-appx
# appx package target: # appx package target:
appx: wsltty-appx appx: wsltty-appx fix-verx
sh ./build.sh sh ./build.sh
############################################################################# #############################################################################

View File

@@ -25,7 +25,7 @@ SourceFiles=SourceFiles
[Strings] [Strings]
InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)? InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
DisplayLicense= 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 TargetName=wsltty-%version%-install.exe
FriendlyName=wsltty FriendlyName=wsltty
AppLaunched=cmd.exe /c install.bat AppLaunched=cmd.exe /c install.bat
@@ -47,7 +47,7 @@ FILE11="dash.exe"
FILE12="regtool.exe" FILE12="regtool.exe"
FILE13="install.bat" FILE13="install.bat"
FILE14="uninstall.bat" FILE14="uninstall.bat"
FILE15="wsl.ico" FILE15="tux.ico"
FILE16="add to context menu.lnk" FILE16="add to context menu.lnk"
FILE17="add default to context menu.lnk" FILE17="add default to context menu.lnk"
FILE18="remove from context menu.lnk" FILE18="remove from context menu.lnk"
@@ -55,9 +55,9 @@ FILE19="wsltty home & help.url"
FILE20="zoo.exe" FILE20="zoo.exe"
FILE21="lang.zoo" FILE21="lang.zoo"
FILE22="themes.zoo" FILE22="themes.zoo"
FILE23="WSL Terminal %.lnk" FILE23="sounds.zoo"
FILE24="WSL Terminal.lnk" FILE24="mkshortcut.vbs"
FILE25="mkshortcut.vbs" FILE25="mintty.ico"
[SourceFiles] [SourceFiles]
SourceFiles0=. SourceFiles0=.

View File

@@ -24,7 +24,7 @@ rem lnk.Arguments = Wscript.Arguments.Named("arguments")
lnk.TargetPath = wshell.ExpandEnvironmentStrings("%target%") lnk.TargetPath = wshell.ExpandEnvironmentStrings("%target%")
minttyargs = wshell.ExpandEnvironmentStrings("%minttyargs%") minttyargs = wshell.ExpandEnvironmentStrings("%minttyargs%")
bridgeargs = wshell.ExpandEnvironmentStrings("%bridgeargs%") bridgeargs = wshell.ExpandEnvironmentStrings("%bridgeargs%")
lnk.Arguments = minttyargs & bridgeargs lnk.Arguments = minttyargs & " " & bridgeargs
rem wscript.echo "minttyargs: " & minttyargs rem wscript.echo "minttyargs: " & minttyargs
rem wscript.echo lnk.Arguments rem wscript.echo lnk.Arguments

View File

Before

Width:  |  Height:  |  Size: 472 KiB

After

Width:  |  Height:  |  Size: 472 KiB

View File

@@ -0,0 +1,76 @@
diff -rup old/Makefile new/Makefile
--- old/Makefile 2018-05-06 01:12:36.000000000 +0200
+++ new/Makefile 2019-07-24 22:29:12.874257700 +0200
@@ -8,7 +8,9 @@ all : ../out/wslbridge-backend
-static-libgcc -static-libstdc++ \
-D_GNU_SOURCE \
-DWSLBRIDGE_VERSION=$(shell cat ../VERSION.txt) \
- -Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread
+ -Wall -O2 $< ../common/SocketIo.cc -o $@ \
+ -ldl -lutil -static -pthread \
+ -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
$(STRIP) $@
clean:
diff -rup old/wslbridge-backend.cc new/wslbridge-backend.cc
--- old/wslbridge-backend.cc 2018-05-06 01:12:36.000000000 +0200
+++ new/wslbridge-backend.cc 2019-07-24 22:55:25.324307400 +0200
@@ -494,6 +494,58 @@ static void frontendVersionCheck(const c
} // namespace
+#define getpwuid _getpwuid
+
+#include <dlfcn.h>
+typedef struct passwd * (*__getpwuid_t)(int uid);
+
+struct passwd * getpwuid(int uid)
+{
+ void * dl = dlopen(0, 0);
+printf("dlopen %p\n", dl);
+ if (dl) {
+ struct passwd * (*__getpwuid)(int uid) =
+ (__getpwuid_t)dlsym(dl, "getpwuid");
+printf("dlsym %p\n", __getpwuid);
+ if (__getpwuid)
+ return __getpwuid(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