WTF — Wayland Tiling, F# Home Releases GitHub

WTF — a Wayland Tiling window manager, configured in F

This documentation is published at neftedollar.com/WTF/docs — rebuilt from docs/*.md on every push, so the site never drifts from these files.

WTF is a tiling Wayland compositor in the xMonad tradition: your window manager is a program, and its configuration is real F# code with autocomplete, type-checking, and hot-reload. Typos in your config are compile errors caught in your editor — not a black screen at login.

Design

F# brain, C body. All window-management logic — layouts, workspaces, focus, rules, your config — is a pure, fully-tested F# core (the brain). A thin C shim over wlroots + scenefx talks to the GPU, input devices and Wayland clients (the body). The brain decides where every window goes; the body just puts pixels there.

Agent-first. The entire WM state is one plain value that serializes to JSON, and every action is a semantic command (focus the browser, not press Super+J). Anything — a script, wtfctl, or an LLM agent — can read the world and drive it over a local socket. See wtfctl & the control socket.

Config is code. ~/.config/wtf/config.fsx is an F# script with a small declarative DSL. It hot-reloads on save. Machine-aware Type Providers give you Apps.Firefox.AppId (your installed apps) and Layouts.Bsp (valid layouts) as compile-checked literals. See Configuration.

Features

Where to go next

Page What it covers
Installation Requirements, build, install, first login
Quickstart Your first session, the default keys
Configuration The config.fsx DSL, end to end
Keybindings Chord syntax + the full default map
Appearance Borders, shadows, blur, wallpapers, ricing
wtfctl CLI control, raw JSON, the agent socket
Troubleshooting Logs, safe mode, crash recovery
FAQ Stability, F#, .NET-at-runtime, NVIDIA, multi-monitor, agents
Architecture The "F# brain, C body" split, repo layout
Config editing setup wtf-edit, F# LSP autocomplete

Found a problem on this page? Edit it on GitHub — the site rebuilds from docs/ automatically.