As a Gentoo user, I frequently install new software or update existing packages using emerge. Unlike binary package managers, building packages from source using emerge takes time, and I prefer running it inside a detached screen session, because (a) if I close the session it continues in the background and (b) it actually runs faster when it doesn’t need to show all the compilation output in an X terminal.
This has an annoying side effect: I sometimes start a long update process and forget I did it. If things fail (or even if they succeed) I don’t know about it.
Today, I solved this problem using notify-send, the libnotify binary client. I’ve created a short shell script wrapper to emerge which sends me a notification once emerge finishes, along with the original command line arguments and exit status code (0 = ok, failure otherwise):
#!/bin/sh ARGS=$@ /usr/bin/emerge "$ARGS" STATUS=$? if [ "$STATUS" = "0" ] then LEVEL="normal" else LEVEL="critical" fi /usr/bin/notify-send --expire-time=0 --urgency=$LEVEL "emerge finished" "Exit Code: $STATUS Emerge args: $ARGS"
If you save this code in a file named emerge-notify (and of course remember to chmod +x this file) you could then do this (from a GNOME terminal or any other X terminal):
$ ./emerge-notify -puD world
And you’ll get a nice notification when it’s done:
Of course, you need libnotify the notify-send binary and dbus for this.