Around three weeks ago I wrote an article on how to automate mouse and keyboard. It was very fun experience but as the former article was quite long I didn’t mentioned about wmctrl tool. It is an excellent complement to the previously described tools.

I will describe only one usage scenario – How to quickly maximize particular window. To check out more examples look at wmctrl user documentation external article.

Using wmctrl you can list windows in easy way:

$ wmctrl -l
0x04600004  0 milosz-notebook Oracle VM VirtualBox Manager
0x040002dc  0 milosz-notebook sleeplessbeastie's notes — WordPress - Google Chrome
0x01800069  0 milosz-notebook Gnuplot (window id : 0)

Maximize particular window:

$ wmctrl -i -r 0x040002dc -b "add,maximized_vert,maximized_horz"

Restore original dimensions of the previously maximized window:

$ wmctrl -i -r 0x040002dc -b "remove,maximized_vert,maximized_horz"

Toggle maximized_vert and maximized_horz properties:

$ wmctrl -i -r 0x040002dc -b "toggle,maximized_vert,maximized_horz"

wmctrl provides more interesting ways to interact with an X Window manager like switching desktops or moving windows between them so I strongly suggest to read its manual page.