2 * vim:ts=4:sw=4:expandtab
4 * i3 - an improved dynamic tiling window manager
5 * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
7 * ewmh.c: Get/set certain EWMH properties easily.
15 * Updates all the EWMH desktop properties.
18 void ewmh_update_desktop_properties(void);
21 * Updates _NET_CURRENT_DESKTOP with the current desktop number.
23 * EWMH: The index of the current desktop. This is always an integer between 0
24 * and _NET_NUMBER_OF_DESKTOPS - 1.
27 void ewmh_update_current_desktop(void);
30 * Updates _NET_WM_DESKTOP for all windows.
31 * A request will only be made if the cached value differs from the calculated value.
34 void ewmh_update_wm_desktop(void);
37 * Updates _NET_ACTIVE_WINDOW with the currently focused window.
39 * EWMH: The window ID of the currently active window or None if no window has
43 void ewmh_update_active_window(xcb_window_t window);
46 * Updates _NET_WM_VISIBLE_NAME.
49 void ewmh_update_visible_name(xcb_window_t window, const char *name);
52 * Updates the _NET_CLIENT_LIST hint. Used for window listers.
54 void ewmh_update_client_list(xcb_window_t *list, int num_windows);
57 * Updates the _NET_CLIENT_LIST_STACKING hint. Necessary to move tabs in
60 * EWMH: These arrays contain all X Windows managed by the Window Manager.
61 * _NET_CLIENT_LIST has initial mapping order, starting with the oldest window.
62 * _NET_CLIENT_LIST_STACKING has bottom-to-top stacking order. These properties
63 * SHOULD be set and updated by the Window Manager.
66 void ewmh_update_client_list_stacking(xcb_window_t *stack, int num_windows);
69 * Set or remove _NET_WM_STATE_STICKY on the window.
72 void ewmh_update_sticky(xcb_window_t window, bool sticky);
75 * Set or remove _NEW_WM_STATE_FOCUSED on the window.
78 void ewmh_update_focused(xcb_window_t window, bool is_focused);
81 * Set up the EWMH hints on the root window.
84 void ewmh_setup_hints(void);
87 * i3 currently does not support _NET_WORKAREA, because it does not correspond
88 * to i3’s concept of workspaces. See also:
89 * https://bugs.i3wm.org/539
90 * https://bugs.i3wm.org/301
91 * https://bugs.i3wm.org/1038
93 * We need to actively delete this property because some display managers (e.g.
96 * EWMH: Contains a geometry for each desktop. These geometries specify an area
97 * that is completely contained within the viewport. Work area SHOULD be used by
98 * desktop applications to place desktop icons appropriately.
101 void ewmh_update_workarea(void);
104 * Returns the workspace container as enumerated by the EWMH desktop model.
105 * Returns NULL if no workspace could be found for the index.
107 * This is the reverse of ewmh_get_workspace_index.
110 Con *ewmh_get_workspace_by_index(uint32_t idx);
113 * Returns the EWMH desktop index for the workspace the given container is on.
114 * Returns NET_WM_DESKTOP_NONE if the desktop index cannot be determined.
116 * This is the reverse of ewmh_get_workspace_by_index.
119 uint32_t ewmh_get_workspace_index(Con *con);