Skip to content

About

Magic that follows every move — a modern Windows pointer spotlight and input visualizer.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

FocusPocus — Magic that follows every move

A modern Windows 11 utility that spotlights the pointer, visualizes clicks, and displays keyboard shortcuts.

Download latest release · Español · Changelog

See it in action

FocusPocus spotlight, click effects, shortcuts, and settings demonstration

Preview

Focus and overlay settings Input effects settings

Global shortcuts settings Behavior settings

About FocusPocus and check for updates

Features

  • Pointer spotlight with adjustable diameter up to 800 px and edge feathering.
  • Smooth multi-monitor transitions.
  • Custom overlay color and opacity.
  • Mouse click visualization and optional click sound.
  • Keystroke visualization with a shortcuts-only mode and password-field protection.
  • Global shortcuts for spotlight, clicks, keystrokes, spotlight size, and overlay opacity.
  • Native WinUI 3 settings experience with Mica and Windows 11 controls.
  • Starts with Windows in the system tray without opening the settings window.
  • Built-in update checker backed by GitHub Releases.
  • Spanish and English interface.

Default shortcuts

Action Shortcut
Toggle spotlight Ctrl+Space
Toggle clicks Ctrl+Alt+C
Toggle keystrokes Ctrl+Alt+K
Increase spotlight size Ctrl+Alt+Up
Decrease spotlight size Ctrl+Alt+Down
Decrease overlay opacity Ctrl+Alt+Left
Increase overlay opacity Ctrl+Alt+Right

Requirements

  • Windows 10 version 1809 or later; Windows 11 is recommended.
  • 64-bit Windows.

The single Rust installer bundles the .NET and Windows App SDK runtimes. No separate runtime download, Inno Setup, or administrator account is required.

Install

  1. Open the latest release.
  2. Download FocusPocus-Setup-<version>.exe.
  3. Run the installer and launch FocusPocus.

Installation is per-user in %LOCALAPPDATA%\Programs\FocusPocus. Remove it from Windows Settings or run Uninstall.exe. Your settings are preserved.

Windows SmartScreen may display a warning because community builds are not code-signed yet. Verify that the installer comes from this repository's Releases page.

Architecture

FocusPocus uses two cooperating processes:

  • FocusPocus.exe: the native WinUI 3 settings interface.
  • FocusPocus.Engine.exe: the native Rust engine, with Direct2D/DirectComposition graphics, input hooks, global shortcuts, and system tray.

FocusPocus-Setup-<version>.exe and Uninstall.exe are also written in Rust. Settings changes use file notifications and a shared named mutex with field-level merging; input hooks run on their own thread. The engine schedules frames only when the pointer moves or effects animate. Shared icons and the Rust Windows manifest live in assets/; the retired WPF implementation has been removed.

This split lets Windows startup launch only the engine in the tray while the settings window stays closed.

flowchart LR
    User([User])
    Input[Windows pointer<br/>and keyboard input]
    Startup[Windows startup]
    Releases[(GitHub Releases API)]

    subgraph FocusPocus
        UI[FocusPocus.exe<br/>WinUI 3 settings]
        Settings[(%APPDATA%\FocusPocus<br/>settings.json)]

        subgraph Engine[FocusPocus.Engine.exe]
            Controller[App controller and<br/>settings synchronization]
            Tray[System tray and<br/>global shortcuts]
            Hooks[Low-level<br/>input hooks]
            Overlay[Rust Direct2D spotlight and<br/>input effects overlay]
        end
    end

    User --> UI
    UI <--> Settings
    UI -. Check for updates .-> Releases
    Settings --> Controller
    Startup --> Controller
    User --> Tray
    Input --> Hooks
    Tray --> Controller
    Hooks --> Controller
    Controller --> Overlay
Loading

Build from source

Prerequisites:

  • Rust stable with the x86_64-pc-windows-msvc toolchain
  • Visual Studio C++ Build Tools and Windows SDK
  • .NET 8 SDK (for the WinUI settings interface)
git clone https://github.com/ezenwa/FocusPocus.git
cd FocusPocus
dotnet build .\src\FocusPocus.UI\FocusPocus.UI.csproj -c Release
cargo build --release -p focuspocus-engine

To create the installer:

.\scripts\build.ps1

The complete single-file installer and SHA-256 checksum are written to dist. scripts/build.ps1 runs Rust and C# tests and bundles the runtimes automatically; it does not use an external installer compiler. The uncompressed application folder is generated in publish/FocusPocus-<version>-win-x64.

Verify isolated install, upgrade, and uninstall behavior with ./scripts/verify-package.ps1. Add -RenderTest on an interactive Windows desktop to exercise the GPU overlay briefly. See migration notes for architecture and validation details.

Successful package checks remove their temporary files. Use -KeepArtifacts when debugging; failed checks retain their evidence directory.

Repository layout

crates/
  engine/                 Rust engine crate: src/ modules and unit tests
  setup/                  Rust installer library and executable
    src/bin/uninstall.rs  Uninstaller entry point
src/FocusPocus.UI/        C# and XAML for the WinUI settings interface
tests/                   C# integration checks
assets/
  icons/                 Shared SVG source, PNG and ICO application icons
  windows/               Windows manifest shared by the Rust binaries
docs/images/             Documentation screenshots, banner and demo
scripts/                 Build and package verification scripts
dist/                    Generated installer and checksum
.cargo/                  Cargo platform configuration
.github/                 CI, release workflows and issue templates

Add Rust functionality to the relevant crate under src/, with unit tests beside the module; use a crate's tests/ directory for future Rust integration tests. Add WinUI types and XAML to src/FocusPocus.UI, and C# integration checks to tests/FocusPocus.Settings.Tests. Keep reusable application artwork in assets/icons, documentation media in docs/images, guides in docs, and automation in scripts.

Keep workspace manifests, the lockfile, toolchain configuration and Visual Studio solution at the repository root. target/, project bin/ and obj/, publish/, and dist/ are generated and ignored by Git. publish/ contains packaging intermediates; dist/ contains deliverables. Do not place captures, logs, backups or repository exports in the source tree.

Privacy

FocusPocus processes pointer and keyboard events locally. It does not transmit captured input. Keystrokes are not displayed while a standard Windows password field has focus. The update checker only requests public release metadata from the GitHub API when the user presses the update button.

Contributing

See CONTRIBUTING.md. Security issues should follow SECURITY.md.

License

FocusPocus is available under the MIT License.

About

Magic that follows every move — a modern Windows pointer spotlight and input visualizer.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages