Beautiful interactive snowfall overlay for macOS
A lightweight menubar app that brings winter magic to your desktop with GPU-accelerated snowflakes that interact with your windows.
Features โข Installation โข Demo โข Configuration โข Privacy
- ๐จ GPU-Accelerated Rendering โ Powered by Metal for smooth performance with thousands of particles
- ๐ช Window Collision Physics โ Snowflakes realistically melt when landing on window borders
- ๐ฑ๏ธ Mouse Interaction โ Snowflakes react dynamically to cursor movement
- ๐ฌ๏ธ Wind Simulation โ Adjustable wind strength affects snowflake trajectories
- ๐ฅ๏ธ Multi-Monitor Support โ Works seamlessly across all connected displays
- 3 Built-in Presets: Light Snow, Comfortable Background, Blizzard
- Granular Controls:
- Speed range (0.1โ8.0)
- Size range (1โ25)
- Particle count (100โ10,000)
- Wind strength (0โ500)
- Privacy-Focused โ All processing happens locally; no data collection
Get automatic updates via Homebrew:
brew install --cask barredewe/cask/snowfall
- Download the latest release from Releases
- Unzip and move
Snowfall.appto/Applications - Launch and grant Screen Recording permission when prompted
Access settings via the menubar icon (โ๏ธ):
| Mode | Particles | Speed | Size | Wind | Best For |
|---|---|---|---|---|---|
| Light Snow | 800 | 0.2โ1.5 | 2โ12 | 0.5 | Minimal distraction |
| Comfortable | 2,000 | 0.5โ3.0 | 3โ15 | 1.0 | Balanced aesthetics |
| Blizzard | 6,000 | 2.0โ8.0 | 2โ20 | 4.0 | Maximum winter vibes |
| Custom | โ | โ | โ | โ | Manual tuning |
Window Interaction
Toggle collision physics for performance-critical workflows. When enabled:
- Uses
CGWindowListCopyWindowInfoAPI to detect window positions - Processes data in RAM only (no recording/storage)
- Snowflakes melt gradually upon contact
Mouse Influence Radius: 50px default
- Language: Swift 5.9+ with SwiftUI
- Graphics: Metal API for compute & render pipelines
- Physics: Custom particle system with SIMD2 vectors
- Platform: macOS 11.0+ (Big Sur and later)
SnowfallApp/
โโโ Common/
โ โโโ Views/
โ โ โโโ MenuBarSettings.swift # SwiftUI preferences UI
โ โ โโโ MetalSnowViewController.swift # MTKView controller
โ โโโ Settings.swift # Codable configuration
โ โโโ Snowflake.swift # Particle data structure
โ โโโ SnowRenderer.swift # Metal pipeline manager
โ โโโ WindowInfo.swift # CGWindowListCopyWindowInfo wrapper
โโโ SnowfallApp.swift # App entry point
โโโ SnowShader.metal # GPU kernels (compute + render)
- Compute Shader: Parallel particle updates on GPU
- Instanced Rendering: Single draw call for all particles
- Adaptive Caching: Window positions refreshed every 500ms
- Point Primitives: Efficient anti-aliased circles via fragment shader
- Xcode 15.0+
- macOS 13.0+ SDK
- Swift 5.9+
# Clone repository
git clone https://github.com/barredewe/snowfall.git
cd snowfall
# Open in Xcode
open Snowfall.xcodeproj
# Build & Run (โR)
Zero Data Collection Policy
Snowfall operates entirely offline:
- โ No network requests
- โ No analytics/tracking
- โ No third-party SDKs
- โ
All settings stored locally (
UserDefaults)
Permissions Explained:
- Screen Recording: Required only for window collision detection
- Accessibility: Alternative permission for older macOS versions
See PRIVACY.md for full policy.
Contributions are welcome!
Development Setup:
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Follow Swift API Design Guidelines
- Submit PR with detailed description
Apache 2.0 License - see LICENSE for details.
- Metal framework by Apple
- Inspiration from classic screensavers
- Icon design: SF Symbols
Barredewe
๐ฎ barredewe@gmail.com
๐ GitHub
If you enjoy Snowfall, please โญ star this repository!
Made with โ๏ธ in Russia