使用 khal 和 vdirsyncer 组织和同步您的日历

保持和共享日历可能很麻烦。了解如何在我们的“2020 年使用开源提高工作效率的 20 种方法”系列文章的第五篇中使其更容易。
130 位读者喜欢这个。
Poll: Upcoming open source conferences

Dafne Cholet 拍摄。CC BY-SA 2.0。

 

去年,我为您带来了 2019 年 19 天的新(对您而言)生产力工具。今年,我采取了不同的方法:构建一个环境,让您在新的一年里更有效率,使用您可能已经或尚未使用的工具。

使用 khal 和 vdirsyncer 跟踪您的日程安排

日历是一个麻烦的问题,找到好的工具总是很难。但是自从去年我将日历列为 我的“失败”之一 以来,我取得了一些进展。

如今,日历最困难的事情是,它们几乎总是需要以某种方式在线共享。两个最流行的在线日历是 Google 日历和 Microsoft Outlook/Exchange。两者都在企业环境中大量使用,这意味着我的日历必须支持其中一个或两个选项。

khal calendar

Khal 是一个基于控制台的日历,可以读取和写入 VCalendar 文件。它很容易配置,但它不支持与其他应用程序同步。

幸运的是,khal 可以与 vdirsyncer 一起使用,这是一个简洁的命令行程序,可以将在线日历(和联系人,我将在另一篇文章中讨论)同步到您的本地驱动器。是的,这包括上传新事件。

vdirsyncer

Vdirsyncer 是一个 Python 3 程序,可以通过您的软件包管理器或 pip 安装。它可以同步 CalDAV、VCalendar/iCalendar、Google 日历和目录中的本地文件。由于我使用 Google 日历,我将以此为例,尽管它不是最容易设置的。

关于如何设置 vdirsyncer 以用于 Google,有详细的文档,因此我不会在此处详细介绍。重要的是确保您的同步对以将 Google 日历设置为冲突解决的“胜出者”的方式设置。也就是说,如果对同一事件有两个更新,它需要知道哪个优先。使用类似这样的方法进行操作

[general]
status_path = "~/.calendars/status"

[pair personal_sync]
a = "personal"
b = "personallocal"
collections = ["from a", "from b"]
conflict_resolution = "a wins"
metadata = ["color"]

[storage personal]
type = "google_calendar"
token_file = "~/.vdirsyncer/google_calendar_token"
client_id = "google_client_id"
client_secret = "google_client_secret"

[storage personallocal]
type = "filesystem"
path = "~/.calendars/Personal"
fileext = ".ics"

在 vdirsyncer 的首次同步之后,您将在存储路径中得到一系列目录。每个目录将包含多个文件,每个文件对应日历中的一个条目。下一步是将它们放入 khal。首先运行 khal configure 进行初始设置。

Configuring khal

现在,运行 khal interactive 将显示本文开头所示的显示。键入 n 将弹出“新建事件”对话框。这里需要注意一个小细节:日历的命名与 vdirsyncer 创建的目录匹配,但您可以更改 khal 配置文件以赋予它们更清晰的名称。根据条目所在的日历为条目添加颜色也有助于您在列表中区分它们

[calendars]
[[personal]]
path = ~/.calendars/Personal/kevin@sonney.com/
color = light magenta
[[holidays]]
path = ~/.calendars/Personal/cln2stbjc4hmgrrcd5i62ua0ctp6utbg5pr2sor1dhimsp31e8n6errfctm6abj3dtmg@virtual/
color = light blue
[[birthdays]]
path = ~/.calendars/Personal/c5i68sj5edpm4rrfdchm6rreehgm6t3j81jn4rrle0n7cbj3c5m6arj4c5p2sprfdtjmop9ecdnmq@virtual/
color = brown

现在,当您运行 khal interactive 时,每个日历都将着色以将其与其他日历区分开来,并且当您添加新条目时,它将具有更具描述性的名称。

Adding a new calendar entry

设置有点棘手,但一旦完成,khal 与 vdirsyncer 将为您提供一种轻松管理日历事件并使它们与您的在线服务保持同步的方法。

接下来阅读什么

使用 Notmuch 组织您的电子邮件

Notmuch 可以索引、标记和排序您的电子邮件。了解如何在我们的“2020 年使用开源提高工作效率的 20 种方法”系列文章的第四篇中使用它。

标签
User profile image.
Kevin Sonney 是一位技术专业人士、媒体制作人和播客主持人。作为一名 Linux 系统管理员和开源倡导者,Kevin 在 IT 行业拥有超过 25 年的经验,在开源领域拥有超过 15 年的经验。他目前在 elastic 担任 SRE。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© 2025 open-source.net.cn. All rights reserved.