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.5.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.5-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: caldav2ntfy-0.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 85fb96957fb1688c219f7dc5d0cc6bb9fae4f9d8b0bef1c08dcdd209eca0a281
MD5 2a7cbcbf8ab028d292872bb9bb2b4e9d
BLAKE2b-256 fe320a7a965a188adbbd2a7c9763974563153b558eb68cf4ae2bf4d2c6c865c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for caldav2ntfy-0.1.5.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.5-py3-none-any.whl.

File metadata

  • Download URL: caldav2ntfy-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 6.7 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9840f91e386eb0cc283cbd9c3513b6141c56411614c0f08b2acda404d2ba53f1
MD5 8f2cc23c572138cfbbed9e4f9cde0440
BLAKE2b-256 2635c23736c4147f407a4ed8b9fb09f3b22cb19866ff9714b6250dfb78b03154

See more details on using hashes here.

Provenance

The following attestation bundles were made for caldav2ntfy-0.1.5-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