V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stinkytofux
6.09D
V2EX  ›  问与答

原来 Linux 桌面才是最封闭的系统.

  •  1
     
  •   stinkytofux · 12 小时 4 分钟前 · 1928 次点击

    最近在开发一个跨平台小工具, 需要调用系统能力, 例如 "获取其他窗口句柄" "激活其他窗口" "模拟按键执行粘贴" "注册全局热键" 这些功能在 Windows 和 Mac 都可以通过调用系统 API 或系统脚本(Mac 上需要授权)的方式实现, 总体上比较舒服好用.

    当准备适配 Linux 的时候, 却发现发现麻烦大了. 原以为以 Linux 的开放程度, 适配过程应该是很轻松的, 结果却恰恰相反. 查阅资料, 都说 Wayland 正在替代 X11, 所以毫无疑问优先适配 Wayland . 但是在 Wayland 上连改变自身窗口位置的功能都无权实现. 也没办法注册全局热键. 更别提上述的的敏感功能了.

    其实我可以理解这些行为的敏感, 容易被恶意利用. 但是可以像 MAC 一样授权呀, 一刀切的不提供, 实在不知道桌面软件要怎么开发. 如果用 xcb 兼容模式运行也无法实现所有功能.

    如果只兼容 X11, 失去 Wayland 的用户, 真的挺遗憾的, 也不完美.

    还有办法么......

    16 条回复    2025-12-16 01:23:08 +08:00
    mgrddsj
        1
    mgrddsj  
       11 小时 41 分钟前
    “注册全局热键”在 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 ,简直是戴着脚镣跳舞。
    Cooky
        2
    Cooky  
       11 小时 39 分钟前   ❤️ 2
    别拿那么高雅的词来形容 Wayland ,Wayland 就是烂,只不过是相比起 x11 支持新的特性,老特性该有的一样没有
    stinkytofux
        3
    stinkytofux  
    OP
       11 小时 36 分钟前
    @mgrddsj #1 很难搞, 即便我想带 Linux 玩, 现实也不允许了.
    lumia1020
        4
    lumia1020  
       10 小时 41 分钟前
    前年做一个工业显示屏,要为应用程序实现一个视频外挂窗口,这个视频窗口要顶层显示和自定义位置,发现系统不支持,费老大劲了。好就好在是开源,通过修改 Wayland 源代码来实现了。
    Greendays
        5
    Greendays  
       10 小时 35 分钟前
    之前 Windows 不是有那种骗小白的重装系统镜像,安装完了以后要你扫码付款的那个,就是利用了全屏接口来强制全屏的吧。这类权限被限制还是有道理的。
    john6lq
        6
    john6lq  
       10 小时 31 分钟前
    @Greendays 不是限不限制的问题,现在是根本没有这个 API 。
    ergouli848
        7
    ergouli848  
       9 小时 24 分钟前
    那就开发 X11 呗,不是有 XWayland 这个兼容层么。
    xtreme1
        8
    xtreme1  
       9 小时 12 分钟前
    并非封闭, 而是真空中的球形标准.
    你一问就是我们还要考虑没有 XY 坐标的窗口管理器. 我草. KISS 原则不知道扔到火星去了.
    yyzh
        9
    yyzh  
       9 小时 5 分钟前 via Android
    Wayland 就是烂+1.装了新版 ubuntu 25.10 之后进设置开远程桌面居然会死程序。被迫换旧版 ubuntu 了
    stinkytofux
        10
    stinkytofux  
    OP
       8 小时 58 分钟前
    @ergouli848 #7 兼容层不行, 达不到效果. 研究了一下午, 放弃了, 决定只适配 X11 了.
    muxueqz
        11
    muxueqz  
       8 小时 28 分钟前
    这些功能可以提供 CLI, 由用户自己在 DE/WM 中配置快捷键
    pckillers
        12
    pckillers  
       8 小时 28 分钟前
    远程键鼠重度用户表示 Wayland 就是个残缺品。 继续 X11+XFCE 。 直到哪天开机自动接入远程键鼠控制与剪贴板共享能用了。
    crysislinux
        13
    crysislinux  
       4 小时 56 分钟前 via Android
    开放是开放源码不是开放 feature ,所以。
    zzzsy
        14
    zzzsy  
       4 小时 16 分钟前
    开放是你可以加上这个 API
    willm
        15
    willm  
       4 小时 5 分钟前
    不是封闭,就是单纯的挫
    levelworm
        16
    levelworm  
       39 分钟前
    @Cooky #2
    但是我在论坛上问了一位原 X11 开发人员现 Wayland 开发人员,似乎 X11 的历史包袱实在是太重了,所以只能推倒从头再来。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:02 · PVG 02:02 · LAX 10:02 · JFK 13:02
    ♥ Do have faith in what you're doing.