0%
[sys] Initializing session...
FWM • Wayland Compositor • Box2D 3.x

Welcome to a world where
physics
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.

🎮 Try Sandbox
Feature Index

Everything
fwm
Can Do

Browse features by system architecture, physics engine details, and window management controls.

Rigid-Body Physics EngineBox2D 3.x

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.

Rigid-Body Physics Enginemass = "ram"

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!

Rigid-Body Physics EngineSuper + G

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.

Rigid-Body Physics EngineSuper + R

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.

Visuals & Effects[cava] mode="both"

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!

Visuals & Effects[sound] collisions=true

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.

Visuals & Effectseffects.jelly / squash

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.

Visuals & EffectsPrint / Super+Shift+S

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 & World LayoutSuper+A -> Z

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.

3D & World LayoutSuper + H / L / 0-9

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.

3D & World LayoutSuper + Shift + P

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.

Window ManagementSuper + T / Alt + Space

Per-Desktop Hybrid Tiling & Floating

Each desktop chooses its mode independently: Hyprland-style BSP dwindle splits, floating overlap mode, or real physics mode.

Window ManagementSuper + W / Tab

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.

Window ManagementSuper + Space

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.

IPC & Scriptingfwmctl set/dispatch

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.

Desktop Integrationfwm-session

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
fwm?

Choose your preferred installation method. Supported on Arch, Debian/Ubuntu, Fedora, NixOS, and Void Linux.

$curl -sL https://fwm-website.vercel.app/install-fwm.sh | bash