#任务管理 #ical #todo #tui #ics #planner #命令行

bin+lib notnow

基于终端的任务和 TODO 管理软件

23 次发布

0.3.8 2024 年 5 月 27 日
0.3.7 2024 年 1 月 31 日
0.3.5 2023 年 10 月 7 日
0.3.4 2023 年 7 月 6 日
0.1.4 2018 年 11 月 4 日

#84文件系统 类别中

Download history 1/week @ 2024-05-17 140/week @ 2024-05-24 19/week @ 2024-05-31 5/week @ 2024-06-07 2/week @ 2024-06-14

1,360 每月下载量

GPL-3.0 或更高版本

450KB
11K SLoC

pipeline coverage crates.io rustc

notnow

notnow 是一个基于终端的任务/TODO 管理程序。

它的两个主要目标是允许基于标签的任务过滤,以及完全由用户自定义的标签和视图,并支持根据 RFC 5545 使用 CalDAV 协议进行服务器同步的 iCalendar 风格的 TODO 项目,如 RFC 4791 所规定。

状态

notnow 正在积极使用,没有已知的问题。大多数期望的功能都已存在,但并非所有功能都已集成到用户界面中

  • 基于标签的过滤已实现且功能完全,但并非所有方面都可通过用户界面访问
  • 程序将任务存储为 iCalendar TODO 项目
    • 它松散地遵循 Vdir 存储格式,可以通过 vdirsyncer 在不同的系统之间同步任务
    • 考虑实现不依赖 Python 的 "原生" CalDAV 支持,但目前还没有立即的计划

配置

程序将配置存储在 $XDG_CONFIG_HOME/notnow/ (通常默认为 ~/.config/notnow/) 之下。配置有两方面

  • notnow.json 是一个 JSON 文件,用于存储基本程序状态,例如颜色和要显示的视图("选项卡")
    • 当不存在时,将使用默认值
    • 一旦用户在程序中保存数据,此文件将自动创建并包含默认内容(见下文)
  • tasks/ 是一个包含单个任务文件的文件夹
    • 文件 00000000-0000-0000-0000-000000000000 是特殊的,包含标签信息等任务元数据
    • 程序会在添加任务时创建这些文件

注意:如果您是版本 0.2.*notnow 的用户,并且想要将管理任务和配置迁移到版本 0.3,可以参考 var/config-conversion-v02-to-v03.sh 脚本。

vdirsyncer

如果您想要同步任务与您的 CalDAV 启用的日历,或者在不同系统上运行 notnow 之间共享一组任务,推荐使用 vdirsyncer

以下是一个配置模板,它指定了相关设置,以及一些有意见的设置(通常存储在 $XDG_CONFIG_HOME/vdirsyncer/config

[general]
status_path = "~/<some-path>/vdirsyncer-state/status/"

[pair todos]
a = "todos_remote"
b = "todos_local"
collections = ["from a", "from b"]
conflict_resolution = ["command", "nvim", "-d"]

[storage todos_remote]
type = "caldav"
item_types = ["VTODO"]
url = "https://<url-to-calendar>"
username = "<username>"
password.fetch = ["command", "sh", "-c", "pass <calendar-provider-entry> | head -n1"]
read_only = false

[storage todos_local]
type = "filesystem"
path = "~/<some-path>/vdirsyncer-state/todos/"
fileext = ""
encoding = "utf-8"

请参阅其 文档 了解更多细节。

配置就绪后,一旦您执行了 vsyncdir discover,在 ~/<some-path>/vdirsyncer-state/todos/ 下的符号链接,将自动创建的子文件夹替换为 $XDG_CONFIG_HOME/notnow/tasks/ 的引用。接下来,使用 vsyncdir sync 同步任务。

请注意,任务同步应在运行 notnow 之前或之后进行,以防止与程序同时发生的更改发生冲突。

用法

由于是终端基础,notnow 通过其 UI 进行控制,而不是通过命令行参数。该程序旨在在可能的情况下反映 Vi 风格的绑定。键绑定如下

键(s) 功能
a 添加新任务
e 编辑选中任务的摘要
t 编辑选中任务的标签
d 删除选中任务
y 复制选中任务
p 粘贴之前复制的任务
j 向下移动任务选择
k 向上移动任务选择
J 向下移动选中任务
K 向上移动选中任务
g 选择当前标签上的第一个任务
G 选择当前标签上的最后一个任务
Space 切换选中任务的完成状态
h 选择左侧标签
l 选择右侧标签
H 向左移动标签
L 向右移动标签
1-9 选择标签 #x
0 选择最后一个标签
` 选择上一个标签
/ 开始向前搜索任务
? 开始向后搜索任务
n 继续向前搜索任务
N 继续向后搜索任务
* 开始在其他视图中向前搜索当前
选中的任务
Return 接受文本输入 / 编辑任务细节
Esc 取消文本输入
w 将任务保存到文件
q 退出程序

此外,当输入文本时(例如,在添加或编辑任务时),退格键、删除键、home键、end键以及左右光标键的功能与它们最常见的功能类似。

程序支持使用readline功能标志构建时的libreadline风格的任务输入。也就是说,当实际输入文本(而不是仅按下一个键,例如选择不同的任务)时,将遵守libreadline绑定。

示例

如果您只是想尝试使用一些程序创建的任务来运行程序,可以使用现有的示例

$ cargo run --example=with-test-data --features=test

请注意,如果保存,任务将存储在临时目录中,不会覆盖上面提到的特定于用户的配置。

依赖项

~7-20MB
~206K SLoC