id = "calcurse" name = "calcurse" homepage = "https://calcurse.org/" description = "Text-based personal organizer" executables = ["calcurse"] [dotfiles] # https://sources.debian.org/data/main/c/calcurse/4.6.0-2/doc/manual.html#calcurse-files # documents the XDG config files conf and keys, and the legacy ~/.calcurse # location used when that directory exists. Its calcurse-caldav sample # additionally names caldav/config in both forms. paths = [ "[configHome]/calcurse/conf", "[configHome]/calcurse/keys", "[configHome]/calcurse/caldav/config", "~/.calcurse/conf", "~/.calcurse/keys", "~/.calcurse/caldav/config", ] secret = [] # https://github.com/lfos/calcurse/blob/pu/contrib/caldav/config.sample — a # CalDAV config can contain plaintext Password, PasswordCommand and OAuth # ClientSecret fields. PasswordCommand is classified too because its command # may embed or retrieve a credential. [[dotfiles.secret_paths]] file = [ "[configHome]/calcurse/caldav/config", "~/.calcurse/caldav/config", ] match = { prefix = ["Password", "PasswordCommand", "ClientSecret"] } [commands] format = 1 label = "Query or export calendar" description = "Non-interactive calcurse queries: print a day's appointments, the next appointment, import or export data. Filter options and the interactive UI are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "manual" url = "https://manpages.debian.org/unstable/calcurse/calcurse.1.en.html" revision = "2026-10-27" evidence = """ -a, --appointment Print the appointments and events for the current day. -c file, --calendar file (also interactively) Specify the calendar file to -C dir, --confdir dir (also interactively) Specify the configuration -D dir, --datadir dir (also interactively) Specify the (data) directory -d date|num, --day date|num Print appointments and events for the given date or given -i file, --import file Import the icalendar data contained in file. -l num, --limit num Limit the number of results printed to num. -n, --next Print the first appointment within the next 24 hours. -x[format], --export[=format] Export user data in the specified format. Events, appointments and todos are converted and echoed to stdout. Two formats are available: ical and pcal. The default format is ical. """ [[commands.field]] id = "appointment" label = "Today's appointments" type = "boolean" option = ["--appointment", "-a"] sources = ["help"] [[commands.field]] id = "day" label = "Day (date or number of days)" type = "string" option = ["--day", "-d"] sources = ["help"] [[commands.field]] id = "next" label = "Next appointment within 24h" type = "boolean" option = ["--next", "-n"] sources = ["help"] [[commands.field]] id = "limit" label = "Limit results" type = "integer" option = ["--limit", "-l"] sources = ["help"] [[commands.field]] id = "import_file" label = "Import iCalendar file" type = "path" path = { kind = "file", role = "input" } option = ["--import", "-i"] sources = ["help"] [[commands.field]] id = "export" label = "Export format" type = "enum" option = ["--export"] choices = [{ value = "ical", label = "iCalendar" }, { value = "pcal", label = "pcal" }] sources = ["help"] [[commands.field]] id = "calendar" label = "Calendar file" type = "path" path = { kind = "file", role = "input" } option = ["--calendar", "-c"] sources = ["help"] [[commands.field]] id = "confdir" label = "Configuration directory" type = "path" path = { kind = "directory", role = "input" } option = ["--confdir", "-C"] sources = ["help"] [[commands.field]] id = "datadir" label = "Data directory" type = "path" path = { kind = "directory", role = "input" } option = ["--datadir", "-D"] sources = ["help"] [[commands.task]] id = "today" label = "Print today's appointments" set = { appointment = [true] } lock = ["appointment"] fields = ["appointment", "limit"] required = [] [[commands.task]] id = "day" label = "Print a given day" fields = ["day", "limit"] required = ["day"] [[commands.task]] id = "export" label = "Export data to stdout" fields = ["export"] required = [] [[commands.group]] id = "basic" label = "Basic" fields = ["appointment", "day", "next", "limit", "import_file", "export"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["calendar", "confdir", "datadir"]