Index: uspace/app/taskbar-cfg/startmenu.c
===================================================================
--- uspace/app/taskbar-cfg/startmenu.c	(revision 28ca31edbe1636231b006df50ab0d40aec06f59d)
+++ uspace/app/taskbar-cfg/startmenu.c	(revision e63e74a596d3dab316c056385061a0ffc336c62b)
@@ -54,4 +54,5 @@
 static void startmenu_delete_entry_clicked(ui_pbutton_t *, void *);
 static void startmenu_edit_entry_clicked(ui_pbutton_t *, void *);
+static void startmenu_sep_entry_clicked(ui_pbutton_t *, void *);
 static void startmenu_up_entry_clicked(ui_pbutton_t *, void *);
 static void startmenu_down_entry_clicked(ui_pbutton_t *, void *);
@@ -75,4 +76,9 @@
 ui_pbutton_cb_t startmenu_edit_entry_button_cb = {
 	.clicked = startmenu_edit_entry_clicked
+};
+
+/** Separator entry button callbacks */
+ui_pbutton_cb_t startmenu_sep_entry_button_cb = {
+	.clicked = startmenu_sep_entry_clicked
 };
 
@@ -275,7 +281,7 @@
 	    &startmenu_edit_entry_button_cb, (void *)smenu);
 
-	/* Move entry up button */
-
-	rc = ui_pbutton_create(ui_res, "Up", &smenu->up_entry);
+	/* Separator entry button */
+
+	rc = ui_pbutton_create(ui_res, "Separator", &smenu->sep_entry);
 	if (rc != EOK) {
 		printf("Error creating button.\n");
@@ -285,17 +291,17 @@
 	if (ui_resource_is_textmode(ui_res)) {
 		rect.p0.x = 58;
-		rect.p0.y = 12;
+		rect.p0.y = 11;
 		rect.p1.x = 68;
-		rect.p1.y = 13;
+		rect.p1.y = 12;
 	} else {
 		rect.p0.x = 370;
-		rect.p0.y = 190;
+		rect.p0.y = 170;
 		rect.p1.x = 450;
-		rect.p1.y = 215;
-	}
-
-	ui_pbutton_set_rect(smenu->up_entry, &rect);
-
-	rc = ui_fixed_add(smenu->fixed, ui_pbutton_ctl(smenu->up_entry));
+		rect.p1.y = 195;
+	}
+
+	ui_pbutton_set_rect(smenu->sep_entry, &rect);
+
+	rc = ui_fixed_add(smenu->fixed, ui_pbutton_ctl(smenu->sep_entry));
 	if (rc != EOK) {
 		printf("Error adding control to layout.\n");
@@ -303,10 +309,10 @@
 	}
 
-	ui_pbutton_set_cb(smenu->up_entry,
-	    &startmenu_up_entry_button_cb, (void *)smenu);
-
-	/* Move entry down button */
-
-	rc = ui_pbutton_create(ui_res, "Down", &smenu->down_entry);
+	ui_pbutton_set_cb(smenu->sep_entry,
+	    &startmenu_sep_entry_button_cb, (void *)smenu);
+
+	/* Move entry up button */
+
+	rc = ui_pbutton_create(ui_res, "Up", &smenu->up_entry);
 	if (rc != EOK) {
 		printf("Error creating button.\n");
@@ -316,7 +322,7 @@
 	if (ui_resource_is_textmode(ui_res)) {
 		rect.p0.x = 58;
-		rect.p0.y = 14;
+		rect.p0.y = 13;
 		rect.p1.x = 68;
-		rect.p1.y = 15;
+		rect.p1.y = 14;
 	} else {
 		rect.p0.x = 370;
@@ -324,4 +330,35 @@
 		rect.p1.x = 450;
 		rect.p1.y = 245;
+	}
+
+	ui_pbutton_set_rect(smenu->up_entry, &rect);
+
+	rc = ui_fixed_add(smenu->fixed, ui_pbutton_ctl(smenu->up_entry));
+	if (rc != EOK) {
+		printf("Error adding control to layout.\n");
+		goto error;
+	}
+
+	ui_pbutton_set_cb(smenu->up_entry,
+	    &startmenu_up_entry_button_cb, (void *)smenu);
+
+	/* Move entry down button */
+
+	rc = ui_pbutton_create(ui_res, "Down", &smenu->down_entry);
+	if (rc != EOK) {
+		printf("Error creating button.\n");
+		goto error;
+	}
+
+	if (ui_resource_is_textmode(ui_res)) {
+		rect.p0.x = 58;
+		rect.p0.y = 15;
+		rect.p1.x = 68;
+		rect.p1.y = 16;
+	} else {
+		rect.p0.x = 370;
+		rect.p0.y = 250;
+		rect.p1.x = 450;
+		rect.p1.y = 275;
 	}
 
@@ -418,4 +455,5 @@
 	startmenu_entry_t *smentry;
 	ui_list_entry_attr_t attr;
+	bool separator;
 	errno_t rc;
 
@@ -428,6 +466,12 @@
 
 	ui_list_entry_attr_init(&attr);
-	attr.caption = smenu_entry_get_caption(entry);
+	separator = smenu_entry_get_separator(entry);
+	if (separator)
+		attr.caption = "-- Separator --";
+	else
+		attr.caption = smenu_entry_get_caption(entry);
+
 	attr.arg = (void *)smentry;
+
 	rc = ui_list_entry_append(smenu->entries_list, &attr, &smentry->lentry);
 	if (rc != EOK) {
@@ -473,4 +517,22 @@
 }
 
+/** Create new separator menu entry.
+ *
+ * @param smenu Start menu
+ */
+void startmenu_sep_entry(startmenu_t *smenu)
+{
+	startmenu_entry_t *smentry = NULL;
+	smenu_entry_t *entry;
+	errno_t rc;
+
+	rc = smenu_entry_sep_create(smenu->tbarcfg->tbarcfg, &entry);
+	if (rc != EOK)
+		return;
+
+	(void)startmenu_insert(smenu, entry, &smentry);
+	(void)ui_control_paint(ui_list_ctl(smenu->entries_list));
+}
+
 /** Edit selected menu entry.
  *
@@ -485,4 +547,8 @@
 	smentry = startmenu_get_selected(smenu);
 	if (smentry == NULL)
+		return;
+
+	/* Do not edit separator entries */
+	if (smenu_entry_get_separator(smentry->entry))
 		return;
 
@@ -582,9 +648,22 @@
 }
 
-/** Up entry button clicked.
+/** Separator entry button clicked.
  *
  * @param pbutton Push button
  * @param arg Argument (startmenu_t *)
  */
+static void startmenu_sep_entry_clicked(ui_pbutton_t *pbutton, void *arg)
+{
+	startmenu_t *smenu = (startmenu_t *)arg;
+
+	(void)pbutton;
+	startmenu_sep_entry(smenu);
+}
+
+/** Up entry button clicked.
+ *
+ * @param pbutton Push button
+ * @param arg Argument (startmenu_t *)
+ */
 static void startmenu_up_entry_clicked(ui_pbutton_t *pbutton, void *arg)
 {
