I beemind pomodoros. Presently I use GNOME Pomodoro to time the pomodoros and manually enter the number completed in Beeminder. I would like to automate the entry in Beeminder. Does Beeminder integrate with an application that times pomodoros, so that for each pomodoro I complete in the timing application Beeminder is automatically updated? I need an application that runs on Ubuntu (or the web), not Android or iOS.
Would Toggl Track work? There is definitely a web version, and there was once a Linux version but I think it’s deprecated (not supported) now. There is a Pomodoro mode for Toggl Track, which might work for you, depending on your exact requirements. And of course there is a Beeminder integration for Toggl, that can capture all this automatically.
Toggl Track seems a bit like overkill. Is there anything simpler?
What is the easiest way to integrate a timer (not necessarily for pomodoros) with Beeminder? I want a simple way to beemind the total number of minutes I spend on a project.
Beeminder has a straightforward API, so if you’re happy with coding you could wizz that up in a few minutes. Actually, I just asked Google’s Gemini to do it for me, and here’s what it wrote:
from datetime import timedelta
import time
from playsound import playsound # for playing sound at the end
import requests # for sending data to Beeminder
# Beeminder credentials (replace with your details)
BEEMINDER_USERNAME = "your_beeminder_username"
BEEMINDER_GOAL = "your_pomodoro_goal"
BEEMINDER_API_KEY = "your_beeminder_api_key"
# Pomodoro work and break durations (in minutes)
WORK_DURATION = 25
BREAK_DURATION = 5
def countdown(duration):
"""Counts down from the provided duration in minutes, printing to console and playing a sound at the end"""
for remaining in range(duration, 0, -1):
print(f"Time remaining: {remaining} minutes")
time.sleep(60)
# Optional: Add sleep here to slow down the counter (currently updates every 60 seconds)
playsound("終了音.wav") # Replace with your preferred sound file
def send_to_beeminder(value):
"""Sends a datapoint to the Beeminder goal using the Beeminder API"""
url = f"https://www.beeminder.com/api/v1/users/{BEEMINDER_USERNAME}/goals/{BEEMINDER_GOAL}/datapoints.json"
headers = {"Authorization": f"Bearer {BEEMINDER_API_KEY}"}
data = {"value": value}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("Datapoint sent to Beeminder successfully!")
else:
print(f"Error sending datapoint: {response.status_code}")
while True:
# Pomodoro work interval
countdown(WORK_DURATION)
print("Pomodoro complete! Take a break.")
# Optional break timer (comment out if not desired)
# countdown(BREAK_DURATION)
# Send datapoint (1 for completing a pomodoro) to Beeminder
send_to_beeminder(1)
# Continue looping for multiple pomodoro cycles
answer = input("Enter 'q' to quit or press any key to continue: ")
if answer.lower() == 'q':
break
print("Pomodoro timer stopped.")
It then says:
So you may need to debug that, but it looks pretty straightforward.
For that, the easiest probably is Toggl Track. That’s exactly what it’s for - you click to start your work, and click to stop, and then Beeminder will pick up the total number of minutes every so often (at least once a day, and more often if you’re close to derailing).
I know the Android Beeminder app has a built in timer!