如何在 bash 中使用其 ID 将窗口移动到不同的工作区?

如何在 bash 中使用其 ID 将窗口移动到不同的工作区?

目前我已经成功使用 wmctrl -r :SELECT: -t 2 但类似的东西 wmctrl -r -i 0x03e00003 -t 2不起作用。我应该如何编写命令才能通过 ID 而不是通过鼠标选择要移动的窗口?

我使用的是 Linux Mint 13 和默认的 MATE DE 。

我也尝试过wmctrl -i -r 0x03e00003 -t 2

编辑1: wmctrl -i -r thewinIDInHexa -t 2现在可以工作。它不起作用的原因是,当我第一次尝试 wmctrl 时,我使用了正确的 ID,但语法错误,第二次我使用了正确的形式,但错误的窗口 ID...问题是 ID 不是 -对于不存在的 ID,existent 和 wmctrl 不会输出任何消息。感谢你付出的努力。确认我实际上使用了正确的命令形式后,我不得不仔细检查 ID。再次感谢你

编辑2:由于我无法发表评论,我将在这里发布对@slm的回复:现在正确的ID是0x0380000f

wmctrl -v -i -r 0x0380000f -t 2



envir_utf8: 1
Using window: 0x0380000f

VLC 已移至工作区#2(第三个工作区)

对于实际上不存在的 ID,我们有几乎相同的东西:

wmctrl -v -i -r 0x03a00003 -t 2 

envir_utf8: 1
Using window: 0x03a00003

答案1

也许您对开关感到困惑-t #。窗口编号从 1 开始,但第一个窗口实际上编号为 0。请注意wmctrl -l

$ wmctrl -l
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x06015fee  0 grinchy saml@grinchy:~
0x06000004  0 grinchy saml@grinchy:~
0x05a000d1  0 grinchy xorg - How can I get information about my virtual desktops via the command line? - Unix & Linux Stack Exchange - Google Chrome

第二列是桌面的编号。因此,当您使用时,-t 2它实际上是将窗口放在-r 0x03e00003第三个桌面上,而不是第二个桌面上。

例子

Evince PDF 窗口在桌面 #1 (0) 上启动:

$ wmctrl -l | grep 0x03a00003
0x03a00003  0 greeneggs.bubba.net Packt.Puppet.3.Beginners.Guide.pdf

将其移至桌面 #3 (2):

$ wmctrl -i -r 0x03a00003 -t 2

确认:

$ wmctrl -l | grep 0x03a00003
0x03a00003  2 greeneggs.bubba.net Packt.Puppet.3.Beginners.Guide.pdf

请注意它在哪个窗口上:

    SS #1

它位于桌面#3 上!

参考

相关内容