On Tue, 11 Apr 2023 08:22:25 +0000
Wladislav Artsimovich wrote:
> Dear Cygwin users,
>  
> there appears to be a bug or a missing implementation detail in either unix 
> pipes or ConPTY, which prevents interactive console programs from receiving 
> keyboard input, when they get stdin via a pipe.
> This report concerns the following Github issue, originally started in the 
> MinTTY Terminal emulator Repo: https://github.com/mintty/mintty/issues/1210
>  
> There are multiple programs, which fail to receive any kind of keyboard input 
> when used in MinTTY and when their stdin input is supplied via a pipe.
> This has been reported multiple times in the MinTTY repo already.
>  
> Examples include: 
>  - `fzf`, which works normally when being called, but stops working properly 
> if it receives a file list via a pipe. Eg.: `fzf` by itself works fine. but 
> `find . | fzf` fails.
>  - By extension, the zsh plugin fzf-plugin fails for the same reason, when 
> opening the command history
>  - The program fx ( https://github.com/antonmedv/fx ) which successfully 
> receives keyboard input for navigating a json file, Eg.: `curl -s 
> https://api.openai.com/v1/chat/completions -H 'Content-Type: 
> application/json' > test.json; fx test.json` but fails when getting the json 
> data as a direct pipe: `curl -s https://api.openai.com/v1/chat/completions -H 
> 'Content-Type: application/json' | fx`
>  
> This happens with MinTTY accessing the MSYS2 environment on Windows. 
> Interestingly enough, this does not happen with Alacritty accessing the MSYS2 
> environment on Windows. With Alacritty everything is fine, which made me 
> initially suspect MinTTY as being the culprit. However, the MinTTY repo lead 
> diagnosed this issue to come from Cygwin, which is why I write report the bug 
> in this mailing list.
>  
> Is there something that can be done about this? Can I provide additional 
> debug info or logs to help fix this?

Thnaks for the report.

I cound reproduce your problem by:
$ yes | cat -n | more.com
(not /usr/bin/more but /cygdrive/c/WINDOWS/system32/more.com)

Currently, the keybord inputs are sent only to 'yes' rather than 'more.com'
in the above case.

This does not happen in:
$ yes | cat -n | less
because less is a cygwin program which opens '/dev/tty' rather than 'CONIN$'.

Anyway, I'll fix that.

-- 
Takashi Yano <takashi.y...@nifty.ne.jp>

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to