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.0.0.tar.gz (9.8 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.0.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for rundone-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d811d3b7edda3c914153673758f2d90911b3c8f87728326fe59980fc0a99f015
MD5 173dfd30a958b8d28a6a0bd09e8af1c3
BLAKE2b-256 7f809a74f47a75d6ad65a287fd248aba175a263a32fd3b43755d734e7204abba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rundone-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d88bf26b345505b92bd52f8ef316eacf35dd569ee1f49a823a1c7bd5a692f018
MD5 70f54264ac072dbfd974f60bcd6e8a38
BLAKE2b-256 15a0b3ccdbc9bbf7d8a42b4d385cd7f56f2c55ecaf569da7332f38585db23601

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