X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=blobdiff_plain;f=include%2Fewmh.h;h=01ae67f969c943392ab8506b583cd3b911d5e019;hp=7ed9b544a7b5321296cbe97d1dc9daa90e974a07;hb=HEAD;hpb=96e1b80371b985d4f67b36e6cb48e61b5fb83995 diff --git a/include/ewmh.h b/include/ewmh.h index 7ed9b544..01ae67f9 100644 --- a/include/ewmh.h +++ b/include/ewmh.h @@ -9,6 +9,8 @@ */ #pragma once +#include + /** * Updates _NET_CURRENT_DESKTOP with the current desktop number. * @@ -36,6 +38,13 @@ void ewmh_update_desktop_names(void); */ 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. * @@ -74,6 +83,12 @@ void ewmh_update_client_list_stacking(xcb_window_t *stack, int num_windows); */ 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. * @@ -83,9 +98,9 @@ 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: - * 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. @@ -96,3 +111,21 @@ void ewmh_setup_hints(void); * */ 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);