Focus windows by mousing over windows, in Windows
  • Rust 86%
  • PowerShell 14%
Find a file
2026-06-07 13:28:41 -04:00
build-helpers commit 2026-06-07 13:28:41 -04:00
src commit 2026-06-07 13:28:41 -04:00
.gitignore commit 2026-06-07 13:23:12 -04:00
AGENTS.md commit 2026-06-07 13:23:12 -04:00
Cargo.lock commit 2026-06-07 13:28:41 -04:00
Cargo.toml commit 2026-06-07 13:28:41 -04:00
example-config.toml commit 2026-06-07 13:28:41 -04:00
LICENSE Initial commit 2026-06-07 15:26:44 +00:00
README.md commit 2026-06-07 13:28:41 -04:00

Mouseover Windows

Mouseover Windows is a small Windows utility that focuses normal application windows when you hover them, without requiring a click.

It is intentionally boring: a background tray app, a TOML config file, conservative Win32 polling, and useful local logs.

Supported Platforms

  • Windows 10 and Windows 11
  • x86_64 Windows
  • Normal user process; no administrator privileges are required for normal use

Run

Build the app:

cargo build --release

Run:

.\target\release\mouseover-windows.exe

The app starts without a main window and places an icon in the system tray.

Tray Menu

  • Enabled: toggles hover focus behavior.
  • Reload config: reloads the active TOML config without restarting.
  • Open config file: opens the active config in the default editor.
  • Open config folder: opens the config directory in Explorer.
  • About: shows version information.
  • Exit: shuts down cleanly.

Config

Installed mode config path:

%APPDATA%\mouseover-windows\config.toml

Portable mode:

config.toml

If config.toml exists next to the executable, it takes priority over the installed config path. If no config exists, the app creates a default installed config automatically.

See example-config.toml.

CLI

mouseover-windows --help
mouseover-windows --version
mouseover-windows --config-path
mouseover-windows --no-tray

--no-tray runs the focus engine without a tray icon and can be stopped with Ctrl+C.

Logs

Logs are written to:

%LOCALAPPDATA%\mouseover-windows\logs\mouseover-windows.log

The log level is controlled by:

log_level = "info"

Supported levels are error, warn, info, debug, and trace.

Build and Validate

Required quality commands:

cargo fmt --check
cargo clippy -- -D warnings
cargo test
cargo build
cargo build --release

Release executable:

target/release/mouseover-windows.exe

Optional MSI Helper

The repository includes a Windows build helper:

.\build-helpers\windows.ps1

It builds the release executable, stages README.md, LICENSE, and example-config.toml, and produces:

release\MouseoverWindows-<version>-x64.msi

The script requires WiX Toolset to already be installed and available on PATH as either wix.exe or candle.exe plus light.exe. It does not install WiX, modify system package managers, or write outside this repository.

Troubleshooting

If a specific app does not focus, add its executable name to excluded_processes only if you want the app ignored; otherwise check the log for SetForegroundWindow failures. Windows foreground lock rules, elevated windows, games, and protected apps may reject focus requests.

If the app interferes with a game, keep ignore_fullscreen = true and add the game executable to excluded_processes.

If config reload fails, the previous valid config remains active. Check the log for the TOML parse or validation error.

If the tray icon is missing, exit any duplicate instance and check the log. Normal mode treats tray creation as required because it provides the exit path.

If fullscreen protection blocks more than you want, set:

ignore_fullscreen = false

Known Limitations

  • Some elevated windows may not focus correctly.
  • Some games or protected apps may reject focus changes.
  • Windows foreground lock behavior can reject focus requests.
  • Fullscreen detection is pragmatic, not perfect.
  • Some Windows shell surfaces are intentionally ignored.
  • There is no GUI settings editor.
  • There is no auto-start toggle.
  • Explicit raise-on-hover behavior is not implemented in v1, though Windows may raise a window as part of foreground activation.

Privacy and Security

This app does not use the network, does not send telemetry, and does not inspect window contents.

It reads only window handles, titles, classes, process IDs, executable names, rectangles, style flags, foreground state, and the current cursor position. It does not use hooks, input injection, DLL injection, drivers, services, screenshots, clipboard access, or keyboard logging.

License

MIT. See LICENSE.