*/
#pragma once
+#include <config.h>
+
/**
* Updates _NET_CURRENT_DESKTOP with the current desktop number.
*
*/
void ewmh_update_desktop_viewport(void);
+/**
+ * Updates _NET_WM_DESKTOP for all windows.
+ * A request will only be made if the cached value differs from the calculated value.
+ *
+ */
+void ewmh_update_wm_desktop(void);
+
/**
* Updates _NET_ACTIVE_WINDOW with the currently focused window.
*
*/
void ewmh_update_active_window(xcb_window_t window);
+/**
+ * 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_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 up the EWMH hints on the root window.
*
/**
* i3 currently does not support _NET_WORKAREA, because it does not correspond
* to i3’s concept of workspaces. See also:
- * http://bugs.i3wm.org/539
- * http://bugs.i3wm.org/301
- * http://bugs.i3wm.org/1038
+ * 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.
*
*/
void ewmh_update_workarea(void);
+
+/**
+ * Returns the workspace container as enumerated by the EWMH desktop model.
+ * Returns NULL if no workspace could be found for the index.
+ *
+ * This is the reverse of ewmh_get_workspace_index.
+ *
+ */
+Con *ewmh_get_workspace_by_index(uint32_t idx);
+
+/**
+ * Returns the EWMH desktop index for the workspace the given container is on.
+ * Returns NET_WM_DESKTOP_NONE if the desktop index cannot be determined.
+ *
+ * This is the reverse of ewmh_get_workspace_by_index.
+ *
+ */
+uint32_t ewmh_get_workspace_index(Con *con);