Skip to main content

Command line utility to interact with CalDAV servers

Project description

caldavctl

PyPI - Version PyPI - Python Version


Table of Contents

Installation

To install:

pipx install caldavctl

Completion

Optionally enable completion:

  • bash, add this to ~/.bashrc:

    eval "$(_CALDAVCTL_COMPLETE=bash_source caldavctl)"
    
  • zsh, add this to ~/.zshrc:

    eval "$(_CALDAVCTL_COMPLETE=zsh_source caldavctl)"
    
  • fish, add this to ~/.config/fish/completions/foo-bar.fish:

    _CALDAVCTL_COMPLETE=fish_source caldavctl | source
    

Configuration

caldavctl is configured in $HOME/.config/caldavctl/config.toml and on windows C:\Users\<user name>\AppData\Local\caldavctl\caldavctl\config.toml:

[server.server_01_nickname]
username="your user"
password="your pass"
url="https://oneserver.org/cal"

[server.server_02_nickname]
username="your user"
password="your pass"
url="https://anotherserver.org/cal"

[default]
server="server_01_nickname"
calendar="Default"
timezone="Asia/Tokyo"

Make sure to make this file readable only by the user owner of the file otherwise the configuration will not be read:

$ chmod go-rwx $HOME/.config/caldavctl/config.toml

On windows this check is not made, however it's good practice to make sure the configuration is only readable by the user running caldavctl.

To be able to edit events, on windows, make sure you create an environment variable called VISUAL pointing to an editor of your choice. For instance:

set VISUAL=nvim

or

set VISUAL=notepad

Usage

caldavctl uses sub commands to expose its functionality:

$ caldavctl --help
Usage: caldavctl [options] COMMAND [ARGS]...

caldavctl - command line CalDAV client

Options:
-c, --config <file>    Configuration file
--name <nickname>      Server nickname
--username <username>  Username on the CalDAV server
--passwd <passwd>      Password on the CalDAV server
--url <url>            Calendar CalDAV url
--timezone <timezone>  Your time zone
--server <nickname>    Default server (use nickname)
--calendar <uid>       Default calendar id
--version              caldavctl version
--help                 Show this message and exit.

Commands:
br        Backup or restore a calendar
calendar  Commands that deal with the calendars on the server
event     Event management
ics       iCalendar file operations
todo      Todo management
utils     Utility commands

Notes:

  • The options to the main command override the configuration file;
  • By default the configuration file is $HOME/.config/caldavctl/config.toml;

To get help about a sub-command do:

$ caldavctl <sub-command> --help

For example:

$ caldavctl event --help
Usage: caldavctl event [OPTIONS] COMMAND [ARGS]...

  Event management

Options:
  --help  Show this message and exit.

Commands:
  create  Create new event
  delete  Delete an event on the server
  list    List events from the server list.

This holds true for sub-sub-commands:

$ caldavctl todo list --help
Usage: caldavctl todo list [options]

List todos from the default server and default calendar

caldavctl uses templates to display the list command output by default. If
not specified otherwise it uses the `todo.txt` template. The used template
can be specified using the -tf/--template-file option. First we check the
current directory for the existence of the file. If it's not found we check
the `<share>/caldavctl/templates` directory.

Currently we have the following templates:

    * todo.txt - output with colors (default)
    * todo-nocolor.txt
    * todo.html

If the --json flag is used, the list command will output JSON. This output
does not go through the template system, and any template options will be
ignored when using --json.

Options:
-sd, --show-description      Show the todo's description.
-si, --show-uid              Show the todo's UID.
-a, --all                    Show all todos, including completed todos.
-tf, --template-file <file>  Template used to format the output
--json                       Output JSON instead of using a template
--help                       Show this message and exit.

The create event command

The create event command uses a simple key: value format to define the elements of an event. If the --edit option is used without specifying a file, an example file is opened on your $EDITOR.

Here's a minimal event:

DTSTART: 2025-02-02 09:00
DURATION: PT30M
SUMMARY: Just an example!

Read the documentation about the event definition format in docs/caldav_event_config_format.md.

Templates

Certain command have their output formatted with a template. See, for example:

caldavctl event list --help

If you want to create your own templates read docs/caldav_templates.md.

License

caldavctl is distributed under the terms of the GPL-3.0-or-later 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

caldavctl-0.0.23.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

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

caldavctl-0.0.23-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

Details for the file caldavctl-0.0.23.tar.gz.

File metadata

  • Download URL: caldavctl-0.0.23.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for caldavctl-0.0.23.tar.gz
Algorithm Hash digest
SHA256 45ce100d18ac145a622d57a06de6d31af254e0f6d145f52ad82a7061cca416fe
MD5 1d4f56290dc8418af4163199837731fb
BLAKE2b-256 a2fdb2c0ab44b4a347c03a795e7846c922c2fbc036a58f839f300d8df352fa43

See more details on using hashes here.

File details

Details for the file caldavctl-0.0.23-py3-none-any.whl.

File metadata

  • Download URL: caldavctl-0.0.23-py3-none-any.whl
  • Upload date:
  • Size: 43.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for caldavctl-0.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 cc40e49bc3a57bf4cfcae8c5042499e6b757c61671fd9d1a2b98cd1829876938
MD5 730afa05a665c4fc6cba9bcac9f9a03e
BLAKE2b-256 cbc90632672925162a3adc6e6dffcaee8a105e0476b813e668b02642e8ffba32

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