Index: uspace/app/taskbar/test/wndlist.c
===================================================================
--- uspace/app/taskbar/test/wndlist.c	(revision 570a3f383acc893b1355dd2d5c791922b2885796)
+++ uspace/app/taskbar/test/wndlist.c	(revision 3c54869a5b618845c19d4f6200ee90ac99a446aa)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -208,5 +208,5 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 123, "Foo", true);
+	rc = wndlist_append(wndlist, 123, "Foo", true, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -214,4 +214,5 @@
 	PCUT_ASSERT_INT_EQUALS(123, entry->wnd_id);
 	PCUT_ASSERT_NOT_NULL(entry->button);
+	PCUT_ASSERT_TRUE(ui_pbutton_get_light(entry->button));
 
 	wndlist_destroy(wndlist);
@@ -248,8 +249,8 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -269,4 +270,52 @@
 }
 
+/** Test updating entry */
+PCUT_TEST(update)
+{
+	errno_t rc;
+	ui_t *ui = NULL;
+	ui_wnd_params_t params;
+	ui_window_t *window = NULL;
+	ui_fixed_t *fixed = NULL;
+	wndlist_t *wndlist;
+	wndlist_entry_t *entry;
+
+	rc = ui_create_disp(NULL, &ui);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	ui_wnd_params_init(&params);
+	params.caption = "Hello";
+
+	rc = ui_window_create(ui, &params, &window);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+	PCUT_ASSERT_NOT_NULL(window);
+
+	rc = ui_fixed_create(&fixed);
+	ui_window_add(window, ui_fixed_ctl(fixed));
+
+	rc = wndlist_create(window, fixed, &wndlist);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	entry = wndlist_first(wndlist);
+	PCUT_ASSERT_INT_EQUALS(1, entry->wnd_id);
+	PCUT_ASSERT_NOT_NULL(entry->button);
+	PCUT_ASSERT_TRUE(ui_pbutton_get_light(entry->button));
+
+	rc = wndlist_update(wndlist, entry, "Bar", false);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	PCUT_ASSERT_INT_EQUALS(1, entry->wnd_id);
+	PCUT_ASSERT_NOT_NULL(entry->button);
+	PCUT_ASSERT_FALSE(ui_pbutton_get_light(entry->button));
+
+	wndlist_destroy(wndlist);
+
+	ui_window_destroy(window);
+	ui_destroy(ui);
+}
+
 /** Test setting entry rectangle */
 PCUT_TEST(set_entry_rect)
@@ -296,5 +345,5 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 123, "Foo", true);
+	rc = wndlist_append(wndlist, 123, "Foo", true, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -337,8 +386,8 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -384,8 +433,8 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -434,8 +483,8 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -480,5 +529,5 @@
 	PCUT_ASSERT_INT_EQUALS(0, count);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -486,5 +535,5 @@
 	PCUT_ASSERT_INT_EQUALS(1, count);
 
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
@@ -524,8 +573,8 @@
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
-	rc = wndlist_append(wndlist, 1, "Foo", true);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = wndlist_append(wndlist, 2, "Bar", true);
+	rc = wndlist_append(wndlist, 1, "Foo", true, true);
+	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
+
+	rc = wndlist_append(wndlist, 2, "Bar", false, true);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 
Index: uspace/app/taskbar/wndlist.c
===================================================================
--- uspace/app/taskbar/wndlist.c	(revision 570a3f383acc893b1355dd2d5c791922b2885796)
+++ uspace/app/taskbar/wndlist.c	(revision 3c54869a5b618845c19d4f6200ee90ac99a446aa)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -157,5 +157,5 @@
 		if ((winfo->flags & (wndf_popup | wndf_system)) == 0) {
 			rc = wndlist_append(wndlist, wlist->windows[i],
-			    winfo->caption, false);
+			    winfo->caption, winfo->nfocus != 0, false);
 			if (rc != EOK) {
 				wndmgt_free_window_info(winfo);
@@ -202,9 +202,10 @@
  * @param wnd_id Window ID
  * @param caption Entry caption
+ * @param active @c true iff window is active
  * @param paint @c true to paint immediately
  * @return @c EOK on success or an error code
  */
 errno_t wndlist_append(wndlist_t *wndlist, sysarg_t wnd_id,
-    const char *caption, bool paint)
+    const char *caption, bool active, bool paint)
 {
 	wndlist_entry_t *entry = NULL;
@@ -230,4 +231,6 @@
 
 	entry->visible = false;
+
+	ui_pbutton_set_light(entry->button, active);
 
 	/* Set button callbacks */
@@ -382,8 +385,9 @@
  * @param wndlist Window list
  * @param entry Window list entry
+ * @param active @c true iff the window is active
  * @return @c EOK on success or an error code
  */
 errno_t wndlist_update(wndlist_t *wndlist, wndlist_entry_t *entry,
-    const char *caption)
+    const char *caption, bool active)
 {
 	errno_t rc;
@@ -393,4 +397,6 @@
 	if (rc != EOK)
 		return rc;
+
+	ui_pbutton_set_light(entry->button, active);
 
 	rc = ui_pbutton_paint(entry->button);
@@ -507,5 +513,6 @@
 
 	if ((winfo->flags & (wndf_popup | wndf_system)) == 0) {
-		rc = wndlist_append(wndlist, wnd_id, winfo->caption, true);
+		rc = wndlist_append(wndlist, wnd_id, winfo->caption,
+		    winfo->nfocus != 0, true);
 		if (rc != EOK) {
 			wndmgt_free_window_info(winfo);
@@ -558,5 +565,6 @@
 		return;
 
-	(void) wndlist_update(wndlist, entry, winfo->caption);
+	(void) wndlist_update(wndlist, entry, winfo->caption,
+	    winfo->nfocus != 0);
 	wndmgt_free_window_info(winfo);
 }
Index: uspace/app/taskbar/wndlist.h
===================================================================
--- uspace/app/taskbar/wndlist.h	(revision 570a3f383acc893b1355dd2d5c791922b2885796)
+++ uspace/app/taskbar/wndlist.h	(revision 3c54869a5b618845c19d4f6200ee90ac99a446aa)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -50,8 +50,10 @@
 extern errno_t wndlist_open_wm(wndlist_t *, const char *);
 extern void wndlist_destroy(wndlist_t *);
-extern errno_t wndlist_append(wndlist_t *, sysarg_t, const char *, bool);
+extern errno_t wndlist_append(wndlist_t *, sysarg_t, const char *, bool,
+    bool);
 extern errno_t wndlist_remove(wndlist_t *, wndlist_entry_t *, bool);
 extern bool wndlist_update_pitch(wndlist_t *);
-extern errno_t wndlist_update(wndlist_t *, wndlist_entry_t *, const char *);
+extern errno_t wndlist_update(wndlist_t *, wndlist_entry_t *, const char *,
+    bool);
 extern void wndlist_set_entry_rect(wndlist_t *, wndlist_entry_t *);
 extern wndlist_entry_t *wndlist_entry_by_id(wndlist_t *, sysarg_t);
