Index: uspace/lib/ui/include/types/ui/wdecor.h
===================================================================
--- uspace/lib/ui/include/types/ui/wdecor.h	(revision 46bd63c90e62ae2887633555d123a6aa959d3b05)
+++ uspace/lib/ui/include/types/ui/wdecor.h	(revision 1af103e4973625ad986fb43b4eea1bcd9414c3c1)
@@ -38,4 +38,5 @@
 
 #include <gfx/coord.h>
+#include <types/common.h>
 #include <types/ui/cursor.h>
 
@@ -51,14 +52,16 @@
 	/** Window has a title bar */
 	ui_wds_titlebar = 0x2,
+	/** Window has a system menu */
+	ui_wds_sysmenu = 0x4,
 	/** Window has a minimize button */
-	ui_wds_minimize_btn = 0x4,
+	ui_wds_minimize_btn = 0x8,
 	/** Window has a maximize button */
-	ui_wds_maximize_btn = 0x8,
+	ui_wds_maximize_btn = 0x10,
 	/** Window has a close button */
-	ui_wds_close_btn = 0x10,
+	ui_wds_close_btn = 0x20,
 	/** Window is resizable */
-	ui_wds_resizable = 0x20,
+	ui_wds_resizable = 0x40,
 	/** Window is decorated (default decoration) */
-	ui_wds_decorated = ui_wds_frame | ui_wds_titlebar |
+	ui_wds_decorated = ui_wds_frame | ui_wds_titlebar | ui_wds_sysmenu |
 	    ui_wds_minimize_btn | ui_wds_close_btn
 } ui_wdecor_style_t;
@@ -81,4 +84,5 @@
 /** Window decoration callbacks */
 typedef struct ui_wdecor_cb {
+	void (*sysmenu)(ui_wdecor_t *, void *, sysarg_t);
 	void (*minimize)(ui_wdecor_t *, void *);
 	void (*maximize)(ui_wdecor_t *, void *);
Index: uspace/lib/ui/include/types/ui/window.h
===================================================================
--- uspace/lib/ui/include/types/ui/window.h	(revision 46bd63c90e62ae2887633555d123a6aa959d3b05)
+++ uspace/lib/ui/include/types/ui/window.h	(revision 1af103e4973625ad986fb43b4eea1bcd9414c3c1)
@@ -40,4 +40,5 @@
 #include <io/kbd_event.h>
 #include <io/pos_event.h>
+#include <types/common.h>
 #include <types/ui/wdecor.h>
 
@@ -95,4 +96,5 @@
 /** Window callbacks */
 typedef struct ui_window_cb {
+	void (*sysmenu)(ui_window_t *, void *, sysarg_t);
 	void (*minimize)(ui_window_t *, void *);
 	void (*maximize)(ui_window_t *, void *);
Index: uspace/lib/ui/include/ui/wdecor.h
===================================================================
--- uspace/lib/ui/include/ui/wdecor.h	(revision 46bd63c90e62ae2887633555d123a6aa959d3b05)
+++ uspace/lib/ui/include/ui/wdecor.h	(revision 1af103e4973625ad986fb43b4eea1bcd9414c3c1)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -39,4 +39,5 @@
 #include <errno.h>
 #include <gfx/coord.h>
+#include <io/kbd_event.h>
 #include <io/pos_event.h>
 #include <stdbool.h>
@@ -54,4 +55,5 @@
 extern errno_t ui_wdecor_set_caption(ui_wdecor_t *, const char *);
 extern errno_t ui_wdecor_paint(ui_wdecor_t *);
+extern ui_evclaim_t ui_wdecor_kbd_event(ui_wdecor_t *, kbd_event_t *);
 extern ui_evclaim_t ui_wdecor_pos_event(ui_wdecor_t *, pos_event_t *);
 extern void ui_wdecor_rect_from_app(ui_wdecor_style_t, gfx_rect_t *,
Index: uspace/lib/ui/include/ui/window.h
===================================================================
--- uspace/lib/ui/include/ui/window.h	(revision 46bd63c90e62ae2887633555d123a6aa959d3b05)
+++ uspace/lib/ui/include/ui/window.h	(revision 1af103e4973625ad986fb43b4eea1bcd9414c3c1)
@@ -42,4 +42,5 @@
 #include <io/kbd_event.h>
 #include <io/pos_event.h>
+#include <types/common.h>
 #include <types/ui/control.h>
 #include <types/ui/ui.h>
@@ -65,4 +66,5 @@
 extern void ui_window_set_ctl_cursor(ui_window_t *, ui_stock_cursor_t);
 extern errno_t ui_window_paint(ui_window_t *);
+extern errno_t ui_window_def_sysmenu(ui_window_t *, sysarg_t);
 extern errno_t ui_window_def_minimize(ui_window_t *);
 extern errno_t ui_window_def_maximize(ui_window_t *);
