-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
Implement the window manager that handles window placement, sizing, stacking order, and user interactions (move, resize, minimize, maximize, close).
Goals
- Window placement policies
- Move and resize operations
- Minimize, maximize, close
- Z-order management (raise, lower)
- Window decorations integration
Implementation
Window Operations
```c
void wm_move_window(struct window *w, int x, int y);
void wm_resize_window(struct window *w, int width, int height);
void wm_raise_window(struct window *w); // Bring to front
void wm_lower_window(struct window *w); // Send to back
void wm_close_window(struct window *w);
void wm_minimize_window(struct window *w);
void wm_maximize_window(struct window *w);
```
Window Placement
```c
// Cascade: Each new window offset from previous
void wm_place_cascade(struct window *w) {
static int offset = 0;
w->x = 100 + offset;
w->y = 100 + offset;
offset = (offset + 30) % 200;
}
// Center: Place in screen center
void wm_place_center(struct window *w) {
w->x = (screen_width - w->width) / 2;
w->y = (screen_height - w->height) / 2;
}
```
Timeline
Total: 3-4 weeks
Definition of Done
- Windows can be moved
- Windows can be resized
- Minimize/maximize/close work
- Z-order management works
- Placement policies work
- Smooth user experience
Dependencies
- Implement compositor core #403: Compositor core
- Implement GUI input event system #399: Input events
See docs/road/road_to_gui.md for complete roadmap.