2009-12-25 15:05:17 +01:00
|
|
|
|
/*
|
2011-03-14 01:09:32 +01:00
|
|
|
|
* vim:ts=4:sw=4:expandtab
|
2009-12-25 15:05:17 +01:00
|
|
|
|
*
|
|
|
|
|
* i3 - an improved dynamic tiling window manager
|
2015-04-04 02:17:56 +02:00
|
|
|
|
* © 2009 Michael Stapelberg and contributors (see also: LICENSE)
|
2009-12-25 15:05:17 +01:00
|
|
|
|
*
|
2011-10-25 22:19:38 +02:00
|
|
|
|
* ewmh.c: Get/set certain EWMH properties easily.
|
2009-12-25 15:05:17 +01:00
|
|
|
|
*
|
|
|
|
|
*/
|
2013-12-29 03:11:50 +01:00
|
|
|
|
#pragma once
|
2009-12-25 15:05:17 +01:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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.
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-03-31 10:53:04 +02:00
|
|
|
|
void ewmh_update_current_desktop(void);
|
2009-12-25 15:05:17 +01:00
|
|
|
|
|
2014-06-16 08:50:47 +02:00
|
|
|
|
/**
|
|
|
|
|
* Updates _NET_NUMBER_OF_DESKTOPS which we interpret as the number of
|
|
|
|
|
* noninternal workspaces.
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_number_of_desktops(void);
|
|
|
|
|
|
2014-06-23 23:44:24 +02:00
|
|
|
|
/**
|
|
|
|
|
* Updates _NET_DESKTOP_NAMES: "The names of all virtual desktops. This is a
|
|
|
|
|
* list of NULL-terminated strings in UTF-8 encoding"
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_desktop_names(void);
|
|
|
|
|
|
2014-06-22 21:20:14 +02:00
|
|
|
|
/**
|
|
|
|
|
* Updates _NET_DESKTOP_VIEWPORT, which is an array of pairs of cardinals that
|
|
|
|
|
* define the top left corner of each desktop's viewport.
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_desktop_viewport(void);
|
|
|
|
|
|
2009-12-25 15:19:39 +01:00
|
|
|
|
/**
|
|
|
|
|
* 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.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_active_window(xcb_window_t window);
|
|
|
|
|
|
2015-08-30 10:10:37 +02:00
|
|
|
|
/**
|
|
|
|
|
* Updates _NET_WM_VISIBLE_NAME.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_visible_name(xcb_window_t window, const char *name);
|
|
|
|
|
|
2014-04-08 20:27:40 +02:00
|
|
|
|
/**
|
|
|
|
|
* Updates the _NET_CLIENT_LIST hint. Used for window listers.
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_client_list(xcb_window_t *list, int num_windows);
|
|
|
|
|
|
2011-08-03 20:07:03 +02:00
|
|
|
|
/**
|
|
|
|
|
* 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);
|
|
|
|
|
|
2012-01-20 11:52:45 +01:00
|
|
|
|
/**
|
|
|
|
|
* Set up the EWMH hints on the root window.
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-03-31 10:53:04 +02:00
|
|
|
|
void ewmh_setup_hints(void);
|
2012-01-20 11:52:45 +01:00
|
|
|
|
|
2013-07-13 12:24:15 +02:00
|
|
|
|
/**
|
|
|
|
|
* 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
|
|
|
|
|
*
|
|
|
|
|
* 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.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void ewmh_update_workarea(void);
|