windows-troll 0.1.0

Modular Windows prank library
# windows-troll

A modular Rust library (and CLI) of harmless Windows "troll" pranks. Each
prank is a self-contained module behind its own Cargo feature flag, so you can
build exactly the ones you want.

Windows only.

## Modules

| Feature           | Module                     | What it does                                          |
| ----------------- | -------------------------- | ----------------------------------------------------- |
| `window-hider`    | `modules::window_hider`    | Minimize (hide) and restore windows                   |
| `mouse-teleporter`| `modules::mouse_teleporter`| Move the mouse to chosen or random positions          |
| `window-wobbler`  | `modules::window_wobbler`  | Smoothly sway a window in place (direction + amplitude) |
| `window-party`    | `modules::window_party`    | Scramble your screen into an animated grid party      |

## Building

```sh
# everything (all default features)
cargo build --release

# just one module
cargo build --no-default-features --features window-hider
```

## CLI usage

```sh
# Root help
cargo run -- --help

# Window hider
cargo run -- window-hider list
cargo run -- window-hider hide                     # minimize a random window
cargo run -- window-hider hide --title "Untitled"
cargo run -- window-hider restore <HWND>
cargo run -- window-hider loop --min 10 --max 60   # daemon

# Mouse teleporter
cargo run -- mouse-teleporter resolution
cargo run -- mouse-teleporter teleport <X> <Y>
cargo run -- mouse-teleporter random
cargo run -- mouse-teleporter loop

# Window wobbler
cargo run -- window-wobbler foreground --direction both --min 2 --max 10
cargo run -- window-wobbler random --duration 3 --min 4 --max 12
cargo run -- window-wobbler title "Notepad"

# Window party (screen scramble)
cargo run -- window-party --grid 20 --duration 120
cargo run -- window-party --animation galaxy --cycle 15 --seed 42
```

Run any subcommand with `--help` for its full options. `window-party` supports
`LEFT`/`RIGHT` to switch animations, `Space` to pause, and `Esc` to end early
(disable with `--no-interactive`).

## Using as a library

```rust
use windows_troll::modules::window_wobbler::{wobble_foreground_window, WobbleSettings};

wobble_foreground_window(WobbleSettings::default());
```

## Architecture

```
src/
├── lib.rs            # crate root; exports `desktop` and `modules`
├── desktop.rs        # shared window enumeration (WindowInfo, list_windows)
├── main.rs           # CLI entry: builds the root Command from the registry
├── cli/
│   ├── mod.rs        # CliModule trait + all() registry
│   └── modules/      # per-module CLI implementations (one per module)
└── modules/          # the library modules themselves (clap-free)
    └── window_hider/
        ├── mod.rs
        ├── mouse_teleporter/...
        ├── window_wobbler/...
        └── window_party/
            ├── mod.rs
            ├── capture.rs     # screen capture (BitBlt)
            ├── grid.rs        # grid tile easing
            └── animations.rs  # 18 animation styles
```