4 * i3 - an improved dynamic tiling window manager
6 * (c) 2009 Michael Stapelberg and contributors
8 * See file LICENSE for license information.
17 * Gets the unoccupied space (= space which is available for windows which
18 * were resized by the user) This is necessary to render both, customly
19 * resized windows and never touched windows correctly, meaning that the
20 * aspect ratio will be maintained when opening new windows.
23 int get_unoccupied_x(Workspace *workspace);
25 /** See get_unoccupied_x */
26 int get_unoccupied_y(Workspace *workspace);
29 * (Re-)draws window decorations for a given Client onto the given
30 * drawable/graphic context. When in stacking mode, the window decorations
31 * are drawn onto an own window.
34 void decorate_window(xcb_connection_t *conn, Client *client,
35 xcb_drawable_t drawable, xcb_gcontext_t gc,
36 int offset_x, int offset_y);
39 * Redecorates the given client correctly by checking if it’s in a stacking
40 * container and re-rendering the stack window or just calling decorate_window
41 * if it’s not in a stacking container.
44 void redecorate_window(xcb_connection_t *conn, Client *client);
47 * Pushes the client’s x and y coordinates to X11
50 void reposition_client(xcb_connection_t *conn, Client *client);
53 * Pushes the client’s width/height to X11 and resizes the child window. This
54 * function also updates the client’s position, so if you work on tiling clients
55 * only, you can use this function instead of separate calls to reposition_client
56 * and resize_client to reduce flickering.
59 void resize_client(xcb_connection_t *conn, Client *client);
62 * Renders the given container. Is called by render_layout() or individually
63 * (for example when focus changes in a stacking container)
66 void render_container(xcb_connection_t *conn, Container *container);
69 * Modifies the event mask of all clients on the given workspace to either
70 * ignore or to handle enter notifies. It is handy to ignore notifies because
71 * they will be sent when a window is mapped under the cursor, thus when the
72 * user didn’t enter the window actively at all.
75 void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace,
76 bool ignore_enter_notify);
79 * Renders the given workspace on the given screen
82 void render_workspace(xcb_connection_t *conn, Output *output, Workspace *r_ws);
85 * Renders the whole layout, that is: Go through each screen, each workspace,
86 * each container and render each client. This also renders the bars.
88 * If you don’t need to render *everything*, you should call render_container
89 * on the container you want to refresh.
92 void render_layout(xcb_connection_t *conn);