SkillAgentSearch skills...

Wsltty

Mintty as a terminal for Bash on Ubuntu on Windows / WSL

Install / Use

/learn @mintty/Wsltty
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Mintty as a terminal for WSL (Windows Subsystem for Linux).

<img align=right src=wsltty.png>

Overview

WSLtty components

  • wsltty package components (see below) in the user’s local application folder %LOCALAPPDATA%
  • a wsltty configuration directory in the user’s application folder %APPDATA% (“home”-located configuration files from a previously installed version will be migrated to the new default location)
  • Start Menu shortcuts to start WSL terminals
  • Desktop shorcut to start a terminal for the default WSL distribution
  • *.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

Launching WSL

Since wsltty 3.8.0, mintty launches WSL using the native Windows launcher gateway wsl.exe by default. Proper display in certain cases depends on an up-to-date version of the Windows conpty layer. Its version currently deployed with Windows has unfortunately still some problems. There are two ways to fix this:

  • Revert to the previous launching method for now. The problem is that this way of launching WSL does not appear to work on some users’ systems. For this solution, configure this in config file %APPDATA%/wsltty/config. WSLbridge=2
  • Update the Windows conpty layer manually, by replacing %SYSTEMROOT%/System32/conhost.exe following the instructions in the mintty wiki, section Interaction with WSL.

Launcher and display interworking background

The approach to use wsl.exe directly used to fail because the conhost layer hooked into the workflow used to obstruct transparent terminal operation in multiple ways.

The conhost layer has meanwhile been modernised, including the conpty layer, and its enforced detour through the Windows console API has been dropped, in the course of the Windows Terminal project. The new conhost, however, has not yet been deployed with Windows (as of summer 2025) and will probably not be deployed with Windows 10 anymore. So in order to get fully transparent terminal interaction between WSL and wsltty, the updated conhost needs to be patched into Windows manually, following the instructions linked above, to patch OpenConsole into your Windows as conhost replacement.

The wslbridge approach

To connect to WSL, wsltty used wslbridge2, which uses undocumented Windows APIs that have been changed various times, so wslbridge2 needed to catch up with incompatible changes, particularly to support WSL V2. (See e.g. issue #343; to work with WSL V2, wsltty 2.0.0 needed a WSL update to release 1.3.17.)

Since release 3.0.5, WSLtty requires Windows version 1809 (the November 2018 release).

By end of 2024, wsltty works again with recent updates of the WSL subsystem.

Configuration option WSLbridge=2 switches back to the previous wslbridge launching approach; the wslbridge2 gateway is still deployed with wsltty for that matter. (If for a very old Windows 10 version you still need the original wslbridge gateway, set WSLbridge=1 and deploy it manually.)


Installation from this repository

WSLtty installer (Download standalone installation)

From the release downloads, run the wsltty-VERSION-x86_64-install.exe installer to install the components listed above. Make sure to select a 64-bit installer on a 64-bit system. 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 open the Properties of the installer first, tab “General” section “Security” (if available) and select “Unblock”, to enable the “Run anyway” button.

WSLtty Portable installer

For a portable installation, e.g. on a USB stick, choose the “-install-portable.exe” file for download. Installation will prompt for a portable installation folder interactively. For example, choosing U:\opt will create and use folder U:\opt\wsltty both as installation directory and configuration directory. Portable installation does not install any start menu or desktop shortcuts and no context menu entries. It creates a shortcut in the selected portable installation folder to start the default WSL distribution.

Note: For an update installation, either the parent directory or the target directory itself can be selected.

Note: If you rename or move the installation directory, the icon of the “WSL Terminal Portable” shortcut will not work anymore; re-run the install-portable.bat script in the installation folder to refresh it.

Installation from archive

In case a local anti-virus guard barfs about the wsltty installer, the release also contains a .cab file. Download it, open it, extract its files to some temporary deployment directory, and invoke install.bat from there, or install-portable.bat for a portable installation.

Quiet installer

The wsltty-VERSION-x86_64-install-quiet.exe installer is intended for integration in another installation framework.

Installation from source repository

Checkout the wsltty repository, or download the source archive, unpack and rename the directory to wsltty. Install Alpine WSL from the Microsoft Store. Invoke make build, then make install.

Note this has to be done within a Cygwin environment. A minimal Cygwin environment for this purpose would be installed with the Cygwin installer from cygwin.com, with additional packages make, gcc-g++, unzip, zoo, patch, (lcab).

Build installers

Install a minimal Cygwin environment plus the additional packages as listed for «Installation from source repository». Invoke make pkg or just make.

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

Note: These are 3rd-party packages, not managed by this repository.

Windows Package Manager

(Check package) To install wsltty from the Windows Package Manager Community Repository, invoke one of

  • winget install wsltty
  • winget upgrade wsltty

Scoop

(Check package) If you use the Scoop package manager,

  • scoop bucket add extras

then, invoke one of

  • scoop install wsltty
  • scoop update wsltty

Chocolatey

(Check package) If you use the Chocolatey package manager, invoke one of

  • choco install wsltty
  • choco upgrade wsltty

Uninstallation

To uninstall wsltty desktop, start menu, and context menu integration: Open a Windows cmd, go into the wsltty installation folder: cd %LOCALAPPDATA%\wsltty and run the uninstall script. To uninstall wsltty software completely, remove the installation folder manually.


Invocation

WSLtty can be invoked with

  • installed Start Menu shortcuts (or Desktop shortcuts if copied there)
  • *.bat scripts (optionally with WSL command as parameters) (see Command line scripts below)
  • 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 V2

Terminal communication with WSL via its modes V1 or V2 is handled automatically by wsltty (mintty and the wslbridge2 gateway).

Starting issues

If wsltty fails with an Error: Could not fork child process: Resource temporarily unavailable..., its runtime may be affected by some over-ambitious virus defense strategy. For example, with Windows Defender, option “Force randomization for images” should be disabled.

If wsltty fails with an error message that mentions a disk mount path (e.g. /mnt/c), workarounds may be the shutdown of the WSL V2 virtual machine (wsl --shutdown on the distro) or turning off “fast startup” in the Windows power settings (#246, #248).

WSL shell starting issues

With WSL V2, an additional background shell is run which may cause trouble for example when setting up automatic interaction between Windows side and WSL side (see https://github.com/mintty/wsltty/issues/197#issuecomment-687030527). As a workaround, the following may be added to (the beginning of) the WSL shell initialization script .bashrc (adapt for other shells):

    # work around https://github.com/mintty/wsltty/issues/197
    if [[ -n "$WSL_DISTRO_NAME" ]]; then
      command -v cmd.exe > /dev/null || exit
    fi

Configuration

Start Menu and Desktop shortcuts

In the Start Menu, the following shortcuts are installed:

  • Shortcut <img align=absmiddle height=40 src=tux1.png>WSL Terminal to start the default WSL distribution (as configured with the Windows tool wslconfig or wsl -s)
  • For each installed WSL distribution, for example Ubuntu, a shortcut like <img align=absmiddle height=40 src=ubuntu1.png>Ubuntu Terminal to start in the WSL user home

In the Start Menu subfolder WSLtty, the following additional shortcuts are installed:

  • Shortcut <img align=absmiddle height=40 src=tux1.png>WSL Terminal % to start the defau

Related Skills

View on GitHub
GitHub Stars3.2k
CategoryDevelopment
Updated1d ago
Forks106

Languages

C

Security Score

80/100

Audited on Mar 31, 2026

No findings