我正在尝试使我的窗口管理器符合 ICCCM 规范。我完全理解 _NET_SUPPORTING_WM_CHECK 原子的原因 - 这可以确保在窗口管理器不再运行时不会留下无效信息。
我不明白的是,为什么除了 _NET_WM_NAME 和 _NET_SUPPORTING_WM_CHECK 本身之外,支持窗口上没有像 _NET_NUMBER_OF_DESKTOPS 这样的其他原子。
窗口管理器应该设置和覆盖数据,但如果新窗口管理器不兼容,这可能会产生误导。
那么你所说的原子不是ICCCM。它们属于较新的EWMH
所以基本上它是这样的。
首先我们有ICCCM。他们是
然后我们有 EWMH
Freedesktop 希望使 EWMH 尽可能广泛(除了 GNOME 和 KDE),这就是为什么大多数原子是应该而不是必须的。他们为小窗口管理器提供了一个声称合规的机会。
我认为这个想法是您必须检查是否支持某个属性,如果支持,则仅从根窗口使用它。
_NET_SUPPORTING_WM_CHECK 窗口是在许多其他属性已经存在之后添加的,如果我没记错的话。