2 * vim:ts=4:sw=4:expandtab
4 * i3bar - an xcb-based status- and ws-bar for i3
5 * © 2010-2011 Axel Wagner and contributors (see also: LICENSE)
7 * xcb.c: Communicating with X
14 //#include "outputs.h"
17 #define XCB_ATOM_CARDINAL CARDINAL
20 #define _NET_SYSTEM_TRAY_ORIENTATION_HORZ 0
21 #define _NET_SYSTEM_TRAY_ORIENTATION_VERT 1
22 #define SYSTEM_TRAY_REQUEST_DOCK 0
23 #define SYSTEM_TRAY_BEGIN_MESSAGE 1
24 #define SYSTEM_TRAY_CANCEL_MESSAGE 2
25 #define XEMBED_MAPPED (1 << 0)
26 #define XEMBED_EMBEDDED_NOTIFY 0
28 struct xcb_color_strings_t {
33 char *active_ws_border;
36 char *inactive_ws_border;
39 char *focus_ws_border;
42 char *urgent_ws_border;
45 typedef struct xcb_colors_t xcb_colors_t;
48 * Early initialization of the connection to X11: Everything which does not
52 char *init_xcb_early();
55 * Initialization which depends on 'config' being usable. Called after the
56 * configuration has arrived.
59 void init_xcb_late(char *fontname);
62 * Initialize the colors
65 void init_colors(const struct xcb_color_strings_t *colors);
68 * Cleanup the xcb-stuff.
69 * Called once, before the program terminates.
75 * Get the earlier requested atoms and save them in the prepared data-structure
81 * Reparents all tray clients of the specified output to the root window. This
82 * is either used when shutting down, when an output appears (xrandr --output
83 * VGA1 --off) or when the primary output changes.
85 * Applications using the tray will start the protocol from the beginning again
89 void kick_tray_clients(i3_output *output);
92 * Destroy the bar of the specified output
95 void destroy_window(i3_output *output);
98 * Reallocate the statusline-buffer
101 void realloc_sl_buffer();
104 * Reconfigure all bars and create new for newly activated outputs
107 void reconfig_windows();
110 * Render the bars, with buttons and statusline
116 * Redraw the bars, i.e. simply copy the buffer to the barwindow