Skip to content
/ winpty Public
forked from rprichard/winpty

A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs.

License

Notifications You must be signed in to change notification settings

acm1/winpty

This branch is 1 commit ahead of, 435 commits behind rprichard/winpty:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Adam Mielke
Jan 23, 2014
5106cc6 · Jan 23, 2014
Dec 6, 2013
Mar 23, 2012
Dec 6, 2013
Dec 6, 2013
Apr 17, 2012
Dec 6, 2013
Dec 20, 2012
Mar 25, 2012
Dec 20, 2012
Jul 18, 2013
Jul 11, 2012
Mar 28, 2012
Dec 20, 2012
Dec 20, 2012
Jan 23, 2014
Dec 20, 2012

Repository files navigation

winpty

winpty is a Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs. The package consists of a library (libwinpty) and a tool for Cygwin and MSYS for running Windows console programs in a Cygwin/MSYS pty.

The software works by starting the winpty-agent.exe process with a new, hidden console window, which bridges between the console API and terminal input/output escape codes. It polls the hidden console's screen buffer for changes and generates a corresponding stream of output.

The Unix adapter allows running Windows console programs (e.g. CMD, PowerShell, IronPython, etc.) under mintty or Cygwin's sshd with properly-functioning input (e.g. arrow and function keys) and output (e.g. line buffering). The library could be also useful for writing a non-Cygwin SSH server.

Prerequisites

You need the following to build winpty:

  • A Cygwin or MSYS installation
  • GNU make
  • A MinGW 32-bit g++ toolchain, v4 or later, to build winpty.dll and winpty-agent.exe
  • A g++ toolchain targeting Cygwin or MSYS, v3 or later, to build console.exe

Winpty requires two g++ toolchains as it is split into two parts. The binaries winpty.dll and winpty-agent.exe interface with the native Windows command prompt window so they are compiled with the native MinGW toolchain. The console.exe binary interfaces with the MSYS/Cygwin terminal so it is compiled with the MSYS/Cygwin toolchain.

MinGW appears to be split into two distributions -- MinGW (creates 32-bit binaries) and MinGW-w64 (creates both 32-bit and 64-bit binaries). Either one is acceptable, but the compiler must be v4 or later and produce 32-bit binaries.

Cygwin packages

The default g++ compiler for Cygwin targets Cygwin itself, but Cygwin also packages MinGW compilers from both the MinGW and MinGW-w64 projects. As of this writing, the necessary packages are:

  • Either mingw-gcc-g++ or mingw64-i686-gcc-g++ (but not mingw64-x86_64-gcc-g++)
  • gcc4-g++

MinGW packages

The default g++ compiler for MinGW targets native Windows, but the MinGW project also packages compilers to target the MSYS environment itself. The required packages are:

  • mingw32-make
  • g++
  • msys-dvlpr

Build

In the project directory, run ./configure, then make.

This will produce three binaries:

  • build/winpty.dll
  • build/winpty-agent.exe
  • build/console.exe

Using the Unix adapter

To run a Windows console program in mintty or Cygwin sshd, prepend console.exe to the command-line:

$ build/console.exe c:/Python27/python.exe
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 + 20
30
>>> exit()
$

About

A Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 84.8%
  • C 11.2%
  • Python 3.9%
  • Shell 0.1%