General clipboard issue on cygwin (mintty, putclip, getclip, /dev/clipboard)

Thomas Wolff towo@towo.net
Wed Feb 25 04:18:34 GMT 2026


Hi Takashi,

Am 24.02.2026 um 02:36 schrieb Takashi Yano:
> Hi,
>
> I encountered a clipboard issue common to cygwin.
>
> Affected components:
> /dev/clipboard, putclip/getclip, mintty
>
> The issue:
> If the clipbard is opened by `OpenClipboard(NULL)`, occasionally
> SetClipboardData() and GetClipboardData() fails with
> ERROR_CLIPBOARD_NOT_OPEN.
>
> When UltraVNC Viewer (https://uvnc.com/) is opened, this issue
> happens with a very high probability (> ~90%).
>
> $ echo AAAA > /dev/clipboard
> echo: write error: Permission denied
>
> On mintty, text selection by mouse and clicking center button
> fails at the first attempt.
According to Windows docs, OpenClipboard(0) would make SetClipboardData 
fail. There is no such statement about reading from the clipboard.
Accordingly, mintty calls OpenClipbard(wnd) before writing to the 
clipboard and (0) only before pasting. Also I'm not aware pasting ever 
fails for me. But if there is a chance to fail, I'll add the (wnd) to 
both other calls.
About the cygwin patch, could perhaps GetDesktopWindow help?

Thomas

>
> For putlclip/getclip, the following command outputs nothing
> in a few attempts. ("ABCD" is lost.)
> $ echo ABCD |putclip; for a in `seq 100`; do getclip |putclip; done; getclip
>
> $
>
>
> Solutions:
> This can be solved by passing non-zero HWND to OpenClipboard().
> Therefore, as for mintty, the following patch is ok I think.
> diff --git a/src/winclip.c b/src/winclip.c
> index 12c54525..a7cbe365 100644
> --- a/src/winclip.c
> +++ b/src/winclip.c
> @@ -1324,7 +1324,7 @@ static void
>   do_win_paste(bool do_path)
>   {
>     //printf("OpenClipboard win_paste\n");
> -  if (!OpenClipboard(null))
> +  if (!OpenClipboard(wnd))
>       return;
>
>     if (cfg.input_clears_selection)
>
> However, for /dev/clipbard and {put|get}clip, there is no
> suitable HWND to pass to OpenClipboard(). Fortunately, I
> found the patch attached solves the /dev/clipboard issue.
>
> This is not smart, however it works.
>
> I think similar patch is ok for putclip/getclip.
>
> Any suggestions and comments will be appreciated.
>



More information about the Cygwin mailing list