I’m trying to keep a log of the time that I spend doing specific tasks throughout the day. Currently, the way that I am doing this is by constantly running a stopwatch and filling out a spreadsheet for the day — when a task is completed, I lap the stopwatch and add the task and the time spent on that task in a row in the spreadsheet. It does the job, but it is very tedious. Does anyone have a recommendation for an app that can do this for me? I would like it to:
- Log the time constantly (when a task is completed, immedately start a new task)
- Time a task
- Allow naming of tasks
- (optional) Allow categorizing of tasks with tags
- (optional) Show graphics for how time is spent each day, and statistics on how much time is spent
- The ability to export the data (e.g. CSV)
It would probably be the most convenient for this to be an Android app, but I am also open to suggestions for a Desktop (Linux) app.
I run Kimai under Docker for this. https://www.kimai.org/
Activity watch does all that automatically! Needs some tinkering to setup, especially the android and desktop sync, but it’s there.
Neat project. The choice to use a web UI is… interesting. Unfortunate that it doesn’t support Wayland for tracking open windows yet. Also, the stopwatch feature is experimental and isn’t fully implemented.
Update (2024-03-27T07:41Z): After doing some more research, it appears to be standard design for this sort of software to use a client-server structure. I’m not sure if this exactly fits my usecase. I suppose, ideally, it would be great if I could be able to interract with the activity tracker on all my devices. Unfortunately, however, the ActivityWatch docs state that currently it only supports listening on
localhost
.
TaskWarrior (https://taskwarrior.org)
I appreciate the inclusion of a CLI program! Personally, I am looking for something with a UI.
I like timeto.me (android). It is designed to log the whole day. It doesn’t seem to support tags, but the checklists might be something similar (?). It doesn’t support exporting to a CSV, but it supports backups and they are in JSON format, so it’s probably good enough.
It’s a relatively new project and visually iOS-leaning, but it’s the best one I found for specifically this problem.
This is a very nice looking app. Unfortunately, it functions as a timer with editable preset tasks. I want to log how much time I spent working on a task, not work on a task for a specific amount of time.
The preset time is not binding, you can always start a new task earlier or later. The timer is designed more like an alarm clock (it also does get recognised as one by Android). It will sound an alarm at the end of your specified time and 5 minutes after so that you don’t forget to set a new timer.
I use Super Productivity for this. Not perfect, but good enough
there are a few time trackers on f-droid that seem to fit thia requirement.
“a time tracker” is one.
How’s your python. Its a pretty simple thing to make in python… It won’t care about the platform you choose to run it on.
I’m at the pub right now, but for a quick solution… I made this. It’ll save as a CSV as it goes.
Just tested on android ide so doesn’t look pretty but I can make up a slicker interface if you want?? I can also package it as a binary and publish on github if you didn’t find something suitable.
Enter the task name, hit start to trigger stopwatch, and stop when you’re done.
Not sure how to codeblock on this app and I cant get it to display right. Im blaming the beer
import tkinter as tk from datetime import datetime
class TaskLoggerApp: def init(self, master): self.master = master master.title(“Task Logger”)
self.task_label = tk.Label(master, text="Task:") self.task_label.pack() self.task_entry = tk.Entry(master) self.task_entry.pack() self.timer_button = tk.Button(master, text="Start Timer", command=self.start_timer) self.timer_button.pack() self.log_label = tk.Label(master, text="") self.log_label.pack() self.log_text = "" self.timer_running = False self.start_time = None def start_timer(self): if not self.timer_running: self.start_time = datetime.now() self.timer_button.config(text="Stop Timer") self.timer_running = True else: end_time = datetime.now() time_spent = end_time - self.start_time task_name = self.task_entry.get() self.log_task(task_name, time_spent) self.timer_button.config(text="Start Timer") self.timer_running = False def log_task(self, task_name, time_spent): time_spent_str = "{:.2f}".format(time_spent.total_seconds() / 60) with open("task_log.csv", "a") as file: file.write(f"{task_name},{time_spent_str}\n") log_text = f"Task '{task_name}' logged. Time spent: {time_spent_str} minutes\n" self.log_text += log_text self.log_label.config(text=self.log_text) print(log_text)
def main(): root = tk.Tk() app = TaskLoggerApp(root) root.mainloop()
if name == “main”: main()
I think you are looking for Simple Time Tracker: https://f-droid.org/packages/com.razeeman.util.simpletimetracker/
definitely recommend. I’ve been using it for a year and a half now and it’s one of my most favorite apps on my phone.
I’ve been using this for the past day, and it is a great app! It seems to cover exactly what I’m looking for, and it’s a pretty well designed app. Thank you for the recommendation!
Np, I’m glad my random app testing has paid off. Has a nice UI as well which is rare in FOSS.