How pimutils/khal works
Khal is a standards-based CLI and terminal calendar for creating, browsing, editing, and listing events stored as vdir/iCalendar files; vdirsyncer can synchronize those files with CalDAV and other systems. The main workflow runs from a user command through CLI dispatch and controller operations into calendar/event handling and storage, with formatted terminal output or the interactive ikhal UI. The graph also preserves configuration, parsing, and plugin capabilities. Relationships are limited to README statements and SOURCE INDEX references; several subsystem internals were not sampled.
Main entry points: controllers.py Calendar workflows · __init__.py Interactive ikhal · khalendar.py Calendar collection · cli.py CLI commands
Components 21
Command entry
- Program entry
khal/__main__.py - CLI commands
khal/cli.py - Calendar workflows
khal/controllers.py - Plugin themes
khal/plugins.py
Calendar domain
- Date parsing
khal/parse_datetime.py - iCalendar codec
khal/icalendar.py - Event model
khal/khalendar/event.py
Calendar storage
- Calendar collection
khal/khalendar/khalendar.py - Calendar backend
khal/khalendar/backend.py - vdir files
khal/khalendar/vdir.py
Terminal experience
- Calendar display
khal/calendar_display.py - Terminal formatting
khal/terminal.py - Interactive ikhal
khal/ui/__init__.py - Calendar widget
khal/ui/calendarwidget.py - Event editor
khal/ui/editor.py - UI widgets
khal/ui/widgets.py
Configuration
- Settings loader
khal/settings/settings.py - Settings utilities
khal/settings/utils.py - Config wizard
khal/configwizard.py
Other components
- User
- vdirsyncer / CalDAV
Connections 28
- User → Program entry: runs
khal/__main__.py - Program entry → CLI commands: dispatches
khal/__main__.py - CLI commands → Calendar workflows: invokes
khal/cli.py - CLI commands → Plugin themes: loads
khal/cli.py - CLI commands → Config wizard: invokes
khal/cli.py - Calendar workflows → Calendar collection: operates on
khal/controllers.py - Calendar workflows → Date parsing: parses ranges
khal/controllers.py - Calendar workflows → iCalendar codec: uses codec
khal/controllers.py - Calendar workflows → Event model: edits events
khal/controllers.py - Calendar workflows → Interactive ikhal: opens view
khal/controllers.py - Calendar workflows → Terminal formatting: formats output
khal/controllers.py - Calendar collection → Calendar backend: uses backend
khal/khalendar/khalendar.py - Calendar collection → Event model: manages events
khal/khalendar/khalendar.py - Calendar collection → vdir files: uses files
khal/khalendar/khalendar.py - Calendar backend → iCalendar codec: uses codec
khal/khalendar/backend.py - vdirsyncer / CalDAV → vdir files: synchronizes
README.rst - Settings loader → Settings utilities: uses utilities
khal/settings/settings.py - Settings utilities → Date parsing: uses parser
khal/settings/utils.py - Settings utilities → vdir files: configures calendars
khal/settings/utils.py - Config wizard → Settings utilities: uses utilities
khal/configwizard.py - Calendar display → Terminal formatting: formats display
khal/calendar_display.py - Interactive ikhal → Calendar widget: uses widget
khal/ui/__init__.py - Interactive ikhal → Event editor: uses editor
khal/ui/__init__.py - Interactive ikhal → UI widgets: uses widgets
khal/ui/__init__.py - Interactive ikhal → Plugin themes: resolves themes
khal/ui/__init__.py - Interactive ikhal → Calendar collection: accesses calendars
khal/ui/__init__.py - Event editor → Calendar widget: uses widget
khal/ui/editor.py - Event editor → Event model: edits model
khal/ui/editor.py