blob: a50dabfa995d57e39636a83e4c27e45af69a925f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# 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
|