#pomodoro-timer #timer #pomodoro #productivity #cli-command

bin+lib zentime-rs

Rust 编写的番茄和生产力计时器

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命令行工具

Download history 3/week @ 2024-03-12 75/week @ 2024-04-02 10/week @ 2024-04-23 250/week @ 2024-04-30

每月 97 次下载

MIT 许可证

675KB
2.5K SLoC

Build crates.io docs.rs

目录

一个简单的基于终端的番茄/生产力计时器,用 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。要查看可用配置选项的概述,请查看 示例配置

要查看所有可用配置键的概述,请查看 文档。请注意,每个键(如 viewtimers 等)对应于 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 编写一个插件。然而,遗憾的是,目前这并不容易,原因有两个

  1. zellij 插件系统目前正在重建,现在构建“遗留”插件并不合理
  2. 我们的 Zentime 客户端库代码使用了大量异步代码,这些代码尚未编译到 WASI

由于 zellij 也尚未允许通过键盘快捷键配置任意命令,你基本上有三个选项来与 Zentime 交互

  1. 只需手动切换到窗格并使用我们的常规 Zentime 快捷键
  2. 手动运行命令/在当前正在工作的窗格中触发另一个 Zentime 客户端
  3. 推荐:(这基本上是 2. 的修改版 -> 为类似 zentime skipzentime 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