科技圈里那些事Y:khal 和 vdirsyncer 组织和同步你的日历,使用

使用khal和vdirsyncer组织和同步你的日历
科技圈里那些事Y:khal 和 vdirsyncer 组织和同步你的日历,使用
文章图片
Linux技术
保存和共享日历可能会有点麻烦 。 在我们的20个使用开源提升生产力的系列的第五篇文章中了解如何让它更简单 。 --KevinSonney(作者)
去年 , 我在19天里给你介绍了19个新(对你而言)的生产力工具 。 今年 , 我换了一种方式:使用你在使用或者还没使用的工具 , 构建一个使你可以在新一年更加高效的环境 。
使用khal和vdirsyncer跟踪你的日程
处理日历很麻烦 , 要找到好的工具总是很困难的 。 但是自从我去年将日历列为我的“失败''之一以来 , 我已经取得了一些进步 。
目前使用日历最困难的是一直需要以某种方式在线共享 。 两种最受欢迎的在线日历是GoogleCalendar和MicrosoftOutlook/Exchange 。 两者都在公司环境中大量使用 , 这意味着我的日历必须支持其中之一或者两个 。
khalcalendar
Khal是基于控制台的日历 , 可以读取和写入VCalendar文件 。 它配置相当容易 , 但是不支持与其他应用同步 。
幸运的是 , khal能与vdirsyncer一起使用 , 它是一个漂亮的命令行程序 , 可以将在线日历(和联系人 , 我将在另一篇文章中讨论)同步到本地磁盘 。 是的 , 它还可以上传新事件 。
vdirsyncer
Vdirsyncer是个Python3程序 , 可以通过软件包管理器或pip安装 。 它可以同步CalDAV、VCalendar/iCalendar、GoogleCalendar和目录中的本地文件 。 由于我使用GoogleCalendar , 尽管这不是最简单的设置 , 我也将以它为例 。
在vdirsyncer中设置GoogleCalendar是有文档参考的 , 所以这里我不再赘述 。 重要的是确保设置你的同步对 , 将GoogleCalendar设置为冲突解决的“赢家” 。 也就是说 , 如果同一事件有两个更新 , 那么需要知道哪个更新优先 。 类似这样做:
[general]status_path=''~/.calendars/status''[pairpersonal_sync]a=''personal''b=''personallocal''collections=[''froma'',''fromb'']conflict_resolution=''awins''metadata=https://pcff.toutiao.jxnews.com.cn/p/20200325/[''color''][storagepersonal]type=''google_calendar''token_file=''~/.vdirsyncer/google_calendar_token''client_id=''google_client_id''client_secret=''google_client_secret''[storagepersonallocal]type=''filesystem''path=''~/.calendars/Personal''fileext=''.ics''在第一次vdirsyncer同步之后 , 你将在存储路径中看到一系列目录 。 每个文件夹都将包含多个文件 , 日历中的每个事件都是一个文件 。 下一步是导入khal 。 首先运行khalconfigure进行初始设置 。
Configuringkhal
现在 , 运行khalinteractive将显示本文开头的界面 。 输入n将打开“新事件”对话框 。 这里要注意的一件事:日历的名称与vdirsyncer创建的目录匹配 , 但是你可以更改khal配置文件来指定更清晰的名称 。 根据条目所在的日历 , 向条目添加颜色还可以帮助你确定日历内容:
[calendars][[personal]]path=~/.calendars/Personal/kevin@sonney.com/color=lightmagenta[[holidays]]path=~/.calendars/Personal/cln2stbjc4hmgrrcd5i62ua0ctp6utbg5pr2sor1dhimsp31e8n6errfctm6abj3dtmg@virtual/color=lightblue[[birthdays]]path=~/.calendars/Personal/c5i68sj5edpm4rrfdchm6rreehgm6t3j81jn4rrle0n7cbj3c5m6arj4c5p2sprfdtjmop9ecdnmq@virtual/color=brown现在 , 当你运行khalinteractive时 , 每个日历将被着色以区别于其他日历 , 并且当你添加新条目时 , 它将有更具描述性的名称 。
Addinganewcalendarentry
设置有些麻烦 , 但是完成后 , khal和vdirsyncer可以一起为你提供一种简便的方法来管理日历事件并使它们与你的在线服务保持同步 。