Skip to main content

Monitor caldav file changes and send notifications to an ntfy server

Project description

caldav2ntfy

caldav2ntfy is a lightweight Linux CLI utility that watches local CalDAV calendar files and sends notifications to an ntfy server when relevant calendar changes are detected.

It is primarily useful in self-hosted environments where a CalDAV server (for example Radicale) is used together with ntfy for push notifications.

The tool relies on Linux inotify to watch .ics files, parses calendar events, and publishes notifications to a configured ntfy topic.


Use Cases

Typical setups where caldav2ntfy can be useful:

  • Self-hosted Radicale calendar server
  • vdirsyncer syncing CalDAV calendars locally
  • Personal ntfy server for notifications
  • Minimal Linux automation environments
  • Lightweight calendar reminder system without heavy clients

Example workflow:

Radicale → calendar file change → caldav2ntfy → ntfy notification

Features

  • Watches CalDAV .ics files using inotify
  • Sends notifications to an ntfy topic
  • Configurable through a TOML configuration file
  • Minimal dependencies
  • Designed for Linux environments
  • Simple CLI interface

Installation

Install from PyPI:

pip install caldav2ntfy

Configuration

caldav2ntfy is configured using a TOML file.

Example configuration:

[app]
default_watch_dir="/var/lib/radicale/collections/collection-root/<USER>/<CALENDAR>/"

[ntfy]
server="https://ntfy.sh"
topic="calendar_notif"
token="tk_xyzabc123="

Usage

Run the watcher using:

caldav2ntfy --config config.toml

[!NOTE] Alternatively, if you have config.toml in $XDG_CONFIG_HOME/caldav2ntfy/ or /etc/caldav2ntfy/, you can simply run

caldav2ntfy

The program will monitor the configured calendar directory and send notifications when events are detected.


Overriding the config

You can override parameters from the config before running use caldav2ntfy --help to get a list of all available options


How It Works

  1. The program watches the calendar directory using Linux inotify.
  2. When a calendar file changes, it parses the .ics content.
  3. Relevant events are extracted.
  4. A notification is sent to the configured ntfy topic.

Requirements

  • Python >= 3.11+
  • Linux (uses inotify)
  • An ntfy server
  • A CalDAV setup (Radicale, Nextcloud, etc.)

Related Projects


License

MIT License

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

caldav2ntfy-0.1.6.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

caldav2ntfy-0.1.6-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file caldav2ntfy-0.1.6.tar.gz.

File metadata

  • Download URL: caldav2ntfy-0.1.6.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for caldav2ntfy-0.1.6.tar.gz
Algorithm Hash digest
SHA256 d30c5f07779652fb74f6dd1cd3143bf201c323a9a4e1540f3a8eaf7a7ec4d69a
MD5 7a8d58a9a0646baab4e60a155a3f2c69
BLAKE2b-256 15672c06f98dd55e873a47fb5a87c93b062583cc5cb441c28fe265430061c9bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for caldav2ntfy-0.1.6.tar.gz:

Publisher: python-publish.yml on Spounka/caldav2ntfy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file caldav2ntfy-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: caldav2ntfy-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for caldav2ntfy-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b8cd51d582532cd1e11175f9b0b612e30b299db22e8c472833ebb29552ea0475
MD5 a69663a6b3d41a00b7f0f753e2c5eae6
BLAKE2b-256 9b06eb3cdf2f439b14da74828b809f1fee27cd5aaeb132dffe048e2282ac6b7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for caldav2ntfy-0.1.6-py3-none-any.whl:

Publisher: python-publish.yml on Spounka/caldav2ntfy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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