Index: uspace/app/taskbar-cfg/smeedit.c
===================================================================
--- uspace/app/taskbar-cfg/smeedit.c	(revision 82d3c2830174fa139a6998e8d141c6fa0f694e67)
+++ uspace/app/taskbar-cfg/smeedit.c	(revision f87ff8e62c7a8a010413c60997320386cd62f9a8)
@@ -116,5 +116,6 @@
 
 	ui_wnd_params_init(&params);
-	params.caption = "Edit Start Menu Entry";
+	params.caption = smentry != NULL ? "Edit Start Menu Entry"
+	    : "Create Start Menu Entry";
 	if (ui_is_textmode(ui)) {
 		params.rect.p0.x = 0;
@@ -354,14 +355,26 @@
 	caption = ui_entry_get_text(smee->ecaption);
 
-	rc = smenu_entry_set_cmd(smee->smentry->entry, cmd);
-	if (rc != EOK)
-		return;
-
-	smenu_entry_set_caption(smee->smentry->entry, caption);
-	if (rc != EOK)
-		return;
-
-	(void)smenu_entry_save(smee->smentry->entry);
-	startmenu_entry_update(smee->smentry);
+	if (smee->smentry == NULL) {
+		/* Create new entry */
+		rc = smenu_entry_create(smee->startmenu->tbarcfg->tbarcfg,
+		    caption, cmd);
+		if (rc != EOK)
+			return;
+	} else {
+		/* Edit existing entry */
+
+
+		rc = smenu_entry_set_cmd(smee->smentry->entry, cmd);
+		if (rc != EOK)
+			return;
+
+		smenu_entry_set_caption(smee->smentry->entry, caption);
+		if (rc != EOK)
+			return;
+
+		(void)smenu_entry_save(smee->smentry->entry);
+		startmenu_entry_update(smee->smentry);
+	}
+
 	smeedit_destroy(smee);
 }
Index: uspace/app/taskbar-cfg/startmenu.c
===================================================================
--- uspace/app/taskbar-cfg/startmenu.c	(revision 82d3c2830174fa139a6998e8d141c6fa0f694e67)
+++ uspace/app/taskbar-cfg/startmenu.c	(revision f87ff8e62c7a8a010413c60997320386cd62f9a8)
@@ -379,4 +379,20 @@
 }
 
+/** Create new menu entry.
+ *
+ * @param smenu Start menu
+ */
+void startmenu_new_entry(startmenu_t *smenu)
+{
+	smeedit_t *smee;
+	errno_t rc;
+
+	rc = smeedit_create(smenu, NULL, &smee);
+	if (rc != EOK)
+		return;
+
+	(void)smee;
+}
+
 /** Edit selected menu entry.
  *
@@ -431,6 +447,8 @@
 static void startmenu_new_entry_clicked(ui_pbutton_t *pbutton, void *arg)
 {
+	startmenu_t *smenu = (startmenu_t *)arg;
+
 	(void)pbutton;
-	(void)arg;
+	startmenu_new_entry(smenu);
 }
 
Index: uspace/app/taskbar-cfg/startmenu.h
===================================================================
--- uspace/app/taskbar-cfg/startmenu.h	(revision 82d3c2830174fa139a6998e8d141c6fa0f694e67)
+++ uspace/app/taskbar-cfg/startmenu.h	(revision f87ff8e62c7a8a010413c60997320386cd62f9a8)
@@ -47,4 +47,5 @@
     startmenu_entry_t **);
 extern startmenu_entry_t *startmenu_get_selected(startmenu_t *);
+extern void startmenu_new_entry(startmenu_t *);
 extern void startmenu_edit(startmenu_t *);
 extern errno_t startmenu_entry_update(startmenu_entry_t *);
Index: uspace/lib/tbarcfg/src/tbarcfg.c
===================================================================
--- uspace/lib/tbarcfg/src/tbarcfg.c	(revision 82d3c2830174fa139a6998e8d141c6fa0f694e67)
+++ uspace/lib/tbarcfg/src/tbarcfg.c	(revision f87ff8e62c7a8a010413c60997320386cd62f9a8)
@@ -405,4 +405,12 @@
 		goto error;
 
+	rc = sif_node_set_attr(trans, nentry, "cmd", cmd);
+	if (rc != EOK)
+		goto error;
+
+	rc = sif_node_set_attr(trans, nentry, "caption", caption);
+	if (rc != EOK)
+		goto error;
+
 	rc = smenu_entry_new(smenu, nentry, caption, cmd);
 	if (rc != EOK)
