#task #todo #manager #list #save-file #key #up

bin+lib yat

一个简单的终端待办事项列表管理器

1 个不稳定版本

0.1.0 2019 年 9 月 4 日

#2893命令行工具

自定义许可证

60KB
1.5K SLoC

yat -- 另一个待办事项列表

使用 Rust 编写的简单终端待办事项列表管理器。

目录

  1. 安装
  2. 用法
  3. 自定义
  4. 待办事项
  5. 许可证

免责声明:这是一个正在进行中的项目!当它达到可用的状态时,希望它将发布在 crates.io 上。

安装

需要安装 Rust。建议构建配置为 release

$ curl https://sh.rustup.rs -sSf | sh         # install Rust
$ git clone https://github.com/drvog/yat-rs   # clone repository
$ cd yat-rs                                   # change into source directory
$ cargo run --release                         # compile and run

用法

可以从目录的根目录使用 cargo 运行。终端用户界面 (TUI) 是围绕出色的 termion crate 构建的。日志由巧妙的 fernlog crate 提供;这将打印到 stderr,但它们将在 TUI 后面被忽略,因此可能需要将它们重定向到文件

$ cargo run --release 2>err.log

一旦运行,yat 将使用以下默认键绑定

命令
a 添加新任务
e 编辑选中任务
d 删除选中任务
u 将选中任务上移
n 将选中任务下移
w 将待办事项列表保存到文件
q 退出
上移 向上移动选择
下移 向下移动选择
Enter 聚焦于选中的子任务
b 将焦点返回到父任务
Space 标记任务为完成
> 增加任务优先级
< 降低任务优先级

用户界面显示 4 个面板:父任务、任务、子任务和选择。任务面板是主面板,允许您在任务之间导航。

Screenshot

面板上任务布局如下

> [ ] todo
│  │   │         
│  │   └─ this is the content of the task (colour indicates priority).
│  │
│  └─ this shows task completion: [X] = completed, [ ] = not completed.
│
└─ this indicates that this task is currently selected.

通常,yat 将保存到 $HOME/.todo/save.txt,它将在第一次运行时创建。您可以通过将文件名作为命令行上的第一个参数传递来指定一个自定义文件以加载(或创建)。保存文件的格式如下

[ ] ( ) todo
 │   │   │         
 │   │   └─ this is the content of the task.
 │   │
 │   └─ this shows task priority: ( ) = no priority, (C) = low priority,(B) = medium priority, (A) = high priority.
 │
 └─ this shows task completion: [X] = completed, [ ] = not completed. 

自定义

您可以使用配置文件在运行时调整 yat 的外观和键绑定,因为默认情况下它仅使用终端 [模拟器] 的基本 ANSI 颜色。 yat 将在 ~/.todo/config.toml 中查找配置,允许您更改面板边框和颜色方案。 config.toml 的格式为

# ~/.todo/config.toml
[borders]                   # Panel customisation
hline = ""                 # horizontal line
vline = ""                 # vertical line
ulcorner = ""              # upper left corner
urcorner = ""              # upper right corner
llcorner = ""              # lower left corner
lrcorner = ""              # lower right corner

[colours]                   # Colourscheme customisation
colour0 = [88, 110, 117]    # black
colour1 = [220, 50, 47]     # red
colour2 = [133, 153, 0]     # green 
colour3 = [181, 137, 0]     # yellow
colour4 = [38, 139, 210]    # blue
colour5 = [211, 54, 130]    # magenta
colour6 = [42, 161, 152]    # cyan
colour7 = [7, 54, 66]       # white
colourfg = [131, 148, 150]  # foreground
colourbg = [0, 43, 54]      # background

[keys]                      # Keybinding customisation 
quit = 'q'                  # quit
back = 'h'                  # return focus to parent
save = 'w'                  # write list to save file
add = 'a'                   # add new task
edit = 'e'                  # edit selected task
delete = 'd'                # delete selected task
task_up = 'u'               # move selected task up
task_down = 'n'             # move selected task down
up = 'k'                    # move selection up
down = 'j'                  # move selection down
focus = 'l'                 # focus on selected sub-task
complete = ' '              # mark task completed
increase = '>'              # increase task priority
decrease = '<'              # decrease task priority

您可以根据需要指定任意数量的这些配置(使用适当的toml头),而yat将使用默认配置来处理其余部分。代码中的borders必须是有效的Unicode字符,而colours以(r, g, b)的形式指定,其中r/g/b是u8整数,即值在区间[0, 256)内。需要注意的是,这仅在您的终端支持24位颜色(“真彩色”,见此处)时才有效,并且在兼容的终端模拟器上未进行测试。快捷键可以更改为其他字符(注意:使用'\n'代表回车键)。一些示例在configs目录中提供。

†使用r, g, b < 6可能有效,但这同样未进行测试。

待办事项

  1. 加载:虽然实现了从存档文件加载,但应使解析功能更健壮。
  2. 清理:一般代码清理和重构,包括更详细的注释。
  3. Windows:目前yat基于termion构建,该库在类UNIX终端上工作,因此缺少Windows CMD支持。

欢迎贡献!请提交问题或拉取请求。

许可证

MIT许可证

依赖项

约2-3MB
约54K SLoC