如何通过命令行获取有关虚拟桌面的信息?

如何通过命令行获取有关虚拟桌面的信息?

我很好奇如何获取桌面尺寸、当前处于活动状态的桌面以及为桌面环境 (DE) 设置的标签(如果有)等信息。

答案1

使用该工具wmctrl您可以获得上述所有信息,特别是-d开关。

例子

$ wmctrl -d
0  * DG: 5760x900  VP: 0,0  WA: 0,25 1440x826  Workspace 1
1  - DG: 5760x900  VP: 0,0  WA: 0,25 1440x826  
2  - DG: 5760x900  VP: 0,0  WA: 0,25 1440x826  N/A
3  - DG: 5760x900  VP: 0,0  WA: 0,25 1440x826  N/A

细节

每个桌面输出一行,该行被分成空格分隔的列。

  • 第一列包含一个整数桌面编号。
  • 第二列包含一个“*”字符表示当前桌面,否则包含一个“-”字符。
  • 接下来的两列包含固定字符串 DG:,然后是桌面几何图形“x”(例如“1280x1024”)。
  • 接下来的两列包含固定字符串 VP:,然后是格式为“,”(例如“0,0”)的视口位置。
  • 接下来的三列包含固定字符串 WA:,然后是工作区几何形状为“X,Y 和 WxH”的两列(例如“0,0 1280x998”)。
  • 该行的其余部分包含桌面的名称(可能包含多个空格)。

你可以用 wmctrl 做一些很酷的事情

列出有关窗口管理器的信息

$ wmctrl -m
Name: compiz
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: OFF

列出活动窗口

$ 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

每个窗口输出一行,该行被分成空格分隔的列。

  • 第一列始终包含十六进制整数形式的窗口标识。
  • 第二列始终包含桌面编号(-1 用于标识粘性窗口)。
  • 如果-p指定了该选项,下一列将包含窗口的 PID(十进制整数)。
  • 如果-G指定了该选项,则将跟随四个整数列:x 偏移、y 偏移、宽度和高度。
  • 下一列始终包含客户端计算机名称。
  • 该行的其余部分包含窗口标题(标题中可能有多个空格)。

-p开关示例

0x06015fee  0 3278   grinchy saml@grinchy:~
0x06000004  0 3278   grinchy saml@grinchy:~
0x05a000d1  0 4676   grinchy xorg - How can I get information about my virtual desktops via the command line? - Unix & Linux Stack Exchange - Google Chrome

-G开关示例

0x06015fee  0 3378 128  941  361  grinchy saml@grinchy:~
0x06000004  0 900  142  947  397  grinchy saml@grinchy:~
0x05a000d1  0 0    50   1440 826  grinchy xorg - How can I get information about my virtual desktops via the command line? - Unix & Linux Stack Exchange - Google Chrome

*笔记:-p开关-G也可以组合!

切换到不同的桌面

$ wmctrl -s 2

笔记:桌面从 0 开始编号,因此 1 是第二个。

减少桌面数量

$ wmctrl -n 3

我们现在有 3 个而不是 4 个。

$ wmctrl -d | wc -l
3

现在把它放回4。

$ wmctrl -n 4
$ wmctrl -d | wc -l
4

关闭窗口

$ wmctrl -l | grep GVIM
0x02a00003  0 grinchy [No Name] - GVIM

$ wmctrl -c GVIM

$ wmctrl -l | grep GVIM
$ 

相关内容