deepin-wine icon indicating copy to clipboard operation
deepin-wine copied to clipboard

wayland 下无法将剪贴板中 flameshot 截图粘贴到 QQ/微信中

Open function2-llx opened this issue 2 years ago • 2 comments

使用 wayland 作为显示服务器时,使用 flameshot 进行截图,图片保存于剪贴板后无法粘贴到 QQ/微信中,切换为 Xorg 则可以正常粘贴。

在 wayland 下,关于 flameshot 截图以及图片剪贴的功能还有如下现象:

  • flameshot 保存到剪贴板的截图可以正常粘贴到 telegram 聊天框中、在 github issue 文本编辑框中粘贴上传等;
  • 从 telegram 以及浏览器中复制到剪贴板中的图片也可以粘贴到 QQ/微信中
  • #187 提到以及我也复现 wayland 下无法使用微信或 QQ 自带的截图功能

推测可能是 Xorg 与 wayland 管理剪贴板的方式不太一样,也许和 flameshot 在 wayland 下将截图保存到剪贴板处理地不够也有关?但相关不太了解,暂时还没有仔细调查这方面,可能和本仓库无关,但先在这里提出 issue,希望能得到一些大家的意见尽可能找到具体原因。

系统版本:ubuntu 21.04 桌面为 gnome

function2-llx avatar Sep 06 '21 12:09 function2-llx

这种情况可能需要deepin那边去适配wayland了吧。作者应该只是搬运。

greatyingzi avatar Sep 15 '21 09:09 greatyingzi

通过在 /opt/apps/com.qq.weixin.deepin/files/run.sh 中添加 export WINEDEBUG="+clipboard" 开启 Wine 的剪贴板 debug 并运行微信,发现微信访问剪贴板的时候,会有几个错误,详见以下 log gist,分割线之前是 Flameshot 复制 png 格式的截图时的 log,分割线后是在微信中粘贴时的 log。

https://gist.github.com/mgrddsj/cc75e0bb2b51ca2eb57c7a5399a07e67


临时解决办法:经过 ChatGPT 分析,发现微信似乎预期读取的是 bmp 格式的图片。经过测试,复制 bmp 格式的图片到剪贴板中可以在微信中正常粘贴。自己写了个脚本把剪贴板中的 png 图片转换成 bmp 格式的,凑合着用:

wl-paste -t image/png > /tmp/screenshot.png && convert /tmp/screenshot.png /tmp/screenshot.bmp && wl-copy < /tmp/screenshot.bmp

(需要安装 wl-clipboard 和 imagemagick)

mgrddsj avatar Dec 25 '23 19:12 mgrddsj