Index: uspace/app/display-cfg/seats.c
===================================================================
--- uspace/app/display-cfg/seats.c	(revision 14cbf074bd9a512a47130fc27027a861c38bc286)
+++ uspace/app/display-cfg/seats.c	(revision 8a4ceaa18d4887f34b4452ea99ba93c9651a919d)
@@ -419,5 +419,4 @@
 	errno_t rc;
 
-	printf("seats list populate\n");
 	rc = dcfg_seats_list_populate(seats);
 	if (rc != EOK)
@@ -924,4 +923,11 @@
 	rc = dispcfg_seat_delete(seats->dcfg->dispcfg, entry->seat_id);
 	if (rc != EOK) {
+		/*
+		 * EBUSY is returned when we attempt to delete the last
+		 * seat. No need to complain about it.
+		 */
+		if (rc == EBUSY)
+			return;
+
 		printf("Error removing seat '%s'.\n", entry->name);
 		return;
Index: uspace/srv/hid/display/cfgops.c
===================================================================
--- uspace/srv/hid/display/cfgops.c	(revision 14cbf074bd9a512a47130fc27027a861c38bc286)
+++ uspace/srv/hid/display/cfgops.c	(revision 8a4ceaa18d4887f34b4452ea99ba93c9651a919d)
@@ -197,4 +197,5 @@
 	ds_cfgclient_t *cfgclient = (ds_cfgclient_t *)arg;
 	ds_seat_t *seat;
+	ds_seat_t *s;
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "dispcfg_seat_delete()");
@@ -205,4 +206,11 @@
 		ds_display_unlock(cfgclient->display);
 		return ENOENT;
+	}
+
+	/* Verify we are not deleting the last seat */
+	s = ds_display_first_seat(cfgclient->display);
+	if (s == seat && ds_display_next_seat(s) == NULL) {
+		ds_display_unlock(cfgclient->display);
+		return EBUSY;
 	}
 
