description | Legendacy Cygwin terminal emulator with minimum perceived latency |
owner | alralr@buaa.edu.cn |
last change | Sun, 22 Jan 2023 12:47:51 +0000 (22 20:47 +0800) |
URL | git://repo.or.cz/puttycyg-ng.git |
https://repo.or.cz/puttycyg-ng.git | |
push URL | ssh://repo.or.cz/puttycyg-ng.git |
https://repo.or.cz/puttycyg-ng.git (learn more) | |
bundle info | puttycyg-ng.git downloadable bundles |
content tags |
PuTTYCyg is an ancient fork of PuTTY with Cygwin pseudoterminal support added.
Terminal emulators based on PuTTY has the minimum perceived latency on Windows. Besides, the actual latency is on par with that of Mintty.
As WSL2 has been widely used after its inception, Cygwin has become more and more of a relic. But it nontheless has excellent interoperablity, and it is independent of hardware virtualization, which quite a lot messes with the thermal settings of typical consumer machines. If you want a noiseless Unix experience on Windows before relying on SSHing into remote machines, give Cygwin a try.
Cygwin has its own pseudoterminal concept analogous to the Unix one. To interact with PTYs in Cygwin, one has to use one of the following ways:
conhost
at a lower layer. The real deal-breaker lies in the natural limitation of the Cygwin console devices /dev/cons*
: program manipulating user sessions, such as screen
and tmux
, refuses to function in such environments, rendering terminal workflows cumbersome to many.sshd
is needed for this scenario, which complicates terminal handling and requires a background service to be running. sshd
contributes to latency as well. The official PuTTY guide now recommands running psusan
compiled under Cygwin to provided a bare SSH connection without the authentication layer, offering all niceties the SSH protocol support. But this still requires a background process even more harder to manage than sshd
, as Cygwin is too integrated into Windows to provide an independent process management daemon.PuTTYCyg solves this problem in a hybrid approach. A helper program cthelper.exe
is born to bridge the Cygwin PTY layer to sockets understood by the modified putty.exe
, which could generally exhibit a more stable latency profile thanks to the seemingly more stable nature of sockets in terms of latency and the customized terminal emulator layer of PuTTY.
From the subjective experience of the author, vanilla Mintty suffers from a high variance of latency; that is, cannot reliably predict how long the character would be inputted after hitting the corresponding key using muscular reflection when typing fast. Said problem persists even with ConPTY enabled, to which PuTTY is immune, perhaps because of its different implementation.
NOTE: As PuTTYCyg is an ancient fork, all remote functionality has been stripped out for security reasons.
build.sh
.putty.exe
and cthelper.exe
in the same directory, and execute putty.exe
to start PuTTYCyg.cthelper.exe
can't find the Cygwin root directory?Put it under /bin
. This is due to the root directory detection mechanism of Cygwin, please consult the documentation.
TODO: cygbuild
and integration into the official Cygwin package directory. If any Cygwin maintainer wants to make this an official Cygwin package, I'm really glad to help!
Thanks zewt@github
for their excellent cutting down on PuTTY. https://github.com/zewt/puttycyg
15 months ago | master | logtree |