web-dev-qa-db-ja.com

コマンドラインから仮想デスクトップに関する情報を取得するにはどうすればよいですか?

デスクトップのサイズ、現在アクティブなデスクトップ、デスクトップ環境(DE)に設定されているラベル(存在する場合)などの情報を取得する方法に興味があります。

5
slm

ツール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

詳細

デスクトップごとに1行が出力され、その行はスペースで区切られた列に分割されます。

  • 最初の列には、デスクトップの整数が含まれています。
  • 2番目の列には、現在のデスクトップの「*」文字が含まれます。それ以外の場合は、「-」文字が含まれます。
  • 次の2つの列には、固定文字列DG:が含まれ、次にデスクトップジオメトリが「x」(例:「1280x1024」)として含まれます。
  • 次の2つの列には、固定文字列VP:が含まれ、次に「、」の形式のビューポート位置が含まれます(例:「0,0」)。
  • この後の次の3つの列には、固定文字列WA:が含まれ、次にワークエリアジオメトリが「X、YおよびWxH」(例:「0,01280x998」)の2つの列が含まれます。
  • 行の残りの部分には、デスクトップの名前が含まれています(複数のスペースが含まれている可能性があります)。

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行が出力され、その行はスペースで区切られた列に分割されます。

  • 最初の列には、常にウィンドウIDが16進整数として含まれています。
  • 2番目の列には常にデスクトップ番号が含まれます(-1はスティッキーウィンドウを識別するために使用されます)。
  • -pオプションが指定されている場合、次の列にはウィンドウのPIDが10進整数として含まれます。
  • -Gオプションを指定すると、xオフセット、yオフセット、幅、高さの4つの整数列が続きます。
  • 次の列には、常にクライアントマシン名が含まれます。
  • 行の残りの部分には、ウィンドウのタイトルが含まれています(タイトルに複数のスペースが含まれている可能性があります)。

-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が2番目になります。

デスクトップの数を減らす

$ wmctrl -n 3

4つではなく3つになりました。

$ 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
$ 
7
slm