如何在X11中制作固定的位置和尺寸窗口

时间:2016-07-04 20:39:28

标签: x11

所以我想让我的窗户不能移动和调整大小,无论如何要做到这一点?下面是我当前的窗口创建代码。

testbwidgetptr->basewin = XCreateWindow(BOTIFDisplay,
                tmp->drawarea,
                testbwidgetptr->bwidgetx,
                testbwidgetptr->bwidgety,
                testbwidgetptr->bwidgetwidth,
                testbwidgetptr->bwidgetheight,
                0, CopyFromParent, InputOutput,
                CopyFromParent, valuemask, &winatt);
XSetWindowBackground(BOTIFDisplay, testbwidgetptr->basewin, WhiteDot);

1 个答案:

答案 0 :(得分:0)

  

我想让我的窗户不能移动和调整大小

在X11窗口管理中,客户端无法定义他们想要的内容。他们可以询问窗口管理器执行此操作(或不执行此操作),但最终始终由窗口管理器决定。实际上,规范明确指出客户端应用程序必须处理窗口管理器分配给它的任何大小 - 所以答案是:不,如果你想要管理你的窗口,就不能这样做。

正如评论中所指出的,您可以在窗口上设置override_redirect。这告诉窗口管理器不要管理你的窗口,这意味着窗口管理器不会干扰它。但是,从理论上讲,任何客户端仍然可以调整窗口大小(尽管这种情况极不可能发生)。

但是,你应该小心这一点。绕过窗口管理器也意味着你失去了很多东西:窗口装饰,焦点处理等都将消失。特别是,焦点处理必须由您完成。

总而言之,您应该考虑override_redirect是否实际上是您想要使用的。在大多数情况下,您应该只构建一个可以处理任意窗口大小和位置的客户端。