mirror of
https://github.com/mintty/wsltty.git
synced 2025-11-02 08:01:52 +00:00
Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5136d7e878 | ||
|
|
0d39faaaf6 | ||
|
|
d61e551236 | ||
|
|
3f60e3f48c | ||
|
|
a207cae3a8 | ||
|
|
79c3f9e450 | ||
|
|
75c67869bf | ||
|
|
7776748081 | ||
|
|
bac370cfce | ||
|
|
975dbb9398 | ||
|
|
432b71d2fd | ||
|
|
1b41dfa1e0 | ||
|
|
336db2f19b | ||
|
|
1f67e41333 | ||
|
|
0520b71e1f | ||
|
|
92b982690e | ||
|
|
f0a3449ada | ||
|
|
3d4055a63b | ||
|
|
2fb994604a | ||
|
|
5da3a053a9 | ||
|
|
ad65aa9931 | ||
|
|
c9acce8d76 | ||
|
|
1533c27b36 | ||
|
|
3e3eaf6e31 | ||
|
|
482df018c9 | ||
|
|
23fc790c26 | ||
|
|
e5c67ecc7c | ||
|
|
20075c6378 | ||
|
|
fc8e7cda45 | ||
|
|
b23a0a4b3d | ||
|
|
a2414e0dc7 | ||
|
|
963a40d919 | ||
|
|
017b05c48c | ||
|
|
52b03a43d9 |
@@ -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.
|
||||
|
||||
|
||||
31
README.md
31
README.md
@@ -73,12 +73,19 @@ 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
|
||||
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 ###
|
||||
@@ -99,6 +106,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 +130,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 ####
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
installdir=${installdir:-'%LOCALAPPDATA%\wsltty'}
|
||||
configdir=${configdir:-'%APPDATA%\wsltty'}
|
||||
|
||||
PATH=/bin:"$PATH"
|
||||
PATH=/bin:"$PATH":$SYSTEMROOT/System32
|
||||
|
||||
contextmenu=false
|
||||
remove=false
|
||||
@@ -97,21 +97,33 @@ 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
|
||||
appex () {
|
||||
while read line
|
||||
do
|
||||
case "$line" in
|
||||
*Application*Executable*)
|
||||
for item in $line
|
||||
do case "$item" in
|
||||
Executable=*)
|
||||
eval $item
|
||||
echo "$Executable"
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
break;;
|
||||
esac
|
||||
done < $*
|
||||
}
|
||||
|
||||
config () {
|
||||
guid="$1"
|
||||
ok=false
|
||||
case $guid in
|
||||
{*)
|
||||
@@ -131,11 +143,21 @@ do
|
||||
if package=`regtool -q get "$lxss/$guid/PackageFamilyName"`
|
||||
then
|
||||
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"
|
||||
else icon="$installdir"'\wsl.ico'
|
||||
fi
|
||||
root="$basepath/rootfs"
|
||||
elif [ -f "$basepath/$distro.exe" ]
|
||||
then
|
||||
icon="$basepath/$distro.exe"
|
||||
root="$basepath/rootfs"
|
||||
else
|
||||
icon="%LOCALAPPDATA%/lxss/bash.ico"
|
||||
root="$basepath"
|
||||
@@ -151,7 +173,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 +189,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 +247,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 +265,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
|
||||
|
||||
|
||||
21
install.bat
21
install.bat
@@ -26,11 +26,13 @@ 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%"
|
||||
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
|
||||
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"
|
||||
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 +82,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 +92,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 +116,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"
|
||||
|
||||
25
makefile
25
makefile
@@ -8,10 +8,10 @@
|
||||
|
||||
|
||||
# wsltty release
|
||||
ver=1.9.5
|
||||
ver=3.0.2.2
|
||||
|
||||
# wsltty appx release - must have 4 parts!
|
||||
verx=1.9.5.0
|
||||
verx=3.0.2.2
|
||||
|
||||
# Windows SDK version for appx
|
||||
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack
|
||||
@@ -19,7 +19,7 @@ WINSDKVER=`regtool list '$(WINSDKKEY)' | sed -e '$$ q' -e d`
|
||||
|
||||
##############################
|
||||
# mintty release version
|
||||
minttyver=2.9.5
|
||||
minttyver=3.0.2
|
||||
|
||||
# or mintty branch or commit version
|
||||
#minttyver=master
|
||||
@@ -121,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/
|
||||
@@ -140,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
|
||||
@@ -153,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
|
||||
@@ -161,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/
|
||||
@@ -204,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/
|
||||
|
||||
10
makewinx.cfg
10
makewinx.cfg
@@ -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=.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 472 KiB |
76
wslbridge-backend-static.patch
Normal file
76
wslbridge-backend-static.patch
Normal 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
|
||||
Reference in New Issue
Block a user