Using the tool wmctrl
you can get all the above information, specifically the -d
switch.
Example
$ 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
Details
One line is output for each desktop, with the line broken up into space separated columns.
- The first column contains an integer desktop number.
- The second column contains a '*' character for the current desktop, otherwise it contains a '-' character.
- The next two columns contain the fixed string DG: and then the desktop geometry as 'x' (e.g. '1280x1024').
- The following two columns contain the fixed string VP: and then the viewport position in the format ',' (e.g. '0,0').
- The next three columns after this contains the fixed string WA: and then two columns with the workarea geometry as 'X,Y and WxH' (e.g. '0,0 1280x998').
- The rest of the line contains the name of the desktop (possibly containing multiple spaces).
Extra Cool things you can do with wmctrl
list info about Window Manager
$ wmctrl -m
Name: compiz
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: OFF
list active windows
$ 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
One line is output for each window, with the line broken up into space separated columns.
- The first column always contains the window identity as a hexadecimal integer.
- The second column always contains the desktop number (a -1 is used to identify a sticky window).
- If the
-p
option is specified the next column will contain the PID for the window as a decimal integer.
- If the
-G
option is specified then four integer columns will follow: x-offset, y-offset, width and height.
- The next column always contains the client machine name.
- The remainder of the line contains the window title (possibly with multiple spaces in the title).
-p
switch example
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
switch example
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
*NOTE: The -p
and -G
switches can also be combined!
switching to a different desktop
$ wmctrl -s 2
NOTE: Desktops are numbered starting at 0, so 1 would be the 2nd.
reduce the number of desktops
$ wmctrl -n 3
We now have 3 instead of 4.
$ wmctrl -d | wc -l
3
Now put it back to 4.
$ wmctrl -n 4
$ wmctrl -d | wc -l
4
Closing a window
$ wmctrl -l | grep GVIM
0x02a00003 0 grinchy [No Name] - GVIM
$ wmctrl -c GVIM
$ wmctrl -l | grep GVIM
$
Best Answer
Like a user said in the comments,
wmctrl
hasn't been touched since October 2005. Its very possible that the featured worked at the time, and has since been made broken due to packages changing around it.Here's the
wmctrl
changelog