]> git.sur5r.net Git - i3/i3/blob - include/x.h
Handle FocusIn events generated by clients and update decoration accordingly (Thanks...
[i3/i3] / include / x.h
1 /*
2  * vim:ts=4:sw=4:expandtab
3  */
4
5 #ifndef _X_H
6 #define _X_H
7
8 /** Stores the X11 window ID of the currently focused window */
9 extern xcb_window_t focused_id;
10
11 /**
12  * Initializes the X11 part for the given container. Called exactly once for
13  * every container from con_new().
14  *
15  */
16 void x_con_init(Con *con);
17
18 /**
19  * Moves a child window from Container src to Container dest.
20  *
21  */
22 void x_move_win(Con *src, Con *dest);
23
24 /**
25  * Reparents the child window of the given container (necessary for sticky
26  * containers). The reparenting happens in the next call of x_push_changes().
27  *
28  */
29 void x_reparent_child(Con *con, Con *old);
30
31 /**
32  * Re-initializes the associated X window state for this container. You have
33  * to call this when you assign a client to an empty container to ensure that
34  * its state gets updated correctly.
35  *
36  */
37 void x_reinit(Con *con);
38
39 /**
40  * Kills the window decoration associated with the given container.
41  *
42  */
43 void x_con_kill(Con *con);
44
45 /**
46  * Returns true if the client supports the given protocol atom (like WM_DELETE_WINDOW)
47  *
48  */
49 bool window_supports_protocol(xcb_window_t window, xcb_atom_t atom);
50
51 /**
52  * Kills the given X11 window using WM_DELETE_WINDOW (if supported).
53  *
54  */
55 void x_window_kill(xcb_window_t window);
56
57 /**
58  * Draws the decoration of the given container onto its parent.
59  *
60  */
61 void x_draw_decoration(Con *con);
62
63 /**
64  * Pushes all changes (state of each node, see x_push_node() and the window
65  * stack) to X11.
66  *
67  */
68 void x_push_changes(Con *con);
69
70 /**
71  * Raises the specified container in the internal stack of X windows. The
72  * next call to x_push_changes() will make the change visible in X11.
73  *
74  */
75 void x_raise_con(Con *con);
76
77 /**
78  * Sets the WM_NAME property (so, no UTF8, but used only for debugging anyways)
79  * of the given name. Used for properly tagging the windows for easily spotting
80  * i3 windows in xwininfo -root -all.
81  *
82  */
83 void x_set_name(Con *con, const char *name);
84
85 /**
86  * Sets up i3 specific atoms (I3_SOCKET_PATH and I3_CONFIG_PATH)
87  *
88  */
89 void x_set_i3_atoms();
90
91 #endif