Kevin Sonney 发布的文章

jrnl 可以创建可搜索、带时间戳、可导出、加密的(如果需要)的日常活动日志。在我们的 20 个使用开源提升生产力的系列的第八篇文章中了解更多。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 jrnl 记录日志

在我的公司,许多人会在下班之前在 Slack 上发送一个“一天结束”的状态。在有着许多项目和全球化的团队里,这是一个分享你已完成、未完成以及你需要哪些帮助的一个很好的方式。但有时候我太忙了,以至于我忘了做了什么。这时候就需要记录日志了。

 title=

打开一个文本编辑器并在你做一些事的时候添加一行很容易。但是在需要找出你在什么时候做的笔记,或者要快速提取相关的行时会有挑战。幸运的是,jrnl 可以提供帮助。

jrnl 能让你在命令行中快速输入条目、搜索过去的条目并导出为 HTML 和 Markdown 等富文本格式。你可以有多个日志,这意味着你可以将工作条目与私有条目分开。它将条目存储为纯文本,因此即使 jrnl 停止工作,数据也不会丢失。

由于 jrnl 是一个 Python 程序,最简单的安装方法是使用 pip3 install jrnl。这将确保你获得最新和最好的版本。第一次运行它会询问一些问题,接下来就能正常使用。

 title=

现在,每当你需要做笔记或记录日志时,只需输入 jrnl <some text>,它将带有时间戳的记录保存到默认文件中。你可以使用 jrnl -on YYYY-MM-DD 搜索特定日期条目,jrnl -from YYYY-MM-DD 搜索在那日期之后的条目,以及用 jrnl -to YYYY-MM-DD 搜索到那日期的条目。搜索词可以与 -and 参数结合使用,允许像 jrnl -from 2019-01-01 -and -to 2019-12-31 这类搜索。

你还可以使用 --edit 标志编辑日志中的条目。开始之前,通过编辑文件 ~/.config/jrnl/jrnl.yaml 来设置默认编辑器。你还可以指定日志使用什么文件、用于标签的特殊字符以及一些其他选项。现在,重要的是设置编辑器。我使用 Vim,jrnl 的文档中有一些使用其他编辑器如 VSCode 和 Sublime Text 的有用提示

 title=

jrnl 还可以加密日志文件。通过设置全局 encrypt 变量,你将告诉 jrnl 加密你定义的所有日志。还可在配置文件中的针对文件设置 encrypt: true 来加密文件。

journals:
  default: ~/journals/journal.txt
  work: ~/journals/work.txt
  private:
    journal: ~/journals/private.txt
    encrypt: true

如果日志尚未加密,系统将提示你输入在对它进行任何操作的密码。日志文件将加密保存在磁盘上,以免受窥探。jrnl 文档 中包含其工作原理、使用哪些加密方式等的更多信息。

 title=

日志记录帮助我记住什么时候做了什么事,并在我需要的时候能够找到它。


via: https://opensource.com/article/20/1/python-journal

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

待办事项清单是跟踪任务列表的强大方法。在我们的 20 个使用开源提升生产力的系列的第七篇文章中了解如何使用它。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 todo 跟踪任务

任务管理和待办事项清单是我非常喜欢0的东西。我是一位生产效率的狂热粉丝(以至于我为此做了一个播客),我尝试了各种不同的应用。我甚至为此做了演讲写了些文章。因此,当我谈到提高工作效率时,肯定会出现任务管理和待办事项清单工具。

Getting fancy with Todo.txt

说实话,由于简单、跨平台且易于同步,用 todo.txt 肯定不会错。它是我不断反复提到的两个待办事项清单以及任务管理应用之一(另一个是 Org 模式)。让我反复使用它的原因是它简单、可移植、易于理解,并且有许多很好的附加组件,并且当一台机器有附加组件,而另一台没有,也不会破坏它。由于它是一个 Bash shell 脚本,我还没发现一个无法支持它的系统。

设置 todo.txt

首先,你需要安装基本 shell 脚本并将默认配置文件复制到 ~/.todo 目录:

git clone https://github.com/todotxt/todo.txt-cli.git
cd todo.txt-cli
make
sudo make install
mkdir ~/.todo
cp todo.cfg ~/.todo/config

接下来,设置配置文件。一般,我想取消对颜色设置的注释,但必须马上设置的是 TODO_DIR 变量:

export TODO_DIR="$HOME/.todo"

添加待办事件

要添加第一个待办事件,只需输入 todo.sh add <NewTodo> 就能添加。这还将在 $HOME/.todo/ 中创建三个文件:todo.txtdone.txtreports.txt

添加几个项目后,运行 todo.sh ls 查看你的待办事项。

 title=

管理任务

你可以通过给项目设置优先级来稍微改善它。要向项目添加优先级,运行 todo.sh pri # A。数字是列表中任务的数量,而字母 A 是优先级。你可以将优先级设置为从 A 到 Z,因为这是它的排序方式。

要完成任务,运行 todo.sh do # 来标记项目已完成并将它移动到 done.txt。运行 todo.sh report 会向 report.txt 写入已完成和未完成项的数量。

所有这三个文件的格式都有详细的说明,因此你可以使用你的文本编辑器修改。todo.txt 的基本格式是:

(Priority) YYYY-MM-DD Task

该日期表示任务的到期日期(如果已设置)。手动编辑文件时,只需在任务前面加一个 x 来标记为已完成。运行 todo.sh archive 会将这些项目移动到 done.txt,你可以编辑该文本文件,并在有时间时将已完成的项目归档。

设置重复任务

我有很多重复的任务,我需要以每天/周/月来计划。

 title=

这就是 todo.txt 的灵活性所在。通过在 ~/.todo.actions.d/ 中使用附加组件,你可以添加命令并扩展基本 todo.sh 的功能。附加组件基本上是实现特定命令的脚本。对于重复执行的任务,插件 ice\_recur 应该符合要求。按照其页面上的说明操作,你可以设置任务以非常灵活的方式重复执行。

 title=

在该附加组件目录中有很多附加组件,包括同步到某些云服务,也有链接到桌面或移动端应用的组件,这样你可以随时看到待办列表。

我只是简单介绍了这个代办事项清单功能,请花点时间深入了解这个工具的强大!它确实可以帮助我每天完成任务。


via: https://opensource.com/article/20/1/open-source-to-do-list

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过将联系人同步到本地从而更快访问它。在我们的 20 个使用开源提升生产力的系列的第六篇文章中了解该如何做。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

用于联系人管理的开源工具

在本系列之前的文章中,我解释了如何在本地同步你的邮件日历。希望这些加速了你访问邮件和日历。现在,我将讨论联系人同步,你可以给他们发送邮件和日历邀请。

 title=

我目前收集了很多邮件地址。管理这些数据可能有点麻烦。有基于 Web 的服务,但它们不如本地副本快。

几天前,我谈到了用于管理日历的 vdirsyncer。vdirsyncer 还使用 CardDAV 协议处理联系人。vdirsyncer 除了可以使用文件系统存储日历外,还支持通过 google\_contactscarddav 进行联系人同步,但 fileext 设置会被更改,因此你无法在日历文件中存储联系人。

我在配置文件添加了一块配置,并从 Google 镜像了我的联系人。设置它需要额外的步骤。从 Google 镜像完成后,配置非常简单:

[pair address_sync]
a = "googlecard"
b = "localcard"
collections = ["from a", "from b"]
conflict_resolution = "a wins"

[storage googlecard]
type = "google_contacts"
token_file = "~/.vdirsyncer/google_token"
client_id = "my_client_id"
client_secret = "my_client_secret"

[storage localcard]
type = "filesystem"
path = "~/.calendars/Addresses/"
fileext = ".vcf"

现在,当我运行 vdirsyncer discover 时,它会找到我的 Google 联系人,并且 vdirsyncer sync 将它们复制到我的本地计算机。但同样,这只进行到一半。现在我想查看和使用联系人。需要 khardabook

 title=

为什么选择两个应用?因为每个都有它自己的使用场景,在这里,越多越好。khard 用于管理地址,类似于 khal 用于管理日历条目。如果你的发行版附带了旧版本,你可能需要通过 pip 安装最新版本。安装 khard 后,你需要创建 ~/.config/khard/khard.conf,因为 khard 没有与 khal 那样漂亮的配置向导。我的看起来像这样:

[addressbooks]
[[addresses]]
path = ~/.calendars/Addresses/default/

[general]
debug = no
default_action = list
editor = vim, -i, NONE
merge_editor = vimdiff

[contact table]
display = first_name
group_by_addressbook = no
reverse = no
show_nicknames = yes
show_uids = no
sort = last_name
localize_dates = yes

[vcard]
preferred_version = 3.0
search_in_source_files = yes
skip_unparsable = no

这会定义源通讯簿(并给它一个友好的名称)、显示内容和联系人编辑程序。运行 khard list 将列出所有条目,khard list <[email protected]> 可以搜索特定条目。如果要添加或编辑条目,addedit 命令将使用相同的基本模板打开配置的编辑器,唯一的区别是 add 命令的模板将为空。

 title=

abook 需要你导入和导出 VCF 文件,但它为查找提供了一些不错的功能。要将文件转换为 abook 格式,请先安装 abook 并创建 ~/.abook 默认目录。然后让 abook 解析所有文件,并将它们放入 ~/.abook/addresses 文件中:

apt install abook
ls ~/.calendars/Addresses/default/* | xargs cat | abook --convert --informat vcard --outformat abook > ~/.abook/addresses

现在运行 abook,你将有一个非常漂亮的 UI 来浏览、搜索和编辑条目。将它们导出到单个文件有点痛苦,所以我用 khard 进行大部分编辑,并有一个 cron 任务将它们导入到 abook 中。

abook 还可在命令行中搜索,并有大量有关将其与邮件客户端集成的文档。例如,你可以在 .config/alot/config 文件中添加一些信息,从而在 Nmuch 的邮件客户端 alot 中使用 abook 查询联系人:

[accounts]
  [[Personal]]
     realname = Kevin Sonney
     address = [email protected]
     alias_regexp = kevin\[email protected]
     gpg_key = 7BB612C9
     sendmail_command = msmtp --account=Personal -t
     # ~ expansion works
     sent_box = maildir://~/Maildir/Sent
     draft_box = maildir://~/Maildir/Drafts
    [[[abook]]]
        type = abook

这样你就可以在邮件和日历中快速查找联系人了!


via: https://opensource.com/article/20/1/sync-contacts-locally

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

保存和共享日历可能会有点麻烦。在我们的 20 个使用开源提升生产力的系列的第五篇文章中了解如何让它更简单。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 khal 和 vdirsyncer 跟踪你的日程

处理日历很麻烦,要找到好的工具总是很困难的。但是自从我去年将日历列为我的“失败"之一以来,我已经取得了一些进步。

目前使用日历最困难的是一直需要以某种方式在线共享。两种最受欢迎的在线日历是 Google Calendar 和 Microsoft Outlook/Exchange。两者都在公司环境中大量使用,这意味着我的日历必须支持其中之一或者两个。

 title=

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

幸运的是,khal 能与 vdirsyncer 一起使用,它是一个漂亮的命令行程序,可以将在线日历(和联系人,我将在另一篇文章中讨论)同步到本地磁盘。是的,它还可以上传新事件。

 title=

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 进行初始设置。

 title=

现在,运行 khal interactive 将显示本文开头的界面。输入 n 将打开“新事件”对话框。这里要注意的一件事:日历的名称与 vdirsyncer 创建的目录匹配,但是你可以更改 khal 配置文件来指定更清晰的名称。根据条目所在的日历,向条目添加颜色还可以帮助你确定日历内容:

[calendars]
[[personal]]
path = ~/.calendars/Personal/[email protected]/
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中国 荣誉推出

Notmuch 可以索引、标记和排序电子邮件。在我们的 20 个使用开源提升生产力的系列的第四篇文章中了解该如何使用它。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

用 Notmuch 为你的邮件建立索引

昨天,我谈到了如何使用 OfflineIMAP 将我的邮件同步到本地计算机。今天,我将讨论如何在阅读之前预处理所有邮件。

 title=

Maildir 可能是最有用的邮件存储格式之一。有很多工具可以帮助你管理邮件。我经常使用一个名为 Notmuch 的小程序,它能索引、标记和搜索邮件。Notmuch 配合其他几个程序一起使用可以使处理大量邮件更加容易。

大多数 Linux 发行版都包含 Notmuch,你也可以在 MacOS 上获得它。Windows 用户可以通过 Linux 的 Windows 子系统(WSL)访问它,但可能需要进行一些其他调整。

 title=

Notmuch 首次运行时,它将询问你一些问题,并在家目录中创建 .notmuch-config 文件。接下来,运行 notmuch new 来索引并标记所有邮件。你可以使用 notmuch search tag:new 进行验证,它会找到所有带有 new 标签的消息。这可能会有很多邮件,因为 Notmuch 使用 new 标签来指示新邮件,因此你需要对其进行清理。

运行 notmuch search tag:unread 来查找未读消息,这会减少很多邮件。要从你已阅读的消息中删除 new 标签,请运行 notmuch tag -new not tag:unread,它将搜索所有没有 unread 标签的消息,并从其中删除 new 标签。现在,当你运行 notmuch search tag:new 时,它将仅显示未读邮件。

但是,批量标记消息可能更有用,因为在每次运行时手动更新标记可能非常繁琐。--batch 命令行选项告诉 Notmuch 读取多行命令并执行它们。还有一个 --input=filename 选项,该选项从文件中读取命令并应用它们。我有一个名为 tagmail.notmuch 的文件,用于给“新”邮件添加标签;它看起来像这样:

# Manage sent, spam, and trash folders
-unread -new folder:Trash
-unread -new folder:Spam
-unread -new folder:Sent

# Note mail sent specifically to me (excluding bug mail)
+to-me to:kevin at sonney.com and tag:new and not tag:to-me

# And note all mail sent from me
+sent from:kevin at sonney.com and tag:new and not tag:sent

# Remove the new tag from messages
-new tag:new

我可以在运行 notmuch new 后运行 notmuch tag --input=tagmail.notmuch 批量处理我的邮件,之后我也可以搜索这些标签。

Notmuch 还支持 pre-newpost-new 钩子。这些脚本存放在 Maildir/.notmuch/hooks 中,它们定义了在使用 notmuch new 索引新邮件之前(pre-new)和之后(post-new)要做的操作。在昨天的文章中,我谈到了使用 OfflineIMAP 同步来自 IMAP 服务器的邮件。从 pre-new 钩子运行它非常容易:

#!/bin/bash
# Remove the new tag from messages that are still tagged as new
notmuch tag -new tag:new

# Sync mail messages
offlineimap -a LocalSync -u quiet

你还可以使用可以操作 Notmuch 数据库的 Python 应用 afew,来为你标记邮件列表垃圾邮件。你可以用类似的方法在 post-new 钩子中使用 afew

#!/bin/bash
# tag with my custom tags
notmuch tag --input=~/tagmail.notmuch

# Run afew to tag new mail
afew -t -n

我建议你在使用 afew 标记邮件时,不要使用 [ListMailsFilter],因为某些邮件处理程序会在邮件中添加模糊或者彻头彻尾是垃圾的列表标头(我说的就是你 Google)。

 title=

此时,任何支持 Notmuch 或 Maildir 的邮件阅读器都可以读取我的邮件。有时,我会使用 alot(一个 Notmuch 特定的客户端)在控制台中阅读邮件,但是它不像其他邮件阅读器那么美观。

在接下来的几天,我将向你展示其他一些邮件客户端,它们可能会与你在使用的工具集成在一起。同时,请查看可与 Maildir 邮箱一起使用的其他工具。你可能会发现我没发现的好东西。


via: https://opensource.com/article/20/1/organize-email-notmuch

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

将邮件镜像保存到本地是整理消息的第一步。在我们的 20 个使用开源提升生产力的系列的第三篇文章中了解该如何做。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 OfflineIMAP 在本地同步你的邮件

我与邮件之间存在爱恨交织的关系。我喜欢它让我与世界各地的人交流的方式。但是,像你们中的许多人一样,我收到过很多邮件,许多是来自邮件列表的,但也有很多垃圾邮件、广告等。这些积累了很多。

 title=

我尝试过的大多数工具(除了大型邮件服务商外)都可以很好地处理大量邮件,它们都有一个共同点:它们都依赖于以 Maildir 格式存储的本地邮件副本。这其中最有用的是 OfflineIMAP。OfflineIMAP 是将 IMAP 邮箱镜像到本地 Maildir 文件夹树的 Python 脚本。我用它来创建邮件的本地副本并使其保持同步。大多数 Linux 发行版都包含它,并且可以通过 Python 的 pip 包管理器获得。

示例的最小配置文件是一个很好的模板。首先将其复制到 ~/.offlineimaprc。我的看起来像这样:

[general]
accounts = LocalSync
ui=Quiet
autorefresh=30

[Account LocalSync]
localrepository = LocalMail
remoterepository = MirrorIMAP

[Repository MirrorIMAP]
type = IMAP
remotehost = my.mail.server
remoteuser = myusername
remotepass = mypassword
auth_mechanisms = LOGIN
createfolder = true
ssl = yes
sslcacertfile = OS-DEFAULT

[Repository LocalMail]
type = Maildir
localfolders = ~/Maildir
sep = .
createfolder = true

我的配置要做的是定义两个仓库:远程 IMAP 服务器和本地 Maildir 文件夹。还有一个帐户,告诉 OfflineIMAP 运行时要同步什么。你可以定义链接到不同仓库的多个帐户。除了本地复制外,这还允许你从一台 IMAP 服务器复制到另一台作为备份。

如果你有很多邮件,那么首次运行 OfflineIMAP 将花费一些时间。但是完成后,下次会花少得多的时间。你也可以将 OfflineIMAP 作为 cron 任务(我的偏好)或作为守护程序在仓库之间不断进行同步。其文档涵盖了所有这些内容以及 Gmail 等高级配置选项。

现在,我的邮件已在本地复制,并有多种工具用来加快搜索、归档和管理邮件的速度。这些我明天再说。


via: https://opensource.com/article/20/1/sync-email-offlineimap

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出