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
.icsfiles 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.tomlin$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
- The program watches the calendar directory using Linux inotify.
- When a calendar file changes, it parses the
.icscontent. - Relevant events are extracted.
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85fb96957fb1688c219f7dc5d0cc6bb9fae4f9d8b0bef1c08dcdd209eca0a281
|
|
| MD5 |
2a7cbcbf8ab028d292872bb9bb2b4e9d
|
|
| BLAKE2b-256 |
fe320a7a965a188adbbd2a7c9763974563153b558eb68cf4ae2bf4d2c6c865c6
|
Provenance
The following attestation bundles were made for caldav2ntfy-0.1.5.tar.gz:
Publisher:
python-publish.yml on Spounka/caldav2ntfy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caldav2ntfy-0.1.5.tar.gz -
Subject digest:
85fb96957fb1688c219f7dc5d0cc6bb9fae4f9d8b0bef1c08dcdd209eca0a281 - Sigstore transparency entry: 1082588562
- Sigstore integration time:
-
Permalink:
Spounka/caldav2ntfy@374461e71a3b89cb00feadaa8554944a9eb21ffe -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/Spounka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@374461e71a3b89cb00feadaa8554944a9eb21ffe -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9840f91e386eb0cc283cbd9c3513b6141c56411614c0f08b2acda404d2ba53f1
|
|
| MD5 |
8f2cc23c572138cfbbed9e4f9cde0440
|
|
| BLAKE2b-256 |
2635c23736c4147f407a4ed8b9fb09f3b22cb19866ff9714b6250dfb78b03154
|
Provenance
The following attestation bundles were made for caldav2ntfy-0.1.5-py3-none-any.whl:
Publisher:
python-publish.yml on Spounka/caldav2ntfy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
caldav2ntfy-0.1.5-py3-none-any.whl -
Subject digest:
9840f91e386eb0cc283cbd9c3513b6141c56411614c0f08b2acda404d2ba53f1 - Sigstore transparency entry: 1082588631
- Sigstore integration time:
-
Permalink:
Spounka/caldav2ntfy@374461e71a3b89cb00feadaa8554944a9eb21ffe -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/Spounka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@374461e71a3b89cb00feadaa8554944a9eb21ffe -
Trigger Event:
release
-
Statement type: