Skip to content

MciG-ggg/gomato

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go番茄钟计时器

一个功能丰富的命令行番茄钟计时器,使用 Go 语言编写。

目录结构

cmd/
  gomato/
    main.go         # 程序入口,负责依赖注入和启动
    taskList.go     # TUI界面相关组件
pkg/
  app/              # 应用主逻辑,命令处理
  menu/             # 菜单与交互逻辑
  timer/            # 计时器核心,任务存储与计时逻辑
  task/             # 任务管理(增删查改、持久化)
  setting/          # 应用设置管理
  config/           # 配置结构体与默认值
  common/           # 通用工具(如终端颜色)

功能特点

  • 可自定义工作和休息时间
  • 多种计时器显示方式(普通显示、ANSI字符艺术显示)
  • 支持在设置界面选择时间显示方式(普通/ANSI艺术)
  • 设置菜单功能(时间显示格式、查看/重置设置)
  • 任务管理(添加、完成、删除、清空、最近任务)
  • 统计功能(工作/休息会话数、总工作时长、任务完成率)
  • 实时显示剩余时间
  • 支持优雅退出(Ctrl+C)
  • 任务数据自动保存和加载
  • 跨平台支持(根据操作系统自动选择清屏方式)
  • Windows/Linux 桌面通知支持(Windows 需安装 go-toast 依赖)
  • 新增:TUI界面 - 现代化的终端用户界面

时间显示方式选择

你可以在设置界面的 Timer 标签页中选择计时器的时间显示方式:

  • ANSI艺术显示(默认):
    • 使用ASCII字符艺术显示时间,视觉效果更丰富
    • 示例:
       ____     ____           ___      ___  
      |___ \   | ___|    _    / _ \    / _ \ 
        __) |  |___ \   (_)  | | | |  | | | |
       / __/    ___) |   _   | |_| |  | |_| |
      |_____|  |____/   (_)   \___/    \___/ 
      
  • 普通数字显示
    • 使用标准数字格式显示时间
    • 示例:25:00

如何切换显示方式?

  1. 启动程序:go run ./cmd/gomato
  2. s 键进入设置界面
  3. 在 Timer 标签页中,使用 Tab 键导航到"时间显示方式"选项
  4. 12 选择,或用左右箭头切换
  5. Enter 保存设置

安装与运行

  1. 确保已安装 Go 1.21 或更高版本
  2. 克隆此仓库
  3. 安装 Windows 通知依赖(仅 Windows 用户,Linux 用户可跳过):
# Windows 下支持原生通知弹窗
# 需安装 go-toast 依赖
# 仅在 Windows 下执行

go get github.com/go-toast/toast
  1. 运行程序:

方式一:TUI界面运行(推荐)

# 运行现代化的TUI界面
go run ./cmd/gomato

方式二:传统命令行界面

# 运行传统命令行界面
go run cmd/gomato/main.go

方式三:编译后运行

# 编译
go build -o gomato ./cmd/gomato

# 运行
./gomato

界面说明

TUI界面(新)

  • 现代化的终端用户界面
  • 使用方向键导航
  • 支持列表操作和快捷键
  • 更直观的交互体验
  • 设置界面支持时间显示方式选择

传统命令行界面

  • 经典的命令行交互
  • 通过菜单选择操作
  • 支持命令输入和快捷键

菜单操作

  • 添加新任务
  • 查看所有任务
  • 查看最近任务
  • 设置工作/休息时间
  • 设置时间显示方式(普通/ANSI艺术)
  • 退出程序

交互命令(计时界面下)

  • help - 显示帮助信息
  • stats - 显示统计信息
  • tasks - 显示任务列表
  • add <描述> - 添加新任务
  • complete <ID> - 完成任务
  • work <时间> - 设置工作时间(如:25m)
  • break <时间> - 设置休息时间(如:5m)
  • name <名称> - 设置当前任务名称
  • pause - 暂停计时
  • resume - 恢复计时
  • start - 手动开始计时(非自动模式)
  • quit - 退出计时

快捷键

  • g - 开始计时
  • p - 暂停
  • r - 恢复
  • s - 统计
  • t - 任务
  • h - 帮助
  • q - 退出

时间格式示例

  • 25m - 25分钟
  • 1h - 1小时
  • 30s - 30秒

计时器显示

支持两种计时器显示方式:

  1. 普通显示 - 传统的数字时间显示
  2. ANSI字符艺术显示 - 使用ANSI字符艺术效果显示时间

可通过设置菜单切换显示方式。

设置功能

  • 时间显示格式 - 选择计时器的显示方式
  • 查看当前设置 - 显示所有当前配置
  • 重置为默认设置 - 恢复所有设置为默认值

统计信息

  • 工作会话数
  • 休息会话数
  • 总工作时间
  • 任务完成率

任务管理

  • 可添加多个任务
  • 标记任务完成状态
  • 查看任务列表和状态
  • 任务数据自动保存到 ~/.gomato/tasks.json
  • 程序启动时自动加载已保存的任务

数据存储

  • 任务数据保存在用户主目录下的 .gomato 文件夹中
  • 任务数据文件:~/.gomato/tasks.json
  • 单个任务配置:~/.gomato/task.json
  • 数据会在以下情况下自动保存:
    • 添加新任务时
    • 完成任务时
    • 修改任务状态时

开发与测试

  • 代码遵循 cmd/pkg/ 的标准 Go 项目布局
  • 运行全部测试:
go test ./...

最近更新

  • 新增TUI界面:现代化的终端用户界面,使用Bubble Tea框架
  • 项目结构重构:采用 cmdpkg 标准布局,提升可维护性。
  • 新增ANSI字符艺术计时器显示功能
  • 设置界面支持时间显示方式选择
  • ⚙️ 添加设置菜单,支持时间显示格式配置
  • 🔧 重构配置管理,优化代码结构
  • 🐛 修复暂停时计时器未真正暂停的bug
  • 🌍 根据运行时检测操作系统进行清屏操作

常见问题

  • 仅支持类Unix终端(如Linux/macOS)
  • 确保终端支持ANSI转义序列以获得最佳显示效果

贡献

欢迎提交PR或issue!


感谢使用本番茄钟计时器!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages