
最近在开发一个跨平台小工具, 需要调用系统能力, 例如 "获取其他窗口句柄" "激活其他窗口" "模拟按键执行粘贴" "注册全局热键" 这些功能在 Windows 和 Mac 都可以通过调用系统 API 或系统脚本(Mac 上需要授权)的方式实现, 总体上比较舒服好用.
当准备适配 Linux 的时候, 却发现发现麻烦大了. 原以为以 Linux 的开放程度, 适配过程应该是很轻松的, 结果却恰恰相反. 查阅资料, 都说 Wayland 正在替代 X11, 所以毫无疑问优先适配 Wayland . 但是在 Wayland 上连改变自身窗口位置的功能都无权实现. 也没办法注册全局热键. 更别提上述的的敏感功能了.
其实我可以理解这些行为的敏感, 容易被恶意利用. 但是可以像 MAC 一样授权呀, 一刀切的不提供, 实在不知道桌面软件要怎么开发. 如果用 xcb 兼容模式运行也无法实现所有功能.
如果只兼容 X11, 失去 Wayland 的用户, 真的挺遗憾的, 也不完美.
还有办法么......
1 mgrddsj 1 天前 “注册全局热键”在 Wayland 下其实是有的,应该是要调用 org.freedesktop.portal.GlobalShortcuts 这个 API 。不过 GNOME 在今年发布的 48 版本才支持这功能( Ubuntu 24 LTS 的 GNOME 版本才 46 ),所以我也不知道为什么主流发行版和桌面环境都这么着急拥抱 Wayland 这个混乱的半成品。 激活其它窗口这个的话,可能确实没有通用的/跨桌面环境的实现。我用着 GNOME 桌面,可以用 "Activate Window By Title" 这个 GNOME 拓展 + 自定义快捷键执行一个 gdbus call 命令来实现一键激活微信窗口。 不过要不是 X11 对触控板的支持不好( Chromium 系软件无法双指缩放、惯性滚动),我也不会用 Wayland ,简直是戴着脚镣跳舞。 |
2 Cooky 1 天前 别拿那么高雅的词来形容 Wayland ,Wayland 就是烂,只不过是相比起 x11 支持新的特性,老特性该有的一样没有 |
3 stinkytofux OP @mgrddsj #1 很难搞, 即便我想带 Linux 玩, 现实也不允许了. |
4 lumia1020 1 天前 前年做一个工业显示屏,要为应用程序实现一个视频外挂窗口,这个视频窗口要顶层显示和自定义位置,发现系统不支持,费老大劲了。好就好在是开源,通过修改 Wayland 源代码来实现了。 |
5 Greendays 1 天前 之前 Windows 不是有那种骗小白的重装系统镜像,安装完了以后要你扫码付款的那个,就是利用了全屏接口来强制全屏的吧。这类权限被限制还是有道理的。 |
7 ergouli848 1 天前 那就开发 X11 呗,不是有 XWayland 这个兼容层么。 |
8 xtreme1 1 天前 并非封闭, 而是真空中的球形标准. 你一问就是我们还要考虑没有 XY 坐标的窗口管理器. 我草. KISS 原则不知道扔到火星去了. |
9 yyzh 1 天前 via Android Wayland 就是烂+1.装了新版 ubuntu 25.10 之后进设置开远程桌面居然会死程序。被迫换旧版 ubuntu 了 |
10 stinkytofux OP @ergouli848 #7 兼容层不行, 达不到效果. 研究了一下午, 放弃了, 决定只适配 X11 了. |
11 muxueqz 1 天前 这些功能可以提供 CLI, 由用户自己在 DE/WM 中配置快捷键 |
12 pckillers 1 天前 远程键鼠重度用户表示 Wayland 就是个残缺品。 继续 X11+XFCE 。 直到哪天开机自动接入远程键鼠控制与剪贴板共享能用了。 |
13 crysislinux 1 天前 via Android 开放是开放源码不是开放 feature ,所以。 |
14 zzzsy 1 天前 开放是你可以加上这个 API |
15 willm 1 天前 不是封闭,就是单纯的挫 |
16 levelworm 23 小时 31 分钟前 @Cooky #2 但是我在论坛上问了一位原 X11 开发人员现 Wayland 开发人员,似乎 X11 的历史包袱实在是太重了,所以只能推倒从头再来。 |
17 emonc 21 小时 44 分钟前 封闭是它有但是不给你。 |
18 div class="sep3"> passive 18 小时 53 分钟前 via Android 刚出 Gnome3 的时候巨烂,KDE4 也烂得没法用,Pulseaudio 能关就关,ChromeOS 就是自启动一个 chrome ,Python3 的生态也没法用…… 这些现在成熟的软件都是这么过来的。 只有 terminal ,vi 和一系列 shell 下的文字处理工具在我从业之后没怎么变。哦,Perl 也没人用了,pcre 还活着。 |
19 sudo123 17 小时 16 分钟前 你说对了,Windows 才是生态开放系统…… |
20 L4Linux 17 小时 5 分钟前 via Android 你可以研究研究 GIMP 怎么做的,甚至直接问它的开发者。 |
21 yolee599 15 小时 57 分钟前 via Android 不是封闭,就是单纯的功能没做出来,Wayland 相当于推翻原来的 X11 重做了 |
22 crackidz 15 小时 53 分钟前 大哥封闭是权限封闭的意思吗?你的意思是随意提权的系统才是“开放的”系统?那么病毒和恶意软件作者可要笑嘻了 |
23 Danswerme 15 小时 51 分钟前 Wayland 发展这么缓慢呀,记得 N 年前我研究怎么安装 ArchLinux 时许多人就推荐 Wayland ,说它才是未来,这么些年过去了还是没彻底取代 X11 |
24 sir283 15 小时 48 分钟前 不是封闭,是压根没有,但是你可以拉取 Wayland 的源码,自己搞一套这样的通用标准,然后提 pr 过去,我相信如果你的代码水平过关的话,他们肯定很愿意接受你的 pr ,那样的话,在下个版本,他们就会加上你的这个标准了,那样就可以适配 Linux 端了,你说是吧?#(滑稽) |
27 bruce0 15 小时 42 分钟前 我之前一直用 X11,上周不知道为啥,更新 apt upgrade 了一次,然后就是桌面无限卡死,用的 Debian13+gnome,没办法换到 wayland 了,缺点就是不支持搜狗输入法了,换到 rime 了,clion 里偶发的弹窗只显示黑框,重新打开可能就好了 |
28 stinkytofux OP @crackidz #22 "随意提权"这个帽子扣大了, 例如注册全局热键是很基本的需求, 在 mac 甚至都不需要授权. 很遗憾在 Wayland 完全没办法实现. |
29 Narcissu5 15 小时 21 分钟前 Wayland 也出来好多年了,这些问题不是“不成熟”,而是项目组脑子有,这个很多地方都有吐槽 |
30 realpg PRO wayland 的开放指的是我可以让你看到我的屎山是怎么写的 |
32 kapr1k0rn 15 小时 9 分钟前 11 楼是正解,OP 属于用 Windows 的 UI 思维去套 linux 了 |
34 wwwz 15 小时 6 分钟前 不需要适配,不能理解使用 Linux 桌面的人 |
35 w568w 14 小时 21 分钟前 天下苦 Wayland 久矣。X11 是太开放导致安全漏洞多,那 Wayland 就是太封闭导致什么也做不了: 1. 宁愿提供一个个独立的、随意设计的 Protocol ,也不愿意像 macOS 那样设计一个统一的权限系统。 现状就是:有的功能需要用户显式授权、有的功能需要请求后 Compositor 自行实现(例如移动窗口)、有的功能不需要授权可以直接调用。设计选择完全看协议发起者的心情; 2. 通过新协议的速度慢得令人发指。 人人参与讨论的结果就是人人都不满意,一个协议讨论五六年仍然有「原教旨开发者」会反对(例如屏幕截图 ext-image-copy-capture-1 、置顶显示 wlr-layer-shell-unstable-v1 、全局热键 hyprland-global-shortcuts-v1 ); 3. 碎片化。 由于上一点中所说的原因,很多协议把社区开发者熬走了都还没 merge ,各家 WM/DE 只能自行实现私有协议。目前 wlr 、KDE 、Hyprland 、COSMIC 、Weston 、Treeland 、AGL ,只要你能叫出名的 WM/DE/framework ,都有一大批自家的协议来补充那些 Wayland 不合并的功能。另外还有一些已经合并但下游开发者不想/不能及时支持的功能。 |
36 Aixtuz 14 小时 15 分钟前 允许但之前没人修这条路 vs 你想修但不允许你修,这是两回事。 |
37 LokiSharp 14 小时 1 分钟前 你直接去给 Wayland 写个 PR ,通不过就开个分支不就好了 |
38 Esec 13 小时 42 分钟前 via Android 不要有太多包袱,该 root 就上,怕收不住就留个自毁按钮吧 |
39 blumia 现阶段还是只兼容 X11 吧,Wayland 的无障碍支持是惨不忍睹状态,你甚至都无法控制自己窗口所在位于屏幕上的位置,甚至无法置顶自己的窗口。自动化的功能全靠桌面环境(对应的合成器)有没有提供相关的辅助功能,非常碎片化。 |
40 takeshima 9 小时 55 分钟前 via iPhone x11 确实太落后了,比如两个显示器用不同缩放比例、不同分辨率,x11 支持不了,wayland 可以。但是 wayland 目前状况就是个半成品,很多该有的基础功能还没做好,只能说 Linux 桌面这块儿目前确实不太行 |
41 moooxin 9 小时 47 分钟前 刚被 Wayland 折磨过的人来说。。 真的是 SB 。。。 为了所谓的安全。。?? 就降低的电动车的标准吗?? |
42 cyp0633 9 小时 33 分钟前 就现在各种应用在 Wayland 上功能缺失、Electron/Chromium 这种活跃的开源项目的输入法支持都才做好没多久来看,很难说 Wayland 真的在为开发者着想,虽然它确实某种程度上解决了 X11 的一些问题 |
43 mouyase 9 小时 28 分钟前 不是封闭,而是没有规范 |
44 MindMindMax 8 小时 19 分钟前 同意 24 楼的观点。你可以实现,PR 一个。 开放 = 碎片化 = 烂尾多 = 佛系 or 自力更生。 |