惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
C
Check Point Blog
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
D
Docker
Engineering at Meta
Engineering at Meta
AWS News Blog
AWS News Blog
S
Security Affairs
U
Unit 42
P
Palo Alto Networks Blog
V
Visual Studio Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 司徒正美
博客园 - Franky
宝玉的分享
宝玉的分享
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog

Allen Hua 的网络博客

由于 Linux 桌面没有一个好用的天气程序就写了一个跨平台的CheckitoutWeather 给 caesium-image-compressor 图片压缩程序构建了 Linux AppImage v2.8.5 最新版 debian13(debian trixie)安装了nvidia闭源驱动后从x11切换到wayland的方法 山间摩旅追风,偶遇一场绚烂晚霞 最近使用debian系统的一些心得 机械革命无界14Pro笔记本debian forky成功驱动内置扬声器和麦克风 记录 typecho 1.2.0 升级到 1.3.0 过程 开发了一款openwrt插件:文本剪贴板 解决机械革命笔记本内屏高刷240Hz闪屏问题 使用 Java 写了一个局域网端口扫描器 - Allen Hua 的网络博客 openwrt使用外置根extroot机制扩展根分区大小 - Allen Hua 的网络博客 将机场ss节点批量转换成ss字符串链接批量添加到passwall - Allen Hua 的网络博客 给机械革命钛钽plus换屏:NY2换成NZ2 - Allen Hua 的网络博客 记录一次pve宿主机和上面的debian虚机无故down机事件 - Allen Hua 的网络博客 给图床部署cdn腾讯云的edgeone并排查Cache-Control max-age 3600的问题 - Allen Hua 的网络博客 从高山草甸到徽派古村:武功山反穿与皖浙赣自驾行记 - Allen Hua 的网络博客 增程器就是充电宝?别被忽悠了 - Allen Hua 的网络博客 浦口龙虎巷扫街,记录人间真实 博客图片压缩方案更新|AVIF|WebP|MozJPEG|标准JPEG Windows 电脑使用 Obs Studio 录制各个网站视频/桌面画面教程 为typecho博客添加latex支持 新能源汽车之纯电车使用交流慢充和直流快充的充电损耗对比 2025年3月更新全国5A景区名录 2025最新查看小米/红米手机电池健康度和循环次数方法 完美解决 seafile FILE_SERVER_ROOT 配置导致的内网外网不能同时访问和上传下载的问题 纯css实现typecho博客文章文字spoiler剧透效果 我对Typecho Facile主题的一些修改,图片懒加载优化,样式定制 2024年8月我的宜昌 - 重庆 - 川西小环线自驾旅行分享 2022年打卡南京市区人防工程纳凉点 2024年带着A7C2+腾龙28-200 再次来到红山森林动物园 入手a7c2第一个变焦镜头腾龙28-200体验分享 使用 exiftool 方便快捷写入图片的 exif metadata 使用JavaScript抓取易车销量排行榜数据到一个页面上展示 使用JavaScript脚本快速获取B站观看历史记录页面的视频标题和URL 入门三脚架推荐|云腾VCT-668配合索尼A7C2+FE 35mm F1.8 第一次夜景出片 Windows 11 Docker Desktop 更换默认C盘存储路径,释放C盘空间 雨游钟山——雨天带着索尼A7C2去钟山拍照 带上A7C2第一次扫街,分享今天拍的一些片子 再次为尼,买了人生第二台相机——索尼A7C2和FE 35mm F1.8 定焦镜头 更新 link-cleaner v1.1.0 适配linux桌面环境 使用自定义JavaScript脚本功能禁止memos最新版默认打开的链接预览功能 debian 11升级 docker ce 版本和 docker-compose 版本 机械革命无界14 Pro 安装 debian testing/trixie/sid 驱动扬声器,外部耳机,外接显示器过程分享 不借助 mirror 仓库,为docker engine daemon添加 proxy 访问 docker hub,解决国内公开的docker mirror 仓库不再可用了的问题 徒步江苏镇江句容九连尖 macOS 安装 proxychains-ng 并借助局域网 socks5 代理使用 Google Earth Pro 修复一块 18 年 12 月买的二手 4TB 机械硬盘 iCloud 在 Windows 下很流氓,用 taskkill 干掉它 2023 年 12 月 Spotify 彻底被墙,我在比亚迪车机上安装 surfboard 挂代理听歌 利用 proxychains 让 Windows10/11 上的 Google Earth Pro 通过代理正常访问 湖州安吉天荒坪盘山公路和杭州临安浙西天路之旅 Redmi K70 首发开箱和拍照体验 Review Android 13+ 通过 Shizuku + Language Selector 给特定应用设置独立语言 我的 2023 Spotify Wrapped 听歌总结 压缩剪贴板内图片并立即写入剪贴板,减轻服务器存储压力 【Allen Hua 翻唱】山阴路的夏天和一个人的北京 初涉录音设备,记录我购买声卡和麦克风的曲折经历以及第一首翻唱陶喆——流沙 soul power 版本(low quality) 特种兵旅行之马鞍山一日游 给我的 .com 域名续期以及转移域名(GoDaddy 到 Cloudflare) 看《下辈子我再好好过》第三季 使用油猴脚本干掉B站web首页的浏览器插件警告信息 闯进我平静生活的三只猫 在远离中短视频几天之后 [可能是]最好的压缩图片程序,使用 squoosh-cli 批量压缩图片 再次出发,自驾徽州天路和黄山之行 nginx设置referer配置个人图床的防盗链功能 微博注销记 第一次4+2旅行,骑行皖南川藏线 让 rime 输入法用上颜文字 使用 nginx 获取自己的公网 IP 地址 2023 年 618 买了一台机械革命笔记本,但很不愉快 聊聊我晚睡的习惯和早点洗澡悟出来的原因 配置 ShadowsocksR Plus+ 的服务端,在外访问家中服务 部署一个 memos 作为个人微博站点和备忘录 我的听歌软件 Spotify 和网易云的故事 | 导出网易云的歌单再导入到 Spotify 我问 ChatGPT 为何印度人痔疮发病率低 使用 immich 来管理家庭照片 | 升级 immich 1.52.0 添加 typesense 容器 在 OpenWrt 上搭建 nfs server 利用 cron 和 curl 自动模拟登录馒头,防止账号被 ban 更新 Mattermost 服务端版本,由 7.4.0 更新到 7.8.0 获取 Seafile 分享的文件直链 你是科技产品偏执狂吗?一张不同种类互联网用户日常使用产品的分级图片 记录我的 V2EX 账号被封 不通过插件给 Typecho 博客添加图片灯箱功能(fancybox js 实现) 为 Typecho 博客添加 favicon.ico(网页标签小图标) OpenWrt 修改登录页面默认展示的 root 用户名信息,保护隐私 米家智能插座 3 上手初体验 互联网上为了保护隐私我们能做些什么?分享我的想法和我写的 link-cleaner tplink 10280, wan 无法访问 lan 下的 dhcp 主机,换上 padavan 解决两台路由器 lan-wan 级联,两台路由器下面的电脑互访 机械革命自带键盘总是自动乱按,拆机拔掉排线,完美解决烦恼 做了一个 squoosh docker 镜像,写博客贴图直接在本地压缩文件,安全且高效 nginx 常规端口和非常规端口的 http redirect to https 记一次 OpenWrt luci 显示正在“收集数据”,使用公网 IP nginx 反向代理遇到的 Uncaught TypeError: Cannot read properties of null (reading 'wan') 问题 OpenWrt 安装并配置腾讯云动态 dns dnspod tencent ddns 浅谈文件传输/共享协议|内网共享文件协议选择|自建公网文件管理同步和共享方案推荐 解决 webdav 连接 seafile 无法重命名文件等操作造成的 SeafDAV: MOVE returns 502 Bad Gateway 错误 Linux 删除当前目录下的隐藏文件 OpenWrt 安装 4.4.2 版本的 qbittorrent-nox Docker 构建多架构镜像实战 构建 amd64 和 arm64 架构的兰空图床镜像 构建 arm64 架构和 amd64 架构的兰空图床 docker 镜像
机械革命泰钽 plus linux Debian Wayland 独显直连调优全记录
字数:11076 · 2026-06-24 · via Allen Hua 的网络博客
阅读量:161

机械革命泰钽 Plus 游戏本在 Linux Debian GNOME Wayland 下流畅使用诊断艰辛历程

一、软硬件配置

硬件

项目 规格
型号 MECHREVO Taitan Series GM7TG0M
CPU 11th Gen Intel Core i7-11800H × 16 (8C/16T, Tiger Lake-H)
独显 NVIDIA GeForce RTX 3060 Laptop GPU (6GB GDDR6)
核显 Intel UHD Graphics (Tiger Lake-H GT1, 集成于 i7-11800H)
内存 64 GiB DDR4
磁盘 1 CT240BX500SSD1 240GB SATA SSD
磁盘 2 Fanxiang S500PRO 1TB NVMe SSD
磁盘 3 IM2P33F8-512GD 512GB NVMe SSD
固件 N.1.07MRO06
BIOS 显卡模式 dGPU Only (独显直连) / MSHybrid (双显卡混合输出)

软件

项目 版本
操作系统 Debian GNU/Linux 13 (trixie)
架构 x86_64
桌面环境 GNOME 48.7
窗口系统 Wayland
内核 Linux 6.12.90+deb13.1-amd64
NVIDIA 驱动 595.80 (私有驱动)
NVIDIA VA-API nvidia-vaapi-driver 0.0.13 (NVDEC 后端)
PipeWire 1.4.2
腾讯会议 v3.26.10.401 (deb 包安装于 /opt/wemeet)

二、双显卡 vs 独显直连:两难抉择

2.1 混合输出模式 (MSHybrid) 的问题

BIOS 中设为双显卡混合输出时,系统主 GPU 是 Intel 核显,桌面合成器(Mutter)由核显驱动。但笔者的两台外接显示器(一台 4K 27 寸、一台 1080P 24 寸)通过 HDMI 和 USB-C 直连到了 RTX 3060 独显,这意味着:外接屏幕的最终画面输出必须经过 NVIDIA 独显。每一帧渲染流程为 Intel 核显合成→经 PCIe 总线拷贝到 NVIDIA 显存→NVIDIA 输出到屏幕,这个跨 GPU 的 PRIME 缓冲区同步过程引入了显著的延迟和掉帧;同时 Mutter 同时管理两个 GPU 的 framebuffer,帧时序难以对齐,进一步加剧了卡顿感。

为什么 Windows 没这个问题? Windows 下 NVIDIA Optimus 的混合输出走的是一个更高效的路径:NVIDIA 驱动内置硬件拷贝引擎(cross-adapter copy engine),独显渲染的画面通过 PCIe 直接写进核显的 framebuffer 然后输出到屏幕,不需要等待双向同步和帧对齐。而 Linux 的 PRIME 方案目前依赖通用 DMA-BUF 机制进行跨 GPU 缓冲区共享,多了一层软件调度开销,在 4K 高分辨率下带宽压力更大,卡顿感就非常明显。本质上不是硬件不行,是 Linux 图形栈在双 GPU 调度上还没做到 Windows 的成熟度。NVIDIA 在 Windows 下的图形驱动已经打磨了超过 25 年(自 1999 年 GeForce 256 发布算起),Optimus 双显卡切换技术也已在 Windows 上迭代了 15 年以上;而 Linux 下的 PRIME 多 GPU 同步方案直到 2016 年前后才逐渐可用,Wayland 下的双 GPU 混合渲染就更加年轻。十几年的工程积累差距,不是短期内能抹平的。

  • Waydroid 正常 — Android 容器通过 Mesa 调用 Intel iGPU 做 GPU 加速
  • 腾讯会议各项功能正常 — 屏幕共享打 patch 后也能正常创建分享,别人能看到
  • 桌面流畅度不佳 — GNOME 动画卡顿,窗口拖拽/切换时有可感知的延迟

补充:混合模式下若改用 X11 显示协议,流畅度问题同样可以得到缓解——X11 的 GPU 调度路径更成熟,PRIME 同步开销较低。但笔者不选择此方案,因为 Wayland 是 Linux 桌面显示的明确未来方向,且大部分日常软件(包括通过 XWayland 兼容层运行的)在 Wayland 下已足够稳定。放弃 Wayland 换 X11 是走回头路。

2.2 为什么不能只用 Intel 核显 (iGPU Only)

最理想的情况似乎是 BIOS 设为 iGPU Only,只用 Intel 核显驱动内置屏幕,简单省电。但这是不可能的,原因在于本游戏本的硬件设计:

HDMI 和 USB-C(DP Alt Mode)视频输出接口在物理上直连到了 RTX 3060 独显,而非 Intel 核显。

这意味着:

  • 若 BIOS 禁用 NVIDIA 独显(iGPU Only),HDMI 和 USB-C 接口完全无信号输出
  • 笔者日常外接两台显示器(一台 HDMI + 一台 USB-C),这两个接口离开独显就无法使用
  • 所以 iGPU Only 模式从一开始就被硬件设计排除了

因此实际可选的模式只有两种:MSHybrid(双显卡混合输出)dGPU Only(独显直连)

2.3 独显直连模式 (dGPU Only) 的问题

BIOS 切换为独显直连后,所有渲染由 RTX 3060 承担,桌面流畅度大幅提升。但带来三个问题:

  1. 腾讯会议 webcam 黑屏 — 摄像头画面无法显示
  2. 腾讯会议屏幕共享失败 — 无法创建分享,别人也看不到(混合模式下打 patch 后已修复的部分,在独显下仍不行)
  3. Waydroid 不可用 — 无解(详见下文 2.3)

2.4 Waydroid 在 NVIDIA 独显下不可用的根因

参见 waydroid/waydroid#1619

Waydroid 维护者 electrikjesus 于 2025 年 12 月明确表态:

Android uses only Mesa drivers. No way to get around it.

Android 图形栈的 GPU 加速只能通过 Mesa 体系内的驱动实现。NVIDIA 私有驱动(包括 nvidia-open 内核模块)不属于 Mesa 生态,waydroid 无法调用它为 Android 容器渲染界面。

NVIDIA 支持的唯一例外是更换为 nouveau 开源驱动,但 nouveau 在 RTX 3060 上的性能极差,没有实用价值。


三、最终方案:放弃 Waydroid,全面转向 dGPU Only

既然 Waydroid 使用频率不高,而桌面流畅度与日常体验息息相关,最终决定:

BIOS 设为 dGPU Only(独显直连),放弃 Waydroid。

3.1 受影响的软件

软件 状态 说明
Waydroid 不可用 硬伤,无解
腾讯会议 webcam 已修复 见第四章
腾讯会议屏幕共享 已修复 见第四章
kooha 已卸载 VA-API 编码依赖,已用 GNOME Screenshot + ffmpeg NVENC 替代
音频输入输出 正常 之前测试时为空是因为 systemctl --user stop pipewire.socket 关掉了 PipeWire,与独显直连无关
GNOME 桌面 流畅 RTX 3060 渲染 + nvidia-clock-unlock 锁频,体验显著改善
其他软件 正常 Chrome、VS Code、飞书、LibreOffice、GIMP、Krita、VLC、Docker、Flatpak 等均不依赖 Intel GPU

3.2 NVIDIA GPU 锁频服务(提升桌面流畅度)

独显直连能改善流畅度,但 NVIDIA 私有驱动在默认情况下会根据负载动态调整 GPU 频率。桌面合成器(Mutter)的渲染负载波动较大,GPU 在低频↔高频之间频繁切换,导致 GNOME 动画仍有偶尔的掉帧。

为此创建了 nvidia-clock-unlock.service 系统服务,在启动时:

  1. 启用 NVIDIA 持久化模式(nvidia-smi -pm 1),防止 GPU 在空闲时进入深度休眠
  2. 锁定 GPU 最低频率为 1200 MHz(nvidia-smi -lgc 1200,2100),确保合成器始终获得足够的渲染算力
# /etc/systemd/system/nvidia-clock-unlock.service
[Unit]
Description=Unlock NVIDIA GPU clock floor for smooth Wayland compositing
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pm 1
ExecStart=/usr/bin/nvidia-smi -lgc 1200,2100
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

启用方式:

sudo systemctl daemon-reload
sudo systemctl enable --now nvidia-clock-unlock.service

代价:GPU 无法完全进入最低功耗状态,闲置功耗略高(对本游戏本影响不大,日常插电使用)。

3.3 死重量但保留的包(为日后切回混合模式留余地)

i965-va-driver           # Intel 老 GPU VA-API 驱动
intel-media-va-driver    # Intel 新 GPU VA-API 驱动
firmware-intel-graphics  # Intel GPU 固件
libdrm-intel1            # Intel DRM 用户态库
libigdgmm12              # Intel 显存管理库

以上包在不加载 i915 模块时不生效,占空间极小,保留以免日后切回混合模式时需重装。

3.4 内核参数清理

# /etc/default/grub 中以下 i915 参数可删除(独显直连下 i915 模块不加载):
i915.enable_psr=0 i915.enable_fbc=1 i915.enable_guc=3

四、腾讯会议在 dGPU Only 下的完整修复方案

4.1 Webcam 黑屏修复

现象:启动腾讯会议后,webcam 预览画面黑屏,无法显示视频。

根因:xcast 日志中 eglCreateWindowSurface 返回 error:3005EGL_BAD_CONFIG)。wemeet 以 X11(XCB) 后端运行在 XWayland 下,NVIDIA EGL 无法将 XWayland 的 X11 窗口句柄转换为 EGL Window Surface。

关键线索:AUR wemeet-bin 评论区 pinned 评论(by anlorsp, 2025-03-08):

对于 N 卡视频黑屏的问题,可以尝试为腾讯会议单独设置 __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json 环境变量(不要全局设置该变量!)。在双显卡环境下可以修复黑屏问题,在单 NVIDIA 显卡环境下未测试。

本机验证:dGPU Only 模式(即单 NVIDIA)下,设置此变量后 webcam 加载成功。原理:强制 wemeet 走 Mesa 的 libEGL_mesa.so.0,走 llvmpipe 软件渲染路径,虽然性能不如硬件加速,但可以正常创建 EGL Window Surface 并显示摄像头画面。

修复步骤:编辑 /opt/wemeet/wemeetapp.sh,在第 53 行添加:

export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json

注意:此处必须有 export,仅写变量赋值不导出的话子进程 wemeetapp 继承不到,变量无效。

当前完整脚本内容见文末 附录 B。

4.2 屏幕共享修复

现象:点击"共享屏幕"无反应,或能发起共享但别人看到白屏。

根因(来自 wemeet-screenshare-patch 技术细节):

  • Hunk 0libscreen_share_module.so 中 DBus 异步调用顺序错误 — Start 调用放在了 SelectSources 之后而未等待其完成,依赖竞态条件。xdg-desktop-portal-gnome 后端将 SelectSources 立即返回、Start 弹窗等待用户选择显示器,掩盖了此 bug;但在 xdg-desktop-portal-wlr 后端则会必然失败。
  • Hunk 1a/1b:PipeWire 颜色格式协商硬编码了 BGRx 格式,部分 portal 后端不支持,导致对方看到白屏。补丁中的 libhook.so 劫持缓冲区路径做了 BGRx↔RGBx 转换。

本机修复过程

  1. 按 patch README 执行 Step 1 (运行 python3 patch.py) 和 Step 2 (添加 LD_PRELOAD),能发起共享但别人看到白屏(颜色格式问题)。
  2. 参考 Issue #2,创建并执行 reverse_colors.py 撤销 Hunk 1a/1b 的颜色格式劫持,同时删除 LD_PRELOAD 行。
  3. 最终效果:只保留 Hunk 0(DBus 异步调用修复),去掉颜色格式转换,屏幕共享恢复正常,别人能看到且颜色正确。

reverse_colors.py 代码(保存为 .py 文件后用 sudo python3 执行):

#!/usr/bin/env python3
"""Reverse Hunk 1a/1b (color format patches) while keeping Hunk 0 (DBus fix)."""
import mmap
import os
import sys

REVERSE_PATCHES = {
    "/opt/wemeet/bin/modules/screen_share/libscreen_share_module.so": [
        (0x450fb6, bytes.fromhex("08")),
        (0x4566e4, bytes.fromhex("8b45c08b4808")),
        (0x6b1951, bytes.fromhex("4889e54883ec1048897df8488b7df8e88b01")),
        (0x6b1964, bytes.fromhex("004889c7e8b30100004883c4105dc3662e0f1f84")),
    ],
    "/opt/wemeet/lib/libxcast.so": [
        (0xfedbfa, bytes.fromhex("660f1f44")),
        (0xfedc3c, bytes.fromhex("23")),
        (0xfedc4b, bytes.fromhex("4883")),
        (0xfedc4f, bytes.fromhex("5b5d415c415d415e415fc3660f1f440000")),
    ],
}

def apply(path, patches):
    print(f"Patching: {path}")
    with open(path, "r+b") as fh:
        with mmap.mmap(fh.fileno(), 0, access=mmap.ACCESS_WRITE) as mm:
            for offset, new_bytes in patches:
                current = mm[offset:offset+len(new_bytes)]
                print(f"  0x{offset:08x}: {current.hex()} => {new_bytes.hex()}")
                mm.seek(offset)
                mm.write(new_bytes)
            mm.flush()
    print("  OK\n")

for f, patches in REVERSE_PATCHES.items():
    apply(f, patches)

print("Done. Hunks 1a/1b reversed. Hunk 0 (DBus fix) retained.")

执行后删除启动脚本中的 LD_PRELOAD 行:

sudo sed -i '/^export LD_PRELOAD.*libhook\.so/d' /opt/wemeet/wemeetapp.sh

4.3 修复后腾讯会议功能状态

功能 状态 备注
Webcam 预览 正常 50_mesa.json → llvmpipe 软件渲染
观看别人共享屏幕 正常 软解 + 软渲染,稍慢但可用
创建屏幕共享给别人看 正常 Hunk 0 DBus 修复
共享画面颜色 正常 已撤销 Hunk 1a/1b
音频输入/输出 正常 PipeWire 正常启动即可
视频硬件编解码 关闭 (hwdec:0, hwenc:0) 走 Mesa llvmpipe 软件路径

五、总结

维度 混合输出 (MSHybrid) 独显直连 (dGPU Only)
桌面流畅度
Waydroid 可用 不可用
腾讯会议 webcam 正常 已修复(Mesa llvmpipe 兜底)
腾讯会议屏幕共享 打 patch 后正常 打 patch 后正常
NVIDIA VA-API 硬解 NVDEC + Intel 都可用 仅 NVDEC
NVIDIA 硬编 NVENC 正常 NVENC 正常

核心妥协:放弃 Waydroid,换取桌面流畅度。腾讯会议通过 __EGL_VENDOR_LIBRARY_FILENAMES + wemeet-screenshare-patch(仅 Hunk 0)组合方案完全可用。


附录 A:相关链接

附录 B:/opt/wemeet/wemeetapp.sh 当前内容

#!/bin/bash

os_release="/etc/os-release"
if [[ -e ${os_release} ]];then
  source /etc/os-release
  main=`echo ${VERSION_ID} | awk -F . '{print $1}'`
  case $ID in
  ubuntu)
    if [[ ${main} -le "16" ]];then
      zenity --info --title="腾讯会议" --text="腾讯会议检测到您操作系统版本过低,请升级系统到ubuntu18.04或以上版本!" --width=350 --height=100
      exit 1
    fi

    if [[ ${main} -le "18" ]];then
      if [ $XMODIFIERS ];then
        im_module=$XMODIFIERS
        echo 'use XMODIFIERS'
        export QT_IM_MODULE=${im_module#*=}
      elif [ $GTK_IM_MODULE ];then
        echo 'use GTK_IM_MODULE'
        export QT_IM_MODULE=${GTK_IM_MODULE}
      fi
      echo ${QT_IM_MODULE}
    fi
    ;;
  *)
    ;;
  esac
fi

if [ "$XDG_SESSION_TYPE" = "wayland" ];then
  if [ -f "/opt/x11-wayland/x11-ext.sh" ];then
    source /opt/x11-wayland/x11-ext.sh
  else
    export QT_QPA_PLATFORM=xcb
    export XDG_SESSION_TYPE=x11
    unset WAYLAND_DISPLAY
    export WEMEET_XWAYLAND=1
  fi
fi

SELF=$(readlink -f "$0")
HERE=${SELF%/*}

export LC_ALL=zh_CN.UTF-8
export PATH="${HERE}/bin${PATH:+:$PATH}"
export LD_LIBRARY_PATH="${HERE}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export QT_PLUGIN_PATH="${HERE}/plugins"
export TZ=Asia/Shanghai

export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json

exec wemeetapp $*