I would like to be able to choose any already-open window and minimize it from the command line. Is this possible?
You can kind of do this with WMCtrl. It's a tool that allows you to control the window manager from the command line. You can find it in the repositories.
It's compatible with Metacity and KWin (The defaults for Gnome and Kde).
You can use this command to get a list of currently open windows. This will include the window name:
Once you have the window name, you can use this command to shade a window:
wmctrl -r "windowname" -b toggle,shaded
I don't think minimization is supported because it's not covered by the EWMH spec, but you can do shading and maximization so it might suit your needs.
In 2022, there are option for this :
wmctrl -r "windowname" -b toggle,hidden
See @dgo.a answer Can I minimize a window from the command line?
xdotool search --onlyvisible --classname --sync Navigator windowminimize
This searches (and waits, due to
--sync) for a visible Navigator window, and then minimizes it.
xdotool supports running multiple commands on a single invocation. Generally, you'll start with a search command (see "WINDOW STACK") and then perform a set of actions on those results.
You use xdotool. Note that the default unity shortcut key for minimizing the active window is Ctrl-Alt-0 BUT that this ONLY means the numeric keypad zero. If you type the regular zero key, the one between the 9 and the -, then it will not work. (Also not when typing it on the keyboard.
Xdotool knows the numeric keypad zero key as 'KP_Insert'.
So to minimize the active window, you first make sure xdotool installed, then use the command:
xdotool key Ctrl+Alt+KP_Insert
(Note that the key Alt-F3 mentioned in another answer will not work
You can minimise an application window regardless of its current state using
wmctrl as follows:
wmctrl -r "application-name" -b add,hidden
wmctrl -r "application-name" -b remove,hidden
"application-name" can be any substring in the application name, and is case insensitive (use the -F option if this is not what you want). "hidden" is wmctrl's word for minimise.
wmctrl -r firefox -b add,hidden
minimises the first window that contains the string "firefox", in any mixture of upper and lowercase letters.
To see the list of windows, type:
dgo.a's comment above is great if you just want to toggle between maximised and minimised states.