id = "calcurse"
name = "calcurse"
homepage = "https://calcurse.org/"
description = "Text-based personal organizer"
executables = ["calcurse"]
[dotfiles]
paths = [
"[configHome]/calcurse/conf",
"[configHome]/calcurse/keys",
"[configHome]/calcurse/caldav/config",
"~/.calcurse/conf",
"~/.calcurse/keys",
"~/.calcurse/caldav/config",
]
secret = []
[[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"]