Index: uspace/lib/ui/include/types/ui/ui.h
===================================================================
--- uspace/lib/ui/include/types/ui/ui.h	(revision 6d172f6f942ee586753c1ddcb2112db4d6e11b55)
+++ uspace/lib/ui/include/types/ui/ui.h	(revision 3b67e955c1e0e8d7f4d0d3ac521a73d5ecc62bfc)
@@ -46,4 +46,6 @@
 /** Use the default console service (argument to ui_create()) */
 #define UI_CONSOLE_DEFAULT "cons@"
+/** Use dummy output (argument to ui_create()) */
+#define UI_DISPLAY_NULL "null@"
 
 /** Window system */
@@ -54,5 +56,7 @@
 	ui_ws_display,
 	/** Console */
-	ui_ws_console
+	ui_ws_console,
+	/** Dummy output */
+	ui_ws_null
 } ui_winsys_t;
 
Index: uspace/lib/ui/include/ui/window.h
===================================================================
--- uspace/lib/ui/include/ui/window.h	(revision 6d172f6f942ee586753c1ddcb2112db4d6e11b55)
+++ uspace/lib/ui/include/ui/window.h	(revision 3b67e955c1e0e8d7f4d0d3ac521a73d5ecc62bfc)
@@ -56,4 +56,5 @@
 extern ui_window_t *ui_window_get_active(ui_t *);
 extern errno_t ui_window_resize(ui_window_t *, gfx_rect_t *);
+extern ui_t *ui_window_get_ui(ui_window_t *);
 extern ui_resource_t *ui_window_get_res(ui_window_t *);
 extern gfx_context_t *ui_window_get_gc(ui_window_t *);
Index: uspace/lib/ui/src/ui.c
===================================================================
--- uspace/lib/ui/src/ui.c	(revision 6d172f6f942ee586753c1ddcb2112db4d6e11b55)
+++ uspace/lib/ui/src/ui.c	(revision 3b67e955c1e0e8d7f4d0d3ac521a73d5ecc62bfc)
@@ -55,6 +55,6 @@
  *
  * Output specification has the form <proto>@<service> where proto is
- * eiher 'disp' for display service or 'cons' for console. Service
- * is a location ID service name (e.g. hid/display).
+ * eiher 'disp' for display service, 'cons' for console, 'null'
+ * for dummy output. Service is a location ID service name (e.g. hid/display).
  *
  * @param ospec Output specification
@@ -82,4 +82,6 @@
 		} else if (str_lcmp(ospec, "cons@", str_length("cons@")) == 0) {
 			*ws = ui_ws_console;
+		} else if (str_lcmp(ospec, "null@", str_length("null@")) == 0) {
+			*ws = ui_ws_null;
 		} else {
 			*ws = ui_ws_unknown;
@@ -99,5 +101,7 @@
  *
  * @param ospec Output specification or @c UI_DISPLAY_DEFAULT to use
- *              the default output
+ *              the default display service, UI_CONSOLE_DEFAULT to use
+ *		the default console service, UI_DISPLAY_NULL to use
+ *		dummy output.
  * @param rui Place to store pointer to new UI
  * @return EOK on success or an error code
@@ -161,4 +165,8 @@
 
 		(void) ui_paint(ui);
+	} else if (ws == ui_ws_null) {
+		rc = ui_create_disp(NULL, &ui);
+		if (rc != EOK)
+			return rc;
 	} else {
 		return EINVAL;
Index: uspace/lib/ui/src/window.c
===================================================================
--- uspace/lib/ui/src/window.c	(revision 6d172f6f942ee586753c1ddcb2112db4d6e11b55)
+++ uspace/lib/ui/src/window.c	(revision 3b67e955c1e0e8d7f4d0d3ac521a73d5ecc62bfc)
@@ -601,4 +601,14 @@
 }
 
+/** Get window's containing UI.
+ *
+ * @param window Window
+ * @return Containing UI
+ */
+ui_t *ui_window_get_ui(ui_window_t *window)
+{
+	return window->ui;
+}
+
 /** Get UI resource from window.
  *
Index: uspace/lib/ui/test/window.c
===================================================================
--- uspace/lib/ui/test/window.c	(revision 6d172f6f942ee586753c1ddcb2112db4d6e11b55)
+++ uspace/lib/ui/test/window.c	(revision 3b67e955c1e0e8d7f4d0d3ac521a73d5ecc62bfc)
@@ -258,4 +258,30 @@
 }
 
+/** ui_window_get_ui() returns containing UI */
+PCUT_TEST(get_ui)
+{
+	errno_t rc;
+	ui_t *ui = NULL;
+	ui_t *rui;
+	ui_wnd_params_t params;
+	ui_window_t *window = NULL;
+
+	rc = ui_create_disp(NULL, &ui);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_wnd_params_init(&params);
+	params.caption = "Hello";
+
+	rc = ui_window_create(ui, &params, &window);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_NOT_NULL(window);
+
+	rui = ui_window_get_ui(window);
+	PCUT_ASSERT_EQUALS(ui, rui);
+
+	ui_window_destroy(window);
+	ui_destroy(ui);
+}
+
 /** ui_window_get_res/gc/rect() return valid objects */
 PCUT_TEST(get_res_gc_rect)
