yetone / tauri-bug-reproducer

Tauri 😬
38 stars 1 forks source link

Tauri v2在Linux桌面的兼容性极度逆天 #16

Open lanyeeee opened 2 days ago

lanyeeee commented 2 days ago

Linux下,Tauri v1的webview实现是webkit2gtk4.0,到了v2后实现升级成了webkit2gtk4.1,这玩意一堆BUG。

所以其实下面的问题只是间接与Tauri有关,问题的罪魁祸首是webkit2gtk4.1。 先罗列问题,都是我自己遇到过的:

  1. 前端不会自动使用系统代理
  2. 渲染错误,窗口全白
  3. 点击输入框(\)会导致页面卡死
  4. 窗口没法通过标题栏拖动
  5. set_position 等控制窗口位置的方法均不起作用
  6. current_monitor 等获取显示器的方法均拿不到,只会返回None

1. 前端不会自动使用系统代理

触发方式

Ubuntu22.04 + webkit2gtk-4.1: 2.44

详情

如果你的Ubuntu设置了系统代理,那么前端发出的所有请求全都会返回403。 这时候前端无法访问任何网页,也无法通过类似\<img src"xxx"/>的方法加载图片。

Tauri v2是比v1多了一个 配置项 来设置代理,如果配置正确倒是能正常工作,然而这玩意是写死的,只能在创建窗口时设置,如果运行期间系统代理地址变动了就又完犊子了。

这个问题在Tauri v1没有,Tauri v1能正确自动使用系统代理,即使系统代理在运行期间发生了变化,因为v1基于webkit2gtk4.0。 为了验证问题我用wry写裸的webview测试,结果v0.24.11正常,问题在下一个版本v0.25.0出现,这两个版本最大的不同就是依赖的webkit2gtk版本从4.0升级到了4.1

更离谱的是,这个问题仅在Ubuntu22.04存在且稳定复现,我试过Ubuntu24.04,同样的webkit2gtk版本,没有这个问题。 我为此还又装了一个全新的Ubuntu22.04,依旧稳定复现。

所以当你在Ubuntu22.04 安装 webkit2gtk-4.1: 2.44时,就没法使用luakit等基于webkit2gtk的浏览器了(没错,我为了验证问题也自己手动编译了luakit),类似pake这种项目也直接没法用。

2. 渲染错误,窗口全白

触发方式

Ubuntu24.04 + N卡 + 默认驱动

详情

在上述条件下运行 基于 webkit2gtk-4.1 的项目(Tauri v2 的 Hello world即可),整个窗口直接全白。 我也不知道这个问题的锅该给 NVIDIA 还是 webkit2gtk。 谷歌搜一下 WEBKIT_DISABLE_DMABUF_RENDERER 就能看到一堆相关的问题了。

3. 点击输入框(\)会导致页面卡死

触发方式

Ubuntu24.04 + webkit2gtk-4.1: 2.46.1-0 + 点击输入框(<input>)

详情

这个问题是新鲜出炉的,因为Ubuntu是这个月才有webkit2gtk-4.1: 2.46.1-0的包。 饱受webkit2gtk-4.1折磨,我自然兴冲冲的更新了。 哦吼,不仅老BUG(1.2.)没修,还多了个输入框完全没法用的BUG。 灰溜溜回退到 webkit2gtk-4.1: 2.44 后这个BUG就没了。

写不动了,4. 5. 6. 也都是webkit2gtk的问题,以后又被折磨了再回来继续写。