如何使用命令将应用程序从工作区 1 转移到工作区 2

Reg*_*ser 16 command-line workspaces

有什么方法可以在命令行上将在一个工作区中运行的应用程序切换到另一个工作区?我使用 Ubuntu 10.04

UPDATE1
根据以下建议

 wmctrl -l
0x02200003 -1 bond Bottom Expanded Edge Panel
0x02200049 -1 bond Top Expanded Edge Panel
0x02000020  0 bond x-nautilus-desktop
0x04e00004  0 bond bond@bond: ~
0x0482a380  0 bond OMG! Ubuntu! | wmctrl - Chromium
0x05000072  0 bond how to shift applications from workspace 1 to 2 using command - Ask Ubuntu - Stack Exchange - Google Chrome
Run Code Online (Sandbox Code Playgroud)

现在当我打字时

wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.
Run Code Online (Sandbox Code Playgroud)

那么如何正确使用它上面的错误是什么?

UPDATE2
我试过了

wmctrl -r 0x05000072 -t 2

但窗户没有效果,它们仍然在同一个工作空间。

小智 16

如果您使用像 Metacity (Unity 2-d) 这样的兼容窗口管理器,您可以使用 wmctrl 将窗口切换到另一个桌面。语法是wmctrl -r :ACTIVE: -t <DESKTOP>. 您还可以使用wmctrl -s <DESKTOP>. 桌面编号从 0 开始。在一行中,这将是:

wmctrl -r :ACTIVE: -t 1; wmctrl -s 1
Run Code Online (Sandbox Code Playgroud)

如果要将活动窗口以外的窗口切换到另一个桌面,请使用标题中的文本作为 -r 的参数。例如:

wmctrl -r "Chromium" -t 1
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用wmctrl -l列出可用窗口并将 ID 号传递给 -r 而不是特殊字符串:ACTIVE:。传递id时,还需要加上-i。例如:

$ wmctrl -l
0x03e00189  0 hostname Ask Ubuntu - Chromium
$ wmctrl -i -r 0x03e00189 -t 2
Run Code Online (Sandbox Code Playgroud)

(wmctrl 可以安装在 Ubuntu 上sudo apt-get install wmctrl。)不幸的是,目前,这似乎不适用于标准 Unity。


小智 5

可以使用 来执行此操作xdotool但是如果您使用compiz此解决方案可能不适用,因此请记住这一点。

要将特定窗口(活动窗口)切换到不同的工作区,您可以使用

xdotool getactivewindow set_desktop_for_window 1
Run Code Online (Sandbox Code Playgroud)

或者对于脚本,您可能希望使用以下命令将特定程序的窗口切换到给定的工作区:

xdotool search --class firefox set_desktop_for_window %@ 1
Run Code Online (Sandbox Code Playgroud)

此命令搜索并找到firefox窗口并将它们传输到工作区 1,在那里它们将最小化。要返回firefox默认桌面,只需将命令末尾的 1 替换为 0 即可。要将不同的窗口发送到另一个工作区,只需替换firefox为另一个程序名称即可。

%@使用来表示从参数传递的窗口至关重要--search,就好像您不这样做就不会传输任何窗口一样。

有关详细信息,请参阅man xdotoolUbuntu在线联机帮助页。


小智 3

如果您正在使用 compiz,请查看此处的compiz wiki。在那里你可以找到几个例子。看看“put”插件。

例子

./compiz-dbus-send.py put put_viewport_right_key
Run Code Online (Sandbox Code Playgroud)