diff --git a/src/xwayland/selection.c b/src/xwayland/selection.c
index 0ec571a..cd49289 100644
--- a/src/xwayland/selection.c
+++ b/src/xwayland/selection.c
@@ -149,6 +149,7 @@
 {
 	struct x11_data_source *source;
 	struct weston_compositor *compositor;
+	struct weston_seat *seat = weston_wm_pick_seat(wm);
 	xcb_get_property_cookie_t cookie;
 	xcb_get_property_reply_t *reply;
 	xcb_atom_t *value;
@@ -194,7 +195,7 @@
 	}
 
 	compositor = wm->server->compositor;
-	wl_seat_set_selection(&compositor->seat->seat, &source->base,
+	wl_seat_set_selection(&seat->seat, &source->base,
 			      wl_display_next_serial(compositor->wl_display));
 
 	free(reply);
@@ -422,7 +423,7 @@
 weston_wm_send_data(struct weston_wm *wm, xcb_atom_t target, const char *mime_type)
 {
 	struct wl_data_source *source;
-	struct wl_seat *seat = &wm->server->compositor->seat->seat;
+	struct weston_seat *seat = weston_wm_pick_seat(wm);
 	int p[2];
 
 	if (pipe2(p, O_CLOEXEC | O_NONBLOCK) == -1) {
@@ -440,7 +441,7 @@
 						   weston_wm_read_data_source,
 						   wm);
 
-	source = seat->selection_data_source;
+	source = seat->seat.selection_data_source;
 	source->send(source, mime_type, p[1]);
 }
 
@@ -550,6 +551,7 @@
 	xcb_xfixes_selection_notify_event_t *xfixes_selection_notify =
 		(xcb_xfixes_selection_notify_event_t *) event;
 	struct weston_compositor *compositor;
+	struct weston_seat *seat = weston_wm_pick_seat(wm);
 	uint32_t serial;
 
 	weston_log("xfixes selection notify event: owner %d\n",
@@ -561,7 +563,7 @@
 			 * proxy selection.  Clear the wayland selection. */
 			compositor = wm->server->compositor;
 			serial = wl_display_next_serial(compositor->wl_display);
-			wl_seat_set_selection(&compositor->seat->seat, NULL, serial);
+			wl_seat_set_selection(&seat->seat, NULL, serial);
 		}
 
 		wm->selection_owner = XCB_WINDOW_NONE;
@@ -663,7 +665,7 @@
 void
 weston_wm_selection_init(struct weston_wm *wm)
 {
-	struct wl_seat *seat;
+	struct weston_seat *seat;
 	uint32_t values[1], mask;
 
 	wm->selection_request.requestor = XCB_NONE;
@@ -693,9 +695,9 @@
 	xcb_xfixes_select_selection_input(wm->conn, wm->selection_window,
 					  wm->atom.clipboard, mask);
 
-	seat = &wm->server->compositor->seat->seat;
+	seat = weston_wm_pick_seat(wm);
 	wm->selection_listener.notify = weston_wm_set_selection;
-	wl_signal_add(&seat->selection_signal, &wm->selection_listener);
+	wl_signal_add(&seat->seat.selection_signal, &wm->selection_listener);
 
 	weston_wm_set_selection(&wm->selection_listener, seat);
 }
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index d724d47..e705fec 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -879,6 +879,13 @@
 	}
 }
 
+struct weston_seat *
+weston_wm_pick_seat(struct weston_wm *wm)
+{
+	return container_of(wm->server->compositor->seat_list.next,
+			    struct weston_seat, link);
+}
+
 static void
 weston_wm_window_handle_moveresize(struct weston_wm_window *window,
 				   xcb_client_message_event_t *client_message)
@@ -895,7 +902,7 @@
 	};
 
 	struct weston_wm *wm = window->wm;
-	struct weston_seat *seat = wm->server->compositor->seat;
+	struct weston_seat *seat = weston_wm_pick_seat(wm);
 	int detail;
 	struct weston_shell_interface *shell_interface =
 		&wm->server->compositor->shell_interface;
@@ -1047,6 +1054,7 @@
 	xcb_button_press_event_t *button = (xcb_button_press_event_t *) event;
 	struct weston_shell_interface *shell_interface =
 		&wm->server->compositor->shell_interface;
+	struct weston_seat *seat = weston_wm_pick_seat(wm);
 	struct weston_wm_window *window;
 	enum theme_location location;
 	struct theme *t = wm->theme;
@@ -1068,8 +1076,7 @@
 
 		switch (location) {
 		case THEME_LOCATION_TITLEBAR:
-			shell_interface->move(window->shsurf,
-					      wm->server->compositor->seat);
+			shell_interface->move(window->shsurf, seat);
 			break;
 		case THEME_LOCATION_RESIZING_TOP:
 		case THEME_LOCATION_RESIZING_BOTTOM:
@@ -1080,8 +1087,7 @@
 		case THEME_LOCATION_RESIZING_BOTTOM_LEFT:
 		case THEME_LOCATION_RESIZING_BOTTOM_RIGHT:
 			shell_interface->resize(window->shsurf,
-						wm->server->compositor->seat,
-						location);
+						seat, location);
 			break;
 		default:
 			break;
diff --git a/src/xwayland/xwayland.h b/src/xwayland/xwayland.h
index 23c6a77..bd127b7 100644
--- a/src/xwayland/xwayland.h
+++ b/src/xwayland/xwayland.h
@@ -152,3 +152,5 @@
 void
 weston_wm_destroy(struct weston_wm *wm);
 
+struct weston_seat *
+weston_wm_pick_seat(struct weston_wm *wm);
