ohmyzsh/plugins/bgnotify
Benjamin Neff c106934235
fix(bgnotify): detect if sway is running and not just installed
Before it also tried to call swaymsg if running on another wayland
compositor, but sway was also installed. The fix is to also check for
the $SWAYSOCK variable, which swaymsg is using to check where to talk to
sway. So it only tries to run swaymsg if sway is actually running.
2025-02-22 18:19:30 +01:00
..
README.md feat(bgnotify): add config to pass extra args (#12679) 2024-09-15 23:20:59 +02:00
bgnotify.plugin.zsh fix(bgnotify): detect if sway is running and not just installed 2025-02-22 18:19:30 +01:00

README.md

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.
  • bgnotify_extraargs appends extra args to notifier (e.g. -e for notify-send to create a transient notification)

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