wsl-terminal
A terminal emulator for Windows Subsystem for Linux (WSL), based on mintty, fatty and wslbridge.
Screenshot
More screenshots here.
Usage
-
Download here, or run
bash -c "wget https://github.com/goreliu/wsl-terminal/releases/download/v0.8.13/wsl-terminal-0.8.13.7z && 7z x wsl-terminal-0.8.13.7z"
incmd.exe
or WSL. -
Run
open-wsl.exe
to open a WSL terminal in current directory (need to be on a local NTFS volume, more details). -
Run
tools/1-add-open-wsl-terminal-here-menu.js
(help) to add aOpen wsl-terminal Here
context menu toexplorer.exe
(Runtools/1-remove-open-wsl-terminal-here-menu.js
to remove it). If you are using Total Commander, Use wsl-terminal with Total Commander may help you. -
run-wsl-file.exe
can run any.sh
(or any others like.py
.pl
) script files in wsl-terminal, supportOpen With
context menu inexplorer.exe
. -
vim.exe
can open any files with vim (in wsl-terminal), supportOpen With
context menu inexplorer.exe
.vim.exe
can be renamed toemacs.exe
nvim.exe
nano.exe
...
to open files inemacs
nvim
nano
...
.
Keyboard shortcuts, key, function, --------------------------, -------------------------------------, Alt
+ Enter
, Fullscreen, Alt
+ F2
, New window, Alt
+ F3
, Search text, Ctrl
+ [Shift]
+ Tab
, Switch window, Ctrl
+ =
+
-
0
, Zoom, Ctrl
+ Click
, Open URL or dir/file under the cursor, Ctrl
+ Right Click
, Open context menu, Bind wsl-terminal to a hotkey.
Params
open-wsl
Usage: open-wsl [OPTION]...
-a: activate an existing wsl-terminal window.
if use_tmux=1, attach the running tmux session.
-l: start a login shell and cd to $HOME (doesn't work with use_tmux=1).
-c command: run command (e.g. -c "echo a b; echo c; cat").
-e commands: run commands (e.g. -e echo a b; echo c; cat).
-C dir: change directory to a WSL dir (e.g. /home/username).
-W dir: change directory to a Windows dir (e.g. c:\Users\username).
-d distro: switch distros.
-b "options": pass additional options to wslbridge.
-B "options": pass additional options to mintty.
-h: show help.
For -B
and -b
, see also mintty params and wslbridge params.
cmdtool (run it in WSL)
Usage: cmdtool [OPTION]...
wcmd: run Windows programs with cmd.exe /c.
wstart: run Windows programs with cmd.exe /c start.
wstartex file, url: like wstart, but use WSL file path.
update: check the latest wsl-terminal version, and upgrade it.
killall: kill all WSL processes.
install dash: install Cygwin dash (for debugging).
install busybox: install Cygwin busybox (for debugging).
Tools
Files in tools
directory:, filename, function, -------------------------------------------, -------------------------------------------------------------------, 1-add-open-wsl-terminal-here-menu.js, Add Open wsl-terminal Here
context menu to explorer.exe
., 1-remove-open-wsl-terminal-here-menu.js, Remove Open wsl-terminal Here
context menu., 2-add-wsl-terminal-dir-to-path.js, Add wsl-terminal
directory to Path
environment variable., 2-remove-wsl-terminal-dir-from-path.js, Remove wsl-terminal
directory from Path
environment variable., 3-write-distro-guids-to-config-file.js, Write distro guids to etc/wsl-terminal.conf
., 4-create-start-menu-shortcut.js, Create a start menu shortcut to open-wsl -C ~
., 4-create-start-menu-shortcut-login-shell.js, Create a start menu shortcut to open-wsl -l
., 4-remove-all-start-menu-shortcuts.js, Remove all wsl-terminal start menu shortcuts., 5-add-open-with-vim-menu.js, Add Open with vim in wsl-terminal
context menu., 5-remove-open-with-vim-menu.js, Remove Open with vim in wsl-terminal
context menu., 6-set-default-shell.bat, Set shell
in etc/wsl-terminal.conf
to the default shell in WSL., Double click any .js
file to run it. If it was open by any editor, open it with Microsoft (R) Windows Based Script Host
, or open a cmd.exe
in tools
directory and run wscript xxx.js
.
Configuration files
etc/wsl-terminal.conf
is wsl-terminal config file.
[config]
title="my title"
shell=/bin/bash
use_tmux=0
;icon=
;distro_guid=
etc/themes/*
are theme files, use themes.
etc/minttyrc
is mintty config file, mintty tips.
Upgrade
Open open-wsl.exe
in wsl-terminal
directory, run ./cmdtool update
to check the latest wsl-terminal version and upgrade it. If the download speed is too slow, you can download wsl-terminal-v{version}.7z
from releases with other tools, and put it into wsl-terminal
directory, then run ./cmdtool update
.
wget
and 7z
commands are needed (Ubuntu: apt install wget p7zip-full
, Archlinux: pacman -S wget p7zip
) .
Config files won't be overridden, etc/wsl-terminal.conf
and etc/minttyrc
will be placed to etc/wsl-terminal.conf.pacnew
and etc/minttyrc.pacnew
. Some .bak
files will be left in bin
, because they are running, those files will be removed after the next upgrading.
Use tmux
- Install tmux in WSL.
- Set
use_tmux=1
inetc/wsl-terminal.conf
. And setattach_tmux_locally=1
if the version number is less than0.8.1
. - Add these lines to
~/.bashrc
(shell=/bin/bash
in config) or~/.zshrc
(shell=/bin/zsh
in config):
&& {
&& {
tmux a 2>/dev/null, {
cd && exec tmux
}
exit
}
tmux new-window -c "$PWD" 2>/dev/null && exec tmux a
exec tmux
}
Then open-wsl
will use tmux.
Switch distros
Use open-wsl -d distro
to switch distros:
# list all distros
> wslconfig /l
Legacy (Default)
Ubuntu
# use Ubuntu (will run wslconfig /s Ubuntu before mintty)
> open-wsl -d Ubuntu
# Ubuntu is the default distro now
> wslconfig /l
Ubuntu (Default)
Legacy
Or set distro_guid
in wsl-terminal.conf (Won't change the default distro).
Run tools/3-write-distro-guids-to-config-file.js
(help), then a msgbox will show the result:
result has been written to ..\etc\wsl-terminal.conf:
; Legacy
;distro_guid={12345678-1234-5678-0123-456789abcdef}
; Ubuntu
;distro_guid={47a89313-4300-4678-96ae-e53c41a79e03}
remove the ; before distro_guid to use the distro.
If you want to pass the distro_guid to open-wsl in cmdline:
# pass the distro guid to wslbridge
> open-wsl -b "--distro-guid {47a89313-4300-4678-96ae-e53c41a79e03}"
Links
Build
Make sure wget
tar
xz
gzip
p7zip
(Ubuntu: run apt install wget tar xz-utils gzip p7zip-full
, Archlinux: run pacman -S wget tar xz gzip p7zip
) are installed in WSL.
Run build.bat
.
License
MIT