mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-26 14:45:58 +01:00
xwayland: don't set DISPLAY
Let the compositor set it. This allows for multiple Xwayland instances to run at the same time. Fixes https://github.com/swaywm/wlroots/issues/1442
This commit is contained in:
parent
fb106eb979
commit
9601019192
3 changed files with 10 additions and 13 deletions
|
@ -24,7 +24,6 @@ struct wlr_xwayland {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
struct wl_client *client;
|
struct wl_client *client;
|
||||||
struct wl_event_source *sigusr1_source;
|
struct wl_event_source *sigusr1_source;
|
||||||
struct wl_listener client_destroy;
|
|
||||||
struct wlr_xwm *xwm;
|
struct wlr_xwm *xwm;
|
||||||
struct wlr_xwayland_cursor *cursor;
|
struct wlr_xwayland_cursor *cursor;
|
||||||
int wm_fd[2], wl_fd[2];
|
int wm_fd[2], wl_fd[2];
|
||||||
|
@ -34,10 +33,9 @@ struct wlr_xwayland {
|
||||||
/* Anything above display is reset on Xwayland restart, rest is conserved */
|
/* Anything above display is reset on Xwayland restart, rest is conserved */
|
||||||
|
|
||||||
int display;
|
int display;
|
||||||
|
char display_name[16];
|
||||||
int x_fd[2];
|
int x_fd[2];
|
||||||
struct wl_event_source *x_fd_read_event[2];
|
struct wl_event_source *x_fd_read_event[2];
|
||||||
struct wl_listener display_destroy;
|
|
||||||
|
|
||||||
bool lazy;
|
bool lazy;
|
||||||
|
|
||||||
struct wl_display *wl_display;
|
struct wl_display *wl_display;
|
||||||
|
@ -49,8 +47,6 @@ struct wlr_xwayland {
|
||||||
struct wl_signal new_surface;
|
struct wl_signal new_surface;
|
||||||
} events;
|
} events;
|
||||||
|
|
||||||
struct wl_listener seat_destroy;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a custom event handler to xwayland. Return 1 if the event was
|
* Add a custom event handler to xwayland. Return 1 if the event was
|
||||||
* handled or 0 to use the default wlr-xwayland handler. wlr-xwayland will
|
* handled or 0 to use the default wlr-xwayland handler. wlr-xwayland will
|
||||||
|
@ -58,6 +54,10 @@ struct wlr_xwayland {
|
||||||
*/
|
*/
|
||||||
int (*user_event_handler)(struct wlr_xwm *xwm, xcb_generic_event_t *event);
|
int (*user_event_handler)(struct wlr_xwm *xwm, xcb_generic_event_t *event);
|
||||||
|
|
||||||
|
struct wl_listener client_destroy;
|
||||||
|
struct wl_listener display_destroy;
|
||||||
|
struct wl_listener seat_destroy;
|
||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -382,6 +382,8 @@ struct roots_desktop *desktop_create(struct roots_server *server,
|
||||||
&desktop->xwayland_surface);
|
&desktop->xwayland_surface);
|
||||||
desktop->xwayland_surface.notify = handle_xwayland_surface;
|
desktop->xwayland_surface.notify = handle_xwayland_surface;
|
||||||
|
|
||||||
|
setenv("DISPLAY", desktop->xwayland->display_name, true);
|
||||||
|
|
||||||
if (wlr_xcursor_manager_load(desktop->xcursor_manager, 1)) {
|
if (wlr_xcursor_manager_load(desktop->xcursor_manager, 1)) {
|
||||||
wlr_log(WLR_ERROR, "Cannot load XWayland XCursor theme");
|
wlr_log(WLR_ERROR, "Cannot load XWayland XCursor theme");
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,12 +165,9 @@ static void xwayland_finish_display(struct wlr_xwayland *wlr_xwayland) {
|
||||||
|
|
||||||
unlink_display_sockets(wlr_xwayland->display);
|
unlink_display_sockets(wlr_xwayland->display);
|
||||||
wlr_xwayland->display = -1;
|
wlr_xwayland->display = -1;
|
||||||
unsetenv("DISPLAY");
|
wlr_xwayland->display_name[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool xwayland_start_display(struct wlr_xwayland *wlr_xwayland,
|
|
||||||
struct wl_display *wl_display);
|
|
||||||
|
|
||||||
static bool xwayland_start_server(struct wlr_xwayland *wlr_xwayland);
|
static bool xwayland_start_server(struct wlr_xwayland *wlr_xwayland);
|
||||||
static bool xwayland_start_server_lazy(struct wlr_xwayland *wlr_xwayland);
|
static bool xwayland_start_server_lazy(struct wlr_xwayland *wlr_xwayland);
|
||||||
|
|
||||||
|
@ -284,10 +281,8 @@ static bool xwayland_start_display(struct wlr_xwayland *wlr_xwayland,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char display_name[16];
|
snprintf(wlr_xwayland->display_name, sizeof(wlr_xwayland->display_name),
|
||||||
snprintf(display_name, sizeof(display_name), ":%d", wlr_xwayland->display);
|
":%d", wlr_xwayland->display);
|
||||||
setenv("DISPLAY", display_name, true);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue