Quando studio non mi interessa sapere soltanto da quanto tempo sono seduto alla scrivania. Voglio capire quanto ho lavorato davvero, quante pause ho fatto e come si distribuisce il tempo nell’arco della giornata.
Da questa esigenza è nato Cronometro: una piccola applicazione da terminale scritta in Python. Non richiede librerie esterne, non usa un database e non nasconde i dati in un formato proprietario. Registra tutto in un normale file di testo che posso aprire, spostare o modificare quando voglio.
Un problema semplice, ma concreto
Un timer tradizionale misura il tempo che passa. Durante una sessione di studio, però, una telefonata, un caffè o una pausa più lunga possono alterare parecchio il risultato. Avevo bisogno di sospendere il conteggio senza perdere la sessione e di vedere separatamente il tempo effettivo e quello trascorso in pausa.
Il flusso è volutamente essenziale: start avvia una sessione, pausa la sospende e riprendi continua dalla durata accumulata. Il comando stato mostra i valori correnti, mentre oggi somma quanto registrato nella giornata senza fermare il cronometro.
Durata: 00:42:18 | Pause: 00:05:31 | Stato: in pausa
> riprendi
Il file di testo come scelta progettuale
Ogni sessione conserva l’ora di inizio, la durata effettiva, il totale delle pause e l’ora di fine. Con completa il programma chiude la giornata, calcola i totali e aggiorna anche il riepilogo complessivo.
Lunedì 14 Settembre 2026
========================
Inizio | Durata | Pause | Fine
---------+----------+----------+---------
17:20:45 | 03:00:00 | 00:30:00 | 20:50:45
=========+==========+==========+=========
Totale | 03:00:00 | 00:30:00 |
Ho preferito un formato leggibile perché il file non è soltanto un output tecnico: è anche un diario delle sessioni. Le nuove registrazioni si aggiungono senza cancellare il contenuto esistente e il programma evita di duplicare intestazioni e totali.
Restare dentro il terminale
Durante lo studio tengo già aperto il terminale per appunti, esercizi e progetti. Un comando leggero mi permette di iniziare o mettere in pausa senza cambiare contesto e senza aprire un’altra interfaccia.
Per eseguirlo bastano Python 3.9 o una versione successiva e il percorso del file in cui salvare le sessioni:
python3 cronometro.py "$HOME/Documents/studio.txt"
È possibile anche installarlo in ~/.local/bin e richiamarlo direttamente con il comando cronometro. I comandi principali hanno abbreviazioni rapide e sono disponibili sia in italiano sia in inglese.
Piccole attenzioni che fanno la differenza
Il progetto usa soltanto la libreria standard di Python, ma gestisce diversi casi meno evidenti: più pause nella stessa sessione, più sessioni nello stesso giorno, giornate già completate che vengono riaperte, totali complessivi da ricalcolare e compatibilità con i dati prodotti dalle versioni precedenti.
Ho aggiunto test automatici per il conteggio delle pause, la formattazione delle date e delle durate, la struttura delle tabelle e l’assenza di totali duplicati. È un progetto piccolo, ma proprio per questo è un buon esercizio: quando l’interfaccia è ridotta a pochi comandi, ogni comportamento deve essere prevedibile.
Perché pubblicarlo
Cronometro nasce per il mio modo di studiare, ma il problema è comune. Pubblicarlo significa rendere il tool ispezionabile e modificabile da chi preferisce strumenti semplici, locali e trasparenti. Il codice è disponibile su GitHub con licenza MIT.
Prova Cronometro
Nel repository trovi il codice, i comandi completi, le istruzioni di installazione e i test.
Apri il progetto su GitHub