如何查找当前工作区的名称?

Don*_*Gar 11 command-line window-manager workspaces wmctrl

bash 脚本有没有办法查找当前工作区(虚拟桌面)的名称?

这对于基于创建 shell 的桌面在我的 .bashrc 文件中自定义行为等事情似乎非常有用。

Ter*_*nce 14

您可以使用wmctrl -d列出所有工作区来执行此操作。在*表示当前的工作区:

~$ wmctrl -d
0  * DG: 3840x1080  VP: 0,0  WA: 0,25 3840x1055  1
1  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  2
2  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  3
3  - DG: 3840x1080  VP: N/A  WA: 0,25 3840x1055  4
Run Code Online (Sandbox Code Playgroud)

因此,要仅获取当前的 grep *

~$ wmctrl -d | grep -w '*'
0  * DG: 3840x1080  VP: 0,0  WA: 0,25 3840x1055  1
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


Jac*_*ijm 11

Unity 中的视口

如果您使用的是Unity,则无法直接从

wmctrl -d
Run Code Online (Sandbox Code Playgroud)

由于 Unity 具有视口,而wmctrl -d. 输出将只显示一个工作区:

0  * DG: 5040x2100  VP: 1680,1050  WA: 59,24 1621x1026  N/A
Run Code Online (Sandbox Code Playgroud)
  • 我的分辨率是 1680 x 1050(来自xrandr
  • 跨越工作区(所有视口)是5040x2100. 即 3x2 视口:5040/1680 = 3 和 2100 / 1050 = 2。
  • 我目前在 (viewport-) 位置 1680,1050(x,y)

下面的脚本根据这些信息计算当前视口:

wmctrl -d
Run Code Online (Sandbox Code Playgroud)

使用:

  1. 安装 wmctrl

    sudo apt install wmctrl
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过命令运行它

    python3 /path/to/get_viewport.py
    
    Run Code Online (Sandbox Code Playgroud)

    它将输出 1、2、3 或任何当前视口。它会自动计算您的视口配置可能包括的行/列。

解释

在此处输入图片说明

剧本

  • 从 获取一个视口(分辨率)的大小xrandr,包括可能的额外监视器。
  • 获取跨越工作区的当前位置
  • 计算视口设置中的列数/行数
  • 从中,它计算当前视口