Command-line time tracker to help focus.
tt-focus 有两大特点:
比如吃饭、睡觉、做运动、娱乐等的时间记录 不适合 使用本软件。
而写作、学习、编程等,就 适合 使用本软件。
本软件使用了 Python 3.10 的新特性,如果你的系统中未安装 Python 3.10, Windows 用户可直接到 Python 官网 下载最新版安装即可。Linux, MacOS 推荐使用 pyenv 或 miniconda 来安装最新版本的 Python 。
在有了 Python 3.10 之后,安装本软件非常简单,只要 pip install tt-focus
即可。
tt set -lang cn
tt set -lang en
在第一次使用之前,必须至少添加一种任务类型。例如:
tt add coding
(添加任务类型 coding)tt add reading -alias 读书
(添加任务类型 reading 及其别名)tt list -t
(查看已添加的任务类型)任务类型的名称及其别名可以随时修改,方法详见 readme.md
$ tt start coding
事件 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**
total 14:42:46 -> 16:50:45 [0:41:34]
-------------------------------------
Split 14:42:46 -> 15:24:20 [0:41:34]
Pause [0:44:37]
Split 16:08:57 .. 16:50:45 [0:41:48]
tt stop
结束一次计时。tt list
(查看最近发生的事件)tt list -v
(查看最近事件,并且显示更详细的信息)tt list <event id>
(查看指定事件的详细信息)就我自己的情况,实际使用后最大的感受是,有效地意识到自己在干什么(在工作、还是在摸鱼?),这点对集中精神、提高生产力很有帮助。
本软件功能简单,因此源代码也简单,其中看起来行数较多,但大部分是中英双语提示内容,真正的功能代码不多,而且结构清晰,懂 Python 的人可轻松修改或添加自己想要的功能。
这次在技术上做了一个尝试,采用了一个模仿 Rust 的 result[ok, err], 它的优点是:
unwrap
, 把有可能发生的 Exception 抛给上层。is_err()
判断有无异常,也可以用 err()
获取错误内容,还可以用 Python 3.10 的 match...case 模式匹配来区分有异常与无异常两种情况。同时,在使用 Go 的过程中学习到了区分 Exception 与 Error 的好处。
基于以上两种思想,我这次很多函数的返回值都类以这样 Result[User, MultiText]
, 其中 MultiText 只是一个简单的 dataclass:
from dataclasses import dataclass
@dataclass
class MultiText:
cn: str
en: str
这样,只需要对返回值做一个简单的判断,就能获得 User, 或者获得一个双语的错误信息。
1
skys215 2022-05-27 10:26:39 +08:00
我也有过做类似软件的想法
重点在于离开或停止的时候会不会想到去记录 其实楼主用 python 做的话,可以用 pyqt 做 gui 版的。就适合非程序员去使用。 |