Index: uspace/app/nav/panel.c
===================================================================
--- uspace/app/nav/panel.c	(revision 4fcc2dee0dd39ba010093d693f0dfaa897db6f69)
+++ uspace/app/nav/panel.c	(revision 7aeb52cbe11c394f85042884e7d7d4f35fd6bc3d)
@@ -98,4 +98,8 @@
 
 	rc = gfx_color_new_ega(0x0f, &panel->dir_color);
+	if (rc != EOK)
+		goto error;
+
+	rc = gfx_color_new_ega(0x0a, &panel->svc_color);
 	if (rc != EOK)
 		goto error;
@@ -116,4 +120,6 @@
 	if (panel->dir_color != NULL)
 		gfx_color_delete(panel->dir_color);
+	if (panel->svc_color != NULL)
+		gfx_color_delete(panel->svc_color);
 	ui_control_delete(panel->control);
 	free(panel);
@@ -131,4 +137,5 @@
 	gfx_color_delete(panel->act_border_color);
 	gfx_color_delete(panel->dir_color);
+	gfx_color_delete(panel->svc_color);
 	panel_clear_entries(panel);
 	ui_control_delete(panel->control);
@@ -169,4 +176,6 @@
 	else if (entry->isdir)
 		fmt.color = panel->dir_color;
+	else if (entry->svc != 0)
+		fmt.color = panel->svc_color;
 	else
 		fmt.color = panel->color;
@@ -375,4 +384,13 @@
 }
 
+/** Initialize panel entry attributes.
+ *
+ * @param attr Attributes
+ */
+void panel_entry_attr_init(panel_entry_attr_t *attr)
+{
+	memset(attr, 0, sizeof(*attr));
+}
+
 /** Destroy panel control.
  *
@@ -427,11 +445,8 @@
  *
  * @param panel Panel
- * @param name File name
- * @param size File size
- * @param isdir @c true iff the entry is a directory
+ * @param attr Entry attributes
  * @return EOK on success or an error code
  */
-errno_t panel_entry_append(panel_t *panel, const char *name, uint64_t size,
-    bool isdir)
+errno_t panel_entry_append(panel_t *panel, panel_entry_attr_t *attr)
 {
 	panel_entry_t *entry;
@@ -442,5 +457,5 @@
 
 	entry->panel = panel;
-	entry->name = str_dup(name);
+	entry->name = str_dup(attr->name);
 	if (entry->name == NULL) {
 		free(entry);
@@ -448,6 +463,7 @@
 	}
 
-	entry->size = size;
-	entry->isdir = isdir;
+	entry->size = attr->size;
+	entry->isdir = attr->isdir;
+	entry->svc = attr->svc;
 	link_initialize(&entry->lentries);
 	list_append(&entry->lentries, &panel->entries);
@@ -469,5 +485,5 @@
 	list_remove(&entry->lentries);
 	--entry->panel->entries_cnt;
-	free(entry->name);
+	free((char *) entry->name);
 	free(entry);
 }
@@ -501,4 +517,5 @@
 	char newdir[256];
 	char *ndir = NULL;
+	panel_entry_attr_t attr;
 	errno_t rc;
 
@@ -523,5 +540,9 @@
 	if (str_cmp(ndir, "/") != 0) {
 		/* Need to add a synthetic up-dir entry */
-		rc = panel_entry_append(panel, "..", 0, true);
+		panel_entry_attr_init(&attr);
+		attr.name = "..";
+		attr.isdir = true;
+
+		rc = panel_entry_append(panel, &attr);
 		if (rc != EOK)
 			goto error;
@@ -537,6 +558,11 @@
 		}
 
-		rc = panel_entry_append(panel, dirent->d_name, finfo.size,
-		    finfo.is_directory);
+		panel_entry_attr_init(&attr);
+		attr.name = dirent->d_name;
+		attr.size = finfo.size;
+		attr.isdir = finfo.is_directory;
+		attr.svc = finfo.service;
+
+		rc = panel_entry_append(panel, &attr);
 		if (rc != EOK)
 			goto error;
Index: uspace/app/nav/panel.h
===================================================================
--- uspace/app/nav/panel.h	(revision 4fcc2dee0dd39ba010093d693f0dfaa897db6f69)
+++ uspace/app/nav/panel.h	(revision 7aeb52cbe11c394f85042884e7d7d4f35fd6bc3d)
@@ -58,5 +58,6 @@
 extern errno_t panel_activate(panel_t *);
 extern void panel_deactivate(panel_t *);
-extern errno_t panel_entry_append(panel_t *, const char *, uint64_t, bool);
+extern void panel_entry_attr_init(panel_entry_attr_t *);
+extern errno_t panel_entry_append(panel_t *, panel_entry_attr_t *);
 extern void panel_entry_delete(panel_entry_t *);
 extern void panel_clear_entries(panel_t *);
Index: uspace/app/nav/test/panel.c
===================================================================
--- uspace/app/nav/test/panel.c	(revision 4fcc2dee0dd39ba010093d693f0dfaa897db6f69)
+++ uspace/app/nav/test/panel.c	(revision 7aeb52cbe11c394f85042884e7d7d4f35fd6bc3d)
@@ -59,4 +59,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	errno_t rc;
 
@@ -73,5 +74,9 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = panel_entry_append(panel, "a", 1, false);
+	panel_entry_attr_init(&attr);
+	attr.name = "a";
+	attr.size = 1;
+
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -320,15 +325,22 @@
 {
 	panel_t *panel;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "a", 1, false);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
 	PCUT_ASSERT_INT_EQUALS(1, list_count(&panel->entries));
 
-	rc = panel_entry_append(panel, "b", 2, false);
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -343,13 +355,18 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -373,13 +390,19 @@
 {
 	panel_t *panel;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "a";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -456,16 +479,25 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "a", 2, false);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "b";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "a";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -493,4 +525,5 @@
 	panel_t *panel;
 	panel_entry_t *a, *b;
+	panel_entry_attr_t attr;
 	int rel;
 	errno_t rc;
@@ -499,8 +532,14 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = panel_entry_append(panel, "a", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 1, false);
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -530,8 +569,11 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
 
 	entry = panel_first(panel);
@@ -539,5 +581,7 @@
 
 	/* Add one entry */
-	rc = panel_entry_append(panel, "a", 1, false);
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -549,5 +593,7 @@
 
 	/* Add another entry */
-	rc = panel_entry_append(panel, "b", 2, false);
+	attr.name = "b";
+	attr.size= 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -566,8 +612,11 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
 
 	entry = panel_last(panel);
@@ -575,5 +624,7 @@
 
 	/* Add one entry */
-	rc = panel_entry_append(panel, "a", 1, false);
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -585,5 +636,7 @@
 
 	/* Add another entry */
-	rc = panel_entry_append(panel, "b", 2, false);
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -591,4 +644,6 @@
 	entry = panel_last(panel);
 	PCUT_ASSERT_NOT_NULL(entry);
+	attr.name = "b";
+	attr.size = 2;
 	PCUT_ASSERT_STR_EQUALS("b", entry->name);
 	PCUT_ASSERT_INT_EQUALS(2, entry->size);
@@ -602,11 +657,16 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
 
 	/* Add one entry */
-	rc = panel_entry_append(panel, "a", 1, false);
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -619,5 +679,7 @@
 
 	/* Add another entry */
-	rc = panel_entry_append(panel, "b", 2, false);
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -639,11 +701,16 @@
 	panel_t *panel;
 	panel_entry_t *entry;
-	errno_t rc;
-
-	rc = panel_create(NULL, true, &panel);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	panel_entry_attr_t attr;
+	errno_t rc;
+
+	rc = panel_create(NULL, true, &panel);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	panel_entry_attr_init(&attr);
 
 	/* Add one entry */
-	rc = panel_entry_append(panel, "a", 1, false);
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -656,5 +723,7 @@
 
 	/* Add another entry */
-	rc = panel_entry_append(panel, "b", 2, false);
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -683,4 +752,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -707,11 +777,20 @@
 
 	/* Add tree entries (more than page size, which is 2) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -764,4 +843,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -788,11 +868,20 @@
 
 	/* Add tree entries (more than page size, which is 2) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -847,4 +936,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -871,11 +961,20 @@
 
 	/* Add tree entries (more than page size, which is 2) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -908,4 +1007,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -932,11 +1032,20 @@
 
 	/* Add tree entries (more than page size, which is 2) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -970,4 +1079,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -994,17 +1104,30 @@
 
 	/* Add five entries (2 full pages, one partial) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "d", 4, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "e", 5, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "d";
+	attr.size = 4;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "e";
+	attr.size = 5;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -1058,4 +1181,5 @@
 	ui_wnd_params_t params;
 	panel_t *panel;
+	panel_entry_attr_t attr;
 	gfx_rect_t rect;
 	errno_t rc;
@@ -1082,17 +1206,30 @@
 
 	/* Add five entries (2 full pages, one partial) */
-	rc = panel_entry_append(panel, "a", 1, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "b", 2, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "c", 3, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "d", 4, false);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = panel_entry_append(panel, "e", 5, false);
+
+	panel_entry_attr_init(&attr);
+
+	attr.name = "a";
+	attr.size = 1;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "b";
+	attr.size = 2;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "c";
+	attr.size = 3;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "d";
+	attr.size = 4;
+	rc = panel_entry_append(panel, &attr);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	attr.name = "e";
+	attr.size = 5;
+	rc = panel_entry_append(panel, &attr);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
Index: uspace/app/nav/types/panel.h
===================================================================
--- uspace/app/nav/types/panel.h	(revision 4fcc2dee0dd39ba010093d693f0dfaa897db6f69)
+++ uspace/app/nav/types/panel.h	(revision 7aeb52cbe11c394f85042884e7d7d4f35fd6bc3d)
@@ -40,6 +40,19 @@
 #include <gfx/color.h>
 #include <gfx/coord.h>
+#include <ipc/loc.h>
 #include <ui/window.h>
 #include <stdint.h>
+
+/** Panel entry attributes */
+typedef struct {
+	/** File name */
+	const char *name;
+	/** File size */
+	uint64_t size;
+	/** @c true iff entry is a directory */
+	bool isdir;
+	/** Service number for service special entries */
+	service_id_t svc;
+} panel_entry_attr_t;
 
 /** Panel entry */
@@ -55,4 +68,6 @@
 	/** @c true iff entry is a directory */
 	bool isdir;
+	/** Service number for service special entries */
+	service_id_t svc;
 } panel_entry_t;
 
@@ -82,4 +97,7 @@
 	/** Directory-type entry color */
 	gfx_color_t *dir_color;
+
+	/** Service-type entry color */
+	gfx_color_t *svc_color;
 
 	/** Panel entries (list of panel_entry_t) */
