如何透過命令列獲取有關虛擬桌面的資訊?

如何透過命令列獲取有關虛擬桌面的資訊?

我很好奇如何取得桌面尺寸、目前處於活動狀態的桌面以及為桌面環境 (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
$ 

相關內容