linux系统怎么移动窗口,linux – 如何使用wmctrl在窗口外移动窗口

博客讨论了在不同窗口管理器(如xfwm和compiz)中使用wmctrl命令移动窗口时遇到的问题。当尝试将窗口移动到屏幕外部分时,某些管理器不支持负坐标,导致窗口被裁剪。xdotool作为替代工具,能够更好地处理负值,从而实现窗口的屏幕外移动。该问题的解决方案依赖于特定窗口管理器的特性,并且可能需要使用不同的方法来适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我试图以编程方式移动一个窗口,使其部分在屏幕上.例如,单击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的错误?

标签:window-managers,linux,ubuntu,x11,compiz

来源: https://codeday.me/bug/20190829/1759065.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值