i3
|
Go to the source code of this file.
Macros | |
#define | FOREACH_NONINTERNAL |
#define | xmacro(atom) |
Functions | |
void | ewmh_update_current_desktop (void) |
Updates _NET_CURRENT_DESKTOP with the current desktop number. | |
static void | ewmh_update_number_of_desktops (void) |
static void | ewmh_update_desktop_names (void) |
static void | ewmh_update_desktop_viewport (void) |
void | ewmh_update_desktop_properties (void) |
Updates all the EWMH desktop properties. | |
static void | ewmh_update_wm_desktop_recursively (Con *con, const uint32_t desktop) |
void | ewmh_update_wm_desktop (void) |
Updates _NET_WM_DESKTOP for all windows. | |
void | ewmh_update_active_window (xcb_window_t window) |
Updates _NET_ACTIVE_WINDOW with the currently focused window. | |
void | ewmh_update_visible_name (xcb_window_t window, const char *name) |
Updates _NET_WM_VISIBLE_NAME. | |
void | ewmh_update_workarea (void) |
i3 currently does not support _NET_WORKAREA, because it does not correspond to i3’s concept of workspaces. | |
void | ewmh_update_client_list (xcb_window_t *list, int num_windows) |
Updates the _NET_CLIENT_LIST hint. | |
void | ewmh_update_client_list_stacking (xcb_window_t *stack, int num_windows) |
Updates the _NET_CLIENT_LIST_STACKING hint. | |
void | ewmh_update_sticky (xcb_window_t window, bool sticky) |
Set or remove _NET_WM_STATE_STICKY on the window. | |
void | ewmh_update_focused (xcb_window_t window, bool is_focused) |
Set or remove _NEW_WM_STATE_FOCUSED on the window. | |
void | ewmh_setup_hints (void) |
Set up the EWMH hints on the root window. | |
Con * | ewmh_get_workspace_by_index (uint32_t idx) |
Returns the workspace container as enumerated by the EWMH desktop model. | |
uint32_t | ewmh_get_workspace_index (Con *con) |
Returns the EWMH desktop index for the workspace the given container is on. | |
Variables | |
xcb_window_t | ewmh_window |
The EWMH support window that is used to indicate that an EWMH-compliant window manager is present. | |
#define FOREACH_NONINTERNAL |
Definition at line 16 of file ewmh.c.
Referenced by ewmh_get_workspace_by_index(), ewmh_get_workspace_index(), ewmh_update_desktop_names(), ewmh_update_desktop_viewport(), and ewmh_update_number_of_desktops().
#define xmacro | ( | atom | ) |
Con * ewmh_get_workspace_by_index | ( | uint32_t | idx | ) |
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.
Definition at line 355 of file ewmh.c.
References FOREACH_NONINTERNAL, and NET_WM_DESKTOP_NONE.
Referenced by handle_client_message(), and manage_window().
uint32_t ewmh_get_workspace_index | ( | Con * | con | ) |
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.
Definition at line 380 of file ewmh.c.
References con_get_workspace(), FOREACH_NONINTERNAL, and NET_WM_DESKTOP_NONE.
Referenced by ewmh_update_current_desktop().
void ewmh_setup_hints | ( | void | ) |
Set up the EWMH hints on the root window.
Definition at line 309 of file ewmh.c.
References conn, ewmh_window, I3_NET_SUPPORTED_ATOMS_XMACRO, and root.
Referenced by main().
void ewmh_update_active_window | ( | xcb_window_t | window | ) |
Updates _NET_ACTIVE_WINDOW with the currently focused window.
EWMH: The window ID of the currently active window or None if no window has the focus.
Definition at line 209 of file ewmh.c.
Referenced by change_ewmh_focus().
void ewmh_update_client_list | ( | xcb_window_t * | list, |
int | num_windows ) |
Updates the _NET_CLIENT_LIST hint.
Used for window listers.
Definition at line 249 of file ewmh.c.
Referenced by x_push_changes().
void ewmh_update_client_list_stacking | ( | xcb_window_t * | stack, |
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.
Definition at line 265 of file ewmh.c.
Referenced by x_push_changes().
void ewmh_update_current_desktop | ( | void | ) |
Updates _NET_CURRENT_DESKTOP with the current desktop number.
EWMH: The index of the current desktop. This is always an integer between 0 and _NET_NUMBER_OF_DESKTOPS - 1.
Definition at line 28 of file ewmh.c.
References conn, ewmh_get_workspace_index(), focused, NET_WM_DESKTOP_NONE, and root.
Referenced by ewmh_update_desktop_properties(), and workspace_show().
|
static |
Definition at line 66 of file ewmh.c.
References conn, FOREACH_NONINTERNAL, Con::name, and root.
Referenced by ewmh_update_desktop_properties().
void ewmh_update_desktop_properties | ( | void | ) |
Updates all the EWMH desktop properties.
Definition at line 118 of file ewmh.c.
References ewmh_update_current_desktop(), ewmh_update_desktop_names(), ewmh_update_desktop_viewport(), ewmh_update_number_of_desktops(), and ewmh_update_wm_desktop().
Referenced by cmd_rename_workspace(), main(), randr_query_outputs(), tree_close_internal(), workspace_get(), workspace_move_to_output(), and workspace_show().
|
static |
Definition at line 93 of file ewmh.c.
References conn, FOREACH_NONINTERNAL, Con::rect, root, Rect::x, and Rect::y.
Referenced by ewmh_update_desktop_properties().
void ewmh_update_focused | ( | xcb_window_t | window, |
bool | is_focused ) |
Set or remove _NEW_WM_STATE_FOCUSED on the window.
Definition at line 295 of file ewmh.c.
References conn, DLOG, xcb_add_property_atom(), and xcb_remove_property_atom().
Referenced by change_ewmh_focus().
|
static |
Definition at line 44 of file ewmh.c.
References conn, FOREACH_NONINTERNAL, and root.
Referenced by ewmh_update_desktop_properties().
void ewmh_update_sticky | ( | xcb_window_t | window, |
bool | sticky ) |
Set or remove _NET_WM_STATE_STICKY on the window.
Definition at line 281 of file ewmh.c.
References conn, DLOG, xcb_add_property_atom(), and xcb_remove_property_atom().
Referenced by cmd_sticky(), handle_client_message(), and handle_net_wm_state_change().
void ewmh_update_visible_name | ( | xcb_window_t | window, |
const char * | name ) |
Updates _NET_WM_VISIBLE_NAME.
Definition at line 218 of file ewmh.c.
References conn.
Referenced by cmd_title_format(), window_update_name(), and window_update_name_legacy().
void ewmh_update_wm_desktop | ( | void | ) |
Updates _NET_WM_DESKTOP for all windows.
A request will only be made if the cached value differs from the calculated value.
Definition at line 186 of file ewmh.c.
References con_is_internal(), croot, ewmh_update_wm_desktop_recursively(), output_get_content(), and TAILQ_FOREACH.
Referenced by _con_move_to_con(), cmd_sticky(), ewmh_update_desktop_properties(), handle_client_message(), handle_net_wm_state_change(), manage_window(), move_to_output_directed(), remanage_window(), and tree_move().
|
static |
Definition at line 126 of file ewmh.c.
References con_get_workspace(), con_has_managed_window(), con_is_floating(), con_is_internal(), con_is_sticky(), conn, DLOG, ELOG, ewmh_update_wm_desktop_recursively(), Window::id, NET_WM_DESKTOP_ALL, NET_WM_DESKTOP_NONE, TAILQ_FOREACH, Con::type, Con::window, and Window::wm_desktop.
Referenced by ewmh_update_wm_desktop(), and ewmh_update_wm_desktop_recursively().
void ewmh_update_workarea | ( | 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.
EWMH: Contains a geometry for each desktop. These geometries specify an area that is completely contained within the viewport. Work area SHOULD be used by desktop applications to place desktop icons appropriately.
Definition at line 241 of file ewmh.c.
Referenced by main().
xcb_window_t ewmh_window |
The EWMH support window that is used to indicate that an EWMH-compliant window manager is present.
This window is created when i3 starts and kept alive until i3 exits. We also use this window as the focused window if no other window is available to be focused on the active workspace in order to prevent keyboard focus issues (see #1378).
Definition at line 14 of file ewmh.c.
Referenced by ewmh_setup_hints(), and x_push_changes().