简单的问题:如何考虑任何窗口管理器添加的装饰,如何在X11中设置窗口的位置?
我知道当我创建一个窗口时,窗口管理器会将它包装在另一个窗口中,这样如果我想获得窗口的“真实”位置,我必须做这样的事情
XGetGeometry(dpy, win, &root, &oldx, &oldy, &w, &h, &bw, &depth);
XTranslateCoordinates(dpy, win, root, oldx, oldy, &newx, &newy, &c);
那么,我如何正确使用XMoveWindow()移动窗口以便newx和newy是我想要的呢?
谢谢.
最佳答案 正如已经指出的那样,你不能.主要原因是XServer将所有几何请求传递给窗口管理器(这就是为什么它被认为是一种不同类型的客户端,并且您不能同时运行多个窗口管理器),谁决定是否授予它们.如果是严格的窗口管理器,则根本不允许移动窗口.或者它可以以不同于您请求的方式移动窗口.