diff options
-rw-r--r-- | dwl.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -243,7 +243,9 @@ static struct wl_list independents; static struct wlr_xdg_decoration_manager_v1 *xdeco_mgr; static struct wlr_cursor *cursor; +static struct wlr_xcursor *xcursor; static struct wlr_xcursor_manager *cursor_mgr; +static struct wlr_xcursor_manager *xcursor_mgr; static struct wlr_seat *seat; static struct wl_list keyboards; @@ -1588,6 +1590,20 @@ setup(void) wl_signal_add(&xwayland->events.ready, &xwayland_ready); wl_signal_add(&xwayland->events.new_surface, &new_xwayland_surface); + /* + * Create the XWayland cursor manager at scale 1, setting its default + * pointer to match the rest of dwl. + */ + xcursor_mgr = wlr_xcursor_manager_create(NULL, 24); + wlr_xcursor_manager_load(xcursor_mgr, 1); + xcursor = wlr_xcursor_manager_get_xcursor(xcursor_mgr, "left_ptr", 1); + if (xcursor) { + wlr_xwayland_set_cursor(xwayland, + xcursor->images[0]->buffer, xcursor->images[0]->width * 4, + xcursor->images[0]->width, xcursor->images[0]->height, + xcursor->images[0]->hotspot_x, xcursor->images[0]->hotspot_y); + } + setenv("DISPLAY", xwayland->display_name, true); } else { fprintf(stderr, "failed to setup XWayland X server, continuing without it\n"); |