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

Compare commits

...

74 Commits
0.7.7 ... 1.9.7

Author SHA1 Message Date
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
mintty
fd81d580d6 1.9.0.2 2018-07-04 21:38:33 +02:00
mintty
3281c12216 wslbridge version fix 2018-07-04 21:37:53 +02:00
mintty
46ab74d6b4 fix wslbridge commit reference 2018-07-02 16:37:44 +02:00
mintty
a5b546ee4a 1.9.0 2018-07-02 01:26:08 +02:00
mintty
26a1abb148 Update README.md 2018-05-08 08:43:31 +02:00
mintty
e7709798c5 2018-04-19 08:22:06 +02:00
mintty
37c5e0dc40 2018-04-19 08:08:43 +02:00
mintty
55c034ec66 separators 2018-04-19 07:42:45 +02:00
mintty
df054073ef section package manager installation 2018-04-18 15:24:10 +02:00
mintty
ace39cbd03 revert fruitless attempt to hide VBS from aggressive virus scanners (~#94) 2018-04-18 10:46:17 +02:00
mintty
e9b2e108f7 1.8.5 2018-04-12 20:57:27 +02:00
mintty
f66c87cc62 attempt to avoid virus scanners choking on VBS script name (#94) 2018-04-12 20:56:31 +02:00
mintty
36e0d9c58a prepare release 1.8.5 2018-04-11 16:40:43 +02:00
mintty
5db1916332 use wslbridge wslpath branch, support WSL mount point configuration (/etc/wsl.conf or fstab) (#91) 2018-04-08 11:33:19 +02:00
mintty
8911503a87 2018-04-03 15:28:53 +02:00
mintty
55792acd8d deploy wsl.ico in common resource directory (mintty/wsltty.appx#4) 2018-04-02 23:44:50 +02:00
mintty
b8330e46d8 deploy Character Info names table (#82) 2018-04-02 23:35:40 +02:00
mintty
65553b90ef 1.8.4 2018-02-06 10:51:07 +01:00
mintty
2fb7d02091 Merge branch 'master' of https://github.com/mintty/wsltty 2018-01-25 14:04:58 +01:00
mintty
4c7eb01b93 ensure rebuild of version-specific check and message (#85) 2018-01-25 14:04:22 +01:00
mintty
0fd1dd9077 shell selection and login mode instructions (#56, ~#83) 2018-01-10 21:41:34 +01:00
mintty
64c2d04b56 1.8.3.2 2018-01-09 16:35:05 +01:00
mintty
e283f413ba 1.8.3 2018-01-08 22:21:47 +01:00
mintty
4ce4b11094 remove "-h err" from scripts, shortcuts, context menu (#79) 2017-12-22 12:53:21 +01:00
mintty
84c16fb927 1.8.2 2017-12-16 20:08:31 +01:00
mintty
65bf9273ad support wslbridge-backend build 2017-12-15 21:58:28 +01:00
mintty
36a39d99de ensure tool availability if called from cmd or shortcut (#75) 2017-12-06 22:57:29 +01:00
mintty
be761f3aab try to ensure overwriting previous programs (?#72) 2017-12-05 20:45:02 +01:00
mintty
c3b062c00b bundling selected theme files with the package (mintty/mintty#711) 2017-11-09 17:08:29 +01:00
mintty
149b1a6f1a option -info for listing WSL information 2017-11-07 17:36:39 +01:00
mintty
9fd7a1135b 2017-11-07 17:36:30 +01:00
mintty
92a7cceae2 1.8.1 2017-10-31 01:59:29 +01:00
mintty
1ef83d72e1 add default to context menu 2017-10-30 12:44:21 +01:00
mintty
9be0b3ec10 enhance context menu options; fix removal 2017-10-29 16:47:04 +01:00
mintty
276fb6ae88 remove removed stuff (#65) 2017-10-23 16:53:44 +02:00
mintty
288c56a3d2 1.8.0 2017-10-23 08:35:04 +02:00
mintty
082eb760eb adapt installation 2017-10-23 08:14:40 +02:00
mintty
d5cc2bfe77 2.8.0 2017-10-23 00:01:54 +02:00
mintty
1e453b05e9 revamp deployment of shortcuts, scripts, and context menu entries 2017-10-22 18:57:17 +02:00
mintty
ee8d3b0678 Merge pull request #57 from futureproperty/master
fix brigdeargs -> bridgeargs
2017-09-02 18:41:45 +02:00
futureproperty
2f69d2740d correct a little typo.brigdeargs -> bridgeargs 2017-08-26 03:21:54 +08:00
mintty
4a55503707 1.7.9 2017-07-28 21:32:11 +02:00
mintty
48f69cb11f support new WSL distribution model (#52) 2017-07-28 14:14:51 +02:00
mintty
0a39c664e2 screenshot (#51) 2017-07-04 11:11:21 +02:00
mintty
fecb6c49af 0.7.8.3 2017-07-01 16:44:15 +02:00
mintty
b017982c19 add VERSION_SUFFIX package indication (mintty/wsltty#35, mintty/wsltty#50) 2017-06-29 17:41:41 +02:00
mintty
f6016239df fix wslbridge ref (#49?, likely not) 2017-06-26 13:25:08 +02:00
mintty
b5349bf6db 0.7.8.1 2017-06-24 01:49:27 +02:00
mintty
3b1ecb2e01 0.7.8 2017-06-24 01:32:20 +02:00
mintty
beed642144 workaround to ensure unique configuration location (#45) 2017-05-25 18:07:10 +02:00
mintty
a3c32980e7 add --configdir to default shortcuts, just in case (~#45) 2017-05-24 15:53:43 +02:00
mintty
e6ce36e2bd fix default config directory 2017-05-24 15:35:59 +02:00
mintty
d865b01135 add section Invocation, discourage from starting mintty.exe directly (#42) 2017-05-22 19:49:35 +02:00
mintty
1e7bb5fc6e 0.7.7.1: add proper --configdir to context menu entries (#42) 2017-05-22 15:32:56 +02:00
mintty
8ffb732330 adapted installation and configuration hints to 0.7.7 2017-05-20 20:31:33 +02:00
23 changed files with 667 additions and 281 deletions

View File

@@ -1,4 +1,4 @@
mintty is copyright 2008-13 Andy Koppe, 2015-16 Thomas Wolff. mintty is copyright 2008-13 Andy Koppe, 2015-18 Thomas Wolff.
Licensed under the terms of the GNU General Public License version 3 or later, Licensed under the terms of the GNU General Public License version 3 or later,
amended with the bundling clause to clarify ambiguous interpretation. amended with the bundling clause to clarify ambiguous interpretation.
@@ -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
@@ -26,3 +28,8 @@ The program icon is the apps/utilities-terminal icon from KDE's Oxygen theme,
retrieved from http://websvn.kde.org/trunk/KDE/kdebase/runtime/pics/oxygen. retrieved from http://websvn.kde.org/trunk/KDE/kdebase/runtime/pics/oxygen.
Thanks to the KDE artists for their sleek design. The Oxygen icons are licensed Thanks to the KDE artists for their sleek design. The Oxygen icons are licensed
under the terms of the LGPLv3; see LICENSE.Oxygen for details. under the terms of the LGPLv3; see LICENSE.Oxygen for details.
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.

View File

@@ -1,21 +1,22 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2016 Ryan Prichard Copyright (c) 2016 Ryan Prichard
Copyright (c) 2017-2018 Google LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to Permission is hereby granted, free of charge, to any person obtaining a copy
deal in the Software without restriction, including without limitation the of this software and associated documentation files (the "Software"), to
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or deal in the Software without restriction, including without limitation the
sell copies of the Software, and to permit persons to whom the Software is rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
furnished to do so, subject to the following conditions: sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software. The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
IN THE SOFTWARE. FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

191
README.md
View File

@@ -1,80 +1,183 @@
Mintty as a terminal for Bash on Ubuntu on Windows / WSL. Mintty as a terminal for WSL (Windows Subsystem for Linux).
<img align=right src=wsltty.png>
### Overview ### ### Overview ###
Run the [installer](https://github.com/mintty/wsltty/releases) to install WSLtty components
* wsltty package components (see below) in the users application folder (where WSL is also installed) * wsltty package components (see below) in the users local application folder
* an empty wsltty “home directory” to enable storage of a mintty config file `%LOCALAPPDATA%`
* Start Menu and Desktop shortcuts to start a WSL bash (with some variations, see below) * a wsltty configuration directory in the users application folder `%APPDATA%`
* optional context menu entries for Windows Explorer to start a WSL bash in the respective folder (“home”-located configuration files from a previously installed version
* install/uninstall context menu items from Start Menu subfolder will be migrated to the new default location)
* `wsl*.bat` scripts to invoke wsltty manually (with some variations and invocation options, see below) * Start Menu shortcuts to start WSL terminals
* an uninstall script that can be invoked manually to remove shortcuts and context menu entries * `*.bat` scripts to invoke WSL terminals from the command line
* optional context menu entries for Windows Explorer to start WSL terminals in the respective folder
* install/uninstall context menu items from Start Menu subfolder `WSLtty`
---
### Installation from this repository ###
#### WSLtty installer ([Download](https://github.com/mintty/wsltty/releases) standalone installation) ####
Run the [installer](https://github.com/mintty/wsltty/releases) to install
the components listed above.
If Windows complains with a “Windows protected your PC” popup, If Windows complains with a “Windows protected your PC” popup,
you may need to click “Run anyway” to proceed with the installation. you may need to click “Run anyway” to proceed with the installation.
You may need to open the Properties of the installer first, tab “General” You may need to open the Properties of the installer first, tab “General”
section “Security” (if available) and select “Unblock”, section “Security” (if available) and select “Unblock”,
to enable the “Run anyway” button. to enable the “Run anyway” button.
#### Installation from source repository ####
Download or checkout the wsltty repository.
Invoke `make`, then `make install`.
Note this has to be done within a Cygwin environment.
#### Installation to non-default locations ####
(For experts)
Within the installation process, provide parameters to the script `install.bat`.
The optional first parameter designates the installation target,
the optional second parameter designates the configuration directory.
### Installation with other package management environments ###
#### Chocolatey ####
If you use the [Chocolatey package manager](https://chocolatey.org/),
invoke one of
<img height=222 align=right src=https://github.com/mintty/wsltty.appx/raw/master/wsltty.appx.png>
* `choco install 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 ####
A Windows Appx package and certificate is available in the [wsltty.appx](https://github.com/mintty/wsltty.appx/) repository.
<br clear=all>
---
### Invocation ###
WSLtty can be invoked with
* installed Start Menu shortcuts (or Desktop shortcuts if copied there)
* *.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.
---
### Configuration ### ### Configuration ###
#### Command line scripts `wsl*.bat` ####
WSLtty installs the following scripts in its application folder `%LOCALAPPDATA%\wsltty`:
* `wsl.bat` to start a WSL bash in the current folder/directory
* `wsl~.bat` to start a WSL bash in the WSL user home
* `wsl-l.bat` to start a WSL login bash
To enable invocation of these scripts from WIN+R or from cmd.exe,
copy them from `%LOCALAPPDATA%\wsltty` into `%SYSTEMROOT%\System32`,
renaming them as desired.
(The package does not do this to avoid trouble with missing admin privileges.)
#### Start Menu and Desktop shortcuts #### #### Start Menu and Desktop shortcuts ####
The Start Menu subfolder WSLtty offers three shortcuts: In the Start Menu, the following shortcuts are installed:
* `WSL Bash % in Mintty` to start a WSL bash in the Windows %USERPROFILE% home * For each installed WSL distribution D, D` Terminal` to start in the WSL user home
* `WSL Bash ~ in Mintty` to start a WSL bash in the WSL user home * `WSL Terminal` to start the default WSL distribution (as configured with the Windows tool `wslconfig`)
* `WSL Bash -l in Mintty` to start a WSL login bash
To ensure a login bash to start in your Linux home directory, In the Start Menu subfolder WSLtty, the following shortcuts are installed:
add a `cd` command to your `$HOME/.profile` on Linux side. * For each installed WSL distribution D, D` Terminal %` to start in the Windows %USERPROFILE% home
* `WSL Terminal %` to start the default WSL distribution in the Windows %USERPROFILE% home
One Desktop shortcut is installed:
* `WSL Terminal` to start the default WSL distribution (as configured with the Windows tool `wslconfig`)
Other, distribution-specific shortcuts can be copied to the desktop
from the Start Menu if desired.
#### Command line scripts `wsl*.bat` ####
WSLtty installs the following scripts into `%LOCALAPPDATA%\Microsoft\WindowsApps`
(and a copy in its application folder `%LOCALAPPDATA%\wsltty`):
* For each installed WSL distribution D, D`.bat` to start in the current folder/directory
* For each installed WSL distribution D, D`~.bat` to start in the WSL user home
* `WSL.bat` and `WSL~.bat` to start the default WSL distribution
Given that `%LOCALAPPDATA%\Microsoft\WindowsApps` is in your PATH,
the scripts can be invoked from cmd.exe, PowerShell, or via WIN+R.
#### Context menu entries ####
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`.
#### 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 ####
Mintty can maintain its configuration file in various locations, Mintty can maintain its configuration file in various locations,
with the following precedence: with the following precedence:
* file given with mintty option `-c` * file given with mintty option `-c` (not used by wsltty default installation)
* `%HOME%\.minttyrc` * file `config` in directory given with mintty option `--configdir`
* `%HOME%\.config\mintty\config` * This is `%APPDATA%\wsltty\config` in the default wsltty installation.
* `%HOME%\.minttyrc` (usage deprecated with wsltty)
* `%HOME%\.config\mintty\config` (usage deprecated with wsltty)
* `%APPDATA%\mintty\config` * `%APPDATA%\mintty\config`
* `%LOCALAPPDATA%\wsltty\etc\minttyrc` * `%LOCALAPPDATA%\wsltty\etc\minttyrc` (usage deprecated with wsltty)
Note: Note:
* By default, `%HOME%` would refer to the root directory of the cygwin standalone * `%APPDATA%\wsltty\config` is the new user configuration file location.
installation hosting wsltty. So `%HOME%` would mean `%LOCALAPPDATA%\wsltty\home\%USERNAME%`. Further subdirectories of `%APPDATA%\wsltty` are used for language,
If you define `HOME` at Windows level, this changes accordingly. themes, and sounds resource configuration.
Note, however, that the WSL `HOME` is a completely different setting. Note the distinction from `%LOCALAPPDATA%\wsltty` which is the default
wsltty software installation location.
* The `%APPDATA%\mintty\config` option provides the possibility to * The `%APPDATA%\mintty\config` option provides the possibility to
maintain common mintty settings for various installations (like maintain common mintty settings for various installations (like
wsltty, Cygwin, MinGW/msys, Git for Windows, MinEd for Windows). wsltty, Cygwin, MinGW/msys, Git for Windows, MinEd for Windows).
* (About deprecated options) By default, `%HOME%` would refer to the
root directory of the cygwin standalone installation hosting wsltty.
So `%HOME%` would mean `%LOCALAPPDATA%\wsltty\home\%USERNAME%`.
If you define `HOME` at Windows level, this changes accordingly.
Note, however, that the WSL `HOME` is a completely different setting.
#### Shell selection #### #### Shell selection and Login shell ####
To invoke your favourite shell, simply replace `/bin/bash` with its pathname The WSLtty deployment does not impose a shell preference anymore.
in the Desktop shortcuts, `wsl*.bat` invocation scripts, However, the intermediate gateways (`wslbridge` and its backend and the `bash.exe` Windows launcher)
or Explorer context menu commands (configured in `config-context-menu.bat`). are also involved.
### Components ### To invoke your favourite shell or launch the shell in login mode,
you may append a shell pathname and an optional `-l` parameter
to the mintty invocation (in shortcuts, scripts, or context menu entries):
* `%LOCALAPPDATA%\wsltty\bin\mintty.exe --WSL= --configdir="%APPDATA%\wsltty" /bin/bash -l`
For mintty, see the [Mintty homepage](http://mintty.github.io/), ---
then [Mintty manual page](http://mintty.github.io/mintty.1.html),
and the [Mintty Wiki](https://github.com/mintty/mintty/wiki), ### Components and Credits ###
For mintty, see the [Mintty homepage](http://mintty.github.io/)
(with further screenshots),
the [Mintty manual page](http://mintty.github.io/mintty.1.html),
<br>and the [Mintty Wiki](https://github.com/mintty/mintty/wiki),
including a [Hints and Tips page](https://github.com/mintty/mintty/wiki/Tips). including a [Hints and Tips page](https://github.com/mintty/mintty/wiki/Tips).
It is based on [Cygwin](http://cygwin.com) It is based on [Cygwin](http://cygwin.com)
and includes its runtime library ([sources](http://mirrors.dotsrc.org/cygwin/x86/release/cygwin)). and includes its runtime library ([sources](http://mirrors.dotsrc.org/cygwin/x86/release/cygwin)).
For interacting with WSL, it uses [wslbridge](https://github.com/rprichard/wslbridge). For interacting with WSL, it uses [wslbridge](https://github.com/rprichard/wslbridge).
Many thanks for this enabling gateway go especially to Ryan Prichard.

1
VERSION Normal file
View File

@@ -0,0 +1 @@
1.9.7

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
add default to context menu.lnk Executable file

Binary file not shown.

Binary file not shown.

View File

@@ -1,59 +0,0 @@
@echo off
if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty
if "%configdir%" == "" set configdir=%APPDATA%\wsltty
if "%1"=="/U" goto remove
if "%1"=="/u" goto remove
:add
rem add to Explorer context menu
set userdirname=HKEY_CURRENT_USER\Software\Classes\Directory\shell
set userdirpane=HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell
rem WSL in Mintty
set label=WSL in Mintty
rem set here=in this directory
set here=Here
rem WSL icon
set icon=%LOCALAPPDATA%\lxss\bash.ico
rem WSL target shell
set shell=/bin/bash
rem Mintty invocation
set cmd=%installdir%\bin\mintty.exe
set cset=-o Locale=C -o Charset=UTF-8
set opts=--wsl
set arg=/bin/wslbridge -t %shell%
set target0=\"%cmd%\" %opts% %cset% -i \"%icon%\" %arg%
rem set target1=\"%cmd%\" %opts% %cset% -i \"%icon%\" /bin/dash -c \"cd '%%1'; exec %arg%\"
set target1=\"%cmd%\" %opts% %cset% -i \"%icon%\" --dir \"%%1\" %arg%
rem Registry entries
reg add "%userdirname%\wsltty" /d "%label% %here%" /f
reg add "%userdirname%\wsltty" /v Icon /d "%icon%" /f
reg add "%userdirname%\wsltty\command" /d "%target1%" /f
reg add "%userdirpane%\wsltty" /d "%label% %here%" /f
reg add "%userdirpane%\wsltty" /v Icon /d "%icon%" /f
reg add "%userdirpane%\wsltty\command" /d "%target0%" /f
goto end
:remove
rem remove from Explorer context menu
rem delete Explorer context menu
set userdirname=HKEY_CURRENT_USER\Software\Classes\Directory\shell
set userdirpane=HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell
reg delete "%userdirname%\wsltty" /f
reg delete "%userdirpane%\wsltty" /f
:end

232
config-distros.sh Executable file
View File

@@ -0,0 +1,232 @@
#! /bin/sh
installdir=${installdir:-'%LOCALAPPDATA%\wsltty'}
configdir=${configdir:-'%APPDATA%\wsltty'}
PATH=/bin:"$PATH"
contextmenu=false
remove=false
alldistros=true
config=true
case "/$0" in
*/wsl*)
config=false;;
esac
case "$1" in
-info)
config=false
shift;;
-shortcuts-remove)
remove=true
shift;;
-contextmenu)
contextmenu=true
shift;;
-contextmenu-default)
contextmenu=true
alldistros=false
shift;;
-contextmenu-remove)
contextmenu=true
remove=true
direckey='/HKEY_CURRENT_USER/Software/Classes/Directory'
regtool list "$direckey/shell" 2>/dev/null |
while read name
do
case `regtool get "$direckey/shell/$name/command/"` in
*bin\\mintty.exe*/bin/wslbridge*|*bin\\mintty.exe*--WSL*)
regtool remove "$direckey/shell/$name/command"
regtool remove "$direckey/shell/$name"
;;
esac
done
regtool list "$direckey/Background/shell" 2>/dev/null |
while read name
do
case `regtool get "$direckey/Background/shell/$name/command/"` in
*bin\\mintty.exe*/bin/wslbridge*|*bin\\mintty.exe*--WSL*)
regtool remove "$direckey/Background/shell/$name/command"
regtool remove "$direckey/Background/shell/$name"
;;
esac
done
exit
shift;;
esac
# test w/o WSL: call this script with REGTOOLFAKE=true dash config-distros.sh
if ${REGTOOLFAKE:-false}
then
regtool () {
case "$1" in
-*) shift;;
esac
key=`echo $2 | sed -e 's,.*{\(.*\)}.*,\1,' -e t -e d`
case "$1.$2" in
list.*)
if $contextmenu
then echo "{0}"
else echo "{1}"; echo "{2}"
fi;;
get.*/DistributionName)
echo "distro$key";;
get.*/BasePath)
echo "C:\\Program\\{$key}\\State";;
get.*/PackageFamilyName)
echo "distro{$key}";;
get.*/PackageFullName)
echo "C:\\Program\\{$key}";;
esac
}
fi
# dash built-in echo enforces interpretation of \t etc
echoc () {
cmd /c echo $*
}
if $config
then while read line; do echo "$line"; done <</EOB > mkbat.bat
@echo off
echo Creating %1.bat
echo @echo off> %1.bat
echo rem Start mintty terminal for WSL package %name% in current directory>> %1.bat
echo %target% -i "%icon%" %minttyargs% %bridgeargs% %%*>> %1.bat
/EOB
fi
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
ok=false
case $guid in
{*)
distro=`regtool get "$lxss/$guid/DistributionName"`
case "$distro" in
Legacy)
name="Bash on Windows"
launch=
launcher="$SYSTEMROOT/System32/bash.exe"
;;
*) name="$distro"
launch="$distro"
launcher="$LOCALAPPDATA/Microsoft/WindowsApps/$distro.exe"
;;
esac
basepath=`regtool get "$lxss/$guid/BasePath"`
if package=`regtool -q get "$lxss/$guid/PackageFamilyName"`
then
instdir=`regtool get "$schema/$package/Schemas/PackageFullName"`
if [ -r "$ProgramW6432/WindowsApps/$instdir/images/icon.ico" ]
then icon="%PROGRAMFILES%/WindowsApps/$instdir/images/icon.ico"
else icon="$installdir"'\wsl.ico'
fi
root="$basepath/rootfs"
else
icon="%LOCALAPPDATA%/lxss/bash.ico"
root="$basepath"
fi
minttyargs='--wsl --rootfs="'"$root"'" --configdir="'"$configdir"'" -o Locale=C -o Charset=UTF-8 /bin/wslbridge '
minttyargs='--WSL="'"$distro"'" --configdir="'"$configdir"'"'
#if [ -z "$launch" ]
#then bridgeargs='-t /bin/bash'
#else bridgeargs='-l "'"$launch"'" -t /bin/bash'
#fi
bridgeargs='--distro-guid "'"$guid"'" -t /bin/bash'
bridgeargs='--distro-guid "'"$guid"'" -t'
ok=true;;
"") # WSL default installation
distro=
name=WSL
icon="$installdir"'\wsl.ico'
minttyargs='--WSL= --configdir="'"$configdir"'"'
bridgeargs='-t'
ok=true;;
esac
echoc "distro '$distro'"
echoc "- name '$name'"
echoc "- guid $guid"
echoc "- (launcher $launcher)"
echoc "- icon $icon"
echoc "- root $root"
target="$installdir"'\bin\mintty.exe'
bridgeargs=" " # deprecated
if $ok && $config
then
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\\$keyname" /f
reg delete "$direckey\\Background\\shell\\$keyname" /f
else
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
if $remove
then
cmd /C del "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\$name Terminal.lnk"
cmd /C del "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name.bat"
cmd /C del "%LOCALAPPDATA%\\Microsoft\\WindowsApps\\$name~.bat"
else
# desktop shortcut in %USERPROFILE% -> Start Menu - WSLtty
cscript /nologo mkshortcut.vbs "/name:$name Terminal %"
cmd /C copy "$name Terminal %.lnk" "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\WSLtty"
# launch script in . -> WSLtty home, WindowsApps launch folder
cmd /C mkbat.bat "$name"
cmd /C copy "$name.bat" "$installdir"
cmd /C copy "$name.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
# prepare versions to target WSL home directory
#bridgeargs="-C~ $bridgeargs"
minttyargs="$minttyargs -~"
# desktop shortcut in ~ -> Start Menu
cscript /nologo mkshortcut.vbs "/name:$name Terminal"
cmd /C copy "$name Terminal.lnk" "%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs"
# default desktop shortcut in ~ -> Desktop
if [ "$name" = "WSL" ]
then cmd /C copy "$name Terminal.lnk" "%USERPROFILE%\\Desktop"
fi
# launch script in ~ -> WSLtty home, WindowsApps launch folder
cmd /C mkbat.bat "$name~"
cmd /C copy "$name~.bat" "$installdir"
cmd /C copy "$name~.bat" "%LOCALAPPDATA%\\Microsoft\\WindowsApps"
fi
fi
fi
done

BIN
configure WSL shortcuts.lnk Executable file

Binary file not shown.

View File

@@ -14,72 +14,81 @@ if not "%2" == "" set refconfigdir=%2 && set configdir=%2
:deploy :deploy
mkdir "%installdir%" mkdir "%installdir%"
rem clean up previous installation artefacts
del /Q "%installdir%\*.bat"
del /Q "%installdir%\*.lnk"
copy LICENSE.mintty "%installdir%" copy LICENSE.mintty "%installdir%"
copy LICENSE.wslbridge "%installdir%" copy LICENSE.wslbridge "%installdir%"
echo @echo off> setdirs.bat
echo set refinstalldir=%refinstalldir%>> setdirs.bat
echo set installdir=%installdir%>> setdirs.bat
echo set refconfigdir=%refconfigdir%>> setdirs.bat
echo set configdir=%configdir%>> setdirs.bat
copy setdirs.bat + wsl.bat "%installdir%\wsl.bat"
copy setdirs.bat + wsl~.bat "%installdir%\wsl~.bat"
copy setdirs.bat + wsl-l.bat "%installdir%\wsl-l.bat"
copy setdirs.bat + uninstall.bat "%installdir%\uninstall.bat"
copy setdirs.bat + config-context-menu.bat "%installdir%\config-context-menu.bat"
copy "add to context menu.lnk" "%installdir%" copy "add 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%"
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
del /Q "%installdir%\bin\*.old"
ren "%installdir%\bin\cygwin1.dll" cygwin1.dll.old
ren "%installdir%\bin\cygwin-console-helper.exe" cygwin-console-helper.exe.old
ren "%installdir%\bin\mintty.exe" mintty.exe.old
ren "%installdir%\bin\wslbridge.exe" wslbridge.exe.old
ren "%installdir%\bin\wslbridge-backend" wslbridge-backend.old
del /Q "%installdir%\bin\*.old"
:instbin
mkdir "%installdir%\bin" mkdir "%installdir%\bin"
copy cygwin1.dll "%installdir%\bin" copy cygwin1.dll "%installdir%\bin"
copy cygwin-console-helper.exe "%installdir%\bin" copy cygwin-console-helper.exe "%installdir%\bin"
rem copy dash.exe "%installdir%\bin"
copy mintty.exe "%installdir%\bin" copy mintty.exe "%installdir%\bin"
copy zoo.exe "%installdir%\bin"
copy wslbridge.exe "%installdir%\bin" copy wslbridge.exe "%installdir%\bin"
copy wslbridge-backend "%installdir%\bin" copy wslbridge-backend "%installdir%\bin"
copy dash.exe "%installdir%\bin"
copy regtool.exe "%installdir%\bin"
copy zoo.exe "%installdir%\bin"
rem create system config directory and copy config archive rem create system config directory and copy config archive
mkdir "%installdir%\usr\share\mintty\lang" mkdir "%installdir%\usr\share\mintty\lang"
copy po.zoo "%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\info"
copy charnames.txt "%installdir%\usr\share\mintty\info"
mkdir "%installdir%\usr\share\mintty\icon"
copy tux.ico "%installdir%\usr\share\mintty\icon"
copy mintty.ico "%installdir%\usr\share\mintty\icon"
:shortcuts
rem generate shortcuts
set icon=%%LOCALAPPDATA%%\lxss\bash.ico
set target=%refinstalldir%\bin\mintty.exe
set minttyargs=--wsl --configdir="%refconfigdir%" -o Locale=C -o Charset=UTF-8 /bin/wslbridge
set bridgeargs=-t /bin/bash
cscript mkshortcut.vbs "/name:WSL Bash %% in Mintty"
set bridgeargs=-C~ -t /bin/bash
cscript mkshortcut.vbs "/name:WSL Bash ~ in Mintty"
set bridgeargs=-t /bin/bash -l
cscript mkshortcut.vbs "/name:WSL Bash -l in Mintty"
rem create Start Menu Folder rem create Start Menu Folder
set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty
mkdir "%smf%" mkdir "%smf%"
rem clean up previous installation
del /Q "%smf%\*.lnk"
copy "wsltty home & help.url" "%smf%" copy "wsltty home & help.url" "%smf%"
copy "WSL Bash %% in Mintty.lnk" "%smf%" copy "add to context menu.lnk" "%smf%"
copy "WSL Bash ~ in Mintty.lnk" "%smf%" copy "add default to context menu.lnk" "%smf%"
copy "WSL Bash -l in Mintty.lnk" "%smf%" copy "remove from context menu.lnk" "%smf%"
mkdir "%smf%\context menu shortcuts" copy "configure WSL shortcuts.lnk" "%smf%"
copy "add to context menu.lnk" "%smf%\context menu shortcuts" rem copy "WSL Terminal.lnk" "%smf%"
copy "remove from context menu.lnk" "%smf%\context menu shortcuts" rem copy "WSL Terminal %%.lnk" "%smf%"
rem clean up previous installation
rem create Desktop Shorcuts rmdir /S /Q "%smf%\context menu shortcuts"
copy "WSL Bash %% in Mintty.lnk" "%USERPROFILE%\Desktop"
copy "WSL Bash ~ in Mintty.lnk" "%USERPROFILE%\Desktop"
:sysconfig
rem unpack config files in system config directory rem unpack config files in system config directory
cd /D "%installdir%\usr\share\mintty\lang" cd /D "%installdir%\usr\share\mintty\lang"
"%installdir%\bin\zoo" xO po "%installdir%\bin\zoo" xO lang
cd /D "%installdir%\usr\share\mintty\themes"
"%installdir%\bin\zoo" xO themes
:migrate configuration :migrate configuration
@@ -105,5 +114,13 @@ mkdir "%configdir%\lang"
mkdir "%configdir%\sounds" mkdir "%configdir%\sounds"
mkdir "%configdir%\themes" mkdir "%configdir%\themes"
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"
rem distro-specific stuff: shortcuts and launch scripts
cd "%installdir%"
bin\dash.exe "%installdir%\config-distros.sh"
rem bin\dash.exe "%installdir%\config-distros.sh" -contextmenu
:end :end

188
makefile
View File

@@ -2,27 +2,63 @@
# build a wsltty installer package: # build a wsltty installer package:
# configure ver=... and minttyver= in this makefile # configure ver=... and minttyver= in this makefile
# make targets: # make targets:
# make [all] to build a distributable installer (default) # make [all] build a distributable installer (default)
# make pkg to build an installer, bypassing the system checks # make pkg build an installer, bypassing the system checks
# make wsltty to build an installer using the local copy of mintty # make wsltty build the software, using the local copy of mintty
all: check pkg
# wsltty release # wsltty release
ver=0.7.7 ver=1.9.7
# wsltty appx release - must have 4 parts!
verx=1.9.7.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 # mintty release version
minttyver=2.7.7 minttyver=2.9.7
# or mintty branch or commit version
#minttyver=master #minttyver=master
# wslbridge backend version ##############################
wslbridgever=0.2.1 # wslbridge binary package; may be overridden below
# wslbridge frontend version wslbridge=wslbridge-package
# release 0.2.0 does not have cygwin_internal(CW_SYNC_WINENV) yet; wslbridgever=0.2.4
# therefore using "master" below
#wslbridge-frontend=wslbridge-frontend # or wslbridge branch or commit to build from source;
# release 0.2.1 is updated and complete, no separate frontend build needed: # also set wslbridge-commit
wslbridge-frontend= wslbridge=wslbridge-frontend wslbridge-backend
# release 0.2.0 does not have cygwin_internal(CW_SYNC_WINENV) yet:
#wslbridge-commit=master
# use --distro-guid option (merged into 0.2.4):
#wslbridge-commit=cb22e3f6f989cefe5b6599d3c04422ded74db664
# after 0.2.4, from branch login-mode:
wslbridge-commit=04a060505860915c99bc336dbeb80269771a80b7
# after 0.2.4, from branch wslpath:
wslbridge-commit=29df86d87135caec8424c08f031ce121a3a39ae1
# after 0.2.4, merged wslpath branch:
wslbridge-commit=06fb7acba28d7f37611f3911685af214739895a0
# after 0.2.4, with --backend option:
wslbridge-commit=47b41bec6c32da58ab01de9345087b1a4fd836e3
#############################################################################
# default target
all: all-$(notdir $(CURDIR))
all-wsltty: check pkg
all-wsltty.appx: appx
############################################################################# #############################################################################
# target checking and some defs # target checking and some defs
@@ -45,77 +81,140 @@ wget=curl -R -L --connect-timeout 55 -O
wgeto=curl -R -L --connect-timeout 55 wgeto=curl -R -L --connect-timeout 55
############################################################################# #############################################################################
# system check; # system check:
# for now, let's enforce Cygwin 32-Bit as the container for wsltty # - ensure the path name drag-and-drop adaptation works (-> Cygwin, not MSYS)
# just in case there is a 32-Bit WSL released (-> 32 bit), and to ensure # - 64 Bit (x86_64) for more stable invocation (avoid fork issues)
# the path name drag-and-drop adaptation works (-> cygwin, not msys)
check: check:
# checking suitable host environment; run `make pkg` to bypass # checking suitable host environment; run `make pkg` to bypass
# check cygwin (vs msys) for proper drag-and-drop paths: # check cygwin (vs msys) for proper drag-and-drop paths:
uname | grep CYGWIN uname | grep CYGWIN
# check 32 bit (vs 64 bit) to ensure 32-Bit Windows support, just in case: # check 32 bit to ensure 32-Bit Windows support, just in case:
#uname -m | grep i686 #uname -m | grep i686
# check 64 bit (vs 32 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
wslbridge: wslbridge-backend $(wslbridge-frontend) wslbridge: $(wslbridge)
wslbridge-backend: wslbridge-package:
$(wget) https://github.com/rprichard/wslbridge/releases/download/$(wslbridgever)/wslbridge-$(wslbridgever)-$(sys).tar.gz $(wget) https://github.com/rprichard/wslbridge/releases/download/$(wslbridgever)/wslbridge-$(wslbridgever)-$(sys).tar.gz
tar xvzf wslbridge-$(wslbridgever)-$(sys).tar.gz tar xvzf wslbridge-$(wslbridgever)-$(sys).tar.gz
mkdir -p bin mkdir -p bin
cp wslbridge-$(wslbridgever)-$(sys)/wslbridge* bin/ cp wslbridge-$(wslbridgever)-$(sys)/wslbridge* bin/
cp wslbridge-$(wslbridgever)-$(sys)/LICENSE.txt LICENSE.wslbridge tr -d '\015' < wslbridge-$(wslbridgever)-$(sys)/LICENSE.txt > LICENSE.wslbridge
wslbridge-frontend: wslbridge-source: wslbridge-$(wslbridge-commit).zip
$(wgeto) https://github.com/rprichard/wslbridge/archive/master.zip -o wslbridge-master.zip unzip -o wslbridge-$(wslbridge-commit).zip
unzip -o wslbridge-master.zip tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge
cd wslbridge-master/frontend; make
strip wslbridge-master/out/wslbridge.exe wslbridge-$(wslbridge-commit).zip:
$(wgeto) https://github.com/rprichard/wslbridge/archive/$(wslbridge-commit).zip -o wslbridge-$(wslbridge-commit).zip
wslbridge-frontend: wslbridge-source
cd wslbridge-$(wslbridge-commit)/frontend; make
strip wslbridge-$(wslbridge-commit)/out/wslbridge.exe
mkdir -p bin mkdir -p bin
cp wslbridge-master/out/wslbridge.exe bin/ cp wslbridge-$(wslbridge-commit)/out/wslbridge.exe bin/
cp wslbridge-master/LICENSE.txt LICENSE.wslbridge
mintty: mintty-get mintty-build wslbridge-backend: wslbridge-source
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/
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"
appxbuild=$(wslbuild) CCOPT=-DWSLTTY_APPX
wslversion=VERSION_SUFFIX=" wsltty $(ver)" WSLTTY_VERSION="$(ver)"
appxversion=VERSION_SUFFIX=" wsltty appx $(verx)" WSLTTY_VERSION="$(verx)"
mintty-build: mintty-build:
cd mintty-$(minttyver)/src; make LDFLAGS="-static -static-libgcc -s" # ensure rebuild of version-specific check and message
rm -f mintty-$(minttyver)/bin/*/windialog.o
# build mintty
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/
mintty-build-appx:
# ensure rebuild of version-specific check and message
rm -f mintty-$(minttyver)/bin/*/windialog.o
# build mintty
cd mintty-$(minttyver)/src; make $(appxbuild) $(appxversion)
mkdir -p bin
cp mintty-$(minttyver)/bin/mintty.exe bin/
mintty-pkg:
cp mintty-$(minttyver)/LICENSE LICENSE.mintty cp mintty-$(minttyver)/LICENSE LICENSE.mintty
cd mintty-$(minttyver)/lang; zoo a po *.po; mv po.zoo ../../ cd mintty-$(minttyver)/lang; zoo a lang *.po; mv lang.zoo ../../
cd mintty-$(minttyver)/themes; zoo a themes *[!~]; mv themes.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
cp mintty-$(minttyver)/lang/*.po usr/share/mintty/lang/
cp mintty-$(minttyver)/themes/*[!~] usr/share/mintty/themes/
# add charnames.txt to support "Character Info"
cd mintty-$(minttyver)/src; sh ./mknames
cp mintty-$(minttyver)/src/charnames.txt usr/share/mintty/info/
cygwin: cygwin:
mkdir -p bin mkdir -p bin
cp /bin/cygwin1.dll bin/ cp /bin/cygwin1.dll bin/
cp /bin/cygwin-console-helper.exe bin/ cp /bin/cygwin-console-helper.exe bin/
#cp /bin/dash.exe bin/ cp /bin/dash.exe bin/
cp /bin/regtool.exe bin/
cp /bin/zoo.exe bin/ cp /bin/zoo.exe bin/
appx-bin:
mkdir -p bin
cp /bin/cygwin1.dll bin/
cp /bin/cygwin-console-helper.exe bin/
cop: ver cop: ver
mkdir -p rel mkdir -p rel
rm -fr rel/wsltty-$(ver)-install.exe rm -fr rel/wsltty-$(ver)-install.exe
sed -e "s,%version%,$(ver)," makewinx.cfg > rel/wsltty.SED sed -e "s,%version%,$(ver)," makewinx.cfg > rel/wsltty.SED
cp bin/cygwin1.dll rel/ cp bin/cygwin1.dll rel/
cp bin/cygwin-console-helper.exe rel/ cp bin/cygwin-console-helper.exe rel/
#cp bin/dash.exe rel/ cp bin/dash.exe rel/
cp bin/regtool.exe rel/
cp bin/mintty.exe rel/ cp bin/mintty.exe rel/
cp bin/zoo.exe rel/ cp bin/zoo.exe rel/
cp po.zoo rel/ cp lang.zoo rel/
cp themes.zoo 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/
cp LICENSE.* rel/ cp LICENSE.* rel/
cp VERSION rel/
cp *.lnk rel/ cp *.lnk rel/
cp *.ico rel/
cp *.url rel/ cp *.url rel/
cp *.bat rel/ cp *.bat rel/
cp *.sh rel/
cp *.vbs rel/ cp *.vbs rel/
cab: cop cab: cop
@@ -129,9 +228,22 @@ installbat:
ver: ver:
echo $(ver) > VERSION echo $(ver) > VERSION
pkg: wslbridge cygwin mintty cab mintty: mintty-get mintty-build
wsltty: wslbridge cygwin mintty-build cab mintty-usr: mintty-get mintty-appx
# local wsltty build target:
wsltty: wslbridge cygwin mintty-build mintty-pkg
# standalone wsltty package build target:
pkg: wslbridge cygwin mintty-get mintty-build mintty-pkg cab
# appx package contents target:
wsltty-appx: wslbridge appx-bin mintty-get mintty-build-appx mintty-appx
# appx package target:
appx: wsltty-appx fix-verx
sh ./build.sh
############################################################################# #############################################################################
# end # end

View File

@@ -23,9 +23,9 @@ UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles SourceFiles=SourceFiles
[Strings] [Strings]
InstallPrompt=Install Mintty terminal for WSL / Ubuntu on Windows? InstallPrompt=Install Mintty terminal for WSL (Windows Subsystem for Linux)?
DisplayLicense= DisplayLicense=
FinishMessage=Mintty for WSL installed - for documentation see https://github.com/mintty/mintty/wiki/Tips FinishMessage=Mintty for WSL installed - for documentation 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
@@ -39,21 +39,24 @@ FILE3="wslbridge.exe"
FILE4="wslbridge-backend" FILE4="wslbridge-backend"
FILE5="LICENSE.mintty" FILE5="LICENSE.mintty"
FILE6="LICENSE.wslbridge" FILE6="LICENSE.wslbridge"
FILE7="WSL Bash % in Mintty.lnk" FILE7="config-distros.sh"
FILE8="WSL Bash ~ in Mintty.lnk" FILE8="configure WSL shortcuts.lnk"
FILE9="WSL Bash -l in Mintty.lnk" FILE9="charnames.txt"
FILE10="wsl.bat" FILE10="VERSION"
FILE11="wsl~.bat" FILE11="dash.exe"
FILE12="wsl-l.bat" FILE12="regtool.exe"
FILE13="install.bat" FILE13="install.bat"
FILE14="uninstall.bat" FILE14="uninstall.bat"
FILE15="config-context-menu.bat" FILE15="tux.ico"
FILE16="add to context menu.lnk" FILE16="add to context menu.lnk"
FILE17="remove from context menu.lnk" FILE17="add default to context menu.lnk"
FILE18="wsltty home & help.url" FILE18="remove from context menu.lnk"
FILE19="zoo.exe" FILE19="wsltty home & help.url"
FILE20="po.zoo" FILE20="zoo.exe"
FILE21=mkshortcut.vbs FILE21="lang.zoo"
FILE22="themes.zoo"
FILE23="mkshortcut.vbs"
FILE24="mintty.ico"
[SourceFiles] [SourceFiles]
SourceFiles0=. SourceFiles0=.
@@ -81,4 +84,7 @@ SourceFiles0=.
%FILE19%= %FILE19%=
%FILE20%= %FILE20%=
%FILE21%= %FILE21%=
%FILE22%=
%FILE23%=
%FILE24%=

View File

@@ -1,18 +1,20 @@
rem cscript mkshortcut.vbs [/param:arg] /target:link rem cscript mkshortcut.vbs [/param:arg] /target:link
rem %
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash
rem ~
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -C~ -t /bin/bash
rem -l
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash -l
rem /target:%LOCALAPPDATA%\wsltty\bin\mintty.exe rem /target:%LOCALAPPDATA%\wsltty\bin\mintty.exe
rem /workingdir:%USERPROFILE% rem /workingdir:%USERPROFILE%
rem /icon:%LOCALAPPDATA%\lxss\bash.ico rem /icon:%LOCALAPPDATA%\wsltty\wsl.ico
rem deprecated: /icon:%LOCALAPPDATA%\lxss\bash.ico
rem deprecated: %
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash
rem deprecated: ~
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -C~ -t /bin/bash
rem deprecated: -l
rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash -l
rem General - Name: rem General - Name:
name = Wscript.Arguments.Named("name") & ".lnk" name = Wscript.Arguments.Named("name") & ".lnk"
set wshell = WScript.CreateObject("WScript.Shell") set wshell = WScript.CreateObject("WScript.Shell")
wscript.echo "Creating " & name
set lnk = wshell.CreateShortcut(name) set lnk = wshell.CreateShortcut(name)
rem Target: rem Target:
@@ -22,9 +24,9 @@ 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
wscript.echo "minttyargs: " & minttyargs rem wscript.echo "minttyargs: " & minttyargs
wscript.echo lnk.Arguments rem wscript.echo lnk.Arguments
rem Start in: rem Start in:
rem lnk.WorkingDirectory = Wscript.Arguments.Named("workingdir") rem lnk.WorkingDirectory = Wscript.Arguments.Named("workingdir")
@@ -35,9 +37,10 @@ rem icon = Wscript.Arguments.Named("icon")
rem rem iconoffset = Wscript.Arguments.Named("iconoffset") rem rem iconoffset = Wscript.Arguments.Named("iconoffset")
rem rem icon = icon & ", " & iconoffset rem rem icon = icon & ", " & iconoffset
icon = wshell.ExpandEnvironmentStrings("%icon%") icon = wshell.ExpandEnvironmentStrings("%icon%")
wscript.echo "icon: " & icon rem wscript.echo "icon: " & icon
lnk.IconLocation = icon lnk.IconLocation = icon
rem lnk.IconLocation = "%LOCALAPPDATA%\lxss\bash.ico" rem rem lnk.IconLocation = "%LOCALAPPDATA%\lxss\bash.ico"
rem lnk.IconLocation = "%LOCALAPPDATA%\wsltty\wsl.ico"
rem Shorcut key: rem Shorcut key:
rem lnk.HotKey = "ALT+CTRL+W" rem lnk.HotKey = "ALT+CTRL+W"
@@ -50,3 +53,5 @@ rem lnk.IconLocation = Wscript.Arguments.Named("desc")
rem lnk.Description = "WSLtty" rem lnk.Description = "WSLtty"
lnk.Save lnk.Save
wscript.echo "Created " & name
wscript.echo

Binary file not shown.

BIN
tux.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

View File

@@ -9,20 +9,26 @@ rem delete Start Menu Folder
set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty
rmdir /S /Q "%smf%" rmdir /S /Q "%smf%"
rem delete Desktop Shortcuts rem delete Desktop Shortcuts (not installed anymore)
del "%USERPROFILE%\Desktop\WSL Bash % in Mintty.lnk" rem del "%USERPROFILE%\Desktop\WSL % in Mintty.lnk"
del "%USERPROFILE%\Desktop\WSL Bash ~ in Mintty.lnk" rem del "%USERPROFILE%\Desktop\WSL ~ in Mintty.lnk"
:start menu
cd %installdir%
bin\dash.exe config-distros.sh -shortcuts-remove
:explorer context menu :explorer context menu
call "%installdir%\config-context-menu.bat" /U cd %installdir%
bin\dash.exe config-distros.sh -contextmenu-remove
:undeploy :undeploy
cd %installdir% cd %installdir%
rem currently not removing software rem currently not removing software

View File

@@ -1,15 +0,0 @@
@echo off
rem Start mintty terminal for WSL in home directory
if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty
if "%configdir%" == "" set configdir=%APPDATA%\wsltty
rem To enable invocation of this script from WIN+R or from cmd.exe,
rem you may want to copy this script into "%SYSTEMROOT%\System32"
rem You may want a variant of this script without trailing "-l"
rem to start in the current directory from cmd.exe
"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash -l

15
wsl.bat
View File

@@ -1,15 +0,0 @@
@echo off
rem Start mintty terminal for WSL in home directory
if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty
if "%configdir%" == "" set configdir=%APPDATA%\wsltty
rem To enable invocation of this script from WIN+R or from cmd.exe,
rem you may want to copy this script into "%SYSTEMROOT%\System32"
rem You may want a variant of this script without trailing "-l"
rem to start in the current directory from cmd.exe
"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash

BIN
wsltty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,15 +0,0 @@
@echo off
rem Start mintty terminal for WSL in home directory
if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty
if "%configdir%" == "" set configdir=%APPDATA%\wsltty
rem To enable invocation of this script from WIN+R or from cmd.exe,
rem you may want to copy this script into "%SYSTEMROOT%\System32"
rem You may want a variant of this script without trailing "-l"
rem to start in the current directory from cmd.exe
"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -C~ -t /bin/bash