I'm curious how I can get information such as the dimensions of my desktop, which desktop is currently active, and what labels (if any) are set for my desktop enviornment (DE).
1 Answer
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
-poption is specified the next column will contain the PID for the window as a decimal integer. - If the
-Goption 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
$