diff --git a/20260627_19h55m44s_grim.png b/20260627_19h55m44s_grim.png new file mode 100644 index 0000000..6b90ba5 Binary files /dev/null and b/20260627_19h55m44s_grim.png differ diff --git a/20260627_19h59m14s_grim.png b/20260627_19h59m14s_grim.png new file mode 100644 index 0000000..aea8fec Binary files /dev/null and b/20260627_19h59m14s_grim.png differ diff --git a/dockapp_test.png b/dockapp_test.png new file mode 100644 index 0000000..b4b070c Binary files /dev/null and b/dockapp_test.png differ diff --git a/dockapp_test2.png b/dockapp_test2.png new file mode 100644 index 0000000..61cde9c Binary files /dev/null and b/dockapp_test2.png differ diff --git a/dockapp_test3.png b/dockapp_test3.png new file mode 100644 index 0000000..a7be939 Binary files /dev/null and b/dockapp_test3.png differ diff --git a/dockapp_test4.png b/dockapp_test4.png new file mode 100644 index 0000000..c6aa8bf Binary files /dev/null and b/dockapp_test4.png differ diff --git a/src/Makefile b/src/Makefile index 072b6c5..6800de3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -541,7 +541,7 @@ LIBEXIF = LIBM = -lm LIBOBJS = LIBRARY_SEARCH_PATH = -L${libdir} -LIBS = +LIBS = -lxcb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBXINERAMA = -lXinerama LIBXMU = -lXmu diff --git a/src/backend/wayland/wl_types.h b/src/backend/wayland/wl_types.h index 23c035b..51ee671 100644 --- a/src/backend/wayland/wl_types.h +++ b/src/backend/wayland/wl_types.h @@ -46,6 +46,7 @@ struct wl_toplevel_view { /* Path 1: geometry listener — keeps scene node in sync when X11 window moves. */ struct wl_listener xw_geometry_listener; struct wl_listener xw_request_configure_listener; + struct wl_listener xw_set_hints_listener; struct wl_listener xw_surface_map_listener; /* fires when wlr_surface maps */ /* Phase 18: scene graph tree for this surface (NULL if scene unavailable). */ struct wlr_scene_tree *scene_node; diff --git a/src/backend/wayland/wl_xwayland.c b/src/backend/wayland/wl_xwayland.c index 2d37ccc..e4d36ba 100644 --- a/src/backend/wayland/wl_xwayland.c +++ b/src/backend/wayland/wl_xwayland.c @@ -106,6 +106,14 @@ handle_xwayland_request_configure(struct wl_listener *listener, void *data) ev->x, ev->y, ev->width, ev->height); } +static void +handle_xwayland_set_hints(struct wl_listener *listener, void *data) +{ + (void)listener; (void)data; + /* Placeholder: hints are now available on the xw_surface. + * wManageWindow reads them via prop_get_wm_hints at map time. */ +} + static void handle_xwayland_request_fullscreen(struct wl_listener *listener, void *data) { @@ -254,6 +262,7 @@ handle_xwayland_destroy(struct wl_listener *listener, void *data) wl_list_remove(&view->title_listener.link); wl_list_remove(&view->request_fullscreen_listener.link); wl_list_remove(&view->xw_request_configure_listener.link); + wl_list_remove(&view->xw_set_hints_listener.link); if (view->xw_surface_map_listener.link.next && view->xw_surface_map_listener.link.next != &view->xw_surface_map_listener.link) wl_list_remove(&view->xw_surface_map_listener.link); @@ -418,6 +427,7 @@ handle_xwayland_new_surface(struct wl_listener *listener, void *data) view->title_listener.notify = handle_xwayland_set_class; view->xw_geometry_listener.notify = handle_xwayland_set_geometry; view->xw_request_configure_listener.notify = handle_xwayland_request_configure; + view->xw_set_hints_listener.notify = handle_xwayland_set_hints; view->request_fullscreen_listener.notify = handle_xwayland_request_fullscreen; wl_signal_add(&xw->events.associate, &view->map_listener); @@ -426,6 +436,7 @@ handle_xwayland_new_surface(struct wl_listener *listener, void *data) wl_signal_add(&xw->events.set_class, &view->title_listener); wl_signal_add(&xw->events.set_geometry, &view->xw_geometry_listener); wl_signal_add(&xw->events.request_configure, &view->xw_request_configure_listener); + wl_signal_add(&xw->events.set_hints, &view->xw_set_hints_listener); wl_signal_add(&xw->events.request_fullscreen, &view->request_fullscreen_listener); wl_list_insert(&wl_state.toplevel_list, &view->link); @@ -449,13 +460,6 @@ handle_xwayland_new_surface(struct wl_listener *listener, void *data) xw->class ? xw->class : "(none)", xw->title ? xw->title : "(none)", xw->x, xw->y); - - { - int cw = (xw->width >= 64) ? xw->width : 640; - int ch = (xw->height >= 64) ? xw->height : 480; - wlr_xwayland_surface_configure(xw, - (int16_t)view->x, (int16_t)view->y, cw, ch); - } } /* ------------------------------------------------------------------ */