]> git.sur5r.net Git - i3/i3/blob - i3bar/include/xcb.h
Enforce strict prototypes
[i3/i3] / i3bar / include / xcb.h
1 /*
2  * vim:ts=4:sw=4:expandtab
3  *
4  * i3bar - an xcb-based status- and ws-bar for i3
5  * © 2010 Axel Wagner and contributors (see also: LICENSE)
6  *
7  * xcb.c: Communicating with X
8  *
9  */
10 #pragma once
11
12 #include <config.h>
13
14 #include <stdint.h>
15 //#include "outputs.h"
16
17 #define _NET_SYSTEM_TRAY_ORIENTATION_HORZ 0
18 #define _NET_SYSTEM_TRAY_ORIENTATION_VERT 1
19 #define SYSTEM_TRAY_REQUEST_DOCK 0
20 #define SYSTEM_TRAY_BEGIN_MESSAGE 1
21 #define SYSTEM_TRAY_CANCEL_MESSAGE 2
22 #define XEMBED_MAPPED (1 << 0)
23 #define XEMBED_EMBEDDED_NOTIFY 0
24
25 /* We define xcb_request_failed as a macro to include the relevant line number */
26 #define xcb_request_failed(cookie, err_msg) _xcb_request_failed(cookie, err_msg, __LINE__)
27 int _xcb_request_failed(xcb_void_cookie_t cookie, char *err_msg, int line);
28
29 struct xcb_color_strings_t {
30     char *bar_fg;
31     char *bar_bg;
32     char *sep_fg;
33     char *focus_bar_fg;
34     char *focus_bar_bg;
35     char *focus_sep_fg;
36     char *active_ws_fg;
37     char *active_ws_bg;
38     char *active_ws_border;
39     char *inactive_ws_fg;
40     char *inactive_ws_bg;
41     char *inactive_ws_border;
42     char *focus_ws_bg;
43     char *focus_ws_fg;
44     char *focus_ws_border;
45     char *urgent_ws_bg;
46     char *urgent_ws_fg;
47     char *urgent_ws_border;
48     char *binding_mode_bg;
49     char *binding_mode_fg;
50     char *binding_mode_border;
51 };
52
53 typedef struct xcb_colors_t xcb_colors_t;
54
55 /* Cached width of the custom separator if one was set */
56 int separator_symbol_width;
57
58 /*
59  * Early initialization of the connection to X11: Everything which does not
60  * depend on 'config'.
61  *
62  */
63 char *init_xcb_early(void);
64
65 /**
66  * Initialization which depends on 'config' being usable. Called after the
67  * configuration has arrived.
68  *
69  */
70 void init_xcb_late(char *fontname);
71
72 /*
73  * Initialize the colors
74  *
75  */
76 void init_colors(const struct xcb_color_strings_t *colors);
77
78 /*
79  * Cleanup the xcb stuff.
80  * Called once, before the program terminates.
81  *
82  */
83 void clean_xcb(void);
84
85 /*
86  * Get the earlier requested atoms and save them in the prepared data structure
87  *
88  */
89 void get_atoms(void);
90
91 /*
92  * Reparents all tray clients of the specified output to the root window. This
93  * is either used when shutting down, when an output appears (xrandr --output
94  * VGA1 --off) or when the primary output changes.
95  *
96  * Applications using the tray will start the protocol from the beginning again
97  * afterwards.
98  *
99  */
100 void kick_tray_clients(i3_output *output);
101
102 /*
103  * We need to set the _NET_SYSTEM_TRAY_COLORS atom on the tray selection window
104  * to make GTK+ 3 applets with symbolic icons visible. If the colors are unset,
105  * they assume a light background.
106  * See also https://bugzilla.gnome.org/show_bug.cgi?id=679591
107  *
108  */
109 void init_tray_colors(void);
110
111 /*
112  * Destroy the bar of the specified output
113  *
114  */
115 void destroy_window(i3_output *output);
116
117 /*
118  * Reallocate the statusline buffer
119  *
120  */
121 void realloc_sl_buffer(void);
122
123 /*
124  * Reconfigure all bars and create new for newly activated outputs
125  *
126  */
127 void reconfig_windows(bool redraw_bars);
128
129 /*
130  * Render the bars, with buttons and statusline
131  *
132  */
133 void draw_bars(bool force_unhide);
134
135 /*
136  * Redraw the bars, i.e. simply copy the buffer to the barwindow
137  *
138  */
139 void redraw_bars(void);
140
141 /*
142  * Set the current binding mode
143  *
144  */
145 void set_current_mode(struct mode *mode);