AutoHotkey
W Windows AutoHotkey zamienia dowolną kombinację klawiszy w przycisk timera. Skrypt potrzebuje tylko AutoHotkey v2 i wbudowanego w Windows interfejsu HTTP, bez dodatkowych bibliotek; po każdym naciśnięciu powiadomienie pokazuje, jaki jest stan.
- W Ustawienia, API i urządzenia utwórz urządzenie rodzaju „Inne urządzenie” i skopiuj token.
- Zainstaluj AutoHotkey v2.
- Zapisz poniższy skrypt jako
horaka.ahk(UTF-8) i uruchom go dwukrotnym kliknięciem. Dla kolejnych projektów skopiuj wiersz z^!F9i nadaj mu własny klawisz i krótką nazwę. - Aby skrypt startował po zalogowaniu, umieść skrót w folderze autostartu (Windows+R,
shell:startup).
#Requires AutoHotkey v2.0
#SingleInstance Force
Address := "https://api.horaka.com/v1"
Token := "TWOJ_TOKEN"
; Ctrl+Alt+F9: toggle project, Ctrl+Alt+F10: stop, Ctrl+Alt+F11: show status
^!F9::Notify("/track/toggle", '{"project": "PROJEKT"}')
^!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")
}
}
Zamiast /track/toggle możesz użyć /track/start i /track/switch z tą samą treścią; dodaj "activity" obok "project", aby rejestrować czas na konkretną czynność. Po każdym naciśnięciu powiadomienie pokazuje dzisiejsze godziny i działający timer. „HTTP 401” oznacza błędny token, „HTTP 403” oznacza, że urządzenie nie może rejestrować czasu na tym projekcie lub osiągnięto limit urządzeń Twojego planu.
W niektórych układach klawiatury Ctrl+Alt z literą działa jak AltGr, dlatego przykład używa klawiszy funkcyjnych. Każdy punkt końcowy jest opisany w dokumentacji API.