AutoHotkey
Su Windows, AutoHotkey trasforma qualsiasi combinazione di tasti in un pulsante per il timer. Lo script richiede solo AutoHotkey v2 e l'interfaccia HTTP integrata in Windows, nessun'altra libreria; dopo ogni pressione una notifica ti mostra a che punto sei.
- In Impostazioni, API e dispositivi crea un dispositivo di tipo «Altro dispositivo» e copia il token.
- Installa AutoHotkey v2.
- Salva lo script qui sotto come
horaka.ahk(UTF-8) e avvialo con un doppio clic. Per altri progetti copia la riga con^!F9e assegnale un tasto e un nome breve propri. - Per avviare lo script all'accesso, metti un collegamento nella cartella Esecuzione automatica (Windows+R,
shell:startup).
#Requires AutoHotkey v2.0
#SingleInstance Force
Address := "https://api.horaka.com/v1"
Token := "IL_TUO_TOKEN"
; Ctrl+Alt+F9: toggle project, Ctrl+Alt+F10: stop, Ctrl+Alt+F11: show status
^!F9::Notify("/track/toggle", '{"project": "PROGETTO"}')
^!F10::Notify("/track/stop")
^!F11::Notify()
Horaka(Method, Path, Body := "") {
Request := ComObject("WinHttp.WinHttpRequest.5.1")
Request.Open(Method, Address Path, false)
Request.SetRequestHeader("Authorization", "Bearer " Token)
Request.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
Request.Send(Body)
if (Request.Status != 200)
throw Error("HTTP " Request.Status)
return Request.ResponseText
}
Notify(Path := "", Body := "{}") {
try {
if (Path != "")
Horaka("POST", Path, Body)
TrayTip(Horaka("GET", "/track/status?format=text"), "Horaka")
} catch as Problem {
TrayTip(Problem.Message, "Horaka", "Iconx")
}
}
Al posto di /track/toggle puoi usare /track/start e /track/switch con lo stesso corpo; aggiungi "activity" accanto a "project" per registrare un'attività precisa. Dopo ogni pressione la notifica mostra le ore di oggi e il timer in corso. «HTTP 401» significa token errato, «HTTP 403» significa che il dispositivo non può registrare su questo progetto o che il limite di dispositivi del tuo piano è raggiunto.
Con alcuni layout di tastiera Ctrl+Alt con una lettera equivale ad AltGr, per questo l'esempio usa i tasti funzione. Ogni endpoint è descritto nella documentazione API.