Index: uspace/app/uidemo/uidemo.c
===================================================================
--- uspace/app/uidemo/uidemo.c	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/app/uidemo/uidemo.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -805,4 +805,6 @@
 	}
 
+	ui_menu_entry_set_disabled(mfoobar, true);
+
 	rc = ui_menu_entry_sep_create(demo.mfile, &msep);
 	if (rc != EOK) {
Index: uspace/lib/ui/include/ui/menuentry.h
===================================================================
--- uspace/lib/ui/include/ui/menuentry.h	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/include/ui/menuentry.h	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -51,4 +51,6 @@
 extern void ui_menu_entry_set_cb(ui_menu_entry_t *, ui_menu_entry_cb_t,
     void *);
+extern void ui_menu_entry_set_disabled(ui_menu_entry_t *, bool);
+extern bool ui_menu_entry_is_disabled(ui_menu_entry_t *);
 extern ui_menu_entry_t *ui_menu_entry_first(ui_menu_t *);
 extern ui_menu_entry_t *ui_menu_entry_last(ui_menu_t *);
Index: uspace/lib/ui/private/menuentry.h
===================================================================
--- uspace/lib/ui/private/menuentry.h	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/private/menuentry.h	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2021 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -53,4 +53,6 @@
 	/** Callbacks */
 	ui_menu_entry_cb_t cb;
+	/** This entry is disabled */
+	bool disabled;
 	/** This entry is a separator entry */
 	bool separator;
Index: uspace/lib/ui/private/resource.h
===================================================================
--- uspace/lib/ui/private/resource.h	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/private/resource.h	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -79,4 +79,6 @@
 	/** Window text color */
 	gfx_color_t *wnd_text_color;
+	/** Disabled text color */
+	gfx_color_t *wnd_dis_text_color;
 	/** Window text highlight color */
 	gfx_color_t *wnd_text_hgl_color;
Index: uspace/lib/ui/src/menu.c
===================================================================
--- uspace/lib/ui/src/menu.c	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/src/menu.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -534,5 +534,6 @@
 		break;
 	case KC_ENTER:
-		if (menu->selected != NULL)
+		if (menu->selected != NULL &&
+		    !ui_menu_entry_is_disabled(menu->selected))
 			ui_menu_entry_activate(menu->selected);
 		break;
@@ -543,5 +544,5 @@
 				c = ui_menu_entry_get_accel(mentry);
 				if (c == (char32_t)tolower(event->c) &&
-				    menu->selected != NULL) {
+				    !ui_menu_entry_is_disabled(mentry)) {
 					ui_menu_entry_activate(mentry);
 					break;
Index: uspace/lib/ui/src/menuentry.c
===================================================================
--- uspace/lib/ui/src/menuentry.c	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/src/menuentry.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -163,4 +163,24 @@
 }
 
+/** Set menu entry disabled flag.
+ *
+ * @param mentry Menu entry
+ * @param disabled @c true iff entry is to be disabled, @c false otherwise
+ */
+void ui_menu_entry_set_disabled(ui_menu_entry_t *mentry, bool disabled)
+{
+	mentry->disabled = disabled;
+}
+
+/** Get menu entry disabled flag.
+ *
+ * @param mentry Menu entry
+ * @return disabled @c true iff entry is disabled, @c false otherwise
+ */
+bool ui_menu_entry_is_disabled(ui_menu_entry_t *mentry)
+{
+	return mentry->disabled;
+}
+
 /** Get first menu entry in menu.
  *
@@ -372,4 +392,8 @@
 		fmt.hgl_color = res->wnd_sel_text_hgl_color;
 		bg_color = res->wnd_sel_text_bg_color;
+	} else if (mentry->disabled) {
+		fmt.color = res->wnd_dis_text_color;
+		fmt.hgl_color = res->wnd_dis_text_color;
+		bg_color = res->wnd_face_color;
 	} else {
 		fmt.color = res->wnd_text_color;
Index: uspace/lib/ui/src/resource.c
===================================================================
--- uspace/lib/ui/src/resource.c	(revision 61643c8871080f4c2a612596a118c725eab1a456)
+++ uspace/lib/ui/src/resource.c	(revision 112f70a954ab0bd1801d55fb58bb8bc3a3a58473)
@@ -68,4 +68,5 @@
 	gfx_color_t *wnd_face_color = NULL;
 	gfx_color_t *wnd_text_color = NULL;
+	gfx_color_t *wnd_dis_text_color = NULL;
 	gfx_color_t *wnd_text_hgl_color = NULL;
 	gfx_color_t *wnd_sel_text_color = NULL;
@@ -140,4 +141,8 @@
 		goto error;
 
+	rc = gfx_color_new_rgb_i16(0x9696, 0x9696, 0x9696, &wnd_dis_text_color);
+	if (rc != EOK)
+		goto error;
+
 	rc = gfx_color_new_rgb_i16(0, 0, 0, &wnd_text_hgl_color);
 	if (rc != EOK)
@@ -239,4 +244,5 @@
 	resource->wnd_face_color = wnd_face_color;
 	resource->wnd_text_color = wnd_text_color;
+	resource->wnd_dis_text_color = wnd_dis_text_color;
 	resource->wnd_text_hgl_color = wnd_text_hgl_color;
 	resource->wnd_sel_text_color = wnd_sel_text_color;
@@ -282,4 +288,6 @@
 	if (wnd_text_color != NULL)
 		gfx_color_delete(wnd_text_color);
+	if (wnd_dis_text_color != NULL)
+		gfx_color_delete(wnd_dis_text_color);
 	if (wnd_text_hgl_color != NULL)
 		gfx_color_delete(wnd_text_hgl_color);
@@ -350,4 +358,5 @@
 	gfx_color_t *wnd_face_color = NULL;
 	gfx_color_t *wnd_text_color = NULL;
+	gfx_color_t *wnd_dis_text_color = NULL;
 	gfx_color_t *wnd_text_hgl_color = NULL;
 	gfx_color_t *wnd_sel_text_color = NULL;
@@ -416,4 +425,8 @@
 		goto error;
 
+	rc = gfx_color_new_ega(0x78, &wnd_dis_text_color);
+	if (rc != EOK)
+		goto error;
+
 	rc = gfx_color_new_ega(0x74, &wnd_text_hgl_color);
 	if (rc != EOK)
@@ -506,4 +519,5 @@
 	resource->wnd_face_color = wnd_face_color;
 	resource->wnd_text_color = wnd_text_color;
+	resource->wnd_dis_text_color = wnd_dis_text_color;
 	resource->wnd_text_hgl_color = wnd_text_hgl_color;
 	resource->wnd_sel_text_color = wnd_sel_text_color;
@@ -549,4 +563,6 @@
 	if (wnd_text_color != NULL)
 		gfx_color_delete(wnd_text_color);
+	if (wnd_dis_text_color != NULL)
+		gfx_color_delete(wnd_dis_text_color);
 	if (wnd_text_hgl_color != NULL)
 		gfx_color_delete(wnd_text_hgl_color);
@@ -630,4 +646,5 @@
 	gfx_color_delete(resource->wnd_face_color);
 	gfx_color_delete(resource->wnd_text_color);
+	gfx_color_delete(resource->wnd_dis_text_color);
 	gfx_color_delete(resource->wnd_sel_text_color);
 	gfx_color_delete(resource->wnd_sel_text_bg_color);
