- Rust 86%
- PowerShell 14%
| build-helpers | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| example-config.toml | ||
| LICENSE | ||
| README.md | ||
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.