是否有命令去特定的工作区?

我正在尝试在Workspace Switcher启动器上制作快速列表,以便快速切换到某个工作区。 (我的朋友有时使用我的电脑而不喜欢键盘快捷键,所以我想帮助他。)

那么是否有一个命令可以在终端中输入以强制某个工作空间被关注?

你可以使用wmctrl 。

基础命令:
wmctrl -d显示所有工作区。
wmctrl -s 更改为特定工作区。

如果您使用Compiz,则必须执行一项技巧,因为Compiz“workspaces”实际上是单个工作区的视口。

技巧说明

检查wmctrl -d的输出例如,我的是:

 0 * DG: 4098x2304 VP: 1366,0 WA: 0,23 1366x745 N/A 

这意味着实际上我有一个4098 x 2304的工作空间而不是我“想到”的工作空间(九个“工作空间”,3 x 3)。
我当时应该是“工作空间”2,但实际上我在视口(VP)1366,0(4098/3 = 1366),如上面的输出所示。

这就是它的工作原理:我们采用整个工作空间并划分我们“思考”的“工作空间”数量。 就我而言:4098/3 = 1366和2304/3 = 768。

如果我想转到我的“工作区”1,命令是:

 wmctrl -o 0,0 

然后,如果我想转到我的“工作区”4,命令是:

 wmctrl -o 0,768 

如果我想转到我的“工作区”8,命令是:

 wmctrl -o 1366,1536 

如果我想转到我的“工作区”9,命令是:

 wmctrl -o 2732,1536 

得到它了? 😉

-o标志“截断”它们的值。 换句话说,它改变了实际像素所属的“工作空间”。 以下是等效的:

 wmctrl -o 0,0 wmctrl -o 1365,767 

使用xdotool实现您想要的function非常简单, xdotool有多个用于管理不同工作空间的选项(在程序文档中也称为“桌面”)。 我发现将man xdotool命令串起来可能非常有趣和有创意; 我在下面制定的命令可能在脚本中很有用。

注意:对于某些窗口管理器,或者如果使用compiz ,可能需要使用xdotool命令,例如set_desktop_viewportget_desktop_viewport 。 您可能必须以不同的方式指定命令,例如上面的desgua建议,但对我来说, set_desktopset_desktop_for_window命令certificate在非compiz系统上最有用。)

该解决方案对Xubuntu / Lubuntu用户或未运行compiz等的用户最有用。

要列出当前工作空间的数量,请输入

 xdotool get_num_desktops 

仅当您至少有一个其他工作区时,以下命令才有效。

要将焦点更改为工作区1,只需输入即可

 xdotool set_desktop 1 

然后返回默认工作区,输入

 xdotool set_desktop 0 

只需将工作空间指定为命令中的最后一个值(1或2或3等)。

要查找当前所在工作区的编号,可以使用

 xdotool get_desktop 

这些命令可以在脚本中使用,它们对于实现您的function非常有用。

有关如何将应用程序切换到特定桌面的信息,请参阅我的答案:

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

有关可用于工作区切换的更多有用选项,请参阅man xdotool

我已经实现了一个可以满足您需求的脚本。 这是: https : //github.com/norswap/wmov/blob/master/wmov.sh

它确实如desgua的post所述。 它还具有将窗口发送到其他工作区的function。

在compiz wiki上有一个名为compiz-send.py的脚本,它部分地解决了你的问题:它不是一个特定的工作区,但你可以找到它旁边的那个。

有了它,您可以发出命令
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
并使视口向左或向右移动1。