dynamic conpty loading
Thomas Wolff
towo@towo.net
Wed Sep 10 09:21:36 GMT 2025
[Reposting by response from cygwin-developers]
I wrote:
> The ancient conhost and also the initial conpty implementation of
> Windows were obstacles to using terminal feature from Windows
> applications.
> There are nuisances like mangled or ignored character attributes,
> terminal reports not passed through etc.
> While there is an updated Windows conpty layer being developed as part
> of the Windows terminal project, it is not yet deployed with Windows
> 11 and will probably not be deployed with Windows 10 at all anymore
> (https://github.com/microsoft/terminal/issues/17452).
> Various terminals had to fight with these problems and some found a
> solution.
> According to
> https://github.com/saitoha/libsixel/issues/199#issuecomment-3181728693
> it is possible to inject a specific version of conpty so to supersede
> the Windows-installed conhost.exe.
>> I've tried to apply that to mintty by just preloading a conpty.dll
> before calling forkpty for the terminal child process but that has no
> effect.
> The procedure seems to be:
> try LoadLibrary("conpty.dll"), (if not successful, fallback to
> GetModuleHandle("kernel32") instead) to retrieve GetProcAddress for
> CreatePseudoConsole, ResizePseudoConsole, ClosePseudoConsole, and then
> somehow (?) use those while calling CreateProcess.
> The latter is woven into the cygwin library and I don't think it's a
> good idea to clone that out of cygwin for a patched process creation
> in mintty.
>> My question/suggestion:
> Can a cygwin mode switch to a selected conpty library instead of the
> default one please? My idea would be to configure this per process
> with the environment variable CYGWIN. Like its error_start= setting,
> it could have a conpty= setting to configure the filename to be used
> for conpty when starting a subprocess.
> That would allow mintty to inject a modern conpty when calling a
> Windows application (e.g. wsl.exe).
>Thomas
More information about the Cygwin
mailing list