Skip to content

Repository files navigation

Pigeon

A lightweight wood-pigeon desktop pet for Windows 10/11. Pigeon perches on visible windows, wanders with head-bobbing steps, eats cursor-dropped crumbs, blinks, preens and sleeps, flies away when approached or when its window closes, and develops persistent hunger, energy and trust.

Requirements

  • Windows 10 or Windows 11 (64-bit)
  • The .NET 8 SDK when building from source

The self-contained release build does not require .NET on the destination computer.

Portable Windows version

Pigeon can run as a portable Windows application without an installer:

  1. Download Pigeon-win-x64-portable.zip from the latest release.
  2. Optionally verify the ZIP with the accompanying SHA256SUMS.txt file.
  3. Extract the ZIP to any folder.
  4. Run Pigeon.exe.

.NET does not need to be installed. Pigeon stores its settings in %LocalAppData%\Pigeon\settings.json, so removing the extracted application folder does not remove your preferences. Each tagged version is built and tested automatically on GitHub Actions before it is attached to a release.

Run from source

dotnet run --project Pigeon\Pigeon.csproj -c Release

Controls

  1. Launch the app.
  2. Press the configured seed shortcut (Ctrl+Alt+T by default) to drop seeds at the pointer, or choose Drop seeds at cursor from the tray menu. Click the shortcut box in Settings and press a new combination to change it. Pigeon flies over, pecks, becomes less hungry, and gradually learns to trust you.
  3. Use the pigeon icon in the notification area to see its mood and needs, pause, toggle wandering, change size, flight speed, or scare distance, reset defaults, or quit.
  4. Move the pointer over a pigeon to scare it. Click quickly during the short hover grace period for a feather reaction.

Choose Settings… for the full controls: select 1–6 independently moving pigeons, choose 1–20 seeds per drop, name the flock, define the global seed shortcut, select exact flight speed and scare distance, toggle wandering and feather particles, and control automatic fullscreen hiding. Count changes apply immediately without restarting. Direction changes use dedicated perspective frames instead of instantly mirroring or flattening the sprite. Borderless fullscreen apps and games hide the overlays automatically; ordinary maximized windows do not.

Turning uses four dedicated three-quarter and front-facing poses plus a small hop, so the pigeon visibly rotates in depth. Each shortcut adds the configured number of persistent individual seeds. Pigeons reserve different seeds, waddle to nearby food, fly to distant food, and remove each seed only when the measured beak anchor reaches it. Landings keep the feet planted while a short squash and pixel shadow settle the body onto the edge.

Frightened takeoffs leave a small stationary feather flutter at the takeoff point; clicking the pigeon produces a larger, longer burst. Feather overlays remain click-through and do not follow or clip against the moving pigeon window.

When at least two pigeons are active, an idle pair may occasionally begin a courtship display. The approaching pigeon faces its direction of travel, turns toward its partner after landing, and waits for the male's display. The male puffs up, performs repeated deep bows, and completes two small circling turns while the female watches. Courtship initially succeeds 50% of the time, shown by rising hearts; afterward, the female usually flies away while the male remains near the display spot.

The overlay does not take keyboard focus. Transparent pixels pass clicks to the window underneath. Settings are stored at %LocalAppData%\Pigeon\settings.json.

The size presets render at approximately 36, 48, and 64 logical body pixels. Pixel-art scaling remains nearest-neighbour for crisp edges.

Test and publish

From the repository root, run:

dotnet run --project Pigeon.Tests\Pigeon.Tests.csproj -c Release
dotnet publish Pigeon\Pigeon.csproj -c Release -r win-x64 --self-contained true -o publish\win-x64

The published folder is portable and does not require .NET to be installed on the destination PC.

Skins

Choose a bundled appearance from Settings > Appearance. The app includes the Wood pigeon and Luzon bleeding-heart skins, and switches without a restart.

Each skin lives under Assets/Skins/<skin-id>/ with movement.png, turning.png, and a skin.json manifest. Behavior requests semantic animation names such as idle, walk, peck, and fly; frame numbers stay inside the manifest. Required animations are validated at startup, while unknown optional animation requests fall back to idle. New skins preserve the existing 96x96 frame cells, transparent safety margin, foot baseline, and beak anchor.

Design notes

  • Uses Win32 window geometry and accessibility events; it does not capture the screen.
  • Uses top-level window edges, not individual browser tabs.
  • Supports multiple monitors and per-monitor DPI awareness. Flights prefer destinations on the current monitor, stay fully inside a physical screen, and retain one visual scale from takeoff through landing.
  • The expanded low-resolution sprite atlas contains dedicated idle, blink, two-step walking, pecking, preening, takeoff, flight, landing, and sleeping poses. Every sprite is component-extracted into a safe 96×96 cell with verified padding and stable anchors. Walking animates at about 12 FPS, wing poses at about 15 FPS, and flight movement at the display render rate.

Contributing

Bug reports and pull requests are welcome. Before opening a pull request, run the test command from the Test and publish section and keep all user-facing text in English.

See CHANGELOG.md for notable project changes.

License

Pigeon is available under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages