我使用 XCreateSimpleWindow 创建 x11 窗口。 xprop 显示了我的窗口允许的以下操作:
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_STICK, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
如果我没有明确设置它们(如上所述)会发生什么?一个窗口有一个默认列表,其中包含所有这些?如何明确地设置它们?
编辑1 以下是仅设置一个允许的操作的示例代码:
Atom aa = XInternAtom(d, "_NET_WM_ALLOWED_ACTIONS", False);
Atom close = XInternAtom(d, " _NET_WM_ACTION_CLOSE", False);
XChangeProperty(d, w, aa, XA_ATOM, 32, PropertyNewValue, (unsigned char*)&close, 1);
窗口管理器仍然允许我移动或调整窗口大小,所以也许我应该发送一些客户端消息?我想要一个只允许关闭操作的窗口。
最佳答案
1) 不,默认情况下窗口没有属性,但窗口管理器经常设置一些默认值。尝试在没有 WM 的情况下运行您的程序以查看差异
2) 使用“ChangeProperty”请求。窗口属性是与窗口相关的一些数据+一点元数据:名称(atom)和类型(atom)。如果数据大小超过单一类型,则假设您有这些数据的数组。例如,atom 只是 32 位 unsigned int。如果您看到原子类型的 8 字节属性,则您会将内容解释为两个原子。请参阅XChangeProperty文档(如果您使用的是 xlib)
关于linux - x11 - 如何设置 _NET_WM_ALLOWED_ACTIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495586/