Index: uspace/srv/hid/display/display.c
===================================================================
--- uspace/srv/hid/display/display.c	(revision 6828a56f6f3bca46ff6f9dee859fbd15fd17292e)
+++ uspace/srv/hid/display/display.c	(revision b076dfbb9aa63d562c009d67d8e9dd2d06e4b795)
@@ -597,4 +597,15 @@
 }
 
+/** Get default seat in display.
+ *
+ * @param disp Display
+ * @return First seat or @c NULL if there is none
+ */
+ds_seat_t *ds_display_default_seat(ds_display_t *disp)
+{
+	/* XXX Probably not the best solution */
+	return ds_display_first_seat(disp);
+}
+
 /** Find seat by ID.
  *
@@ -640,5 +651,5 @@
 
 	/* If none was found, return the default seat */
-	return ds_display_first_seat(disp);
+	return ds_display_default_seat(disp);
 }
 
Index: uspace/srv/hid/display/display.h
===================================================================
--- uspace/srv/hid/display/display.h	(revision 6828a56f6f3bca46ff6f9dee859fbd15fd17292e)
+++ uspace/srv/hid/display/display.h	(revision b076dfbb9aa63d562c009d67d8e9dd2d06e4b795)
@@ -85,4 +85,5 @@
 extern ds_seat_t *ds_display_first_seat(ds_display_t *);
 extern ds_seat_t *ds_display_next_seat(ds_seat_t *);
+extern ds_seat_t *ds_display_default_seat(ds_display_t *);
 extern ds_seat_t *ds_display_find_seat(ds_display_t *, ds_seat_id_t);
 extern ds_seat_t *ds_display_seat_by_idev(ds_display_t *, ds_idev_id_t);
Index: uspace/srv/hid/display/window.c
===================================================================
--- uspace/srv/hid/display/window.c	(revision 6828a56f6f3bca46ff6f9dee859fbd15fd17292e)
+++ uspace/srv/hid/display/window.c	(revision b076dfbb9aa63d562c009d67d8e9dd2d06e4b795)
@@ -88,4 +88,5 @@
 	}
 
+	/* Caption */
 	wnd->caption = str_dup(params->caption);
 	if (wnd->caption == NULL) {
@@ -99,4 +100,6 @@
 	gfx_bitmap_params_init(&bparams);
 	bparams.rect = params->rect;
+
+	/* Allocate window bitmap */
 
 	dgc = ds_display_get_gc(wnd->display);
@@ -142,7 +145,11 @@
 	}
 
-	// TODO Multi-seat: which seat should own the new window?
-	seat = ds_display_first_seat(client->display);
-
+	/* Determine which seat should own the window */
+	if (params->idev_id != 0)
+		seat = ds_display_seat_by_idev(wnd->display, params->idev_id);
+	else
+		seat = ds_display_default_seat(wnd->display);
+
+	/* Is this a popup window? */
 	if ((params->flags & wndf_popup) != 0)
 		ds_seat_set_popup(seat, wnd);
@@ -150,4 +157,5 @@
 		ds_seat_set_focus(seat, wnd);
 
+	/* Is this window a panel? */
 	if ((params->flags & wndf_avoid) != 0)
 		ds_display_update_max_rect(wnd->display);
