A simple and efficient CLI tool for tracking time spent on tasks and projects.
- Create, update, and delete tasks.
- Assign tasks to projects.
- Track task statuses:
new,ongoing,paused,ended. - Start, pause, and end tasks.
- Automatically log task sessions when pausing or ending a task.
- List tasks with filtering options.
- Manage projects (create, update, delete).
Ensure you have Go installed, then run:
go install github.com/anas639/blx@latestOr clone and build manually:
git clone https://github.com/anas639/blx.git
cd blx
go build
go installblx new "Task Name"blx lsFilters:
--all– List all tasks.
blx start <task_id>blx pause <task_id>blx end <task_id>blx update <task_id> --name "New Task Name"blx update <task_id> --project <project_id>blx delete <task_id>The time command displays the elapsed time of an ongoing task.
If you don't you provide a task_id, the time command will fetch the last active task
blx time <task_id>The watch command listens for incoming task events and prints them.
When you start a task the watch command displays the elapsed time. If you pause or stop a task, it prints
the current status. If there's an older ongoing task, watch automatically switches to tracking that task.
blx watch The
watchcommand is different from thetimecommand.timewill only print elapsed time of a single task and won't listen on events
find searches for matches in the task name or project name.
Consider The following tasks:
$ blx ls -a
+---+-----------------------------------------------+--------+----------+---------+
| # | NAME | STATUS | DURATION | PROJECT |
+---+-----------------------------------------------+--------+----------+---------+
| 1 | this is an example | new | 0s | N/A |
| 2 | more examples | new | 0s | N/A |
| 3 | this won't be selected | paused | 47s | N/A |
| 4 | this will be selected because of project name | new | 0s | example |
+---+-----------------------------------------------+--------+----------+---------+
We will find tasks that contain the keyword "exam" in the task name or project name.
$ blx find "exam"
+---+-----------------------------------------------+--------+----------+---------+
| # | NAME | STATUS | DURATION | PROJECT |
+---+-----------------------------------------------+--------+----------+---------+
| 1 | this is an example | new | 0s | N/A |
| 2 | more examples | new | 0s | N/A |
| 4 | this will be selected because of project name | new | 0s | example |
+---+-----------------------------------------------+--------+----------+---------+blx project new "Project Name"blx project lsblx project update <project_id> --name "New Project Name"blx project delete <project_id>project find searches for matches in the project name.
Consider The following projects:
$ blx project ls
+---+---------+
| # | NAME |
+---+---------+
| 1 | example |
| 2 | proj 1 |
| 3 | proj 2 |
| 4 | proj 3 |
+---+---------+We will find projects that contain the keyword "pro" in the project name.
$ blx project find "pro"
+---+--------+
| # | NAME |
+---+--------+
| 2 | proj 1 |
| 3 | proj 2 |
| 4 | proj 3 |
+---+--------+-
Create a project:
blx project new "Web Development" -
Create a task and assign it to the project:
blx new "Implement login system" blx update <task_id> --project <project_id>
-
Start tracking time:
blx start <task_id>
-
Pause or end the task:
blx pause <task_id> blx end <task_id>
-
List tasks:
blx ls
By default ls will list ongoing tasks only. If you wish to list all the tasks
use --all or -a.
blx ls -aYou can also filter by statuses (new, ongoing, paused, ended) using --status or -s
blx ls -s new # list new tasks only
blx ls -s ongoing,paused # list ongoing and paused tasksTo integrate blx into your polybar configuration:
Your modules.ini file is probably located at ~/.config/polybar/
[module/blx]
type = custom/script
exec = ~/.config/polybar/scripts/blx.sh
label-foreground = ${colors.white}
label-background = ${colors.base}
label= %output%
tail=truemkdir ~/.config/polybar/scripts
touch ~/.config/polybar/scripts/blx.sh
chmod +x ~/.config/polybar/scripts/blx.shThen call blx watch from your custom script
#!/bin/zsh
BLX="$HOME/go/bin/blx"
$BLX watch
Your config.ini is probably located at ~/.config/polybar/
modules-right = blxblx will now appear on the right side of your bar
blx start <task_id>blx pause <task_id>MIT License
Feel free to submit issues and pull requests!


