Skip to content

naspeh/timefor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cac63e9 · Apr 25, 2024

History

63 Commits
Apr 25, 2024
Oct 7, 2020
Sep 4, 2020
Oct 5, 2020
Dec 18, 2022
Apr 25, 2024
Apr 25, 2024
Apr 25, 2024
Apr 25, 2024
Apr 25, 2024
Apr 22, 2024

Repository files navigation

Timefor

It's a command-line time tracker with rofi integration.

It helps me focus on the right things, and it also reminds me to take a break.

It's a simplified version of a similar GTK based tool tider.

Installation

go install github.com/naspeh/timefor@latest

Or just download the binary.

How I use it

I run in the background

timefor daemon

I have key-bindings for

# specify an activity name using rofi
timefor select

# finish current activity
timefor finish

# show today's report using notify-send
timefor report --notify

# reject current activity
timefor reject

# rename current activity
timefor select --update

I integrate it into my status bar using

[timefor]
label= 
command=timefor show -t '{"full_text":"{{.FormatLabel}}", "color":"{{if .Active}}#268bd2{{else}}#586e75{{end}}"}'
format=json
interval=1

I always see my current activity on the screen. If timefor activity is work-related, then I should work. If I want to surf the internet for fun, then I should switch timefor activity to @surf or similar.

Daemon will send notification using notify-send after 80 minutes by default, when I see such notification I plan to move away from my laptop in the near time.

Reports

There is a report command, but it only displays today's activities like

timefor report
# Active for 00:07
#
# @go    00:07
# @test  00:05
# -----  -----
# Total  00:12

Today's report can be shown using notify-send, useful for a key-binding

timefor report --notify

Other reports I can get from SQLite directly

# execute sqlite3 with db file
timefor db

There is one main table log and a few useful views.

I can use predefined SQLite views for simple queries

-- today's activities grouped by name
SELECT * FROM log_daily WHERE date = date('now');

-- yesterday's activities grouped by name
SELECT * FROM log_daily WHERE date = date('now', '-1 day');