Automatic Break Reminder (Every 60 Minutes)

Share your favorite FastKeys commands
Post Reply
User avatar
marcelolima
Posts: 43
Joined: Apr 11th, ’22, 00:04

Post by marcelolima » Oct 19th, ’25, 15:15

Hi everyone!

I’m sharing a small AutoHotkey script I use as an automatic break reminder during work hours.
It’s a simple idea: every 60 minutes, a small pop-up window appears with a coffee cup icon (☕) reminding you to take a short break — stand up, drink some water, stretch your neck and shoulders, rest your eyes, etc.

The window always stays on top and provides two options:

OK: closes the reminder and restarts the 60-minute timer.

Snooze 5 min: closes the window and shows the reminder again after 5 minutes.

** It's just a idea for "Startup Script"

Code: Select all

; ==== Coffee Break Reminder ☕ (AHK v1) ====
#NoEnv
#SingleInstance, Force
#Persistent
SetBatchLines, -1

; --- Settings ---
intervalo := 60 * 60 * 1000     ; 60 minutes in ms
soneca   := 5 * 60 * 1000       ; 5 minutes snooze
global _paused := false

; --- Main Timer ---
SetTimer, ShowReminder, % intervalo

; --- Tray Menu ---
Menu, Tray, NoStandard
Menu, Tray, Add, Show Now, ShowReminder
Menu, Tray, Add
Menu, Tray, Add, Pause Reminders, TogglePause
Menu, Tray, Add, Exit, ExitApp
Menu, Tray, Tip, Break Reminder (every 60 min)

; --- Optional Hotkey ---
^!b::Gosub, ShowReminder   ; Ctrl+Alt+B to show manually

return

; ========= Handlers =========

TogglePause:
    _paused := !_paused
    if (_paused) {
        SetTimer, ShowReminder, Off
        Menu, Tray, Rename, Pause Reminders, Resume Reminders
        TrayTip, Break Reminder, Paused., 2, 1
    } else {
        SetTimer, ShowReminder, % intervalo
        Menu, Tray, Rename, Resume Reminders, Pause Reminders
        TrayTip, Break Reminder, Active (every 60 min)., 2, 1
    }
return

ExitApp:
    ExitApp

ShowReminder:
    if (_paused)
        return

    SoundBeep, 1000, 120
    SoundBeep, 1400, 100

    Gui, Break:Destroy
    Gui, Break:Margin, 16, 12
    Gui, Break:+AlwaysOnTop -Caption +ToolWindow +LastFound
    WinSet, Transparent, 235

    Gui, Break:Font, s36, Segoe UI Emoji
    Gui, Break:Add, Text, Center w260, ☕
    Gui, Break:Font, s11, Segoe UI
    Gui, Break:Add, Text, Center w260, Time for a short break!
    Gui, Break:Add, Text, Center w260 cGray, Stretch a bit, hydrate, and relax your eyes.

    Gui, Break:Add, Button, gBreak_Snooze w110 h28, Snooze 5 min
    Gui, Break:Add, Button, x+8 gBreak_OK w110 h28 Default, OK

    Gui, Break:Show, AutoSize Center, Coffee Break
return

Break_Snooze:
    Gui, Break:Hide
    SetTimer, ShowReminder, Off
    SetTimer, ShowReminder, % -soneca   ; one-shot snooze
return

Break_OK:
    Gui, Break:Destroy
return


User avatar
Marko
Posts: 1910
Joined: Mar 2nd, ’13, 21:02

Post by Marko » Oct 26th, ’25, 14:45

Brilliant and very useful, thanks Marcelo!
Post Reply