/noti

Monitor a process and trigger a notification.

Primary LanguageGoMIT LicenseMIT

noti

Testing

Monitor a process and trigger a notification.

Never sit and wait for some long-running process to finish. Noti can alert you when it's done. You can receive messages on your computer or phone.

macOS Banner Notification

Services

Noti can send notifications on a number of services.

Service macOS Linux Windows
Banner
Speech
BearyChat
Keybase
Mattermost
Pushbullet
Pushover
Pushsafer
Simplepush
Slack
Telegram
Zulip
Twilio
GChat
Chanify

Check the screenshots directory to see what the notifications look like on different platforms.

Installation

Install the Go binary with these commands.

# macOS install with Brew
brew install noti

# macOS install with curl
curl -L $(curl -s https://api.github.com/repos/variadico/noti/releases/latest | awk '/browser_download_url/ { print $2 }' | grep 'darwin-amd64' | sed 's/"//g') | tar -xz

# Linux install with curl
curl -L $(curl -s https://api.github.com/repos/variadico/noti/releases/latest | awk '/browser_download_url/ { print $2 }' | grep 'linux-amd64' | sed 's/"//g') | tar -xz

Or download it with your browser from the latest release page.

From source

If you want to build from the source, then build like this.

# build binary
make build
# build binary and move to Go bin dir
make install

Examples

Just put noti at the beginning or end of your regular commands. For more details, check the docs.

Display a notification when tar finishes compressing files.

noti tar -cjf music.tar.bz2 Music/

Add noti after a command, in case you forgot at the beginning.

clang foo.c -Wall -lm -L/usr/X11R6/lib -lX11 -o bizz; noti

If you already started a command but forgot to use noti, then you can do this to get notified when that process' PID disappears.

noti --pwatch 1234

You can also press ctrl+z after you started a process. This will temporarily suspend the process, but you can resume it with noti.

$ dd if=/dev/zero of=foo bs=1M count=2000
^Z
zsh: suspended  dd if=/dev/zero of=foo bs=1M count=2000
$ fg; noti
[1]  + continued  dd if=/dev/zero of=foo bs=1M count=2000
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 12 s, 175 MB/s

Additionally, noti can send a message piped from stdin with -.

$ make test 2>&1 | tail --lines 5 | noti -t "Test Results" -m -