A posture reminder utility to promote ergonomic habits.
Better Posture is a lightweight and robust Windows system-tray utility that helps you maintain better posture and take regular breaks. Never forget to stretch or adjust your position again!
- Lightweight and Minimal: As a native Go application that consumes minimal CPU and memory resources.
- Non-Blocking Notifications: Uses native Windows notifications (
MessageBoxW+toast) in a non-blocking way, so the app remains responsive even while a message is visible. - Live Countdown Timer: Displays the time remaining until the next reminder directly in the system tray tooltip and the menu itself.
- Customizable Intervals: Easily increase, decrease, or reset the reminder interval directly from the tray menu (from 1 minute up to 24 hours).
- Portable: The application is a single executable file with no external dependencies.
- Persistent Configuration: Stores your settings in %APPDATA%/BetterPosture/settings.json.
- Resilient & Safe: Automatically recovers from missing/corrupted settings files and sanitizes invalid values.
- Single-Instance Enforcement: Prevents multiple copies from running at once.
- Download the latest
BetterPosture.exefrom the Releases page. - Run the executable. The app immediately starts in the background.
- Look for the Posture Reminder icon in your system tray (near the clock).
No installer, no setup.
To build this project, you need Go 1.21+ installed.
-
Clone the repository:
git clone https://github.com/rtorval/better-posture.git cd better-posture -
Install Dependencies:
go mod tidy
-
Embed Icon and Windows Resources:
# Install the tool go install github.com/tc-hib/go-winres@latest # Generate Windows resource files (icon, metadata) go-winres make
-
Build the Executable: The
-H=windowsguiflag is crucial to prevent the console window from flashing/appearing upon execution.go build -ldflags="-H=windowsgui" -o BetterPosture.exe .
Your settings are saved automatically.
- Path:
%APPDATA%\BetterPosture\settings.json
Example:
{
"interval_minutes": 3,
"reminder_title": "Time to Move!",
"reminder_message": "Stand up, stretch your back, and adjust your chair."
}You can edit this file manually while the application is closed.
Better Posture is built entirely in Go and uses:
-
systray — cross-platform tray integration github.com/getlantern/systray
-
windows (syscall wrapper) — for native Win32 API calls golang.org/x/sys/windows
-
toast — Windows 10+ toast notifications "github.com/go-toast/toast"
-
go-winres — embeds icons and metadata into the Windows executable github.com/tc-hib/go-winres
© 2025 Rodrigo Toraño Valle
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.