24 个版本 (12 个破坏性版本)
0.15.0 | 2023 年 5 月 5 日 |
---|---|
0.14.3 | 2023 年 3 月 26 日 |
0.13.1 | 2023 年 3 月 9 日 |
0.11.0 | 2022 年 12 月 30 日 |
0.4.3 | 2022 年 11 月 19 日 |
#2568 在 命令行工具
每月 97 次下载
675KB
2.5K SLoC
目录
一个简单的基于终端的番茄/生产力计时器,用 Rust 编写。
功能
- 适用于番茄技术的计时器
- 基于套接字的客户端/服务器架构,多个客户端可以连接到单个计时器服务器
- 服务器与终端无关,作为守护进程运行
- 具有快捷键和最小 TUI 界面的 TUI 界面
- CLI 命令,用于在不连接客户端的情况下与计时器交互(例如,用于集成到 tmux 等工具中)
具有多个客户端的示例 + 在 tmux 左侧状态栏内的显示
安装
注意:计时器目前仅在 Mac 和 Linux 上进行了测试,但可能在 Windows 上也能工作(如果成功尝试,请告诉我)。
Homebrew
brew tap on3iro/zentime
brew install zentime
Cargo
cargo install zentime-rs
Nix
即将推出
配置
配置文件的默认位置为 /home/<user>/.config/zentime/zentime.toml
。要查看可用配置选项的概述,请查看 示例配置。
要查看所有可用配置键的概述,请查看 文档。请注意,每个键(如 view
、timers
等)对应于 TOML 表 的标题,而点击文档中的类型将显示可用的配置字段。
日志
日志正在写入
/tmp/zentime.d.err
- 这捕获了任何恐慌/tmp/zentime.d.out
- 这捕获了错误/警告/信息等日志
默认日志级别为 warn
。您可以通过运行 zentime 并使用 RUST_LOG=<level> zentime
来配置日志级别。以下是 可用日志级别 的概述。
Zellij 集成示例
我发现目前将 Zentime 集成到 Zellij 中的最简单方法就是创建一个自定义布局,并创建一些 shell 别名。
例如,你可以使用以下布局作为“zellij-zentime”布局的基础
layout {
pane split_direction="vertical" size=1 {
pane {
size 30
borderless true
name "zentime"
command "zentime"
}
pane borderless=true {
plugin location="zellij:tab-bar"
}
}
}
你可能需要根据你使用的终端字体调整 Zentime 窗格的大小。
警告:目前尚无方法将 zellij 中的普通窗格与标签同步机制隔离开来。(目前只有插件窗格是隔离的)这意味着在使用标签同步模式时,你可能意外地更改计时器。我已经创建了一个功能请求,以创建隔离的窗格,并计划在维护者同意的情况下进行贡献和创建 PR。
注意:我实际上想为 zellij 编写一个插件。然而,遗憾的是,目前这并不容易,原因有两个
- zellij 插件系统目前正在重建,现在构建“遗留”插件并不合理
- 我们的 Zentime 客户端库代码使用了大量异步代码,这些代码尚未编译到 WASI
由于 zellij 也尚未允许通过键盘快捷键配置任意命令,你基本上有三个选项来与 Zentime 交互
- 只需手动切换到窗格并使用我们的常规 Zentime 快捷键
- 手动运行命令/在当前正在工作的窗格中触发另一个 Zentime 客户端
- 推荐:(这基本上是 2. 的修改版 -> 为类似
zentime skip
、zentime toggle-timer
等命令创建 bash/zsh/别名)
如果你选择第三种方法,我建议在每个命令前加上 -s
(--silent
),因为你可能对在这种情况下 Zentime 提供的次要输出不感兴趣。
Tmux 集成示例
要显示当前计时器状态在 tmux 状态栏中,你可以使用 zentime once
,这将由 tmux 在每次状态栏更新时查询。只需将以下片段添加到你的 .tmux.conf
set -g status-left " #(zentime once) "
如果你想在 tmux 内部添加快捷键(例如,用于切换暂停/播放),你可以添加如下绑定
bind t run-shell "zentime toggle-timer > /dev/null"
bind y run-shell "zentime skip > /dev/null"
作为库使用
Zentime 是这样构建的,应该可以构建自定义客户端等,以附加到服务器。为此,应使用由库 crate提供的模块。有关如何使用这些模块的更多文档/示例将很快提供。
注意:库 crate 的 API 尚未稳定,可能在较小版本更新时发生变化。一旦此 crate 达到 1.0.0 状态,破坏性更改将仅发生在主要版本上。
依赖项
~15–48MB
~765K SLoC