基于 vdirsyncer + khal 的 Linux 纯命令行日历管理方案,支持 iCloud/Google/Fastmail/Nextcloud 同步,零界面、全键盘操作。
说明:
## 核心功能与用法
**caldav-calendar** 是一套面向 Linux 极客用户的命令行日历管理方案,通过组合 `vdirsyncer`(CalDAV 同步器)和 `khal`(TUI 日历查看器)实现本地与云端日历的双向同步。核心工作流为:先执行 `vdirsyncer sync` 拉取远程数据,再用 `khal` 进行查询、创建、搜索或交互式编辑。
**查询场景**:`khal list` 支持多维度视图——当日、未来 N 天、指定日期区间、特定日历筛选,配合 `–format` 可输出结构化数据供脚本消费。搜索功能支持标题模糊匹配,并支持自定义输出模板。
**创建与编辑**:`khal new` 支持快速创建普通事件或全天事件,可通过 `::` 追加描述。`khal edit` 进入交互式菜单(需 TTY),支持修改标题、时间、地点、描述及删除操作。所有变更需再次执行 `vdirsyncer sync` 方能推送至云端。
## 显著优点
1. **去 GUI 化**:完全脱离图形界面,适合 SSH 远程服务器、tmux 会话或 Wayland 极简环境
2. **开放格式**:本地存储为纯文本 `.ics` 文件,可手动审计、版本控制或灾难恢复
3. **多云兼容**:统一接口对接 iCloud、Google、Fastmail、Nextcloud 等主流 CalDAV 服务商
4. **脚本友好**:格式化输出支持变量占位符(uid、calendar、location 等),易于集成自动化流程
## 局限性与风险
– **TTY 依赖**:`khal edit` 必须依附终端,纯后台自动化需借助 tmux 等工具
– **缓存机制**:khal 依赖本地 SQLite 缓存,异常时需手动清除 `~/.local/share/khal/khal.db`
– **配置门槛**:首次使用需编写两段 INI 配置文件(vdirsyncer + khal),对新手不够友好
– **工具链依赖**:需独立安装并维护 vdirsyncer 和 khal,发行版包版本可能滞后
## 适合人群
– Linux 重度终端用户、i3/Sway 窗口管理器使用者
– 需要远程服务器日历管理的 DevOps/运维人员
– 追求数据本地可控、厌恶专有格式的隐私敏感用户
## 常规风险
– **凭证管理**:配置文件若权限设置不当,password.fetch 指向的密码文件可能被其他用户读取
– **同步冲突**:多设备并发修改时依赖 vdirsyncer 的冲突解决策略(示例配置为 “a wins”),可能造成数据覆盖
– **服务可用性**:依赖各云厂商 CalDAV 端点稳定性,Google 日历需特殊 OAuth 配置(非标准密码)







