golang-design / clipboard

📋 cross-platform clipboard package that supports accessing text and image in Go (macOS/Linux/Windows/Android/iOS)
https://golang.design/x/clipboard
MIT License
579 stars 64 forks source link

linux: send the correct for TARGETS request #60

Open takase1121 opened 1 month ago

takase1121 commented 1 month ago

For the X11 implementation, the code always send text and image/png for TARGETS request. This means that rich-content applications (like Chromium) would always try to request all the available content types (since the Web does allow querying different types of clipboard content) and this causes Chromium and Electron to hang.

This also confuses clipboard managers, which tries to check if they can support saving and taking over clipboard content based on TARGETS. In particular, this makes KDE Plasma 6's clipboard manager NOT recognize anything copied with this package.

This PR makes it send the correct pair of targets (TARGETS, text or image/png) for SelectionRequest. This fixes hang/crash when pasting into Chromium and Electron-based apps, and the clipboard content shows up in KDE Plasma's clipboard manager.