Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

wingather

PyPI Release Date Python 3.8+ License: GPL v3 GitHub Discussions Platform

Windows admin and security tool for discovering, recovering, and managing hidden or inaccessible windows.

Finds hidden, minimized, off-screen, and obscured windows -- restores them and centers them on your chosen monitor. Useful for:

  • Security investigation -- surface suspicious hidden dialogs or message boxes
  • Window rescue -- recover windows lost off-screen after monitor disconnect
  • Desktop cleanup -- quickly gather all windows to one spot (including from other desktops)

Installation

# From PyPI (coming soon)
pip install wingather

# From source
git clone https://github.com/DazzleTools/wingather.git
cd wingather
pip install -e .

Usage

# Find and surface suspicious windows (default: only acts on flagged windows)
wingather --dry-run

# Gather ALL windows to center of primary monitor
wingather --all

# List what's out there without taking action
wingather --list-only

# Reveal suspicious hidden windows (with educational banner)
wingather --show-hidden
wingather --show-hidden --all   # reveal ALL hidden windows (use with caution)
wingather --undo                # re-hide them (see docs/hidden-windows.md)

# Center on a specific monitor (0=primary, 1=secondary, etc.)
wingather --monitor 1

# Filter by window title or process name (fnmatch patterns)
wingather --filter "*chrome*"
wingather --exclude "*spotify*"

# JSON output for scripting
wingather --json

# Verbose logging
wingather -v

See docs/parameters.md for the full CLI reference with all options, filtering, trust configuration, and output modes.

Running as Administrator

For best results, run as Administrator. Without elevation, windows belonging to elevated processes (e.g., Task Manager, Process Explorer) cannot be moved.

What It Does

  1. Sets DPI awareness for accurate multi-monitor coordinate handling
  2. Enumerates all top-level windows via Win32 EnumWindows
  3. Identifies window state: normal, minimized, hidden, off-screen, cloaked (virtual desktop)
  4. Scores windows for suspicious indicators (off-screen, shrunk, dialog, cloaked)
  5. By default, only acts on suspicious windows (use --all for everything)
  6. Restores, shows, and centers affected windows on the target monitor
  7. Reports what was found and what action was taken

Window States

State Description Default Action
normal Visible, on-screen Skip (use --all to center)
minimized In taskbar Restore + Center (if suspicious)
maximized Full-screen normal Skip (use --all to center)
hidden WS_VISIBLE not set Skip (use --show-hidden)
off-screen Beyond monitor bounds Center (flagged suspicious)
cloaked On another virtual desktop Skip (OS limitation)

Suspicious Window Detection

wingather flags windows that exhibit suspicious behavior using a weighted concern scoring system:

Level Label Example Triggers Action
[!1] ALERT Off-screen + dialog, trust verification failed Centered + foreground
[!2] ALERT Off-screen window Centered + foreground
[!3] CONCERN Heavily shrunk window Centered + foreground
[!4] NOTE Dialog, partially off-screen Centered + foreground
[!5] NOTE Cloaked on another desktop Centered + foreground

See docs/parameters.md for indicator weights and scoring details.

Trust Verification

Built-in trusted processes (explorer.exe, etc.) are verified by checking their file path and Microsoft Authenticode signature before suppressing flags. A process masquerading as a trusted name but failing verification triggers an immediate level 1 ALERT.

# Bypass default trust list -- flag everything
wingather --no-default-trust --dry-run

# Trust additional processes
wingather -tp myapp.exe -tp "custom*"

Cross-Platform

Designed with a platform abstraction layer. Currently implemented for Windows only. macOS and Linux stubs are in place for future development. See docs/platform-support.md for details, requirements, and how to help.

Platform Status
Windows Implemented
macOS Stub (PyObjC/Quartz planned)
Linux/X11 Stub (python-xlib/wmctrl planned)
Linux/Wayland Not feasible (compositor security model)

Requirements

  • Python 3.8+
  • Windows: pywin32, psutil
  • process-delta -- Process and service snapshot comparison tool
  • NirCmd -- win center alltop does partial centering (no hidden/minimized restore)
  • GUIPropView -- GUI window inspector with manual center action

Contributing

Contributions welcome! See CONTRIBUTING.md.

Like the project?

"Buy Me A Coffee"

License

wingather, Copyright (C) 2026 Dustin Darcy

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Metadata

Release files for wingather 0.2.3a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wingather 0.2.3a1
File Size Uploaded Provenance Actions
wingather-0.2.3a1.tar.gz 48.5 kB With provenance Details for wingather-0.2.3a1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for wingather 0.2.3a1
File Interpreter ABI Platform Actions
wingather-0.2.3a1-py3-none-any.whl Python 3 none any Details for wingather-0.2.3a1-py3-none-any.whl

Total release size: 92.1 kB

Release files / wingather-0.2.3a1.tar.gz

Download URL wingather-0.2.3a1.tar.gz
Size 48.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1ae841344dcefb12d16d48e5215ba365fa34f2e8c01750fff591846f8f26a78e
BLAKE2b-256 checksum
How to use checksums
1651d32d45480609167a9f2832c3a8701ab7ff57370ad0ae16c3d9520be42980
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.

Transparency log

Release files / wingather-0.2.3a1-py3-none-any.whl

Download URL wingather-0.2.3a1-py3-none-any.whl
Size 43.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cca073ee1dcc2d1acd3240c98bed60d2549bf329529fc7304d58ee59520b72d5
BLAKE2b-256 checksum
How to use checksums
0e63598b8cb5f7fa72d124fa7ef5f93e4ae80e5347ac997e5edf479ae741a75e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.

Transparency log

Security for wingather 0.2.3a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for wingather-0.2.3a1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page