+ * Updates _NET_WM_VISIBLE_NAME.
+ *
+ */
+void ewmh_update_visible_name(xcb_window_t window, const char *name);
+
+/**
+ * Updates the _NET_CLIENT_LIST hint. Used for window listers.
+ */
+void ewmh_update_client_list(xcb_window_t *list, int num_windows);
+
+/**
+ * Updates the _NET_CLIENT_LIST_STACKING hint. Necessary to move tabs in
+ * Chromium correctly.
+ *
+ * EWMH: These arrays contain all X Windows managed by the Window Manager.
+ * _NET_CLIENT_LIST has initial mapping order, starting with the oldest window.
+ * _NET_CLIENT_LIST_STACKING has bottom-to-top stacking order. These properties
+ * SHOULD be set and updated by the Window Manager.
+ *
+ */
+void ewmh_update_client_list_stacking(xcb_window_t *stack, int num_windows);
+
+/**
+ * Set or remove _NET_WM_STATE_STICKY on the window.
+ *
+ */
+void ewmh_update_sticky(xcb_window_t window, bool sticky);
+
+/**
+ * Set or remove _NEW_WM_STATE_FOCUSED on the window.
+ *
+ */
+void ewmh_update_focused(xcb_window_t window, bool is_focused);
+
+/**
+ * Set up the EWMH hints on the root window.
+ *
+ */
+void ewmh_setup_hints(void);
+
+/**
+ * i3 currently does not support _NET_WORKAREA, because it does not correspond
+ * to i3’s concept of workspaces. See also:
+ * https://bugs.i3wm.org/539
+ * https://bugs.i3wm.org/301
+ * https://bugs.i3wm.org/1038
+ *
+ * We need to actively delete this property because some display managers (e.g.
+ * LightDM) set it.