Skip to main content

Your terminal's gentle nudge. Get native notifications when commands finish.

Project description

Rundone

Your terminal's gentle nudge.

Get a native notification when any command finishes — whether you're in a terminal, Colab, Kaggle, or Jupyter.

Install

pip install rundone

Terminal usage

Prefix any command with rundone:

rundone python train.py --epochs 100
rundone pip install torch
rundone make build
rundone pytest tests/ -v

Switch to another app — when it's done, a notification slides in:

✓ train.py finished — 20m 34s

Options

--quiet, -q       Suppress rundone's terminal output (notification still fires)
--title, -t       Custom notification title (default: "Rundone")
--min-time, -m    Only notify if command took longer than N seconds
# Only notify for long commands
rundone --min-time 30 python train.py

# Custom title
rundone --title "Model Training" python train.py

# Silent mode
rundone --quiet make build

Colab / Kaggle / Jupyter usage

Three ways to use Rundone in notebooks:

1. One-liner at the end of a cell

import rundone

# Your long-running code
model.fit(X_train, y_train, epochs=100)

# This line sends a browser notification
rundone.notify("Training complete!")

2. Cell magic (wrap an entire cell)

import rundone
rundone.load_magic()

Then in any cell:

%%rundone
model.fit(X_train, y_train, epochs=100)
# Notification fires automatically when the cell finishes

3. Decorator (wrap a function)

import rundone

@rundone.timer_notify
def train_model():
    model.fit(X_train, y_train, epochs=100)

train_model()  # notification fires when function returns

Enable browser notifications

The first time you use Rundone in a notebook, your browser will ask for notification permission. You can also run this to trigger the prompt:

rundone.enable_notifications()

Cross-platform support

Environment Notification method Extra dependencies
macOS terminal osascript (native) None
Linux terminal notify-send (libnotify) None*
Windows terminal win10toast / PowerShell Auto-installed
Colab / Kaggle Browser notification None
Jupyter Browser notification None

*Most Linux desktops include notify-send. If not: sudo apt install libnotify-bin

How it works

Terminal: Rundone wraps your command, streams all output normally, and fires a native OS notification when it exits. Your command runs exactly as it would without Rundone — zero overhead.

Notebooks: Rundone uses the browser's Notification API to send a popup even when you're in another tab. It also shows an inline banner in the cell output.

Exit codes

Rundone preserves your command's exit code. If your script exits with code 1, rundone exits with code 1 too. Works seamlessly in shell scripts and CI.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rundone-1.1.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rundone-1.1.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file rundone-1.1.0.tar.gz.

File metadata

  • Download URL: rundone-1.1.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for rundone-1.1.0.tar.gz
Algorithm Hash digest
SHA256 bf1c5f487a5531d802c3985ce921a43d874d361f71042bcca64fd245b4299a0d
MD5 91ac284118e4dee3b8e8135e35d200c3
BLAKE2b-256 60486a7dcc529d769b53c1ac474ad056eee7db3c329cbd27f5413d7ab04997e0

See more details on using hashes here.

File details

Details for the file rundone-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: rundone-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for rundone-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9af0377472a89115be7bdd92fae36d1f0a76a8f2cf87dc1020abe95866b83e31
MD5 8c6f5ec10ba8d857e94ba5ffab742930
BLAKE2b-256 7d9c90aaf724947c22eb26ce7cc3939cc7a3794cb72cf67f34d0ed1d00212d49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page