Skip to content

Repository files navigation

FocusOverlay icon

FocusOverlay

A lightweight always-on-top Windows overlay for deep work sessions.
Transparent panels for task management, Pomodoro timer, and progress tracking —
sitting quietly on top of any app, zero CPU when idle.

Platform Language License


Features

  • Task panel — add, check off, and remove tasks; auto-resizes as your list grows
  • Pomodoro timer — configurable work/rest duration, auto-loops between phases, custom end-of-phase messages and beep sounds
  • Stopwatch mode — simple count-up timer with start/stop/reset
  • Progress panel — live X/Y task counter with a green progress bar
  • Settings menu — three-dot menu to switch modes, set durations, set messages, hide panels, and quit
  • Native drag — each panel drags independently anywhere on screen
  • Transparent — panels float over any app using WebView2 for rendering
  • Minimal CPU — ~0% CPU when idle, ~1–2MB RAM

Screenshots

Overview

FocusOverlay Overview

Settings Panel

FocusOverlay Settings


Requirements

  • Windows 10 / 11 (x64)
  • WebView2 Runtime — pre-installed on most Windows 11 machines

Installation

Option A — Installer (recommended)

  1. Download FocusOverlay-Setup.exe from Releases
  2. Run it — no admin required, installs per-user
  3. Launch from desktop shortcut or Start Menu

Option B — Portable

  1. Download FocusOverlay-Portable.zip from Releases
  2. Extract anywhere
  3. Run FocusOverlay.exe

Building from source

Prerequisites

  • Visual Studio 2022+ with Desktop development with C++ workload
  • Windows 10/11 SDK
  • NuGet packages (restored automatically on first build):
    • Microsoft.Web.WebView2
    • Microsoft.Windows.ImplementationLibrary

Steps

git clone https://github.com/KUNAL01011/FocusOverlay.git
cd FocusOverlay

Open FocusOverlay.sln in Visual Studio → set configuration to Release x64Ctrl+Shift+B.

Copy ui/ and assets/ into x64/Release/ before running.


Project structure

FocusOverlay/
├── src/
│   ├── main.cpp              # Entry point, message loop, panel wiring
│   ├── PanelWindow.h/cpp     # Win32 + WebView2 base panel class
│   └── Pomodoro.h/cpp        # Timer logic (Pomodoro + Stopwatch)
├── ui/
│   ├── task-panel.html       # Task list UI
│   ├── progress-panel.html   # Progress bar UI
│   └── pomodoro-panel.html   # Timer UI
├── assets/
│   ├── icons/
│   │   └── focusoverlay.ico
│   └── sounds/
│       ├── beep1.wav         # Work phase end
│       └── beep2.wav         # Rest phase end
├── installer/
│   └── FocusOverlay.iss      # Inno Setup script
└── FocusOverlay.sln

Tech stack

Layer Technology
Window management Win32 API
UI rendering WebView2 (Chromium-based)
UI language HTML / CSS / JavaScript
Backend logic C++20
Build system MSVC / MSBuild
Installer Inno Setup 6

How it works

C++ owns all state (tasks, timer). HTML panels are pure UI. They communicate via the WebView2 message bridge:

User clicks START in HTML
    → postMessage({type: "POMODORO_TOGGLE"})
    → C++ Pomodoro::Toggle()
    → Windows timer ticks every second
    → C++ sends TIMER_UPDATE back to HTML
    → HTML updates the display

Dragging uses WebView2's native app-region: drag CSS property wired to the parent WS_POPUP window — no JS math, no shaking.


Contributing

PRs welcome. Open an issue first for anything significant.


License

MIT — do whatever you want with it.

About

A lightweight transparent overlay for Windows with Pomodoro timer, stopwatch, and task management

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages