delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2026/02/23/20:36:58

DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 61O1au8G3691334
Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com
Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com
DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 61O1au8G3691334
Authentication-Results: delorie.com;
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=Htb855HL
X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B33504B9DB6A
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1771897014;
bh=yVCpKvB3sosoWgLhUMSqVQtPPG+mUxS5EQZGXd2uz/E=;
h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:
List-Help:List-Subscribe:From:Reply-To:Cc:From;
b=Htb855HLxfgjkSTQrVHnkB2ZAnzG46BG8GwURmO2X9PZz1RFInIGM0QbqwenEpSR4
vzGWoNqd58mfaKFJcDfuhsj7V+pVxSdVWTw4qnAP1UgmVoRX6z+lKhGoNQaJRT2WGp
BuMeA3rujqWaJH5Ai9Xzo1WitwD35upGCNBOnubc=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E01614B9DB56
ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E01614B9DB56
ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1771896992; cv=none;
b=u2NPGl44R+3P+WsMilL62eUvsCbfoVjDCdUvbnpXa5zUi2KZ/XI1I4NgfCKFPJrC4TV614PY9CaI5IN9Arri9z2ClWr73EqciceSP4PXyT5Iyi7HFupxqBV1auaPPo/KmTjsCPpUpx7u0ygGW20Tpop1Y8HtkCqOQIiINgHbDoM=
ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key;
t=1771896992; c=relaxed/simple;
bh=B0HEsOBdkoyX3V9Z+eD0AdkAVlLk7lkiZDaI6ogz7P8=;
h=Date:From:To:Subject:Message-Id:Mime-Version:DKIM-Signature;
b=S6Lofi8WPOy41pZ1VT+YgIAsen/rvY5DsYiHOov8zFR5C709x2EKjmE3PifMdyf6VmRlhG0zltpfER8tUbVZdau861eqhDzU2jEJdyyLMMeuqTX0oAGQpTy/eQgkIY1lYNRSyXMS9E520xvI/NwAIf4eJ5I0nx2NQSXYfvz4ihY=
ARC-Authentication-Results: i=1; server2.sourceware.org
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E01614B9DB56
Date: Tue, 24 Feb 2026 10:36:28 +0900
To: cygwin AT cygwin DOT com
Subject: General clipboard issue on cygwin (mintty, putclip, getclip,
/dev/clipboard)
Message-Id: <20260224103628.fdbd7396311092795834c24f@nifty.ne.jp>
X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32)
Mime-Version: 1.0
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Takashi Yano via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>
Cc: Mark Geisert <mark AT maxrnd DOT com>
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com>

This is a multi-part message in MIME format.

--Multipart=_Tue__24_Feb_2026_10_36_28_+0900_LW2.zY5gwG+AAJrp
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

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.

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.

-- 
Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp>

--Multipart=_Tue__24_Feb_2026_10_36_28_+0900_LW2.zY5gwG+AAJrp
Content-Type: plain/text;
 name="0001-Cygwin-clipboard-Add-workaround-for-ERROR_CLIPBOARD_.patch"
Content-Disposition: attachment;
 filename="0001-Cygwin-clipboard-Add-workaround-for-ERROR_CLIPBOARD_.patch"
Content-Transfer-Encoding: base64

RnJvbSAxZTFmM2FjYTk5YTkzMDljNzUyMTk4MGQzNjRjMzJjYmEwMmYwMzhlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q
cD4KRGF0ZTogVGh1LCAxOSBGZWIgMjAyNiAxNjowNDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IEN5Z3dpbjogY2xpcGJvYXJkOiBBZGQgd29ya2Fyb3VuZCBmb3IKIEVSUk9SX0NMSVBCT0FSRF9O
T1RfT1BFTgoKLS0tCiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyL2NsaXBib2FyZC5jYyB8IDggKysr
KysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp
ZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyL2NsaXBib2FyZC5jYyBiL3dpbnN1cC9j
eWd3aW4vZmhhbmRsZXIvY2xpcGJvYXJkLmNjCmluZGV4IDEyNjkxYzdjMS4uMjIxYWFhYzYyIDEw
MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyL2NsaXBib2FyZC5jYworKysgYi93aW5z
dXAvY3lnd2luL2ZoYW5kbGVyL2NsaXBib2FyZC5jYwpAQCAtMjYsMTAgKzI2LDE2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbAogb3Blbl9jbGlwYm9hcmQgKCkKIHsKICAgY29uc3QgaW50IG1heF9yZXRy
eSA9IDEwOworcmV0cnk6CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JldHJ5OyBpKyspCiAg
ICAgewogICAgICAgaWYgKE9wZW5DbGlwYm9hcmQgKE5VTEwpKQotCXJldHVybiB0cnVlOworCXsK
KwkgIGlmICghR2V0Q2xpcGJvYXJkRGF0YSAoQ0ZfVU5JQ09ERVRFWFQpCisJICAgICAgJiYgR2V0
TGFzdEVycm9yICgpID09IEVSUk9SX0NMSVBCT0FSRF9OT1RfT1BFTikKKwkgICAgZ290byByZXRy
eTsKKwkgIHJldHVybiB0cnVlOworCX0KICAgICAgIFNsZWVwICgxKTsKICAgICB9CiAgIHJldHVy
biBmYWxzZTsKLS0gCjIuNTEuMAoK

--Multipart=_Tue__24_Feb_2026_10_36_28_+0900_LW2.zY5gwG+AAJrp
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


-- 
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

--Multipart=_Tue__24_Feb_2026_10_36_28_+0900_LW2.zY5gwG+AAJrp--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019