Index: uspace/app/uidemo/uidemo.c
===================================================================
--- uspace/app/uidemo/uidemo.c	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/app/uidemo/uidemo.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -36,5 +36,17 @@
 #include <stdio.h>
 #include <str.h>
+#include <task.h>
 #include <ui/pbutton.h>
+#include <ui/resource.h>
+
+static void wnd_close_event(void *);
+static void wnd_kbd_event(void *, kbd_event_t *);
+
+static display_wnd_cb_t wnd_cb = {
+	.close_event = wnd_close_event,
+	.kbd_event = wnd_kbd_event
+};
+
+static bool quit = false;
 
 static void print_syntax(void)
@@ -43,8 +55,120 @@
 }
 
+static void wnd_close_event(void *arg)
+{
+	printf("Close event\n");
+	quit = true;
+}
+
+static void wnd_kbd_event(void *arg, kbd_event_t *event)
+{
+	printf("Keyboard event type=%d key=%d\n", event->type, event->key);
+	if (event->type == KEY_PRESS)
+		quit = true;
+}
+
+/** Run UI demo on display server. */
+static errno_t ui_demo_display(const char *display_svc)
+{
+	display_t *display = NULL;
+	gfx_context_t *gc;
+	display_wnd_params_t params;
+	display_window_t *window = NULL;
+	ui_resource_t *ui_res;
+	ui_pbutton_t *pb1;
+	ui_pbutton_t *pb2;
+	gfx_rect_t rect;
+	errno_t rc;
+
+	printf("Init display..\n");
+
+	rc = display_open(display_svc, &display);
+	if (rc != EOK) {
+		printf("Error opening display.\n");
+		return rc;
+	}
+
+	display_wnd_params_init(&params);
+	params.rect.p0.x = 0;
+	params.rect.p0.y = 0;
+	params.rect.p1.x = 220;
+	params.rect.p1.y = 100;
+
+	rc = display_window_create(display, &params, &wnd_cb, NULL, &window);
+	if (rc != EOK) {
+		printf("Error creating window.\n");
+		return rc;
+	}
+
+	rc = display_window_get_gc(window, &gc);
+	if (rc != EOK) {
+		printf("Error getting graphics context.\n");
+		return rc;
+	}
+
+	task_retval(0);
+
+	rc = ui_resource_create(gc, &ui_res);
+	if (rc != EOK) {
+		printf("Error creating UI.\n");
+		return 1;
+	}
+
+	rc = ui_pbutton_create(ui_res, "Confirm", &pb1);
+	if (rc != EOK) {
+		printf("Error creating button.\n");
+		return 1;
+	}
+
+	rect.p0.x = 20;
+	rect.p0.y = 50;
+	rect.p1.x = 100;
+	rect.p1.y = 80;
+	ui_pbutton_set_rect(pb1, &rect);
+
+	rc = ui_pbutton_create(ui_res, "Cancel", &pb2);
+	if (rc != EOK) {
+		printf("Error creating button.\n");
+		return 1;
+	}
+
+	rect.p0.x = 120;
+	rect.p0.y = 50;
+	rect.p1.x = 200;
+	rect.p1.y = 80;
+	ui_pbutton_set_rect(pb2, &rect);
+
+	rc = ui_pbutton_paint(pb1);
+	if (rc != EOK) {
+		printf("Error painting button.\n");
+		return 1;
+	}
+
+	rc = ui_pbutton_paint(pb2);
+	if (rc != EOK) {
+		printf("Error painting button.\n");
+		return 1;
+	}
+
+	while (!quit) {
+		fibril_usleep(100 * 1000);
+	}
+
+	ui_pbutton_destroy(pb1);
+	ui_pbutton_destroy(pb2);
+
+	rc = gfx_context_delete(gc);
+	if (rc != EOK)
+		return rc;
+
+	display_window_destroy(window);
+	display_close(display);
+
+	return EOK;
+}
+
 int main(int argc, char *argv[])
 {
 	const char *display_svc = DISPLAY_DEFAULT;
-	ui_pbutton_t *pbutton;
 	errno_t rc;
 	int i;
@@ -73,13 +197,8 @@
 	}
 
-	printf("Display service: %s\n", display_svc);
-
-	rc = ui_pbutton_create("Hello", &pbutton);
-	if (rc != EOK) {
-		printf("Error creating button.\n");
-		return 1;
-	}
-
-	ui_pbutton_destroy(pbutton);
+	rc = ui_demo_display(display_svc);
+	if (rc != EOK)
+		return 1;
+
 	return 0;
 }
Index: uspace/lib/ui/include/types/ui/resource.h
===================================================================
--- uspace/lib/ui/include/types/ui/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
+++ uspace/lib/ui/include/types/ui/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file User interface resources
+ */
+
+#ifndef _UI_TYPES_RESOURCE_H
+#define _UI_TYPES_RESOURCE_H
+
+struct ui_resource;
+typedef struct ui_resource ui_resource_t;
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/ui/include/ui/pbutton.h
===================================================================
--- uspace/lib/ui/include/ui/pbutton.h	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/include/ui/pbutton.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -38,8 +38,13 @@
 
 #include <errno.h>
+#include <gfx/coord.h>
 #include <types/ui/pbutton.h>
+#include <types/ui/resource.h>
 
-extern errno_t ui_pbutton_create(const char *, ui_pbutton_t **);
+extern errno_t ui_pbutton_create(ui_resource_t *, const char *,
+    ui_pbutton_t **);
 extern void ui_pbutton_destroy(ui_pbutton_t *);
+extern void ui_pbutton_set_rect(ui_pbutton_t *, gfx_rect_t *);
+extern errno_t ui_pbutton_paint(ui_pbutton_t *);
 
 #endif
Index: uspace/lib/ui/include/ui/resource.h
===================================================================
--- uspace/lib/ui/include/ui/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
+++ uspace/lib/ui/include/ui/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file UI resources
+ */
+
+#ifndef _UI_RESOURCE_H
+#define _UI_RESOURCE_H
+
+#include <errno.h>
+#include <gfx/context.h>
+#include <types/ui/resource.h>
+
+extern errno_t ui_resource_create(gfx_context_t *, ui_resource_t **);
+extern void ui_resource_destroy(ui_resource_t *);
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/ui/meson.build
===================================================================
--- uspace/lib/ui/meson.build	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/meson.build	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -27,7 +27,8 @@
 #
 
-deps = [ 'gfx' ]
+deps = [ 'gfx', 'gfxfont' ]
 src = files(
 	'src/pbutton.c',
+	'src/resource.c',
 )
 
@@ -35,3 +36,4 @@
 	'test/main.c',
 	'test/pbutton.c',
+	'test/resource.c',
 )
Index: uspace/lib/ui/private/pbutton.h
===================================================================
--- uspace/lib/ui/private/pbutton.h	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/private/pbutton.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -38,4 +38,7 @@
 #define _UI_PRIVATE_PBUTTON_H
 
+#include <gfx/context.h>
+#include <gfx/coord.h>
+
 /** Actual structure of push button.
  *
@@ -43,4 +46,9 @@
  */
 struct ui_pbutton {
+	/** UI resource */
+	struct ui_resource *res;
+	/** Push button rectangle */
+	gfx_rect_t rect;
+	/** Caption */
 	const char *caption;
 };
Index: uspace/lib/ui/private/resource.h
===================================================================
--- uspace/lib/ui/private/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
+++ uspace/lib/ui/private/resource.h	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file Resource structure
+ *
+ */
+
+#ifndef _UI_PRIVATE_RESOURCE_H
+#define _UI_PRIVATE_RESOURCE_H
+
+#include <gfx/context.h>
+#include <gfx/font.h>
+#include <gfx/typeface.h>
+
+/** Actual structure of UI resources.
+ *
+ * Contains resources common accross the entire UI. This is private to libui.
+ */
+struct ui_resource {
+	/** Graphic context */
+	gfx_context_t *gc;
+	/** Typeface */
+	gfx_typeface_t *tface;
+	/** Font */
+	gfx_font_t *font;
+};
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/ui/src/pbutton.c
===================================================================
--- uspace/lib/ui/src/pbutton.c	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/src/pbutton.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -35,15 +35,23 @@
 
 #include <errno.h>
+#include <gfx/color.h>
+#include <gfx/context.h>
+#include <gfx/render.h>
+#include <gfx/text.h>
 #include <stdlib.h>
+#include <str.h>
 #include <ui/pbutton.h>
 #include "../private/pbutton.h"
+#include "../private/resource.h"
 
 /** Create new push button.
  *
+ * @param resource UI resource
  * @param caption Caption
  * @param rpbutton Place to store pointer to new push button
  * @return EOK on success, ENOMEM if out of memory
  */
-errno_t ui_pbutton_create(const char *caption, ui_pbutton_t **rpbutton)
+errno_t ui_pbutton_create(ui_resource_t *resource, const char *caption,
+    ui_pbutton_t **rpbutton)
 {
 	ui_pbutton_t *pbutton;
@@ -53,5 +61,11 @@
 		return ENOMEM;
 
-	(void) caption;
+	pbutton->caption = str_dup(caption);
+	if (pbutton->caption == NULL) {
+		free(pbutton);
+		return ENOMEM;
+	}
+
+	pbutton->res = resource;
 	*rpbutton = pbutton;
 	return EOK;
@@ -70,4 +84,69 @@
 }
 
+/** Set button rectangle.
+ *
+ * @param pbutton Button
+ * @param rect New button rectanle
+ */
+void ui_pbutton_set_rect(ui_pbutton_t *pbutton, gfx_rect_t *rect)
+{
+	pbutton->rect = *rect;
+}
+
+/** Paint push button.
+ *
+ * @param pbutton Push button
+ * @return EOK on success or an error code
+ */
+errno_t ui_pbutton_paint(ui_pbutton_t *pbutton)
+{
+	gfx_color_t *color = NULL;
+	gfx_coord2_t pos;
+	gfx_text_fmt_t fmt;
+	errno_t rc;
+
+	rc = gfx_color_new_rgb_i16(0xc8c8, 0xc8c8, 0xc8c8, &color);
+	if (rc != EOK)
+		goto error;
+
+	rc = gfx_set_color(pbutton->res->gc, color);
+	if (rc != EOK)
+		goto error;
+
+	rc = gfx_fill_rect(pbutton->res->gc, &pbutton->rect);
+	if (rc != EOK)
+		goto error;
+
+	gfx_color_delete(color);
+
+	rc = gfx_color_new_rgb_i16(0, 0, 0, &color);
+	if (rc != EOK)
+		goto error;
+
+	rc = gfx_set_color(pbutton->res->gc, color);
+	if (rc != EOK)
+		goto error;
+
+	/* Center of button rectangle */
+	pos.x = (pbutton->rect.p0.x + pbutton->rect.p1.x) / 2;
+	pos.y = (pbutton->rect.p0.y + pbutton->rect.p1.y) / 2;
+
+	gfx_text_fmt_init(&fmt);
+	fmt.halign = gfx_halign_center;
+	fmt.valign = gfx_valign_center;
+
+	rc = gfx_puttext(pbutton->res->font, &pos, &fmt, pbutton->caption);
+	if (rc != EOK)
+		goto error;
+
+	gfx_color_delete(color);
+
+	return EOK;
+error:
+	if (color != NULL)
+		gfx_color_delete(color);
+	return rc;
+}
+
 /** @}
  */
Index: uspace/lib/ui/src/resource.c
===================================================================
--- uspace/lib/ui/src/resource.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
+++ uspace/lib/ui/src/resource.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libui
+ * @{
+ */
+/**
+ * @file UI resources
+ */
+
+#include <errno.h>
+#include <gfx/color.h>
+#include <gfx/context.h>
+#include <gfx/font.h>
+#include <gfx/render.h>
+#include <gfx/typeface.h>
+#include <stdlib.h>
+#include <str.h>
+#include <ui/resource.h>
+#include "../private/resource.h"
+
+static const char *ui_typeface_path = "/data/font/helena.tpf";
+
+/** Create new UI resource.
+ *
+ * @param gc Graphic context
+ * @param rresource Place to store pointer to new push button
+ * @return EOK on success, ENOMEM if out of memory
+ */
+errno_t ui_resource_create(gfx_context_t *gc, ui_resource_t **rresource)
+{
+	ui_resource_t *resource;
+	gfx_typeface_t *tface = NULL;
+	gfx_font_t *font = NULL;
+	gfx_font_info_t *finfo;
+	errno_t rc;
+
+	resource = calloc(1, sizeof(ui_resource_t));
+	if (resource == NULL)
+		return ENOMEM;
+
+	rc = gfx_typeface_open(gc, ui_typeface_path, &tface);
+	if (rc != EOK)
+		goto error;
+
+	finfo = gfx_typeface_first_font(tface);
+	if (finfo == NULL) {
+		rc = EIO;
+		goto error;
+	}
+
+	rc = gfx_font_open(finfo, &font);
+	if (rc != EOK)
+		goto error;
+
+	resource->gc = gc;
+	resource->tface = tface;
+	resource->font = font;
+	*rresource = resource;
+	return EOK;
+error:
+	if (tface != NULL)
+		gfx_typeface_destroy(tface);
+	free(resource);
+	return rc;
+}
+
+/** Destroy UI resource.
+ *
+ * @param resource Push button or @c NULL
+ */
+void ui_resource_destroy(ui_resource_t *resource)
+{
+	if (resource == NULL)
+		return;
+
+	gfx_font_close(resource->font);
+	gfx_typeface_destroy(resource->tface);
+	free(resource);
+}
+
+/** @}
+ */
Index: uspace/lib/ui/test/main.c
===================================================================
--- uspace/lib/ui/test/main.c	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/test/main.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -32,4 +32,5 @@
 
 PCUT_IMPORT(pbutton);
+PCUT_IMPORT(resource);
 
 PCUT_MAIN();
Index: uspace/lib/ui/test/pbutton.c
===================================================================
--- uspace/lib/ui/test/pbutton.c	(revision f80690a360f3e2ac264e7b07179a0c61126b1fe3)
+++ uspace/lib/ui/test/pbutton.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -40,5 +40,5 @@
 	errno_t rc;
 
-	rc = ui_pbutton_create("Hello", &pbutton);
+	rc = ui_pbutton_create(NULL, "Hello", &pbutton);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
Index: uspace/lib/ui/test/resource.c
===================================================================
--- uspace/lib/ui/test/resource.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
+++ uspace/lib/ui/test/resource.c	(revision 477286789bd81a33ed42d124b747013d7d1da8d8)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <errno.h>
+#include <pcut/pcut.h>
+#include <ui/resource.h>
+
+PCUT_INIT;
+
+PCUT_TEST_SUITE(resource);
+
+PCUT_TEST(dummy)
+{
+}
+
+PCUT_EXPORT(resource);
