使用 khal 和 vdirsyncer 組織和同步你的日曆

Kevin Sonney發表於2020-01-23

儲存和共享日曆可能會有點麻煩。在我們的 20 個使用開源提升生產力的系列的第五篇文章中瞭解如何讓它更簡單。

使用 khal 和 vdirsyncer 組織和同步你的日曆

去年,我在 19 天裡給你介紹了 19 個新(對你而言)的生產力工具。今年,我換了一種方式:使用你在使用或者還沒使用的工具,構建一個使你可以在新一年更加高效的環境。

使用 khal 和 vdirsyncer 跟蹤你的日程

處理日曆很麻煩,要找到好的工具總是很困難的。但是自從我去年將日曆列為我的“失敗"之一以來,我已經取得了一些進步。

目前使用日曆最困難的是一直需要以某種方式線上共享。兩種最受歡迎的線上日曆是 Google Calendar 和 Microsoft Outlook/Exchange。兩者都在公司環境中大量使用,這意味著我的日曆必須支援其中之一或者兩個。

khal calendar

Khal 是基於控制檯的日曆,可以讀取和寫入 VCalendar 檔案。它配置相當容易,但是不支援與其他應用同步。

幸運的是,khal 能與 vdirsyncer 一起使用,它是一個漂亮的命令列程式,可以將線上日曆(和聯絡人,我將在另一篇文章中討論)同步到本地磁碟。是的,它還可以上傳新事件。

vdirsyncer

Vdirsyncer 是個 Python 3 程式,可以透過軟體包管理器或 pip 安裝。它可以同步 CalDAV、VCalendar/iCalendar、Google Calendar 和目錄中的本地檔案。由於我使用 Google Calendar,儘管這不是最簡單的設定,我也將以它為例。

在 vdirsyncer 中設定 Google Calendar 是有文件參考的,所以這裡我不再贅述。重要的是確保設定你的同步對,將 Google Calendar 設定為衝突解決的“贏家”。也就是說,如果同一事件有兩個更新,那麼需要知道哪個更新優先。類似這樣做:

[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 可以一起為你提供一種簡便的方法來管理日曆事件並使它們與你的線上服務保持同步。


via: https://opensource.com/article/20/1/open-source-calendar

作者:Kevin Sonney 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章