我正在尝试使我的窗口管理器符合 ICCCM 规范。我完全理解 _NET_SUPPORTING_WM_CHECK 原子的原因 - 这可以确保当窗口管理器不再运行时不会保留任何无效信息。
我不明白的是,为什么除了 _NET_WM_NAME 和 _NET_SUPPORTING_WM_CHECK 本身之外,支持窗口上没有像 _NET_NUMBER_OF_DESKTOPS 这样的其他原子。
窗口管理器应该设置并覆盖数据,但如果新的窗口管理器不兼容,这可能会产生误导。
最佳答案
嗯,你所说的原子不是 ICCCM。 它们属于较新的 EWMH 集。
所以基本上是这样的。
首先我们有 ICCCM。 他们是
- 旧
- 成熟
- 大多数窗口管理器都支持(全部或部分)
- 易于实现
- Unix 标准
然后我们就有了 EWMH
- 较新(GNOME 和 KDE)
- 没有多少窗口管理器支持它们
- 更复杂(例如虚拟桌面)
- 免费桌面标准。
Freedesktop 希望使 EWMH 尽可能广泛(GNOME 和 KDE 除外) 这就是为什么大多数原子是“应该”而不是“必须”的原因。他们给小窗口管理器一个机会来声明合规。
关于x11 - 令人困惑的_NET_SUPPORTING_WM_CHECK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214183/