| Crates.io | work-tuimer |
| lib.rs | work-tuimer |
| version | 0.3.6 |
| created_at | 2025-11-13 12:56:23.878436+00 |
| updated_at | 2026-01-07 21:31:57.876616+00 |
| description | Simple, keyboard-driven TUI for time-tracking that allows you to quickly add time blocks and automatically group time if same task was done in different sessions |
| homepage | https://github.com/Kamyil/work-tuimer |
| repository | https://github.com/Kamyil/work-tuimer |
| max_upload_size | |
| id | 1931089 |
| size | 347,199 |
Live demo: https://x.com/KsenKamil/status/1985423210859368716
Simple, keyboard-driven TUI for time-tracking that allows you to quickly add time blocks and automatically group time if same task was done in different sessions Built with Rust and ratatui for efficient time management.
~/.local/share/work-tuimer/)LINK: https://crates.io/crates/work-tuimer
cargo install work-tuimer
brew install work-tuimer
LINK: https://aur.archlinux.org/packages/work-tuimer
# Using yay
yay -S work-tuimer
# Or manually
git clone https://aur.archlinux.org/work-tuimer.git
cd work-tuimer
makepkg -si
pkg install work-tuimer
Download the latest pre-built binary for your platform from GitHub Releases:
work-tuimer-linux-x86_64work-tuimer-macos-x86_64work-tuimer-macos-aarch64work-tuimer-windows-x86_64.exeAfter downloading, make the binary executable and run it:
# Linux / macOS
chmod +x work-tuimer-linux-x86_64
./work-tuimer-linux-x86_64
# Windows
work-tuimer-windows-x86_64.exe
If you prefer to build from source or don't see a binary for your platform:
cargo build --release
./target/release/work-tuimer
| Key | Action |
|---|---|
↑/k |
Move selection up |
↓/j |
Move selection down |
←/h |
Move field left (Name → Start → End) |
→/l |
Move field right (Name → Start → End) |
[ |
Navigate to previous day (auto-saves) |
] |
Navigate to next day (auto-saves) |
C |
Open calendar view for date navigation |
Enter/i |
Enter edit mode on selected field |
c |
Change task name (opens picker to select/filter/create) |
n |
Add new work record |
b |
Add break (uses selected record's end time as start) |
d |
Delete selected record |
v |
Enter visual mode (multi-select) |
S |
Start/Stop timer for selected record |
P |
Pause/Resume active timer |
t |
Set current time on selected field |
T |
Open ticket in browser (only visible if config exists) |
L |
Open worklog URL in browser (only visible if config exists) |
u |
Undo last change |
r |
Redo undone change |
s |
Save to file |
q |
Quit (auto-saves) |
| Key | Action |
|---|---|
Tab |
Next field (Name → Start → End → Description → Name) |
Enter |
Save changes and exit edit mode |
Esc |
Cancel and exit edit mode |
Backspace |
Delete character |
| Any char | Insert character |
c in Browse mode)Press c on the Name field to open the task picker:
| Key | Action |
|---|---|
| Any char | Type to filter tasks or create new name (including h/j/k/l) |
↑ |
Move selection up in filtered list |
↓ |
Move selection down in filtered list |
Enter |
Select highlighted task or create typed name |
Backspace |
Delete character from filter |
Esc |
Cancel and return to browse mode |
| Key | Action |
|---|---|
↑/k |
Extend selection up |
↓/j |
Extend selection down |
d |
Delete selected records |
Esc |
Exit visual mode |
| Key | Action |
|---|---|
↑/k |
Move selection up (1 week) |
↓/j |
Move selection down (1 week) |
←/h |
Move selection left (1 day) |
→/l |
Move selection right (1 day) |
[/</, |
Previous month |
]/>/. |
Next month |
Enter |
Jump to selected date |
Esc |
Close calendar view |
WorkTimer includes a built-in timer system for real-time time tracking. Sessions allow you to track time as you work, with automatic updates, pause/resume support, and seamless CLI/TUI integration.
In the TUI:
S to start a sessionP to pause/resume, S to stopFrom the CLI:
# Start a session
work-tuimer session start "My Task"
# Check status
work-tuimer session status
# Pause/resume
work-tuimer session pause
work-tuimer session resume
# Stop and save
work-tuimer session stop
For more info, check Timer Sessions Guide
WorkTimer supports automatic ticket detection from task names and browser integration for any issue tracker (JIRA, Linear, GitHub Issues, GitLab, Azure DevOps, etc.).
"PROJ-123: Fix login bug" or "#456: Update docs"🎫 Task Name [PROJ-123]T to open the ticket or L to open the worklogCreate a config file at ~/.config/work-tuimer/config.toml:
[integrations]
default_tracker = "my-jira"
[integrations.trackers.my-jira]
enabled = true
base_url = "https://your-company.atlassian.net"
ticket_patterns = ["^PROJ-\\d+$", "^WORK-\\d+$"]
browse_url = "{base_url}/browse/{ticket}"
worklog_url = "{base_url}/browse/{ticket}?focusedWorklogId=-1"
For more info, check Issue Tracker Integration Guide
WorkTimer supports customizable color themes to personalize your UI experience. The application includes 8 pre-defined themes and supports custom theme definitions.
[theme]
active = "kanagawa" # Options: default, kanagawa, catppuccin, gruvbox, monokai, dracula, everforest, terminal
Available Themes: default, kanagawa, catppuccin, gruvbox, monokai, dracula, everforest, terminal
For more info, check Theme Configuration Guide
Data is stored per day in JSON format:
{
"date": "2025-10-31",
"work_records": [
{
"id": 1,
"name": "Task name",
"start": "09:00",
"end": "12:00",
"total_minutes": 180,
"description": "Optional description"
}
]
}
Storage locations (checked in order):
~/.local/share/work-tuimer/YYYY-MM-DD.json./data/YYYY-MM-DD.json (fallback)src/
├── models/ # Core data models
│ ├── time_point.rs - Time representation (HH:MM format)
│ ├── work_record.rs - Individual work entry
│ └── day_data.rs - Daily collection of records
├── storage/ # File I/O
│ └── storage.rs - JSON persistence
├── ui/ # Terminal interface
│ ├── app_state.rs - State management & event handlers
│ └── render.rs - UI rendering with ratatui
└── main.rs # Entry point & event loop
cargo check
cargo build
cargo test
cargo clippy
This project uses GitHub Actions to automatically build and publish pre-built binaries. To create a new release:
just release v0.2.0
This will:
You can track the build progress in the Actions tab.
MIT