Is there any way to have a badge appear on the Terminal icon in the Dock when a command completes?
I currently have an AppleScript app that opens Terminal windows and completes commands. I would like an app icon badge to appear on the Terminal icon in the Dock when a command completes. I need this because I often have to restart the commands when they stop. Is this possible? Essentially my AppleScript application takes a user-provided variable and plugs it into a Terminal command. Every time I use the application it opens a new Terminal window (intended). I would like to have a badge appear when a Terminal command completes.
Solution 1:
As of Mac OS X 10.7 Lion, Terminal has exactly this feature.
If you emit a bell (BEL, Control-G) in a background tab or window, the Terminal application Dock icon will show a badge with the number of “unread” bells
and a bell icon is displayed in the tab of the terminal
(If there is only one tab in the window, choose View > Show Tab Bar to see the tab, which also displays other status information.)
This also applies to minimized windows.
When you bring the window to the front or select the background tab, the bell indicator is removed from the tab and the badge count goes down.
Solution 2:
If you're willing to accept an answer to the more general question "is there a way to have me alerted when something completes in a Terminal window" then the answer is: yes.
If you're running Growl you can make a command line call from a script that will post a notification to Growl. For example:
do shell script "sleep 1h"
do shell script "growlnotify --sticky --message \"I'm all done sleeping for an hour! Did you forget about me?\" --wait"
The script won't exit until you clear the notification from the screen.
You could even use the --name
option to give your script a unique name, and then from within Growl customize how events generated by that named application are displayed and dealt with. They can produce different types of pop ups on the screen, they can email you, they can send a message to you via iChat, they forward the event to Growl on another machine, if you're running Prowl on your iDevice they can even forward the notification on to your iDevice via push notifications.
Not quite the answer you were looking for, but hopefully it meets your needs.