diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 202608d..d73d9d3 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -901,7 +901,21 @@ wl_window_fetch_name(WNativeWindow win, char **name_out) static Bool wl_window_get_icon_name(WNativeWindow win, char **name_out) -{ (void)win; *name_out = NULL; return False; } +{ + /* Phase 60: Wayland has no separate icon-name concept; return the + * XDG toplevel title (same as window_fetch_name) so the WM always + * has something to display in icon labels. */ + struct wl_toplevel_view *v = wl_find_view_by_id(win); + const char *title = (v && v->xdg_surface && v->xdg_surface->toplevel && + v->xdg_surface->toplevel->title) + ? v->xdg_surface->toplevel->title : NULL; + if (title) { + *name_out = strdup(title); + return True; + } + *name_out = NULL; + return False; +} static int wl_prop_get_wmaker_menu(WNativeWindow win, diff --git a/src/wsmap.c b/src/wsmap.c index 037f079..1e714c0 100644 --- a/src/wsmap.c +++ b/src/wsmap.c @@ -66,6 +66,9 @@ void wWorkspaceMapUpdate(WScreen *scr) { XImage *pimg; + if (!dpy || !scr->rcontext) + return; /* Wayland: no X11 root image to capture */ + pimg = XGetImage(dpy, scr->root_win, 0, 0, scr->scr_width, scr->scr_height, AllPlanes, ZPixmap); @@ -152,6 +155,9 @@ static void set_workspace_map_background_image(WWorkspaceMap *wsmap) { Pixmap pixmap, mask; + if (!wsmap->scr->rcontext) + return; /* Wayland: no X11 rendering context */ + if (wPreferences.wsmbackTexture->any.type == WTEX_PIXMAP) { RImage *tmp = wTextureRenderImage(wPreferences.wsmbackTexture, wsmap->wswidth, wsmap->wsheight, WREL_FLAT);