如何使用 wmctrl 将 window 移出屏幕
How to move window offscreen with wmctrl
我正在尝试以编程方式移动 window 以使其部分显示在屏幕上。例如,单击 VLC 标题栏并拖动它,使 window 的一半可见就可以了。
当我输出 wmctrl -lG
的结果时,效果很好:
0x04a00011 0 -293 138 600 420 HEVM002 VLC media player
然而,当我将它移回屏幕并尝试复制它的位置时,它不起作用并将 window 剪辑到远端:
wmctrl -r "VLC media player" -e 0,-200,0,800,600
我已经在几个 window 管理器上进行了测试,它似乎在 xfwm 上工作正常,但在 compiz 上却不行。有没有我可以设置的标志或类似的东西来启用移动 windows off-screen?
当 运行 在 window 经理手下时,这完全取决于 window 经理。是否有强制部分离屏位置的标志取决于它是哪个window经理。
实现此目标的唯一 window 经理不可知论方法是使 window 成为 override_redirect
window。但是,当然,这意味着 window 不再受管理。再次使其成为正常的 window 将导致 window 经理再次管理它,这可能再次取决于 window 经理,意味着强制它再次进入界内。
就是说,查看 wmctrl 的源代码,如果 window 管理器支持,它使用 _NET_MOVERESIZE_WINDOW
,否则回退到 XMoveResizeWindow
(或类似)。但是,在第一种情况下,它首先将位置值转换为 unsigned long
,这实际上意味着无论如何都会丢失任何负值。在第二种情况下,负值似乎表示 "don't move",所以也不走运。
您可以尝试改用 xdotool windowmove
,这样可以正确处理负值。也许还考虑针对 wmctrl 提交错误?
我正在尝试以编程方式移动 window 以使其部分显示在屏幕上。例如,单击 VLC 标题栏并拖动它,使 window 的一半可见就可以了。
当我输出 wmctrl -lG
的结果时,效果很好:
0x04a00011 0 -293 138 600 420 HEVM002 VLC media player
然而,当我将它移回屏幕并尝试复制它的位置时,它不起作用并将 window 剪辑到远端:
wmctrl -r "VLC media player" -e 0,-200,0,800,600
我已经在几个 window 管理器上进行了测试,它似乎在 xfwm 上工作正常,但在 compiz 上却不行。有没有我可以设置的标志或类似的东西来启用移动 windows off-screen?
当 运行 在 window 经理手下时,这完全取决于 window 经理。是否有强制部分离屏位置的标志取决于它是哪个window经理。
实现此目标的唯一 window 经理不可知论方法是使 window 成为 override_redirect
window。但是,当然,这意味着 window 不再受管理。再次使其成为正常的 window 将导致 window 经理再次管理它,这可能再次取决于 window 经理,意味着强制它再次进入界内。
就是说,查看 wmctrl 的源代码,如果 window 管理器支持,它使用 _NET_MOVERESIZE_WINDOW
,否则回退到 XMoveResizeWindow
(或类似)。但是,在第一种情况下,它首先将位置值转换为 unsigned long
,这实际上意味着无论如何都会丢失任何负值。在第二种情况下,负值似乎表示 "don't move",所以也不走运。
您可以尝试改用 xdotool windowmove
,这样可以正确处理负值。也许还考虑针对 wmctrl 提交错误?