dotfiles/zsh/.oh-my-zsh/plugins/bgnotify/README.md
2024-06-19 00:06:56 +02:00

2.2 KiB

bgnotify zsh plugin

cross-platform background notifications for long running commands! Supports OSX and Linux.

Standalone homepage: t413/zsh-background-notify


How to use

Just add bgnotify to your plugins list in your .zshrc

  • On OS X you'll need terminal-notifier
    • brew install terminal-notifier (or gem install terminal-notifier)
  • On Linux, make sure you have notify-send or kdialog installed. If you're using Ubuntu you should already be all set!
  • On Windows you can use notifu or the Cygwin Ports libnotify package

Screenshots

Linux

screenshot from 2014-11-07 15 58 36

OS X

screenshot 2014-11-08 14 15 12

Windows

screenshot from 2014-11-07 15 55 00

Configuration

One can configure a few things:

  • bgnotify_bell enabled or disables the terminal bell (default true)
  • bgnotify_threshold sets the notification threshold time (default 6 seconds)
  • function bgnotify_formatted lets you change the notification. You can for instance customize the message and pass in an icon.

Use these by adding a function definition before the your call to source. Example:

bgnotify_bell=false   ## disable terminal bell
bgnotify_threshold=4  ## set your own notification threshold

function bgnotify_formatted {
  ## $1=exit_status, $2=command, $3=elapsed_time

  # Humanly readable elapsed time
  local elapsed="$(( $3 % 60 ))s"
  (( $3 < 60 ))   || elapsed="$((( $3 % 3600) / 60 ))m $elapsed"
  (( $3 < 3600 )) || elapsed="$((  $3 / 3600 ))h $elapsed"

  [ $1 -eq 0 ] && title="Holy Smokes Batman" || title="Holy Graf Zeppelin"
  [ $1 -eq 0 ] && icon="$HOME/icons/success.png" || icon="$HOME/icons/fail.png"
  bgnotify "$title - took ${elapsed}" "$2" "$icon"
}

plugins=(git bgnotify)  ## add to plugins list
source $ZSH/oh-my-zsh.sh  ## existing source call