Skip to main content

simple-todo: Yet another command line TODO tool (命令行 TODO 工具)

Project description

simple-todo

Yet another command line TODO tool (命令行 todo 工具)

特色

命令行 todo list 工具有很多,但要么功能非常复杂,而功能简单的又很可能缺少我需要的功能。

为了解决这个矛盾,获得一个功能很少很简单,同时我想要的功能都有的工具,就只能自己做了。

也许这个工具不能满足你的需求,但你可以参考,可以修改,本工具的代码量很小,都是些简单的 Python 语句,没有啥复杂算法,也没啥奇技淫巧,而且结构清晰,变量命名认真,必要的地方都有注释。

主要功能

  1. 简便、快捷地临时记录待办事宜;
  2. 周期提醒,可设置每周、或每月、每年重复提醒;
  3. 随机显示格言/座右铭。

哲学

每一个效率工具,都体现了一种事务管理哲学。本工具有两个主要理念:

理念1: 临时待办事项必须尽快清理,不可长期积压。
理念2: 功能多不一定好,同时代码越少越好。(代码少 bug 就少,容易维护,容易修改)

举个例子,基于这两个理念,调整事项顺序的功能、分类或打标签功能等我就不做了,不做这些功能有三个大好处:

  1. 当待办事项的列表变长时会直观地感受到不舒服,并且没有办法掩盖(如果能调整顺序,就会堆积大量事项在列表底部,如果能分类或按标签筛选,就会造成待办事项不多的错觉)
  2. 调整顺序与分类有一定的趣味性,也会让“强迫症患者”忍不住去整理列表,浪费时间和精力。
  3. 不做这些功能可以少写很多代码,用户也可以少看几行文档,少学几种操作。

安装

simple todo 使用了 Python 3.10 的新特性,比如 type union operator, pattern matching 等,因此,如果你的系统中未安装 Python 3.10, 推荐使用 pyenvminiconda 来安装最新版本的 Python。

例如,安装 miniconda 后,可以这样创建 3.10 环境:

$ conda create --name py310 python=3.10
$ conda activate py310

简单安装方法

执行以下命令即可:

pip install simpletodo

升级:

pip install -U simpletodo

另一种安装方法

另外,还可以使用 pipx 来安装, pipx 会自动为 simple-todo 创建一个虚拟环境,不会污染系统环境,并且使用时不用管理虚拟环境,直接使用 todo 命令即可。推荐大家多了解一下 pipx。

pipx 的介绍及安装方法: https://pypa.github.io/pipx/ 安装 pipx 后执行以下命令即可:

pipx install simpletodo

升级:

pipx upgrade simpletodo

基本使用方法

  • 使用命令 todo 不带任何参数,可显示待办事项列表。这是最常用的功能,因此把最简单命令给了它。
  • 使用命令 todo -a 可显示更多事项(包括已完成事项及未来计划)。
  • 使用命令 todo add ..., 例如 todo add Buy more beer 可把 "Buy more beer" 添加到待办事项列表中。
  • 使用命令 todo done [N], 例如 todo done 3 可把序号 3 的事项标记为“已完成”。后续可以使用 todo redo [N] 把已完成事项恢复为待办事项,或使用 todo delete [N] 彻底删除一个事项,还可以用 todo clean 来一次性删除全部已完成事项。

一个例子(我经常用来随手记录网址,后续抽空整理到别的笔记工具中):

todo add http://example.com

复制到剪贴板

假设上述我随手记录的网址序号为 2, 那么,使用命令 todo copy 2 即可把该网址复制到系统剪贴板。

关于序号

注意,每次执行 add、done、redo、delete 等操作后,都有可能使序号发生变化,因此每次操作前请先使用 todotodo -a 确认序号后再操作。

这个设计虽然会使操作稍有不便,但也符合本工具的理念:让待办列表变长时感到不便从而避免积压,同时尽量减少功能、减少代码量。

修改事项描述

使用命令 todo edit [N] "..." 可修改指定事项的描述,例如:

todo edit 3 "聚会时间是晚上八点"

注意,这里第一个参数是序号,第二个的参数是一个字符串,如果是中文而且没有空格,就不需要引号;如果句子中间有空格(比如英文句子中间通常有空格)就需要使用半角引号(双引号、单引号都可以)。

这与 todo add 命令不同, todo add 后面即使有空格也不需要引号。

因为 todo add 是一个很常用的命令,要让它使用起来更方便;而 todo edit 是一个很不常用的命令,因此与 "使用方便" 相比, "代码少一点" 的优先度更高。

设置周期提醒日程

todo repeat 2 -every month -from today

使用如上所示的命令,可以让序号 2 的事项每个月重复提醒一次,从今天开始。假设今天是 1 月 5 日,那就会在每个月的 5 日自动把该事项添加进待办列表中。

其中,还可以选择 -every week-every year

-from 后面指定具体日期,比如 -from 2022-2-28, 可以使用的简称只有 todaytomorrow。(注意,不可设置一个过去的日期,只能设置今天或未来的日期。)

如何设置提前 N 天提醒?

本工具没有这个功能,但有变通的办法,比如我每月 5 日还信用卡,但我希望每月 3 日就提醒,可以添加一个内容为 “每月5日信用卡还款” 的待办事项,然后设置每月 3 日提醒即可,我自己就是这样用的。

如何设置精确到小时分钟,并且系统自动弹出提醒?

本工具没有这个功能,我的做法是,需要精确到小时分钟,并且需要强提醒的场景,就用手机闹钟。

举个例子,每天早上起床,每个工作日 14:45 看股市,这些我交给手机闹钟去做。而各种缴费(水电、物业、vps等等)的提醒则使用本工具。以及突然冒出的灵感、别人推荐的书影音、发现一个好网站等等也把本工具当作一个缓冲区来使用。

格言/座右铭/目标

(这是一个特殊功能,如果不需要,可以不看使用方法,完全不影响其他功能的正常使用。)

使用该功能,可在 todo list 的上方显示一句格言或座右铭,或者一个目标,或者一句喜欢的话。

使用命令 todo motto --add 添加一句话,例如

todo motto -a "考试必过!比赛必胜!"
  • 如果要添加的句子中间没有空格,就不需要引号;如果句子中间有空格(比如英文句子中间通常有空格)就需要使用半角引号(双引号、单引号都可以)。
  • 如果添加了多句话,默认随机显示其中一句,并且随机不显示。(约五分之一的概率会显示)
  • 使用命令 todo motto --list 可展示全部格言。
  • 使用命令 todo motto --select [N] 可固定显示第 N 个句子。使用 todo motto --random 可恢复随机显示。
  • 使用命令 todo motto -off 可停用该功能。使用 todo motto -on 可启用该功能。
  • 使用命令 todo motto --top [N] 可顶置第 N 个句子。
  • 使用命令 todo motto --edit [N] "..." 可修改第 N 个句子的内容。

我自己使用的格言是:

$ todo motto -l

Mottos [show] [random]
----------------------
1. 在宇宙的大尺度之下
2. 不要陷入生活的琐碎而忘记想要到达的地方
3. 想要战胜时间,唯有比它更慢。
4. 意识到人生的荒谬性即意识到自由
5. 宇宙里有什么不是暂时

其中 1、2、3 是我自己想的句子, 4 是在已被攻击到关站的某优秀网站看来的, 5 是“我的小飞机场”的歌词。

数据备份

  • 使用命令 todo --where 可查看数据库文件的具体位置,那是一个 json 文件,备份该文件即可备份全部数据。
  • 使用命令 todo --set-db-path <new path> 可更改数据库文件的位置,其中 new path 可以是一个不存在的文件(但其父文件夹必须存在)、或一个已存在的文件夹,但不可以是一个已存在的文件;可以是绝对路径,也可以是相对路径。
  • 另外还可以使用 todo --dump 来直接输出上述 json 文件的全部内容。

由于本工具的理念是不积压待办事项,因此该 json 文件通常体积很小,内容很少。

帮助信息

使用命令 todo -htodo add -h 可查看帮助信息,其中 add 可以是其他子命令,每个子命令都有帮助信息。

更新日志

2022-03-24

  • add todo add -g/--gui 打开 GUI 窗口方便输入文字(避免字符转义问题)。
  • add todo delete [N] 删除时有 y/n 确认。

2022-02-28

  • remove 删除了 “中止计划任务(但不删除任务)” 的功能,使程序逻辑清晰了很多。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simpletodo-0.1.9.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

simpletodo-0.1.9-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file simpletodo-0.1.9.tar.gz.

File metadata

  • Download URL: simpletodo-0.1.9.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.27.1

File hashes

Hashes for simpletodo-0.1.9.tar.gz
Algorithm Hash digest
SHA256 46b61caab2a1c96b110d16ba8e1659c336d351733a616d5bc59a73273a0ff963
MD5 a5d95510f21d48a7340df3e1adee9c58
BLAKE2b-256 5c2fccaaac1c3cf551a4016f6a24c7bf9bc616d8a4ad42d63e26764d6c0cef5a

See more details on using hashes here.

File details

Details for the file simpletodo-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: simpletodo-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.27.1

File hashes

Hashes for simpletodo-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 8ea966ba259a8a3111ef8d54b670b17477d60b97dc2f90344b6c97f889360763
MD5 5b58442d2815c107eeb1197dc5ca4833
BLAKE2b-256 6ffdc38928af3f20307a13fef33649e11276109472ac006d0b137c1316963a13

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page