Package: tt-focus
tt-focustt-focus: Command-linetimetracker to helpfocus专门为了帮助集中注意力而设计的命令行时间记录器tt-focus 有两大特点：是一个纯命令行程序主要用途不是记录时间使用情况，而是帮助集中注意力比如吃饭、睡觉、做运动、娱乐等的时间记录不适合使用本软件。而写作、学习、编程等，就适合使用本软件。安装本软件使用了 Python 3.10 的新特性，如果你的系统中未安装 Python 3.10, Windows 用户可直接到Python官网下载最新版安装即可。 Linux, MacOS 推荐使用pyenv或miniconda来安装最新版本的 Python。例如，安装 miniconda 后，可以这样创建 3.10 环境：$condacreate--namepy310python=3.10.4
$condaactivatepy310在有了 Python 3.10 之后，安装本软件非常简单，只要pip install tt-focus即可。帮助tt -h(查看帮助)tt list -h(每个子命令也有帮助)设置语言程序界面 (包括帮助内容) 默认是英语，但可设置为中文:tt set -lang cn也可随时设置为英文:tt set -lang en使用方法添加任务类型在第一次使用之前，必须至少添加一种任务类型。例如：tt add coding(添加任务类型 coding)tt add reading -alias 读书(添加任务类型 reading 及其别名)tt list -t(查看已添加的任务类型)任务类型的名称及其别名可以随时修改，方法详见下面 "高级用法" 部分。开始工作 (启动一个事件)$ttstartcoding

事件id:rcdrdg,任务:coding(编程),开始于17:22:28暂停 (休息/摸鱼)当你需要稍稍休息一下，可使用该命令tt pause或tt -p注意，如果一个计时小节的时长太短，会被自动忽略，详见下面 "时长的上下限" 部分。恢复 (回到工作)从休息中回到工作时，可使用该命令tt resume或tt -r注意，如果一个计时小节的时长太短，会被自动忽略，详见下面 "时长的上下限" 部分。查看状态可随时使用命令tt status或tt -s查看当前事件的用时情况，例如：$tt-s

Task|coding(编程)Event|(id:rcbpba)2022-05-23**running**

total14:42:46->16:50:45[0:41:34]-------------------------------------
Split14:42:46->15:24:20[0:41:34]Pause[0:44:37]Split16:08:57..16:50:45[0:41:48]结束工作结束，或者需要长时间休息时，使用命令tt stop结束一次计时。结束后，会显示 "生产效率/集中力"(productivity), 意思是从该事件的开始到结束这段时间内，工作时间所占的比例。注意，如果一个计时小节的时长太短，会被自动忽略，详见下面 "时长的上下限" 部分。事件列表tt list(查看最近发生的事件)tt list -v(查看最近事件，并且显示更详细的信息)tt list <event id>(查看指定事件的详细信息)数据备份可使用命令tt -i查看数据库文件 (sqlite) 的位置。
也可使用tt set -db <path/to/folder>更改数据库文件夹的位置。
只要备份数据库文件 (tt-focus.db) 就可以备份本软件的全部数据。高级用法在前面的 "使用方法" 部分，列出了最常用的命令。但有时需要更多功能，使本软件变得更方便好用。修改任务类型tt set -t coding -alias 编程(可以随时添加或修改别名)tt set -t reading -name read(也可以修改任务名称)开始工作（但不指定任务类型）使用tt start命令时，如果不指定任务类型，可自动采用上一次的任务类型。工作分段有的工作有明显的分段，比如 "需要集中精神做 3 道题"，并且做完一题不休息，马上就做第二题，此时可以使用tt split命令分割工作时间，以便了解每一道题分别用了多长时间。注意，默认每一次 split 不可小于 5 分钟，该时间可以修改，例如：$ttset--split-min3工作时长下限:3分钟事件列表tt list -day 2022-05-01(指定某一天的全部事件)tt list -v -day 2022-05-01(指定某一天的全部事件，更详细)tt list -month 2022-05(指定某一个月的全部事件)tt list -v -month 2022-05(指定某一个月的全部事件，更详细)tt list -year 2022(指定某一年的每个月事件数量)合并事件 (merge)相同的任务类型，并且相邻的事件可以合并。例如：tt merge rc8j1f rc8dd4注意，合并事件会导致 productivity(生产效率/集中力) 变低，并且一旦合并就不能分割。可使用-p/--preview预览合并结果，例如tt merge -p rc8j1f rc8dd4添加或修改事件备注每个事件，可以添加备注，例如：tt set -e rcftx1 -notes 某某项目添加XX功能如果不指定事件 ID, 则默认添加/修改最新一个事件的备注，例如：tt set -notes 修复某个bug添加备注后，可使用命令tt list rcftx1或tt list -v查看备注。删除备注把备注修改为一个空格，相当于删除备注。例如：tt set -notes " "注意要用半角引号包围空格。时长的上下限如果一个工作小节，或一次休息时间小于下限，或超过上限，会被自动忽略。
使用命令tt -i/--info可查看上下限，例如：$tt-i语言:cn数据库文件:C:\Users\root\AppData\tt-focus\tt-focus.db工作时长下限:5分钟休息时长下限:5分钟休息时长上限:60分钟上述时长的上下限可以自定义，例如：tt set --split-min 8(把工作时长下限改为 8 分钟)tt set --pause-min 3(把休息时长下限改为 3 分钟)tt set --pause-min 3(把休息时长下限改为 3 分钟)删除事件或任务tt delete -e <event id>(删除指定的事件)tt delete -t <task name>(删除指定任务类型，注意，会同时删除关联的事件)修改时长根据我自己的使用经验，有时会忘记执行 'tt stop', 因此做了这个功能。举例说明：Task | reading (阅读)
Event| (id:rbzhec) 2022-05-17 **stopped**

total  00:20:36 -> 08:59:02 [10:35:04]
-------------------------------------
Split  00:20:36 -> 08:59:02 [10:35:04]在上面的例子了，我在深夜开始了一个阅读事件，但忘了停止，第二天早上 9 点才发现，执行tt stop后看到以上信息，阅读时长超过 10 个小时，这是不准确的。对于这种情况，就可以使用tt set -e <event id> --last-work <n>命令来修改，其中<n>是一个数字，单位是分钟。$ttset--last-work65Task|reading(阅读)Event|(id:rbzhec)2022-05-17**stopped**

total00:20:36->01:25:36[1:05:00]-------------------------------------
Split00:20:36->01:25:36[1:05:00]可见，工作时长已改为一小时零五分钟。其中，省略了-e <event id>则默认修改刚刚结束的事件。结语就我自己的情况，实际使用后最大的感受是，有效地意识到自己在干什么（在工作、还是在摸鱼？），这点对集中精神、提高生产力很有帮助。本软件功能简单，因此源代码也简单，其中看起来行数较多，但大部分是中英双语提示内容，真正的功能代码不多，而且结构清晰，懂 Python 的人可轻松修改或添加自己想要的功能。更新记录2022-05-29change: 合并事件不再要求是同一天的事件，只要是相邻的事件即可。