linux – 如何使用wmctrl在窗口外移动窗口

我试图以编程方式移动一个窗口,使其部分在屏幕上.例如,单击VLC标题栏并拖动它以便只有一半窗口可见,效果很好.

当我输出wmctrl -lG的结果时,这很好用:

0x04a00011  0 -293 138  600  420  HEVM002 VLC media player

然而,当我然后将它移回屏幕并尝试复制其位置时,它不起作用并将窗口剪切到远端:

wmctrl -r "VLC media player" -e 0,-200,0,800,600

我已经测试了几个窗口管理器,它似乎在xfwm上工作正常但不在compiz上.是否有一个标志或类似的东西,我可以设置为启用屏幕移动窗口?

解决方法:

在窗口管理器下运行时,这完全取决于窗口管理器.是否存在强制部分屏幕外位置的标志取决于它是哪个窗口管理器.

唯一的窗口管理器不可知的方法是使窗口成为override_redirect窗口.但是,当然,这意味着窗口不再受管理.再次使其成为普通窗口将导致窗口管理器再次管理它,这可能再次取决于窗口管理器,意味着再次强制它进入入口.

也就是说,查看wmctrl的源代码,如果窗口管理器支持它,则使用_NET_MOVERESIZE_WINDOW,否则返回XMoveResizeWindow(或类似).但是,在第一种情况下,它首先将位置值转换为unsigned long,这实际上意味着任何负值都会丢失.在第二种情况下,负值似乎表示“不动”,所以也没有运气.

您可以尝试使用xdotool windowmove,它将正确处理负值.也许还考虑提交针对wmctrl的错误?

上一篇:python-用rpy发送到X11的图突然关闭了吗?


下一篇:如何确定使用哪种D-Bus绑定