1
0
mirror of https://github.com/mintty/wsltty.git synced 2025-11-07 18:41:56 +00:00

Compare commits

..

10 Commits

Author SHA1 Message Date
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
8 changed files with 141 additions and 21 deletions

View File

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

@@ -99,6 +99,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`
@@ -117,9 +123,16 @@ 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 #### #### Icon ####

View File

@@ -1 +1 @@
1.9.7 3.0.1.2

View File

@@ -104,14 +104,8 @@ fi
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) | config () {
( guid="$1"
if $alldistros
then regtool list "$lxss" 2>/dev/null
else true
fi && echo || echo "No WSL packages registered" >&2) |
while read guid
do
ok=false ok=false
case $guid in case $guid in
{*) {*)
@@ -151,7 +145,7 @@ 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="$installdir"'\wsl.ico' icon="$installdir"'\wsl.ico'
@@ -169,6 +163,13 @@ do
target="$installdir"'\bin\mintty.exe' target="$installdir"'\bin\mintty.exe'
bridgeargs=" " # deprecated 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 name target minttyargs bridgeargs icon export name target minttyargs bridgeargs icon
@@ -218,7 +219,14 @@ 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
@@ -229,4 +237,18 @@ do
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

@@ -60,6 +60,8 @@ 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"
@@ -89,6 +91,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
@@ -111,8 +115,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,10 +8,10 @@
# wsltty release # wsltty release
ver=1.9.8 ver=3.0.1.2
# wsltty appx release - must have 4 parts! # wsltty appx release - must have 4 parts!
verx=1.9.8.0 verx=3.0.1.2
# Windows SDK version for appx # Windows SDK version for appx
WINSDKKEY=/HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Microsoft/.NET Framework Platform/Setup/Multi-Targeting Pack 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 # mintty release version
minttyver=2.9.8 minttyver=3.0.1
# or mintty branch or commit version # or mintty branch or commit version
#minttyver=master #minttyver=master
@@ -121,18 +121,26 @@ 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
# 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 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/
@@ -154,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
@@ -162,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/
@@ -205,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/

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
@@ -55,8 +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="mkshortcut.vbs" FILE23="sounds.zoo"
FILE24="mintty.ico" FILE24="mkshortcut.vbs"
FILE25="mintty.ico"
[SourceFiles] [SourceFiles]
SourceFiles0=. SourceFiles0=.
@@ -87,4 +88,5 @@ SourceFiles0=.
%FILE22%= %FILE22%=
%FILE23%= %FILE23%=
%FILE24%= %FILE24%=
%FILE25%=

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