Awesome
zsh-background-notify
cross-platform background notifications for long running commands! Supports OSX and Ubuntu linux.
Do you use oh-my-zsh
?
RobbyRussel merged (and tweeted about it) this plugin to the main-line oh-my-zsh. If that's what you're running then just add 'bgnotify' to your .zshrc
plugins list and you're all set!
Do you use Prezto
?
I do too! Prezto rocks-- and works great with bg-notify! (although there's no included plugin (yet?)).
How to use!
- Clone the repository:
git clone https://github.com/t413/zsh-background-notify.git ~/.zsh-background-notify
- And add one line your
.zshrc
:
source $HOME/.zsh-background-notify/bgnotify.plugin.zsh
- Done!
Requirements:
- On OS X you'll need terminal-notifer
brew install terminal-notifier
(orgem install terminal-notifier
)
- On ubuntu you're already all set!
- On windows you can use notifu or the Cygwin Ports
libnotify
package
Screenshots
Linux
OS X
Windows
Configuration
One can configure a few things:
bgnotify_threshold
sets the notification threshold time (default 6 seconds)function notify_formatted
lets you change the notification
Use these by adding a function definition before the your call to source. Example:
bgnotify_threshold=4 ## set your own notification threshold
function notify_formatted {
## $1=exit_status, $2=command, $3=elapsed_time
[ $1 -eq 0 ] && title="Holy Smokes Batman!" || title="Holy Graf Zeppelin!"
bgnotify "$title -- after $3 s" "$2";
}
source $HOME/.zsh/zsh-background-notify/bgnotify.plugin.zsh
How it works
In zsh you can add a user-hook preexec
that runs before executing a command and precmd
that runs just before re-prompting. Timing the difference between them gives you execution time!
To check if you're in the background we can use xprop to find the NET_ACTIVE_WINDOW in ubuntu and osascript to run a simple apple script to get the same thing (although slower).
Alternatives:
I like linking.. So here are a few similar alternatives to this script. Most are platform-specific and buggy in some way. (Sure is great to use one script on all of your systems!)
- This reddit post
- zsh-notify plugin for Mac OS X
- dotzsh notify
- zbell