GitHub notifications for Linux. Get notified about PR reviews, mentions, and assignments right on your desktop — click to open in your browser.
You're deep in work. Someone requests your review on a PR. GitHub sends an email that gets buried under 50 others. Or you have to keep checking github.com/notifications, breaking your flow every time.
By the time you notice, the PR has been waiting for hours.
Developers on Linux who:
- Work on teams where PR reviews and responses need to happen quickly
- Miss GitHub notifications because email is too noisy
- Don't want to keep a browser tab open just to watch for new activity
- Want something lightweight — no Electron apps, no browser extensions, just a CLI
prnot runs as a background service (systemd). It polls the GitHub API, classifies each notification, and pops a desktop notification for anything that needs your attention. Click the notification to open the PR or issue in your browser.
Everything stays local. No third-party servers, no webhooks to configure, no OAuth flows. Just a GitHub token and a systemd service.
GitHub API ──► prnot daemon ──► Desktop notification (click → browser)
│
▼
Local cache ──► CLI (instant reads, no API calls)
Not all notifications are equal. prnot sorts them into three buckets:
| Bucket | What it means | Examples |
|---|---|---|
| Action | You need to do something | Review requested, assigned to you, changes requested |
| Watch | Something you care about progressed | Comments, mentions, approvals, state changes |
| Noise | FYI, no action needed | CI activity, subscribed threads |
Action notifications get critical urgency (persistent on most DEs). Watch notifications appear normally. Noise is silenced — you can still see it with prnot list --all.
Desktop notifications have an "Open in browser" button. Click it and prnot opens the PR/issue directly in your default browser. No more hunting through GitHub.
prnot list reads from a local cache — no API call, no waiting. The daemon keeps the cache fresh in the background.
$ prnot
Action needed (2)
● 1. review-requested my-project Add retry logic for API calls 5m
● 2. assigned infra-tools Fix deployment script 1h
Watching (1)
○ 1. comment my-project Refactor auth middleware 3h
Show your notification count in your prompt or tmux status bar:
# bash/zsh prompt
PS1='$(prnot badge) \w $ '
# Shows: [3] ~/code $
# tmux status bar
set -g status-right '#(prnot badge --tmux)'The badge shows nothing when the count is zero — no visual clutter.
Silence notification reasons you don't care about:
mute:
- ci_activity
- subscribedMuted notifications are completely filtered out — no desktop popup, no appearance in prnot list (unless you pass --all).
Only watch specific repositories:
repos:
- myorg/frontend
- myorg/apiLeave empty to get notifications from everything you participate in.
Requires Ruby 3.4+ and a Linux desktop with notify-send (libnotify).
gem install prnotOr clone and install locally:
git clone https://github.com/ajangir/prnot.git
cd prnot
gem build prnot.gemspec
gem install prnot-0.1.0.gemGo to GitHub Settings → Tokens and create a token with the notifications scope.
prnot initThis creates ~/.config/prnot/config.yml. Edit it to add your token:
token: ghp_your_token_here
refresh: 60sOr skip the config file and use an environment variable:
export GITHUB_TOKEN=ghp_your_token_hereprnot setupThis installs and starts a systemd user service. It will survive reboots and restart on failure.
Done. You'll start getting desktop notifications.
| Command | Description |
|---|---|
prnot |
Show action and watch notifications |
prnot list --all |
Include noise bucket |
prnot list --format=json |
JSON output |
prnot open 1 |
Open first notification in browser |
prnot open 3 |
Open third notification in browser |
prnot read ID |
Mark a specific notification as read |
prnot read --all |
Mark all as read |
prnot count |
Print count (for scripts) |
prnot badge |
Print [N] for shell prompt (empty if 0) |
prnot badge --tmux |
tmux-compatible badge |
prnot status |
Show daemon status |
prnot setup |
Install and start systemd service |
prnot teardown |
Stop and remove systemd service |
Config lives at ~/.config/prnot/config.yml:
# GitHub token (or set GITHUB_TOKEN env var)
token: ghp_xxx
# How often to poll GitHub (default: 60s)
refresh: 60s
# Only watch these repos (empty = all participating)
repos:
- myorg/api
- myorg/frontend
# Suppress notifications by reason
mute:
- ci_activity
- subscribedreview_requested, changes_requested, comment, mention, assign, approval, author, state_change, ci_activity, subscribed, team_mention, manual, security_alert
# Check if running
prnot status
# View logs
journalctl --user -u prnot -f
# Restart after config change
systemctl --user restart prnot
# Remove completely
prnot teardownMIT