Index: uspace/lib/ui/include/ui/list.h
===================================================================
--- uspace/lib/ui/include/ui/list.h	(revision 29ed06d51c57af8767c7262d3816c033f5bb79ab)
+++ uspace/lib/ui/include/ui/list.h	(revision 69935a8b06e9ed4ccca358eb9eb338c40e780362)
@@ -60,4 +60,5 @@
 extern void *ui_list_entry_get_arg(ui_list_entry_t *);
 extern ui_list_t *ui_list_entry_get_list(ui_list_entry_t *);
+extern errno_t ui_list_entry_set_caption(ui_list_entry_t *, const char *);
 extern size_t ui_list_entries_cnt(ui_list_t *);
 extern errno_t ui_list_sort(ui_list_t *);
Index: uspace/lib/ui/src/list.c
===================================================================
--- uspace/lib/ui/src/list.c	(revision 29ed06d51c57af8767c7262d3816c033f5bb79ab)
+++ uspace/lib/ui/src/list.c	(revision 69935a8b06e9ed4ccca358eb9eb338c40e780362)
@@ -800,4 +800,26 @@
 }
 
+/** Change list entry caption.
+ *
+ * @param entry UI list entry
+ * @param caption New caption
+ *
+ * @return EOK on success, ENOMEM if out of memory
+ */
+errno_t ui_list_entry_set_caption(ui_list_entry_t *entry, const char *caption)
+{
+	char *dcaption;
+
+	dcaption = str_dup(caption);
+	if (dcaption == NULL)
+		return ENOMEM;
+
+	free(entry->caption);
+	entry->caption = dcaption;
+
+	(void)ui_list_entry_paint(entry, ui_list_entry_get_idx(entry));
+	return EOK;
+}
+
 /** Clear UI list entry list.
  *
Index: uspace/lib/ui/test/list.c
===================================================================
--- uspace/lib/ui/test/list.c	(revision 29ed06d51c57af8767c7262d3816c033f5bb79ab)
+++ uspace/lib/ui/test/list.c	(revision 69935a8b06e9ed4ccca358eb9eb338c40e780362)
@@ -1039,4 +1039,47 @@
 }
 
+/** ui_list_entry_set_caption() sets entry captino */
+PCUT_TEST(entry_set_caption)
+{
+	ui_t *ui;
+	ui_window_t *window;
+	ui_wnd_params_t params;
+	ui_list_t *list;
+	ui_list_entry_attr_t attr;
+	ui_list_entry_t *entry;
+	errno_t rc;
+
+	rc = ui_create_disp(NULL, &ui);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_wnd_params_init(&params);
+	params.caption = "Test";
+
+	rc = ui_window_create(ui, &params, &window);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = ui_list_create(window, true, &list);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_list_entry_attr_init(&attr);
+
+	/* Append entry and get pointer to it */
+	attr.caption = "a";
+	attr.arg = (void *)1;
+	entry = NULL;
+	rc = ui_list_entry_append(list, &attr, &entry);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_NOT_NULL(entry);
+
+	/* Change caption */
+	rc = ui_list_entry_set_caption(entry, "b");
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_STR_EQUALS("b", entry->caption);
+
+	ui_list_destroy(list);
+	ui_window_destroy(window);
+	ui_destroy(ui);
+}
+
 /** ui_list_entries_cnt() returns the number of entries */
 PCUT_TEST(entries_cnt)
