Is there a way to minimize open windows from the command line in OS X Lion?

Just wondering if there is a way to retrieve open windows and minimize them from the command line in Lion?

I have an AppleScript that does this, but it kind of slow, so wanted to know if there was anything

Thanks

EDIT: I have not completely figured out how to do it yet, but there is the command line command osascript which allows you run applescript from the command line. So you can use:

osascript -e "applescript command goes here"

SOLVED: Yes you can do it... here is how I figured it out:

/usr/bin/osascript -e 'tell application "System Events" to click (first button of (every window of (application process "firefox")) whose role description is "minimize button")'

Some other application process that I have are "Skype", "Finder", "thunderbird-bin", AppleScript Editor"


Solution 1:

I agree that pretty much any solution you can get for the command line would have to rely on AppleScript. And your solution will work. However, rather than scripting System Events, which depends on UI events (actually moving your mouse and clicking) it's a much cleaner approach to script the application's window directly.

This way, if you move your mouse while the script is executing, it won't affect it. For minimizing all Firefox windows you could do something like:

tell application "Firefox" to set miniaturized of every window to true

The property is called miniaturized for Firefox and most OS X applications, but some third-party apps, like Google Chrome, call the property minimized, so if one doesn't work, the other should. This functionality is part of the Standard Suite that pretty much every AppleScript-able application has.

For applications that don't support AppleScript at all, you can fall back to your approach and use System Events to access the windows belonging to the application's specific process running on your machine.

If I were you, though, I'd try to rely on the application to minimize itself rather than through System Events where possible, as this will be much more reliable.