是否有命令可以进入特定的工作区?

是否有命令可以进入特定的工作区?

我正在尝试在工作区切换器启动器上创建一个快捷列表,以便快速切换到某个工作区。(我的朋友有时会使用我的电脑,但他不喜欢键盘快捷键,所以我想帮他解决这个问题。)

那么,是否有一个命令可以在终端中输入,强制聚焦某个工作区?

答案1

您可以使用控制端

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

如果您正在使用 Compiz,那么您将必须使用一些技巧,因为 Compiz“工作区”实际上是单个工作区的视口。

技巧说明

检查输出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

答案2

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

笔记:对于某些窗口管理器,或者如果您正在使用compiz,则可能需要使用xdotool诸如set_desktop_viewport和 之类的命令get_desktop_viewport。您可能需要以不同的方式指定命令,例如德斯瓜上面的建议,但对我来说,set_desktopset_desktop_for_window命令在非 compiz 系统上最有用。)

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

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

xdotool get_num_desktops

仅当您至少拥有 1 个其他工作区时,以下命令才会起作用。

要将焦点转移到工作区 1,只需输入

xdotool set_desktop 1 

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

xdotool set_desktop 0

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

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

xdotool get_desktop

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

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

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

答案3

我已经实现了一个脚本,可以完成你想要的功能。它如下:https://github.com/norswap/wmov/blob/master/wmov.sh

它确实像 desgua 的帖子中描述的那样工作。它还具有将窗口发送到其他工作区的功能。

答案4

可以使用 Python 和库来实现进入特定工作区并在那里执行操作pyautogui,使 Python 脚本能够执行鼠标点击、击键等操作。

我写简短教程在 Peppermint OS 论坛中讨论在特定工作场所启动应用程序的问题。

相关内容