本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 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!