ζηΈεηοΌεε¦ι | Blinko watches, so you can rest.
A lightweight, intelligent Windows desktop health reminder tool focused on protecting your eye and posture health.
Design Philosophy: Keep it Simple, Keep it Stupid
- π Timer Reminder: Automatic 20-20-20 eye care rule reminders
- ποΈ Blink Detection: Camera-based detection to remind you to blink more
- πͺ Posture Detection: Real-time posture monitoring and reminders
- π Desktop Icon: Small eye icon displayed on Windows desktop top layer with low resource usage
- π Statistics: Record your health habits
- π System Tray: Lightweight resident, non-intrusive but interactive
- π Privacy First: All image processing done locally, no data uploaded
Pure Rust Implementation - Simple, efficient, low resource usage
- Language: Rust 2021 Edition
- Window System: Windows API (native)
- Image Processing: OpenCV Rust (pure Rust, no Python required)
- Async Runtime: Tokio
- Data Storage: SQLite (rusqlite)
- Configuration: TOML + Serde
Design Principles:
- β Pure Rust implementation, no external dependencies (except OpenCV)
- β Minimal dependencies, keep it simple
- β Low resource usage (memory < 50MB)
- β Native Windows experience
Blinko/
βββ src/ # Rust source code
β βββ main.rs # Main entry point
β βββ config.rs # Configuration management
β βββ database.rs # Database operations
β βββ detection.rs # Blink/posture detection
β βββ reminder.rs # Timer reminder
β βββ tray.rs # System tray
β βββ window.rs # Desktop top layer window
βββ docs/ # Project documentation
βββ Cargo.toml # Rust dependencies
βββ README.md # This file
- Rust 1.70+ (recommended to install via rustup)
- Windows 10/11
- OpenCV 4.x (install via vcpkg or system package manager)
# Install vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
# Install OpenCV
.\vcpkg install opencv4:x64-windows
# Set environment variable
$env:OPENCV_DIR = "C:\path\to\vcpkg\installed\x64-windows"Download OpenCV pre-built version and set OPENCV_DIR environment variable to the installation directory.
# Clone repository
git clone <repository-url>
cd Blinko
# Run in development mode
cargo run
# Build release version
cargo build --release
# Run release version
cargo run --release- The program will display an icon in the system tray
- A small eye icon (64x64 pixels) will appear on the desktop top layer
- Default reminder interval: every 20 minutes
- Configuration file:
%APPDATA%\blinko\config.toml - Database:
%LOCALAPPDATA%\blinko\blinko.db
Edit configuration file %APPDATA%\blinko\config.toml:
[reminder]
enabled = true
interval_minutes = 20
[blink_detection]
enabled = false
check_interval_seconds = 5
threshold_seconds = 30
[posture_detection]
enabled = false
sensitivity = "medium"- Default reminder interval: every 20 minutes
- Follows 20-20-20 eye care rule
- Adjustable interval via configuration
- Real-time blink frequency detection using camera
- Reminds when no blinking detected for extended period
- All processing done locally for privacy protection
- Detects head and shoulder positions
- Alerts when abnormal posture detected
- Adjustable detection sensitivity
- Displays small eye icon on Windows desktop top layer
- 64x64 pixels, low resource usage
- Always on top, doesn't obstruct important content
- Memory Usage: < 50MB (idle)
- CPU Usage: < 1% (idle), < 15% (detecting)
- Startup Time: < 2 seconds
- Detection Latency: < 500ms
- β All image processing done locally
- β No image data saved
- β No data uploaded to servers
- β Statistics stored locally only
- β Fully offline operation
Follow Rust official code style:
cargo fmt
cargo clippycargo testDetailed documentation available in docs/ directory:
- Requirements - Detailed feature requirements and analysis
- Design - UI/UX design and architecture
- Development Guide - Development standards and contribution guide
- Chinese Name: ζηΈ - Elegant, culturally rich, focused on eye health
- English Name: Blinko - Derived from "blink", light and friendly
- Logo Concept: Half-closed owl/panda/robot with "bright eyes" shine
Issues and Pull Requests are welcome!
- Fork this repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under MIT License - see LICENSE file for details
- OpenCV community
- Rust community
- All contributors
Made with β€οΈ for your eye health
Keep it simple, keep it stupid.