Skip to content
Monitor a process and trigger a notification.
Go Shell Objective-C Makefile
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Update to Go 1.13 Sep 11, 2019
cmd/noti Fix a bunch of lints Sep 1, 2019
docs Increment version to 3.3.0 Sep 11, 2019
internal/command Fix double noti in Slack Sep 1, 2019
service Fix lints Sep 11, 2019
tests Add pwatch test Jun 25, 2019
tools Update to Go 1.13 Sep 11, 2019
vendor Update to modules Jun 24, 2019
.appveyor.yml Update to Go 1.13 Sep 11, 2019
.clang-format Use spf13/cobra Oct 16, 2017
.gitignore Refactor makefile Mar 2, 2018
LICENSE Initial commit Apr 4, 2015
Makefile Fix vendor wasn't on Sep 11, 2019
README.md Increment version to 3.3.0 Sep 11, 2019
go.mod Update to Go 1.13 Sep 11, 2019
go.sum Update to modules Jun 24, 2019

README.md

noti

CircleCI AppVeyor Codecov

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.

           | macOS | Linux | Windows
--------------------------------------
Banner     |   ✔   |   ✔   |    ✔
Speech     |   ✔   |   ✔   |    ✔
BearyChat  |   ✔   |   ✔   |    ✔
HipChat    |   ✔   |   ✔   |    ✔
Mattermost |   ✔   |   ✔   |    ✔
Pushbullet |   ✔   |   ✔   |    ✔
Pushover   |   ✔   |   ✔   |    ✔
Pushsafer  |   ✔   |   ✔   |    ✔
Simplepush |   ✔   |   ✔   |    ✔
Slack      |   ✔   |   ✔   |    ✔
Telegram   |   ✔   |   ✔   |    ✔
Zulip      |   ✔   |   ✔   |    ✔

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

Installation

The master branch always contains the latest tagged release.

# Install the latest version on macOS.
brew install noti

If you don't want to build from source or install anything extra, just download the latest binary.

# macOS
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
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 with your browser from the latest release page.

From source

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

make build
# or
make install

This project uses modules with vendoring. The Makefile sets -mod=vendor automatically. Otherwise, you'll need to pass a flag or export a var if you don't use the Makefile.

go build -mod=vendor github.com/variadico/noti/cmd/noti
# or
export GOFLAGS="-mod=vendor"
export GO111MODULE="on"
go build github.com/variadico/noti/cmd/noti

Also, go get doesn't really work anymore starting in Go 1.12.

If you have comments about these changes, please the leave the Go team an experience report here.

Examples

Just put noti at the beginning or end of your regular commands. For more details, checkout 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
You can’t perform that action at this time.