# winman-raylib — Implementation Plan A compositing X11 window manager powered by raylib, written in C. Each step is atomic: it produces something you can build, run, and visually verify before moving to the next step. Each phase is documented in its own file below. --- ## Phases | Phase | File | Summary | |-------|------|---------| | 0 | [phase-00-skeleton.md](plan/phase-00-skeleton.md) | Project skeleton & dev environment | | 1 | [phase-01-raylib-window.md](plan/phase-01-raylib-window.md) | Raylib window inside Xephyr | | 2 | [phase-02-window-manager.md](plan/phase-02-window-manager.md) | Become a window manager | | 3 | [phase-03-compositing.md](plan/phase-03-compositing.md) | Redirect & capture window contents | | 4 | [phase-04-input.md](plan/phase-04-input.md) | Input & focus | | 5 | [phase-05-lifecycle.md](plan/phase-05-lifecycle.md) | Window lifecycle polish | | 6 | [phase-06-effects.md](plan/phase-06-effects.md) | Visual effects | | 7 | [phase-07-ewmh.md](plan/phase-07-ewmh.md) | EWMH basics | | 8 | [phase-08-zero-copy.md](plan/phase-08-zero-copy.md) | GLX texture-from-pixmap (zero-copy) | | 9 | [phase-09-cursor.md](plan/phase-09-cursor.md) | Cursor rendering | | 10 | [phase-10-robustness.md](plan/phase-10-robustness.md) | Robustness & cleanup | --- ## Future Phases (not yet planned in detail) - **Phase 11** — Multi-monitor support (XRandR) - **Phase 12** — Virtual desktops / workspaces - **Phase 13** — Window animations (open, close, minimize) - **Phase 14** — Blur and advanced shader effects - **Phase 15** — RmlUi integration for HTML/CSS-driven decorations/panels - **Phase 16** — Configuration system (keybinds, rules, themes) - **Phase 17** — Composite Overlay Window (COW) for production use outside Xephyr - **Phase 18** — Tiling layout modes --- ## Architecture Decisions - **Language:** C - **Build system:** Make - **Rendering:** raylib (creates the GL context and window) - **X11 plumbing:** raw Xlib + GLX alongside raylib in the same process - **Dev environment:** Xephyr nested X server on `:1` - **Compositing surface:** raylib's own window (not the COW), suitable for Xephyr dev; COW migration in Phase 17 - **Initial texture path:** CPU copy via `XGetImage` (Phase 3), upgraded to zero-copy `GLX_EXT_texture_from_pixmap` in Phase 8