偶然修复了 Wayland 运行 Linux QQ 时的各种异常:屏幕分享、剪贴板和截图

shorinkiwata 2026-10-03 13:12 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签: 是

  • 我的开源项目完整开源,无未开源部分: 是

  • 我的开源项目已链接认可 LINUX DO 社区: 是

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是

  • 以上选择我承诺是永久有效的,接受社区和佬友监督: 是


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




仓库地址:GitHub - SHORiN-KiWATA/linuxqq-wayland-fix: 修复 Linux QQ 在 Wayland 下的屏幕共享、共享电脑声音和剪贴板问题 · GitHub


一次偶然的尝试之后,我修复了 Wayland 运行 QQ 的三个严重影响使用体验的问题。


起因是前几天我在研究部署 littlekan233/qq-wayland-screenshare 项目。这是个拷贝 Wayland 画面到 XShm 从而实现 QQ 的屏幕分享的项目。在部署时我意外发现 QQ 居然有一套近乎完整的 Wayland 屏幕分享,预设便有了接下来的故事:




  • 屏幕分享


    在 Wayland QQ 尝试进行屏幕分享会提示 Wayland 下无法使用此功能,或者出现在 QQ 的选择器和 Portal 的选择器之间循环的情况,总之是无法使用。



    上面提到,QQ 其实已经写好了 Wayland 屏幕分享功能相关的代码,只是缺少了选择器的部分。于是我让 Opus 5.5 补全了这部分,屏幕分享就可用了。走的是 PipeWire 加 Portal 的“正规”路径,不需要拷贝 Wayland 画面到 X,所以性能开销极低。


    修复后演示视频:https://github.com/user-attachments/assets/47fc8378-0bf7-4ef8-ac37-bfc1389dcf22




修复了屏幕分享问题之后,我有了个点子,也许我可以接着尝试修复另外几个平时使用时的痛点:




  • 剪贴板


    Wayland QQ 依旧使用 X11 的剪贴板,导致 QQ 里复制的内容粘贴不到外面,外面复制的内容也粘贴不到 QQ 里。



    通常的解决办法是做一个剪贴板双向同步脚本。我之前写过一个 Linuxqq Clipsync ,以守护进程的方式持续运行,持续同步比对剪贴板内容,在出现差异时同步脚本,但这样的方式性能开销略大。这次我借鉴前面修复屏幕分享时的思路,在 QQ 进程里起一个后台线程,用 data-control 协议成功实现剪贴板桥接。性能开销更低,而且仅在 QQ 开启时生效。




  • 截图


    Wayland QQ 点击截图键会迅速闪退,退的比退出键还快好几倍。



    还是一样的在 QQ 进程里起一个后台线程的思路,拦截了 QQ 截图操作,并将其改为wl-screencopy截取显示输出,从而能够正常截图。


    修复后演示视频:https://github.com/user-attachments/assets/36b6b031-19d0-4af2-9def-4e1a63a7ce11




欢迎大家来尝试这个项目!修复以上三个问题之后,我认为 Wayland QQ 已经做到功能齐全了。详细的逆向分析和原理由 Deepseek V4.1 Flash 和 Opus 5.5 排查生成,在项目的 docs 目录中。 如果有问题欢迎提交 Issues,大家一起修复 Wayland QQ!

最新回复 (2)
  • Snemc 10-03 13:19
    1楼

    欢迎shorin入驻 linux.do 。你的Linux入门教程帮助过许多初学者,社区内大家对你早已慕名已久。

  • Mikee 10-03 14:18
    2楼

    Wayland的截图功能是不是很难实现,能复现吗 ?

* 帖子来源Linux.do
返回