From a0a27b56d53990ddb027e090df62547524dad352 Mon Sep 17 00:00:00 2001 From: Window Maker Date: Sat, 23 May 2026 14:30:29 +0200 Subject: [PATCH] Update ACTION_PLAN.md and WAYLAND_ROADMAP.md --- ACTION_PLAN.md | 17 ++++++++++++++-- WAYLAND_ROADMAP.md | 48 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/ACTION_PLAN.md b/ACTION_PLAN.md index f5cbdbd..a584292 100644 --- a/ACTION_PLAN.md +++ b/ACTION_PLAN.md @@ -179,7 +179,8 @@ Key architecture point: wrlib's `convert_image` function pointer (`context->conv - **Xlib calls eliminated**: 1 - **Blocked by**: nothing -### B.2 Eliminate `USE_DOCK_XDND` guards in `appicon.c` +### B.2 ~~Eliminate `USE_DOCK_XDND` guards in `appicon.c`~~ ✅ (commit 3d10085) +**Status**: DONE — dock_shadow frame_buf created for icon drag ghost overlay. All vtable ops (window_move, map, unmap, set_background_pixmap) already handle frame_bufs. - **File**: `src/appicon.c` — 4 sites (lines 52, 131, 315, 338) - **Operation**: The XDND setup and handling code is X11-specific. It should be moved behind a vtable slot: 1. Lines 52, 131: Move `#include "xdnd.h"` and `wXDNDMakeAwareness()` call into the X11 backend's `appicon_show` implementation @@ -194,6 +195,18 @@ Key architecture point: wrlib's `convert_image` function pointer (`context->conv - **Xlib calls eliminated**: 1 `_x11_raw` access in `event.c` - **Blocked by**: nothing +### Phase B Wayland Implementation — COMPLETE (2026-05-23) + +All Wayland-specific Phase B tasks from WAYLAND_ROADMAP.md are done: + +| Task | Description | Status | +|------|-------------|--------| +| B2 | Dock icon drag & drop — dock_shadow frame_buf created | ✅ commit 3d10085 | +| B3 | Dock auto-launch on login — pure policy (fork/exec), works as-is | ✅ no code needed | +| B4 | Clip workspace indicator — number + name rendered on clip icon | ✅ commit 3687ff0 | +| B5 | Drawer icon — directional arrow rendered | ✅ commit 9ed1c19 | +| B6 | Icon bounce on launch — `doAppBounce` uses vtable `window_move`, already works | ✅ no code needed | + --- ## Phase C: Visual Polish & Animations @@ -519,7 +532,7 @@ WAVE 1 (independent, no prerequisites): ~~A4.1 workspace.c USE_XINERAMA → backend-neutral~~ ✅ A5.1 ~~switchpanel.c XEvent* → WMEvent*~~ ✅ ~~B.1 appicon.c XClearArea → vtable~~ ✅ - B.2 appicon.c USE_DOCK_XDND → backend + B.2 ~~appicon.c USE_DOCK_XDND → backend~~ ✅ B.3 ~~dock.c/h XEvent* → WMEvent*~~ ✅ ~~C.1 moveres.c XDrawLine → overlay vtable~~ ⏭️ (inside `#if 0` — dead code, skip) D.1 widgets.c screen init → backend guard diff --git a/WAYLAND_ROADMAP.md b/WAYLAND_ROADMAP.md index 229db7f..48ffbcf 100644 --- a/WAYLAND_ROADMAP.md +++ b/WAYLAND_ROADMAP.md @@ -1,6 +1,6 @@ # WindowMaker Wayland Port — Roadmap -Last updated: 2026-05-18 +Last updated: 2026-05-23 ## Governing Principles @@ -50,7 +50,7 @@ Three major libraries: --- -## Completed (as of 2026-05-18) +## Completed (as of 2026-05-23) - Backend vtable abstraction (150+ slots) - Policy layer fully X11-free (zero direct Xlib calls in WM core) @@ -83,6 +83,21 @@ Three major libraries: - **A4 Workspace switching**: map/unmap via vtable already worked; added workspace name badge overlay (pixman text rendering in WL_LAYER_OVERLAY, fade animation via new `workspace_badge_get_background` vtable slot) - **A7 Placement**: verified pure policy code, zero backend calls needed - **B1 App icon rendering**: wl_appicon_paint/wl_icon_paint already implemented; fixed wl_appicon_show (was no-op, now calls paint_app_icon for initial placement + map) +- **Phase B complete** (2026-05-23): + - B2: dock_shadow frame_buf for icon drag ghost overlay (commit 3d10085) + - B3: Auto-launch — pure policy (fork/exec), works as-is + - B4: Clip workspace indicator — workspace number + name rendered on clip icon (commit 3687ff0) + - B5: Drawer icon renders directional arrow (commit 9ed1c19) + - B6: Icon bounce — already works (`doAppBounce` uses vtable `window_move`; vtable slot correctly a no-op, same as X11) +- **Bug fixes** (2026-05-23): + - Titlebar buttons not responding to clicks (commit 8fb4083) + - Modal dialogs not receiving mouse clicks (commit 68d4301) + - WINGs widget clicks on Wayland — child view hit-testing (commit ee8489e) + - WINGs dialog click-to-focus lookup (commits 7fe8121, 403ee93) + - Titlebar button scene_bufs enabled for click and visibility (commit 0cf867d) + - Button scene_bufs raised above titlebar (commit a34d828) + - Titlebar button rendering — proper colors, bevel, pressed state (commit 5a4d989) + - Button bevel colors derived from titlebar background (commit f3cb593) --- @@ -107,11 +122,13 @@ Priority: HIGH — needed for daily-driver use. | # | Task | Key Files | Complexity | |---|------|-----------|------------| | B1 | ~~App icon rendering (load .tiff/.png, render into dock)~~ | appicon.c, wrlib loaders, vtable appicon_show | ✅ Done | -| B2 | Dock icon drag & drop (reorder, add/remove) | dock.c DnD handlers | Medium | -| B3 | Dock auto-launch on login | dock.c session restore | Low | -| B4 | Clip workspace indicator (number, arrows) | dock.c clip paint | Low | -| B5 | Drawer support (horizontal dock extension) | dock.c drawer subsystem | Medium | -| B6 | Icon bounce on launch | vtable appicon_bounce | Low | +| B2 | ~~Dock icon drag & drop (reorder, add/remove)~~ | dock.c DnD handlers | ✅ Done | +| B3 | ~~Dock auto-launch on login~~ | dock.c session restore | ✅ Done | +| B4 | ~~Clip workspace indicator (number, arrows)~~ | dock.c clip paint | ✅ Done | +| B5 | ~~Drawer support (horizontal dock extension)~~ | dock.c drawer subsystem | ✅ Done | +| B6 | ~~Icon bounce on launch~~ | vtable appicon_bounce | ✅ Done | + +**Phase B: COMPLETE** --- @@ -226,26 +243,29 @@ For running without a host compositor: ``` NOW (daily-driver basics): - A1. Stacking (raise/lower) - A2. ~~Maximize~~ ✅ - A3. ~~Shade~~ ✅ + ~~A1. Stacking (raise/lower)~~ ✅ + ~~A2. Maximize~~ ✅ + ~~A3. Shade~~ ✅ ~~A4. Workspace switching~~ ✅ ~~A5. Alt-Tab cycling~~ ✅ - A6. Icon/minimize + ~~A6. Icon/minimize~~ ✅ ~~A7. Placement (verify)~~ ✅ NEXT (visual completeness): - B1. App icon rendering (wrlib → pixman) - F1. wrlib RContext for Wayland + ~~B1. App icon rendering (wrlib → pixman)~~ ✅ + ~~F1. wrlib RContext for Wayland~~ ✅ C1. Slide animations + C2. Menu scrolling C3. Balloon tooltips + C4. Cursor themes + C5. Window opacity THEN (full feature parity): D*. Test all WINGs widgets E1. Window Inspector E4. Icon Chooser G*. Session persistence - B2-B6. Full dock features + ~~B2-B6. Full dock features~~ ✅ LATER (production-ready): H1. Multi-monitor