Welcome to a world where is not boring anymore.
Windows behave as real physical objects with mass, momentum, inertia, and velocity. Throw windows, stack them under Earth gravity, or watch them tumble in zero-g.
Everything Can Do
Browse features by system architecture, physics engine details, and window management controls.
Box2D 3.x Engine Integration
Powered by Box2D 3.x via src/physics.c: impulse-based collisions, proper mass ratios, resting contact and sleeping. No hand-rolled solver artifacts.
Dynamic Mass Modes (Size vs. RAM)
Window mass is set by area (0.0005 density) or application RSS memory from /proc/$PID/stat (mass = "ram"). Under RAM mode, a 2GB browser shoves a terminal aside!
Gravity Toggles & 1800 px/s Throw Limit
fwm starts in zero-g. Super+G cycles gravity steps (gravity = 981.0 px/s² at 100 px/m scale). Continuous 16-substep solver prevents tunneling under fast drags.
Free Rotation & Compound Pendulum
Super+R hands rotation to Box2D. Dragging by a corner calculates compound pendulum torque while stirring the mouse winds up rotational momentum.
CAVA Physical Spectrum Bars
Real-time 2048-point FFT audio loopback capture (src/cava.c + src/audio.c). Physical floor bars are kinematic bodies that throw windows into the air on heavy bass hits!
Procedural Audio Knock Synthesis
In-engine sound generation (src/sound.c + src/wav.c) produces 90ms collision clicks scaled by impact approach velocity and window mass—no external audio daemons needed.
9x9 Hooke's Law Spring Wobble Mesh
Dragged windows deform through a 9x9 spring lattice (src/wobble.c) using Hooke's Law springs (K_HOME=200, K_EDGE=1152). Bounces squash and stretch on hard floor impacts.
Interactive 3D Screenshot Peel
Taking a region screenshot (Print / Super+Shift+S) lifts a frozen copy off the screen, tilts/rotates it in 3D (src/screenshot.c), and flies it into the clipboard toast.
3D Cylinder Expo Ring & Desktops
Press Super+A then Z to turn virtual workspaces into a 3D perspective cylinder (src/expo.c). Orbit in 3D with middle-drag, click into workspaces, or drag windows across.
10 Virtual Desktops Continuous Strip
A continuous 10-screen-wide world in global coordinates. Smooth camera sliding, wrapping ring mode, and multi-monitor output mapping.
FFmpeg Video & Parallax Wallpapers
Software-decoded video wallpapers on dedicated threads (src/video.c) or multi-layer parallax images that pan as you navigate workspaces.
Per-Desktop Hybrid Tiling & Floating
Each desktop chooses its mode independently: Hyprland-style BSP dwindle splits, floating overlap mode, or real physics mode.
Tab-Stacks & Grouping
Group multiple windows into a single physics body with chevron tab bars (src/group.c). Cycle tabs with Super+Tab or drop windows onto bars.
Fuzzy App Launcher & Icon Lookup
Search desktop applications with XDG icons (src/ui/launcher.c) backed by Box2D spring tile arrivals—no external rofi process required.
fwmctl Control Socket & Event Streaming
Control compositor state over Unix domain sockets (src/ipc.c). Stream live JSON events (window_open, desktop, gravity) or tune physics live with fwmctl set.
fwm-session Restore & Full Protocol Suite
fwm-session supervisor relaunches layouts after crashes. Native support for xdg-shell, Xwayland, layer-shell, session-lock, gamma-control, and xdg-activation.
Ready to experience
Choose your preferred installation method. Supported on Arch, Debian/Ubuntu, Fedora, NixOS, and Void Linux.