format **/*.c with clang-format-3.5
This has multiple effects: 1) The i3 codebase is now consistently formatted. clang-format uncovered plenty of places where inconsistent code made it into our code base. 2) When writing code, you don’t need to think or worry about our coding style. Write it in yours, then run clang-format-3.5 3) When submitting patches, we don’t need to argue about coding style. The basic idea is that we don’t want to care about _how_ we write the code, but _what_ it does :). The coding style that we use is defined in the .clang-format config file and is based on the google style, but adapted in such a way that the number of modifications to the i3 code base is minimal.
This commit is contained in:
@ -31,7 +31,7 @@
|
||||
i3bar_child child;
|
||||
|
||||
/* stdin- and sigchild-watchers */
|
||||
ev_io *stdin_io;
|
||||
ev_io *stdin_io;
|
||||
ev_child *child_sig;
|
||||
|
||||
/* JSON parser for stdin */
|
||||
@ -80,7 +80,7 @@ static void clear_status_blocks() {
|
||||
* `draw_bars' is called, the error message text will be drawn on the bar in
|
||||
* the space allocated for the statusline.
|
||||
*/
|
||||
__attribute__ ((format (printf, 1, 2))) static void set_statusline_error(const char *format, ...) {
|
||||
__attribute__((format(printf, 1, 2))) static void set_statusline_error(const char *format, ...) {
|
||||
clear_status_blocks();
|
||||
|
||||
char *message;
|
||||
@ -188,9 +188,9 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
|
||||
sasprintf(&(ctx->block.color), "%.*s", len, val);
|
||||
}
|
||||
if (strcasecmp(ctx->last_map_key, "align") == 0) {
|
||||
if (len == strlen("left") && !strncmp((const char*)val, "left", strlen("left"))) {
|
||||
if (len == strlen("left") && !strncmp((const char *)val, "left", strlen("left"))) {
|
||||
ctx->block.align = ALIGN_LEFT;
|
||||
} else if (len == strlen("right") && !strncmp((const char*)val, "right", strlen("right"))) {
|
||||
} else if (len == strlen("right") && !strncmp((const char *)val, "right", strlen("right"))) {
|
||||
ctx->block.align = ALIGN_RIGHT;
|
||||
} else {
|
||||
ctx->block.align = ALIGN_CENTER;
|
||||
@ -201,13 +201,13 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
|
||||
i3string_free(text);
|
||||
}
|
||||
if (strcasecmp(ctx->last_map_key, "name") == 0) {
|
||||
char *copy = (char*)malloc(len+1);
|
||||
char *copy = (char *)malloc(len + 1);
|
||||
strncpy(copy, (const char *)val, len);
|
||||
copy[len] = 0;
|
||||
ctx->block.name = copy;
|
||||
}
|
||||
if (strcasecmp(ctx->last_map_key, "instance") == 0) {
|
||||
char *copy = (char*)malloc(len+1);
|
||||
char *copy = (char *)malloc(len + 1);
|
||||
strncpy(copy, (const char *)val, len);
|
||||
copy[len] = 0;
|
||||
ctx->block.instance = copy;
|
||||
@ -243,7 +243,7 @@ static int stdin_end_map(void *context) {
|
||||
static int stdin_end_array(void *context) {
|
||||
DLOG("dumping statusline:\n");
|
||||
struct status_block *current;
|
||||
TAILQ_FOREACH(current, &statusline_head, blocks) {
|
||||
TAILQ_FOREACH (current, &statusline_head, blocks) {
|
||||
DLOG("full_text = %s\n", i3string_as_utf8(current->full_text));
|
||||
DLOG("color = %s\n", current->color);
|
||||
}
|
||||
@ -262,9 +262,9 @@ static unsigned char *get_buffer(ev_io *watcher, int *ret_buffer_len) {
|
||||
int n = 0;
|
||||
int rec = 0;
|
||||
int buffer_len = STDIN_CHUNK_SIZE;
|
||||
unsigned char *buffer = smalloc(buffer_len+1);
|
||||
unsigned char *buffer = smalloc(buffer_len + 1);
|
||||
buffer[0] = '\0';
|
||||
while(1) {
|
||||
while (1) {
|
||||
n = read(fd, buffer + rec, buffer_len - rec);
|
||||
if (n == -1) {
|
||||
if (errno == EAGAIN) {
|
||||
@ -300,9 +300,10 @@ static void read_flat_input(char *buffer, int length) {
|
||||
I3STRING_FREE(first->full_text);
|
||||
/* Remove the trailing newline and terminate the string at the same
|
||||
* time. */
|
||||
if (buffer[length-1] == '\n' || buffer[length-1] == '\r')
|
||||
buffer[length-1] = '\0';
|
||||
else buffer[length] = '\0';
|
||||
if (buffer[length - 1] == '\n' || buffer[length - 1] == '\r')
|
||||
buffer[length - 1] = '\0';
|
||||
else
|
||||
buffer[length] = '\0';
|
||||
first->full_text = i3string_from_utf8(buffer);
|
||||
}
|
||||
|
||||
@ -320,7 +321,7 @@ static bool read_json_input(unsigned char *input, int length) {
|
||||
status, message, length, input);
|
||||
|
||||
set_statusline_error("Could not parse JSON (%s)", message);
|
||||
yajl_free_error(parser, (unsigned char*)message);
|
||||
yajl_free_error(parser, (unsigned char *)message);
|
||||
draw_bars(false);
|
||||
} else if (parser_context.has_urgent) {
|
||||
has_urgent = true;
|
||||
@ -342,7 +343,7 @@ void stdin_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
|
||||
if (child.version > 0) {
|
||||
has_urgent = read_json_input(buffer, rec);
|
||||
} else {
|
||||
read_flat_input((char*)buffer, rec);
|
||||
read_flat_input((char *)buffer, rec);
|
||||
}
|
||||
free(buffer);
|
||||
draw_bars(has_urgent);
|
||||
@ -376,7 +377,7 @@ void stdin_io_first_line_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
|
||||
* full_text pointer later. */
|
||||
struct status_block *new_block = scalloc(sizeof(struct status_block));
|
||||
TAILQ_INSERT_TAIL(&statusline_head, new_block, blocks);
|
||||
read_flat_input((char*)buffer, rec);
|
||||
read_flat_input((char *)buffer, rec);
|
||||
}
|
||||
free(buffer);
|
||||
ev_io_stop(main_loop, stdin_io);
|
||||
@ -394,8 +395,8 @@ void child_sig_cb(struct ev_loop *loop, ev_child *watcher, int revents) {
|
||||
int exit_status = WEXITSTATUS(watcher->rstatus);
|
||||
|
||||
ELOG("Child (pid: %d) unexpectedly exited with status %d\n",
|
||||
child.pid,
|
||||
exit_status);
|
||||
child.pid,
|
||||
exit_status);
|
||||
|
||||
/* this error is most likely caused by a user giving a nonexecutable or
|
||||
* nonexistent file, so we will handle those cases separately. */
|
||||
@ -450,7 +451,7 @@ void start_child(char *command) {
|
||||
|
||||
gen = yajl_gen_alloc(NULL);
|
||||
|
||||
int pipe_in[2]; /* pipe we read from */
|
||||
int pipe_in[2]; /* pipe we read from */
|
||||
int pipe_out[2]; /* pipe we write to */
|
||||
|
||||
if (pipe(pipe_in) == -1)
|
||||
@ -473,7 +474,7 @@ void start_child(char *command) {
|
||||
dup2(pipe_out[0], STDIN_FILENO);
|
||||
|
||||
setpgid(child.pid, 0);
|
||||
execl(_PATH_BSHELL, _PATH_BSHELL, "-c", command, (char*) NULL);
|
||||
execl(_PATH_BSHELL, _PATH_BSHELL, "-c", command, (char *)NULL);
|
||||
return;
|
||||
default:
|
||||
/* Parent-process. Reroute streams */
|
||||
|
@ -31,7 +31,7 @@ static int config_map_key_cb(void *params_, const unsigned char *keyVal, size_t
|
||||
FREE(cur_key);
|
||||
|
||||
cur_key = smalloc(sizeof(unsigned char) * (keyLen + 1));
|
||||
strncpy(cur_key, (const char*) keyVal, keyLen);
|
||||
strncpy(cur_key, (const char *)keyVal, keyLen);
|
||||
cur_key[keyLen] = '\0';
|
||||
|
||||
return 1;
|
||||
@ -65,29 +65,29 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
|
||||
|
||||
if (!strcmp(cur_key, "mode")) {
|
||||
DLOG("mode = %.*s, len = %d\n", len, val, len);
|
||||
config.hide_on_modifier = (len == 4 && !strncmp((const char*)val, "dock", strlen("dock")) ? M_DOCK
|
||||
: (len == 4 && !strncmp((const char*)val, "hide", strlen("hide")) ? M_HIDE
|
||||
: M_INVISIBLE));
|
||||
config.hide_on_modifier = (len == 4 && !strncmp((const char *)val, "dock", strlen("dock")) ? M_DOCK
|
||||
: (len == 4 && !strncmp((const char *)val, "hide", strlen("hide")) ? M_HIDE
|
||||
: M_INVISIBLE));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(cur_key, "hidden_state")) {
|
||||
DLOG("hidden_state = %.*s, len = %d\n", len, val, len);
|
||||
config.hidden_state = (len == 4 && !strncmp((const char*)val, "hide", strlen("hide")) ? S_HIDE : S_SHOW);
|
||||
config.hidden_state = (len == 4 && !strncmp((const char *)val, "hide", strlen("hide")) ? S_HIDE : S_SHOW);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(cur_key, "modifier")) {
|
||||
DLOG("modifier = %.*s\n", len, val);
|
||||
if (len == 5 && !strncmp((const char*)val, "shift", strlen("shift"))) {
|
||||
if (len == 5 && !strncmp((const char *)val, "shift", strlen("shift"))) {
|
||||
config.modifier = ShiftMask;
|
||||
return 1;
|
||||
}
|
||||
if (len == 4 && !strncmp((const char*)val, "ctrl", strlen("ctrl"))) {
|
||||
if (len == 4 && !strncmp((const char *)val, "ctrl", strlen("ctrl"))) {
|
||||
config.modifier = ControlMask;
|
||||
return 1;
|
||||
}
|
||||
if (len == 4 && !strncmp((const char*)val, "Mod", strlen("Mod"))) {
|
||||
if (len == 4 && !strncmp((const char *)val, "Mod", strlen("Mod"))) {
|
||||
switch (val[3]) {
|
||||
case '1':
|
||||
config.modifier = Mod1Mask;
|
||||
@ -114,7 +114,7 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
|
||||
|
||||
if (!strcmp(cur_key, "position")) {
|
||||
DLOG("position = %.*s\n", len, val);
|
||||
config.position = (len == 3 && !strncmp((const char*)val, "top", strlen("top")) ? POS_TOP : POS_BOT);
|
||||
config.position = (len == 3 && !strncmp((const char *)val, "top", strlen("top")) ? POS_TOP : POS_BOT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
|
||||
if (!strcmp(cur_key, "outputs")) {
|
||||
DLOG("+output %.*s\n", len, val);
|
||||
int new_num_outputs = config.num_outputs + 1;
|
||||
config.outputs = srealloc(config.outputs, sizeof(char*) * new_num_outputs);
|
||||
config.outputs = srealloc(config.outputs, sizeof(char *) * new_num_outputs);
|
||||
sasprintf(&config.outputs[config.num_outputs], "%.*s", len, val);
|
||||
config.num_outputs = new_num_outputs;
|
||||
return 1;
|
||||
@ -146,13 +146,13 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
|
||||
return 1;
|
||||
}
|
||||
|
||||
#define COLOR(json_name, struct_name) \
|
||||
do { \
|
||||
if (!strcmp(cur_key, #json_name)) { \
|
||||
#define COLOR(json_name, struct_name) \
|
||||
do { \
|
||||
if (!strcmp(cur_key, #json_name)) { \
|
||||
DLOG(#json_name " = " #struct_name " = %.*s\n", len, val); \
|
||||
sasprintf(&(config.colors.struct_name), "%.*s", len, val); \
|
||||
return 1; \
|
||||
} \
|
||||
return 1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
COLOR(statusline, bar_fg);
|
||||
@ -225,7 +225,7 @@ void parse_config_json(char *json) {
|
||||
yajl_status state;
|
||||
handle = yajl_alloc(&outputs_callbacks, NULL, NULL);
|
||||
|
||||
state = yajl_parse(handle, (const unsigned char*) json, strlen(json));
|
||||
state = yajl_parse(handle, (const unsigned char *)json, strlen(json));
|
||||
|
||||
/* FIXME: Proper errorhandling for JSON-parsing */
|
||||
switch (state) {
|
||||
@ -246,9 +246,9 @@ void parse_config_json(char *json) {
|
||||
*
|
||||
*/
|
||||
void free_colors(struct xcb_color_strings_t *colors) {
|
||||
#define FREE_COLOR(x) \
|
||||
do { \
|
||||
if (colors->x) \
|
||||
#define FREE_COLOR(x) \
|
||||
do { \
|
||||
if (colors->x) \
|
||||
free(colors->x); \
|
||||
} while (0)
|
||||
FREE_COLOR(bar_fg);
|
||||
@ -268,4 +268,3 @@ void free_colors(struct xcb_color_strings_t *colors) {
|
||||
FREE_COLOR(focus_ws_border);
|
||||
#undef FREE_COLOR
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
ev_io *i3_connection;
|
||||
ev_io *i3_connection;
|
||||
|
||||
const char *sock_path;
|
||||
|
||||
typedef void(*handler_t)(char*);
|
||||
typedef void (*handler_t)(char *);
|
||||
|
||||
/*
|
||||
* Called, when we get a reply to a command from i3.
|
||||
@ -67,7 +67,7 @@ void got_output_reply(char *reply) {
|
||||
reconfig_windows(false);
|
||||
|
||||
i3_output *o_walk;
|
||||
SLIST_FOREACH(o_walk, outputs, slist) {
|
||||
SLIST_FOREACH (o_walk, outputs, slist) {
|
||||
kick_tray_clients(o_walk);
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ void got_bar_config_update(char *event) {
|
||||
char *found_id = strstr(event, expected_id);
|
||||
FREE(expected_id);
|
||||
if (found_id == NULL)
|
||||
return;
|
||||
return;
|
||||
|
||||
free_colors(&(config.colors));
|
||||
|
||||
@ -193,7 +193,7 @@ void got_data(struct ev_loop *loop, ev_io *watcher, int events) {
|
||||
int fd = watcher->fd;
|
||||
|
||||
/* First we only read the header, because we know its length */
|
||||
uint32_t header_len = strlen(I3_IPC_MAGIC) + sizeof(uint32_t)*2;
|
||||
uint32_t header_len = strlen(I3_IPC_MAGIC) + sizeof(uint32_t) * 2;
|
||||
char *header = smalloc(header_len);
|
||||
|
||||
/* We first parse the fixed-length IPC-header, to know, how much data
|
||||
@ -217,7 +217,7 @@ void got_data(struct ev_loop *loop, ev_io *watcher, int events) {
|
||||
|
||||
if (strncmp(header, I3_IPC_MAGIC, strlen(I3_IPC_MAGIC))) {
|
||||
ELOG("Wrong magic code: %.*s\n Expected: %s\n",
|
||||
(int) strlen(I3_IPC_MAGIC),
|
||||
(int)strlen(I3_IPC_MAGIC),
|
||||
header,
|
||||
I3_IPC_MAGIC);
|
||||
exit(EXIT_FAILURE);
|
||||
@ -225,10 +225,10 @@ void got_data(struct ev_loop *loop, ev_io *watcher, int events) {
|
||||
|
||||
char *walk = header + strlen(I3_IPC_MAGIC);
|
||||
uint32_t size;
|
||||
memcpy(&size, (uint32_t*)walk, sizeof(uint32_t));
|
||||
memcpy(&size, (uint32_t *)walk, sizeof(uint32_t));
|
||||
walk += sizeof(uint32_t);
|
||||
uint32_t type;
|
||||
memcpy(&type, (uint32_t*)walk, sizeof(uint32_t));
|
||||
memcpy(&type, (uint32_t *)walk, sizeof(uint32_t));
|
||||
|
||||
/* Now that we know, what to expect, we can start read()ing the rest
|
||||
* of the message */
|
||||
@ -274,7 +274,7 @@ int i3_send_msg(uint32_t type, const char *payload) {
|
||||
}
|
||||
|
||||
/* We are a wellbehaved client and send a proper header first */
|
||||
uint32_t to_write = strlen (I3_IPC_MAGIC) + sizeof(uint32_t)*2 + len;
|
||||
uint32_t to_write = strlen(I3_IPC_MAGIC) + sizeof(uint32_t) * 2 + len;
|
||||
/* TODO: I'm not entirely sure if this buffer really has to contain more
|
||||
* than the pure header (why not just write() the payload from *payload?),
|
||||
* but we leave it for now */
|
||||
|
@ -99,12 +99,11 @@ int main(int argc, char **argv) {
|
||||
memset(&config, '\0', sizeof(config_t));
|
||||
|
||||
static struct option long_opt[] = {
|
||||
{ "socket", required_argument, 0, 's' },
|
||||
{ "bar_id", required_argument, 0, 'b' },
|
||||
{ "help", no_argument, 0, 'h' },
|
||||
{ "version", no_argument, 0, 'v' },
|
||||
{ NULL, 0, 0, 0}
|
||||
};
|
||||
{"socket", required_argument, 0, 's'},
|
||||
{"bar_id", required_argument, 0, 'b'},
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'v'},
|
||||
{NULL, 0, 0, 0}};
|
||||
|
||||
while ((opt = getopt_long(argc, argv, "b:s:hv", long_opt, &option_index)) != -1) {
|
||||
switch (opt) {
|
||||
|
@ -18,9 +18,9 @@
|
||||
|
||||
/* A datatype to pass through the callbacks to save the state */
|
||||
struct mode_json_params {
|
||||
char *json;
|
||||
char *cur_key;
|
||||
mode *mode;
|
||||
char *json;
|
||||
char *cur_key;
|
||||
mode *mode;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -28,22 +28,21 @@ struct mode_json_params {
|
||||
*
|
||||
*/
|
||||
static int mode_string_cb(void *params_, const unsigned char *val, size_t len) {
|
||||
struct mode_json_params *params = (struct mode_json_params*) params_;
|
||||
struct mode_json_params *params = (struct mode_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "change")) {
|
||||
if (!strcmp(params->cur_key, "change")) {
|
||||
/* Save the name */
|
||||
params->mode->name = i3string_from_utf8_with_length((const char *)val, len);
|
||||
/* Save its rendered width */
|
||||
params->mode->width = predict_text_width(params->mode->name);
|
||||
|
||||
/* Save the name */
|
||||
params->mode->name = i3string_from_utf8_with_length((const char *)val, len);
|
||||
/* Save its rendered width */
|
||||
params->mode->width = predict_text_width(params->mode->name);
|
||||
DLOG("Got mode change: %s\n", i3string_as_utf8(params->mode->name));
|
||||
FREE(params->cur_key);
|
||||
|
||||
DLOG("Got mode change: %s\n", i3string_as_utf8(params->mode->name));
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -53,11 +52,11 @@ static int mode_string_cb(void *params_, const unsigned char *val, size_t len) {
|
||||
*
|
||||
*/
|
||||
static int mode_map_key_cb(void *params_, const unsigned char *keyVal, size_t keyLen) {
|
||||
struct mode_json_params *params = (struct mode_json_params*) params_;
|
||||
struct mode_json_params *params = (struct mode_json_params *)params_;
|
||||
FREE(params->cur_key);
|
||||
|
||||
params->cur_key = smalloc(sizeof(unsigned char) * (keyLen + 1));
|
||||
strncpy(params->cur_key, (const char*) keyVal, keyLen);
|
||||
strncpy(params->cur_key, (const char *)keyVal, keyLen);
|
||||
params->cur_key[keyLen] = '\0';
|
||||
|
||||
return 1;
|
||||
@ -87,9 +86,9 @@ void parse_mode_json(char *json) {
|
||||
yajl_handle handle;
|
||||
yajl_status state;
|
||||
|
||||
handle = yajl_alloc(&mode_callbacks, NULL, (void*) ¶ms);
|
||||
handle = yajl_alloc(&mode_callbacks, NULL, (void *)¶ms);
|
||||
|
||||
state = yajl_parse(handle, (const unsigned char*) json, strlen(json));
|
||||
state = yajl_parse(handle, (const unsigned char *)json, strlen(json));
|
||||
|
||||
/* FIXME: Propper errorhandling for JSON-parsing */
|
||||
switch (state) {
|
||||
|
@ -20,10 +20,10 @@
|
||||
/* A datatype to pass through the callbacks to save the state */
|
||||
struct outputs_json_params {
|
||||
struct outputs_head *outputs;
|
||||
i3_output *outputs_walk;
|
||||
char *cur_key;
|
||||
char *json;
|
||||
bool in_rect;
|
||||
i3_output *outputs_walk;
|
||||
char *cur_key;
|
||||
char *json;
|
||||
bool in_rect;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -31,7 +31,7 @@ struct outputs_json_params {
|
||||
*
|
||||
*/
|
||||
static int outputs_null_cb(void *params_) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
|
||||
FREE(params->cur_key);
|
||||
|
||||
@ -43,7 +43,7 @@ static int outputs_null_cb(void *params_) {
|
||||
*
|
||||
*/
|
||||
static int outputs_boolean_cb(void *params_, int val) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "active")) {
|
||||
params->outputs_walk->active = val;
|
||||
@ -65,34 +65,34 @@ static int outputs_boolean_cb(void *params_, int val) {
|
||||
*
|
||||
*/
|
||||
static int outputs_integer_cb(void *params_, long long val) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "current_workspace")) {
|
||||
params->outputs_walk->ws = (int) val;
|
||||
params->outputs_walk->ws = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "x")) {
|
||||
params->outputs_walk->rect.x = (int) val;
|
||||
params->outputs_walk->rect.x = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "y")) {
|
||||
params->outputs_walk->rect.y = (int) val;
|
||||
params->outputs_walk->rect.y = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "width")) {
|
||||
params->outputs_walk->rect.w = (int) val;
|
||||
params->outputs_walk->rect.w = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "height")) {
|
||||
params->outputs_walk->rect.h = (int) val;
|
||||
params->outputs_walk->rect.h = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
@ -105,11 +105,11 @@ static int outputs_integer_cb(void *params_, long long val) {
|
||||
*
|
||||
*/
|
||||
static int outputs_string_cb(void *params_, const unsigned char *val, size_t len) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "current_workspace")) {
|
||||
char *copy = smalloc(sizeof(const unsigned char) * (len + 1));
|
||||
strncpy(copy, (const char*) val, len);
|
||||
strncpy(copy, (const char *)val, len);
|
||||
copy[len] = '\0';
|
||||
|
||||
char *end;
|
||||
@ -128,7 +128,7 @@ static int outputs_string_cb(void *params_, const unsigned char *val, size_t len
|
||||
}
|
||||
|
||||
char *name = smalloc(sizeof(const unsigned char) * (len + 1));
|
||||
strncpy(name, (const char*) val, len);
|
||||
strncpy(name, (const char *)val, len);
|
||||
name[len] = '\0';
|
||||
|
||||
params->outputs_walk->name = name;
|
||||
@ -143,7 +143,7 @@ static int outputs_string_cb(void *params_, const unsigned char *val, size_t len
|
||||
*
|
||||
*/
|
||||
static int outputs_start_map_cb(void *params_) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
i3_output *new_output = NULL;
|
||||
|
||||
if (params->cur_key == NULL) {
|
||||
@ -176,7 +176,7 @@ static int outputs_start_map_cb(void *params_) {
|
||||
*
|
||||
*/
|
||||
static int outputs_end_map_cb(void *params_) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
if (params->in_rect) {
|
||||
params->in_rect = false;
|
||||
/* Ignore the end of a rect */
|
||||
@ -225,11 +225,11 @@ static int outputs_end_map_cb(void *params_) {
|
||||
*
|
||||
*/
|
||||
static int outputs_map_key_cb(void *params_, const unsigned char *keyVal, size_t keyLen) {
|
||||
struct outputs_json_params *params = (struct outputs_json_params*) params_;
|
||||
struct outputs_json_params *params = (struct outputs_json_params *)params_;
|
||||
FREE(params->cur_key);
|
||||
|
||||
params->cur_key = smalloc(sizeof(unsigned char) * (keyLen + 1));
|
||||
strncpy(params->cur_key, (const char*) keyVal, keyLen);
|
||||
strncpy(params->cur_key, (const char *)keyVal, keyLen);
|
||||
params->cur_key[keyLen] = '\0';
|
||||
|
||||
return 1;
|
||||
@ -269,9 +269,9 @@ void parse_outputs_json(char *json) {
|
||||
|
||||
yajl_handle handle;
|
||||
yajl_status state;
|
||||
handle = yajl_alloc(&outputs_callbacks, NULL, (void*) ¶ms);
|
||||
handle = yajl_alloc(&outputs_callbacks, NULL, (void *)¶ms);
|
||||
|
||||
state = yajl_parse(handle, (const unsigned char*) json, strlen(json));
|
||||
state = yajl_parse(handle, (const unsigned char *)json, strlen(json));
|
||||
|
||||
/* FIXME: Propper errorhandling for JSON-parsing */
|
||||
switch (state) {
|
||||
@ -296,7 +296,7 @@ i3_output *get_output_by_name(char *name) {
|
||||
if (name == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!strcmp(walk->name, name)) {
|
||||
break;
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ static int header_boolean(void *ctx, int val) {
|
||||
}
|
||||
|
||||
#define CHECK_KEY(name) (stringlen == strlen(name) && \
|
||||
STARTS_WITH((const char*)stringval, stringlen, name))
|
||||
STARTS_WITH((const char *)stringval, stringlen, name))
|
||||
|
||||
static int header_map_key(void *ctx, const unsigned char *stringval, size_t stringlen) {
|
||||
if (CHECK_KEY("version")) {
|
||||
|
@ -19,9 +19,9 @@
|
||||
/* A datatype to pass through the callbacks to save the state */
|
||||
struct workspaces_json_params {
|
||||
struct ws_head *workspaces;
|
||||
i3_ws *workspaces_walk;
|
||||
char *cur_key;
|
||||
char *json;
|
||||
i3_ws *workspaces_walk;
|
||||
char *cur_key;
|
||||
char *json;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -29,7 +29,7 @@ struct workspaces_json_params {
|
||||
*
|
||||
*/
|
||||
static int workspaces_boolean_cb(void *params_, int val) {
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "visible")) {
|
||||
params->workspaces_walk->visible = val;
|
||||
@ -59,34 +59,34 @@ static int workspaces_boolean_cb(void *params_, int val) {
|
||||
*
|
||||
*/
|
||||
static int workspaces_integer_cb(void *params_, long long val) {
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
|
||||
|
||||
if (!strcmp(params->cur_key, "num")) {
|
||||
params->workspaces_walk->num = (int) val;
|
||||
params->workspaces_walk->num = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "x")) {
|
||||
params->workspaces_walk->rect.x = (int) val;
|
||||
params->workspaces_walk->rect.x = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "y")) {
|
||||
params->workspaces_walk->rect.y = (int) val;
|
||||
params->workspaces_walk->rect.y = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "width")) {
|
||||
params->workspaces_walk->rect.w = (int) val;
|
||||
params->workspaces_walk->rect.w = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "height")) {
|
||||
params->workspaces_walk->rect.h = (int) val;
|
||||
params->workspaces_walk->rect.h = (int)val;
|
||||
FREE(params->cur_key);
|
||||
return 1;
|
||||
}
|
||||
@ -100,70 +100,70 @@ static int workspaces_integer_cb(void *params_, long long val) {
|
||||
*
|
||||
*/
|
||||
static int workspaces_string_cb(void *params_, const unsigned char *val, size_t len) {
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
|
||||
|
||||
char *output_name;
|
||||
char *output_name;
|
||||
|
||||
if (!strcmp(params->cur_key, "name")) {
|
||||
const char *ws_name = (const char*)val;
|
||||
params->workspaces_walk->canonical_name = strndup(ws_name, len);
|
||||
if (!strcmp(params->cur_key, "name")) {
|
||||
const char *ws_name = (const char *)val;
|
||||
params->workspaces_walk->canonical_name = strndup(ws_name, len);
|
||||
|
||||
if (config.strip_ws_numbers && params->workspaces_walk->num >= 0) {
|
||||
/* Special case: strip off the workspace number */
|
||||
static char ws_num[10];
|
||||
if (config.strip_ws_numbers && params->workspaces_walk->num >= 0) {
|
||||
/* Special case: strip off the workspace number */
|
||||
static char ws_num[10];
|
||||
|
||||
snprintf(ws_num, sizeof(ws_num), "%d", params->workspaces_walk->num);
|
||||
snprintf(ws_num, sizeof(ws_num), "%d", params->workspaces_walk->num);
|
||||
|
||||
/* Calculate the length of the number str in the name */
|
||||
size_t offset = strspn(ws_name, ws_num);
|
||||
/* Calculate the length of the number str in the name */
|
||||
size_t offset = strspn(ws_name, ws_num);
|
||||
|
||||
/* Also strip off the conventional ws name delimiter */
|
||||
if (offset && ws_name[offset] == ':')
|
||||
offset += 1;
|
||||
/* Also strip off the conventional ws name delimiter */
|
||||
if (offset && ws_name[offset] == ':')
|
||||
offset += 1;
|
||||
|
||||
/* Offset may be equal to length, in which case display the number */
|
||||
params->workspaces_walk->name = (offset < len
|
||||
? i3string_from_utf8_with_length(ws_name + offset, len - offset)
|
||||
: i3string_from_utf8(ws_num));
|
||||
/* Offset may be equal to length, in which case display the number */
|
||||
params->workspaces_walk->name = (offset < len
|
||||
? i3string_from_utf8_with_length(ws_name + offset, len - offset)
|
||||
: i3string_from_utf8(ws_num));
|
||||
|
||||
} else {
|
||||
/* Default case: just save the name */
|
||||
params->workspaces_walk->name = i3string_from_utf8_with_length(ws_name, len);
|
||||
}
|
||||
|
||||
/* Save its rendered width */
|
||||
params->workspaces_walk->name_width =
|
||||
predict_text_width(params->workspaces_walk->name);
|
||||
|
||||
DLOG("Got Workspace canonical: %s, name: '%s', name_width: %d, glyphs: %zu\n",
|
||||
params->workspaces_walk->canonical_name,
|
||||
i3string_as_utf8(params->workspaces_walk->name),
|
||||
params->workspaces_walk->name_width,
|
||||
i3string_get_num_glyphs(params->workspaces_walk->name));
|
||||
FREE(params->cur_key);
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
/* Default case: just save the name */
|
||||
params->workspaces_walk->name = i3string_from_utf8_with_length(ws_name, len);
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "output")) {
|
||||
/* We add the ws to the TAILQ of the output, it belongs to */
|
||||
output_name = smalloc(sizeof(const unsigned char) * (len + 1));
|
||||
strncpy(output_name, (const char*) val, len);
|
||||
output_name[len] = '\0';
|
||||
i3_output *target = get_output_by_name(output_name);
|
||||
if (target) {
|
||||
params->workspaces_walk->output = target;
|
||||
/* Save its rendered width */
|
||||
params->workspaces_walk->name_width =
|
||||
predict_text_width(params->workspaces_walk->name);
|
||||
|
||||
TAILQ_INSERT_TAIL(params->workspaces_walk->output->workspaces,
|
||||
params->workspaces_walk,
|
||||
tailq);
|
||||
}
|
||||
DLOG("Got Workspace canonical: %s, name: '%s', name_width: %d, glyphs: %zu\n",
|
||||
params->workspaces_walk->canonical_name,
|
||||
i3string_as_utf8(params->workspaces_walk->name),
|
||||
params->workspaces_walk->name_width,
|
||||
i3string_get_num_glyphs(params->workspaces_walk->name));
|
||||
FREE(params->cur_key);
|
||||
|
||||
FREE(output_name);
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(params->cur_key, "output")) {
|
||||
/* We add the ws to the TAILQ of the output, it belongs to */
|
||||
output_name = smalloc(sizeof(const unsigned char) * (len + 1));
|
||||
strncpy(output_name, (const char *)val, len);
|
||||
output_name[len] = '\0';
|
||||
i3_output *target = get_output_by_name(output_name);
|
||||
if (target) {
|
||||
params->workspaces_walk->output = target;
|
||||
|
||||
TAILQ_INSERT_TAIL(params->workspaces_walk->output->workspaces,
|
||||
params->workspaces_walk,
|
||||
tailq);
|
||||
}
|
||||
|
||||
return 0;
|
||||
FREE(output_name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -171,7 +171,7 @@ static int workspaces_string_cb(void *params_, const unsigned char *val, size_t
|
||||
*
|
||||
*/
|
||||
static int workspaces_start_map_cb(void *params_) {
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
|
||||
|
||||
i3_ws *new_workspace = NULL;
|
||||
|
||||
@ -199,11 +199,11 @@ static int workspaces_start_map_cb(void *params_) {
|
||||
*
|
||||
*/
|
||||
static int workspaces_map_key_cb(void *params_, const unsigned char *keyVal, size_t keyLen) {
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params*) params_;
|
||||
struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
|
||||
FREE(params->cur_key);
|
||||
|
||||
params->cur_key = smalloc(sizeof(unsigned char) * (keyLen + 1));
|
||||
strncpy(params->cur_key, (const char*) keyVal, keyLen);
|
||||
strncpy(params->cur_key, (const char *)keyVal, keyLen);
|
||||
params->cur_key[keyLen] = '\0';
|
||||
|
||||
return 1;
|
||||
@ -235,9 +235,9 @@ void parse_workspaces_json(char *json) {
|
||||
|
||||
yajl_handle handle;
|
||||
yajl_status state;
|
||||
handle = yajl_alloc(&workspaces_callbacks, NULL, (void*) ¶ms);
|
||||
handle = yajl_alloc(&workspaces_callbacks, NULL, (void *)¶ms);
|
||||
|
||||
state = yajl_parse(handle, (const unsigned char*) json, strlen(json));
|
||||
state = yajl_parse(handle, (const unsigned char *)json, strlen(json));
|
||||
|
||||
/* FIXME: Propper errorhandling for JSON-parsing */
|
||||
switch (state) {
|
||||
@ -264,11 +264,11 @@ void free_workspaces(void) {
|
||||
if (outputs == NULL) {
|
||||
return;
|
||||
}
|
||||
i3_ws *ws_walk;
|
||||
i3_ws *ws_walk;
|
||||
|
||||
SLIST_FOREACH(outputs_walk, outputs, slist) {
|
||||
SLIST_FOREACH (outputs_walk, outputs, slist) {
|
||||
if (outputs_walk->workspaces != NULL && !TAILQ_EMPTY(outputs_walk->workspaces)) {
|
||||
TAILQ_FOREACH(ws_walk, outputs_walk->workspaces, tailq) {
|
||||
TAILQ_FOREACH (ws_walk, outputs_walk->workspaces, tailq) {
|
||||
I3STRING_FREE(ws_walk->name);
|
||||
FREE(ws_walk->canonical_name);
|
||||
}
|
||||
|
307
i3bar/src/xcb.c
307
i3bar/src/xcb.c
@ -35,19 +35,19 @@
|
||||
|
||||
/* We save the Atoms in an easy to access array, indexed by an enum */
|
||||
enum {
|
||||
#define ATOM_DO(name) name,
|
||||
#include "xcb_atoms.def"
|
||||
#define ATOM_DO(name) name,
|
||||
#include "xcb_atoms.def"
|
||||
NUM_ATOMS
|
||||
};
|
||||
|
||||
xcb_intern_atom_cookie_t atom_cookies[NUM_ATOMS];
|
||||
xcb_atom_t atoms[NUM_ATOMS];
|
||||
xcb_atom_t atoms[NUM_ATOMS];
|
||||
|
||||
/* Variables, that are the same for all functions at all times */
|
||||
xcb_connection_t *xcb_connection;
|
||||
int screen;
|
||||
xcb_screen_t *root_screen;
|
||||
xcb_window_t xcb_root;
|
||||
int screen;
|
||||
xcb_screen_t *root_screen;
|
||||
xcb_window_t xcb_root;
|
||||
|
||||
/* selection window for tray support */
|
||||
static xcb_window_t selwin = XCB_NONE;
|
||||
@ -63,22 +63,22 @@ static i3Font font;
|
||||
int bar_height;
|
||||
|
||||
/* These are only relevant for XKB, which we only need for grabbing modifiers */
|
||||
Display *xkb_dpy;
|
||||
int xkb_event_base;
|
||||
int mod_pressed = 0;
|
||||
Display *xkb_dpy;
|
||||
int xkb_event_base;
|
||||
int mod_pressed = 0;
|
||||
|
||||
/* Because the statusline is the same on all outputs, we have
|
||||
* global buffer to render it on */
|
||||
xcb_gcontext_t statusline_ctx;
|
||||
xcb_gcontext_t statusline_clear;
|
||||
xcb_pixmap_t statusline_pm;
|
||||
uint32_t statusline_width;
|
||||
xcb_gcontext_t statusline_ctx;
|
||||
xcb_gcontext_t statusline_clear;
|
||||
xcb_pixmap_t statusline_pm;
|
||||
uint32_t statusline_width;
|
||||
|
||||
/* Event-Watchers, to interact with the user */
|
||||
ev_prepare *xcb_prep;
|
||||
ev_check *xcb_chk;
|
||||
ev_io *xcb_io;
|
||||
ev_io *xkb_io;
|
||||
ev_check *xcb_chk;
|
||||
ev_io *xcb_io;
|
||||
ev_io *xkb_io;
|
||||
|
||||
/* The name of current binding mode */
|
||||
static mode binding;
|
||||
@ -128,7 +128,7 @@ void refresh_statusline(void) {
|
||||
statusline_width = 0;
|
||||
|
||||
/* Predict the text width of all blocks (in pixels). */
|
||||
TAILQ_FOREACH(block, &statusline_head, blocks) {
|
||||
TAILQ_FOREACH (block, &statusline_head, blocks) {
|
||||
if (i3string_get_num_bytes(block->full_text) == 0)
|
||||
continue;
|
||||
|
||||
@ -168,12 +168,12 @@ void refresh_statusline(void) {
|
||||
realloc_sl_buffer();
|
||||
|
||||
/* Clear the statusline pixmap. */
|
||||
xcb_rectangle_t rect = { 0, 0, root_screen->width_in_pixels, font.height + logical_px(5) };
|
||||
xcb_rectangle_t rect = {0, 0, root_screen->width_in_pixels, font.height + logical_px(5)};
|
||||
xcb_poly_fill_rectangle(xcb_connection, statusline_pm, statusline_clear, 1, &rect);
|
||||
|
||||
/* Draw the text of each block. */
|
||||
uint32_t x = 0;
|
||||
TAILQ_FOREACH(block, &statusline_head, blocks) {
|
||||
TAILQ_FOREACH (block, &statusline_head, blocks) {
|
||||
if (i3string_get_num_bytes(block->full_text) == 0)
|
||||
continue;
|
||||
|
||||
@ -184,14 +184,14 @@ void refresh_statusline(void) {
|
||||
|
||||
if (TAILQ_NEXT(block, blocks) != NULL && !block->no_separator && block->sep_block_width > 0) {
|
||||
/* This is not the last block, draw a separator. */
|
||||
uint32_t sep_offset = block->sep_block_width/2 + block->sep_block_width % 2;
|
||||
uint32_t sep_offset = block->sep_block_width / 2 + block->sep_block_width % 2;
|
||||
uint32_t mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_LINE_WIDTH;
|
||||
uint32_t values[] = { colors.sep_fg, colors.bar_bg, logical_px(1) };
|
||||
uint32_t values[] = {colors.sep_fg, colors.bar_bg, logical_px(1)};
|
||||
xcb_change_gc(xcb_connection, statusline_ctx, mask, values);
|
||||
xcb_poly_line(xcb_connection, XCB_COORD_MODE_ORIGIN, statusline_pm,
|
||||
statusline_ctx, 2,
|
||||
(xcb_point_t[]){ { x - sep_offset, 2 },
|
||||
{ x - sep_offset, font.height - 2 } });
|
||||
(xcb_point_t[]) {{x - sep_offset, 2},
|
||||
{x - sep_offset, font.height - 2}});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -206,7 +206,7 @@ void hide_bars(void) {
|
||||
}
|
||||
|
||||
i3_output *walk;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active) {
|
||||
continue;
|
||||
}
|
||||
@ -224,14 +224,14 @@ void unhide_bars(void) {
|
||||
return;
|
||||
}
|
||||
|
||||
i3_output *walk;
|
||||
xcb_void_cookie_t cookie;
|
||||
uint32_t mask;
|
||||
uint32_t values[5];
|
||||
i3_output *walk;
|
||||
xcb_void_cookie_t cookie;
|
||||
uint32_t mask;
|
||||
uint32_t values[5];
|
||||
|
||||
cont_child();
|
||||
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (walk->bar == XCB_NONE) {
|
||||
continue;
|
||||
}
|
||||
@ -243,7 +243,8 @@ void unhide_bars(void) {
|
||||
values[0] = walk->rect.x;
|
||||
if (config.position == POS_TOP)
|
||||
values[1] = walk->rect.y;
|
||||
else values[1] = walk->rect.y + walk->rect.h - bar_height;
|
||||
else
|
||||
values[1] = walk->rect.y + walk->rect.h - bar_height;
|
||||
values[2] = walk->rect.w;
|
||||
values[3] = bar_height;
|
||||
values[4] = XCB_STACK_MODE_ABOVE;
|
||||
@ -265,10 +266,10 @@ void unhide_bars(void) {
|
||||
*
|
||||
*/
|
||||
void init_colors(const struct xcb_color_strings_t *new_colors) {
|
||||
#define PARSE_COLOR(name, def) \
|
||||
do { \
|
||||
#define PARSE_COLOR(name, def) \
|
||||
do { \
|
||||
colors.name = get_colorpixel(new_colors->name ? new_colors->name : def); \
|
||||
} while (0)
|
||||
} while (0)
|
||||
PARSE_COLOR(bar_fg, "#FFFFFF");
|
||||
PARSE_COLOR(bar_bg, "#000000");
|
||||
PARSE_COLOR(sep_fg, "#666666");
|
||||
@ -302,7 +303,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
/* Determine, which bar was clicked */
|
||||
i3_output *walk;
|
||||
xcb_window_t bar = event->event;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (walk->bar == bar) {
|
||||
break;
|
||||
}
|
||||
@ -314,7 +315,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
}
|
||||
|
||||
/* TODO: Move this to extern get_ws_for_output() */
|
||||
TAILQ_FOREACH(cur_ws, walk->workspaces, tailq) {
|
||||
TAILQ_FOREACH (cur_ws, walk->workspaces, tailq) {
|
||||
if (cur_ws->visible) {
|
||||
break;
|
||||
}
|
||||
@ -337,7 +338,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
/* First calculate width of tray area */
|
||||
trayclient *trayclient;
|
||||
int tray_width = 0;
|
||||
TAILQ_FOREACH_REVERSE(trayclient, walk->trayclients, tc_head, tailq) {
|
||||
TAILQ_FOREACH_REVERSE (trayclient, walk->trayclients, tc_head, tailq) {
|
||||
if (!trayclient->mapped)
|
||||
continue;
|
||||
tray_width += (font.height + logical_px(2));
|
||||
@ -350,7 +351,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
if (x >= 0) {
|
||||
struct status_block *block;
|
||||
|
||||
TAILQ_FOREACH(block, &statusline_head, blocks) {
|
||||
TAILQ_FOREACH (block, &statusline_head, blocks) {
|
||||
last_block_x = block_x;
|
||||
block_x += block->width + block->x_offset + block->x_append;
|
||||
|
||||
@ -386,7 +387,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
break;
|
||||
case 1:
|
||||
/* Check if this event regards a workspace button */
|
||||
TAILQ_FOREACH(cur_ws, walk->workspaces, tailq) {
|
||||
TAILQ_FOREACH (cur_ws, walk->workspaces, tailq) {
|
||||
DLOG("x = %d\n", x);
|
||||
if (x >= 0 && x < cur_ws->name_width + logical_px(10)) {
|
||||
break;
|
||||
@ -397,7 +398,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
/* Otherwise, focus our currently visible workspace if it is not
|
||||
* already focused */
|
||||
if (cur_ws == NULL) {
|
||||
TAILQ_FOREACH(cur_ws, walk->workspaces, tailq) {
|
||||
TAILQ_FOREACH (cur_ws, walk->workspaces, tailq) {
|
||||
if (cur_ws->visible && !cur_ws->focused)
|
||||
break;
|
||||
}
|
||||
@ -428,7 +429,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
}
|
||||
|
||||
const size_t len = namelen + strlen("workspace \"\"") + 1;
|
||||
char *buffer = scalloc(len+num_quotes);
|
||||
char *buffer = scalloc(len + num_quotes);
|
||||
strncpy(buffer, "workspace \"", strlen("workspace \""));
|
||||
size_t inpos, outpos;
|
||||
for (inpos = 0, outpos = strlen("workspace \"");
|
||||
@ -454,12 +455,12 @@ void handle_button(xcb_button_press_event_t *event) {
|
||||
static void configure_trayclients(void) {
|
||||
trayclient *trayclient;
|
||||
i3_output *output;
|
||||
SLIST_FOREACH(output, outputs, slist) {
|
||||
SLIST_FOREACH (output, outputs, slist) {
|
||||
if (!output->active)
|
||||
continue;
|
||||
|
||||
int clients = 0;
|
||||
TAILQ_FOREACH_REVERSE(trayclient, output->trayclients, tc_head, tailq) {
|
||||
TAILQ_FOREACH_REVERSE (trayclient, output->trayclients, tc_head, tailq) {
|
||||
if (!trayclient->mapped)
|
||||
continue;
|
||||
clients++;
|
||||
@ -482,7 +483,7 @@ static void configure_trayclients(void) {
|
||||
* supported client messages currently are _NET_SYSTEM_TRAY_OPCODE.
|
||||
*
|
||||
*/
|
||||
static void handle_client_message(xcb_client_message_event_t* event) {
|
||||
static void handle_client_message(xcb_client_message_event_t *event) {
|
||||
if (event->type == atoms[_NET_SYSTEM_TRAY_OPCODE] &&
|
||||
event->format == 32) {
|
||||
DLOG("_NET_SYSTEM_TRAY_OPCODE received\n");
|
||||
@ -543,7 +544,7 @@ static void handle_client_message(xcb_client_message_event_t* event) {
|
||||
|
||||
DLOG("X window %08x requested docking\n", client);
|
||||
i3_output *walk, *output = NULL;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active)
|
||||
continue;
|
||||
if (config.tray_output) {
|
||||
@ -561,7 +562,7 @@ static void handle_client_message(xcb_client_message_event_t* event) {
|
||||
if (output == NULL &&
|
||||
config.tray_output &&
|
||||
strcasecmp("primary", config.tray_output) == 0) {
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active)
|
||||
continue;
|
||||
DLOG("Falling back to output %s because no primary output is configured\n", walk->name);
|
||||
@ -606,7 +607,7 @@ static void handle_client_message(xcb_client_message_event_t* event) {
|
||||
0,
|
||||
client,
|
||||
XCB_EVENT_MASK_NO_EVENT,
|
||||
(char*)ev);
|
||||
(char *)ev);
|
||||
free(event);
|
||||
|
||||
/* Put the client inside the save set. Upon termination (whether
|
||||
@ -645,16 +646,16 @@ static void handle_client_message(xcb_client_message_event_t* event) {
|
||||
* See: http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html
|
||||
*
|
||||
*/
|
||||
static void handle_destroy_notify(xcb_destroy_notify_event_t* event) {
|
||||
static void handle_destroy_notify(xcb_destroy_notify_event_t *event) {
|
||||
DLOG("DestroyNotify for window = %08x, event = %08x\n", event->window, event->event);
|
||||
|
||||
i3_output *walk;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active)
|
||||
continue;
|
||||
DLOG("checking output %s\n", walk->name);
|
||||
trayclient *trayclient;
|
||||
TAILQ_FOREACH(trayclient, walk->trayclients, tailq) {
|
||||
TAILQ_FOREACH (trayclient, walk->trayclients, tailq) {
|
||||
if (trayclient->win != event->window)
|
||||
continue;
|
||||
|
||||
@ -674,16 +675,16 @@ static void handle_destroy_notify(xcb_destroy_notify_event_t* event) {
|
||||
* window. We respond by realigning the tray clients.
|
||||
*
|
||||
*/
|
||||
static void handle_map_notify(xcb_map_notify_event_t* event) {
|
||||
static void handle_map_notify(xcb_map_notify_event_t *event) {
|
||||
DLOG("MapNotify for window = %08x, event = %08x\n", event->window, event->event);
|
||||
|
||||
i3_output *walk;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active)
|
||||
continue;
|
||||
DLOG("checking output %s\n", walk->name);
|
||||
trayclient *trayclient;
|
||||
TAILQ_FOREACH(trayclient, walk->trayclients, tailq) {
|
||||
TAILQ_FOREACH (trayclient, walk->trayclients, tailq) {
|
||||
if (trayclient->win != event->window)
|
||||
continue;
|
||||
|
||||
@ -702,16 +703,16 @@ static void handle_map_notify(xcb_map_notify_event_t* event) {
|
||||
* window. We respond by realigning the tray clients.
|
||||
*
|
||||
*/
|
||||
static void handle_unmap_notify(xcb_unmap_notify_event_t* event) {
|
||||
static void handle_unmap_notify(xcb_unmap_notify_event_t *event) {
|
||||
DLOG("UnmapNotify for window = %08x, event = %08x\n", event->window, event->event);
|
||||
|
||||
i3_output *walk;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active)
|
||||
continue;
|
||||
DLOG("checking output %s\n", walk->name);
|
||||
trayclient *trayclient;
|
||||
TAILQ_FOREACH(trayclient, walk->trayclients, tailq) {
|
||||
TAILQ_FOREACH (trayclient, walk->trayclients, tailq) {
|
||||
if (trayclient->win != event->window)
|
||||
continue;
|
||||
|
||||
@ -738,11 +739,11 @@ static void handle_property_notify(xcb_property_notify_event_t *event) {
|
||||
DLOG("xembed_info updated\n");
|
||||
trayclient *trayclient = NULL, *walk;
|
||||
i3_output *o_walk;
|
||||
SLIST_FOREACH(o_walk, outputs, slist) {
|
||||
SLIST_FOREACH (o_walk, outputs, slist) {
|
||||
if (!o_walk->active)
|
||||
continue;
|
||||
|
||||
TAILQ_FOREACH(walk, o_walk->trayclients, tailq) {
|
||||
TAILQ_FOREACH (walk, o_walk->trayclients, tailq) {
|
||||
if (walk->win != event->window)
|
||||
continue;
|
||||
trayclient = walk;
|
||||
@ -801,12 +802,12 @@ static void handle_configure_request(xcb_configure_request_event_t *event) {
|
||||
|
||||
trayclient *trayclient;
|
||||
i3_output *output;
|
||||
SLIST_FOREACH(output, outputs, slist) {
|
||||
SLIST_FOREACH (output, outputs, slist) {
|
||||
if (!output->active)
|
||||
continue;
|
||||
|
||||
int clients = 0;
|
||||
TAILQ_FOREACH_REVERSE(trayclient, output->trayclients, tc_head, tailq) {
|
||||
TAILQ_FOREACH_REVERSE (trayclient, output->trayclients, tc_head, tailq) {
|
||||
if (!trayclient->mapped)
|
||||
continue;
|
||||
clients++;
|
||||
@ -860,31 +861,31 @@ void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
|
||||
break;
|
||||
case XCB_BUTTON_PRESS:
|
||||
/* Button-press-events are mouse-buttons clicked on one of our bars */
|
||||
handle_button((xcb_button_press_event_t*) event);
|
||||
handle_button((xcb_button_press_event_t *)event);
|
||||
break;
|
||||
case XCB_CLIENT_MESSAGE:
|
||||
/* Client messages are used for client-to-client communication, for
|
||||
* example system tray widgets talk to us directly via client messages. */
|
||||
handle_client_message((xcb_client_message_event_t*) event);
|
||||
handle_client_message((xcb_client_message_event_t *)event);
|
||||
break;
|
||||
case XCB_DESTROY_NOTIFY:
|
||||
/* DestroyNotify signifies the end of the XEmbed protocol */
|
||||
handle_destroy_notify((xcb_destroy_notify_event_t*) event);
|
||||
handle_destroy_notify((xcb_destroy_notify_event_t *)event);
|
||||
break;
|
||||
case XCB_UNMAP_NOTIFY:
|
||||
/* UnmapNotify is received when a tray client hides its window. */
|
||||
handle_unmap_notify((xcb_unmap_notify_event_t*) event);
|
||||
handle_unmap_notify((xcb_unmap_notify_event_t *)event);
|
||||
break;
|
||||
case XCB_MAP_NOTIFY:
|
||||
handle_map_notify((xcb_map_notify_event_t*) event);
|
||||
handle_map_notify((xcb_map_notify_event_t *)event);
|
||||
break;
|
||||
case XCB_PROPERTY_NOTIFY:
|
||||
/* PropertyNotify */
|
||||
handle_property_notify((xcb_property_notify_event_t*) event);
|
||||
handle_property_notify((xcb_property_notify_event_t *)event);
|
||||
break;
|
||||
case XCB_CONFIGURE_REQUEST:
|
||||
/* ConfigureRequest, sent by a tray child */
|
||||
handle_configure_request((xcb_configure_request_event_t*) event);
|
||||
handle_configure_request((xcb_configure_request_event_t *)event);
|
||||
break;
|
||||
}
|
||||
free(event);
|
||||
@ -910,7 +911,7 @@ void xkb_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
|
||||
DLOG("Got XKB-Event!\n");
|
||||
|
||||
while (XPending(xkb_dpy)) {
|
||||
XNextEvent(xkb_dpy, (XEvent*)&ev);
|
||||
XNextEvent(xkb_dpy, (XEvent *)&ev);
|
||||
|
||||
if (ev.type != xkb_event_base) {
|
||||
ELOG("No Xkb-Event!\n");
|
||||
@ -926,31 +927,31 @@ void xkb_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
|
||||
modstate = mods & config.modifier;
|
||||
}
|
||||
|
||||
#define DLOGMOD(modmask, status) \
|
||||
do { \
|
||||
switch (modmask) { \
|
||||
case ShiftMask: \
|
||||
DLOG("ShiftMask got " #status "!\n"); \
|
||||
break; \
|
||||
case ControlMask: \
|
||||
#define DLOGMOD(modmask, status) \
|
||||
do { \
|
||||
switch (modmask) { \
|
||||
case ShiftMask: \
|
||||
DLOG("ShiftMask got " #status "!\n"); \
|
||||
break; \
|
||||
case ControlMask: \
|
||||
DLOG("ControlMask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod1Mask: \
|
||||
DLOG("Mod1Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod2Mask: \
|
||||
DLOG("Mod2Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod3Mask: \
|
||||
DLOG("Mod3Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod4Mask: \
|
||||
DLOG("Mod4Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod5Mask: \
|
||||
DLOG("Mod5Mask got " #status "!\n"); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
case Mod1Mask: \
|
||||
DLOG("Mod1Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod2Mask: \
|
||||
DLOG("Mod2Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod3Mask: \
|
||||
DLOG("Mod3Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod4Mask: \
|
||||
DLOG("Mod4Mask got " #status "!\n"); \
|
||||
break; \
|
||||
case Mod5Mask: \
|
||||
DLOG("Mod5Mask got " #status "!\n"); \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
if (modstate != mod_pressed) {
|
||||
@ -984,9 +985,9 @@ char *init_xcb_early() {
|
||||
conn = xcb_connection;
|
||||
DLOG("Connected to xcb\n");
|
||||
|
||||
/* We have to request the atoms we need */
|
||||
#define ATOM_DO(name) atom_cookies[name] = xcb_intern_atom(xcb_connection, 0, strlen(#name), #name);
|
||||
#include "xcb_atoms.def"
|
||||
/* We have to request the atoms we need */
|
||||
#define ATOM_DO(name) atom_cookies[name] = xcb_intern_atom(xcb_connection, 0, strlen(#name), #name);
|
||||
#include "xcb_atoms.def"
|
||||
|
||||
root_screen = xcb_aux_get_screen(xcb_connection, screen);
|
||||
xcb_root = root_screen->root;
|
||||
@ -994,7 +995,7 @@ char *init_xcb_early() {
|
||||
/* We draw the statusline to a seperate pixmap, because it looks the same on all bars and
|
||||
* this way, we can choose to crop it */
|
||||
uint32_t mask = XCB_GC_FOREGROUND;
|
||||
uint32_t vals[] = { colors.bar_bg, colors.bar_bg };
|
||||
uint32_t vals[] = {colors.bar_bg, colors.bar_bg};
|
||||
|
||||
statusline_clear = xcb_generate_id(xcb_connection);
|
||||
xcb_void_cookie_t clear_ctx_cookie = xcb_create_gc_checked(xcb_connection,
|
||||
@ -1018,7 +1019,6 @@ char *init_xcb_early() {
|
||||
root_screen->width_in_pixels,
|
||||
root_screen->height_in_pixels);
|
||||
|
||||
|
||||
/* The various Watchers to communicate with xcb */
|
||||
xcb_io = smalloc(sizeof(ev_io));
|
||||
xcb_prep = smalloc(sizeof(ev_prepare));
|
||||
@ -1099,7 +1099,7 @@ void register_xkb_keyevents() {
|
||||
*/
|
||||
void deregister_xkb_keyevents() {
|
||||
if (xkb_dpy != NULL) {
|
||||
ev_io_stop (main_loop, xkb_io);
|
||||
ev_io_stop(main_loop, xkb_io);
|
||||
XCloseDisplay(xkb_dpy);
|
||||
close(xkb_io->fd);
|
||||
FREE(xkb_io);
|
||||
@ -1134,8 +1134,8 @@ void init_xcb_late(char *fontname) {
|
||||
*
|
||||
*/
|
||||
static void send_tray_clientmessage(void) {
|
||||
uint8_t buffer[32] = { 0 };
|
||||
xcb_client_message_event_t *ev = (xcb_client_message_event_t*)buffer;
|
||||
uint8_t buffer[32] = {0};
|
||||
xcb_client_message_event_t *ev = (xcb_client_message_event_t *)buffer;
|
||||
|
||||
ev->response_type = XCB_CLIENT_MESSAGE;
|
||||
ev->window = xcb_root;
|
||||
@ -1149,10 +1149,9 @@ static void send_tray_clientmessage(void) {
|
||||
0,
|
||||
xcb_root,
|
||||
0xFFFFFF,
|
||||
(char*)buffer);
|
||||
(char *)buffer);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initializes tray support by requesting the appropriate _NET_SYSTEM_TRAY atom
|
||||
* for the X11 display we are running on, then acquiring the selection for this
|
||||
@ -1171,7 +1170,7 @@ void init_tray(void) {
|
||||
/* tray support: we need a window to own the selection */
|
||||
selwin = xcb_generate_id(xcb_connection);
|
||||
uint32_t selmask = XCB_CW_OVERRIDE_REDIRECT;
|
||||
uint32_t selval[] = { 1 };
|
||||
uint32_t selval[] = {1};
|
||||
xcb_create_window(xcb_connection,
|
||||
root_screen->root_depth,
|
||||
selwin,
|
||||
@ -1220,8 +1219,9 @@ void init_tray(void) {
|
||||
}
|
||||
|
||||
if (selreply->owner != selwin) {
|
||||
ELOG("Could not set the %s selection. " \
|
||||
"Maybe another tray is already running?\n", atomname);
|
||||
ELOG("Could not set the %s selection. "
|
||||
"Maybe another tray is already running?\n",
|
||||
atomname);
|
||||
/* NOTE that this error is not fatal. We just can’t provide tray
|
||||
* functionality */
|
||||
free(selreply);
|
||||
@ -1280,7 +1280,7 @@ void init_tray_colors(void) {
|
||||
void clean_xcb(void) {
|
||||
i3_output *o_walk;
|
||||
free_workspaces();
|
||||
SLIST_FOREACH(o_walk, outputs, slist) {
|
||||
SLIST_FOREACH (o_walk, outputs, slist) {
|
||||
destroy_window(o_walk);
|
||||
FREE(o_walk->trayclients);
|
||||
FREE(o_walk->workspaces);
|
||||
@ -1307,15 +1307,16 @@ void clean_xcb(void) {
|
||||
*/
|
||||
void get_atoms(void) {
|
||||
xcb_intern_atom_reply_t *reply;
|
||||
#define ATOM_DO(name) reply = xcb_intern_atom_reply(xcb_connection, atom_cookies[name], NULL); \
|
||||
if (reply == NULL) { \
|
||||
ELOG("Could not get atom %s\n", #name); \
|
||||
exit(EXIT_FAILURE); \
|
||||
} \
|
||||
atoms[name] = reply->atom; \
|
||||
free(reply);
|
||||
#define ATOM_DO(name) \
|
||||
reply = xcb_intern_atom_reply(xcb_connection, atom_cookies[name], NULL); \
|
||||
if (reply == NULL) { \
|
||||
ELOG("Could not get atom %s\n", #name); \
|
||||
exit(EXIT_FAILURE); \
|
||||
} \
|
||||
atoms[name] = reply->atom; \
|
||||
free(reply);
|
||||
|
||||
#include "xcb_atoms.def"
|
||||
#include "xcb_atoms.def"
|
||||
DLOG("Got Atoms\n");
|
||||
}
|
||||
|
||||
@ -1351,14 +1352,14 @@ void kick_tray_clients(i3_output *output) {
|
||||
/* Fake a DestroyNotify so that Qt re-adds tray icons.
|
||||
* We cannot actually destroy the window because then Qt will not restore
|
||||
* its event mask on the new window. */
|
||||
uint8_t buffer[32] = { 0 };
|
||||
xcb_destroy_notify_event_t *event = (xcb_destroy_notify_event_t*)buffer;
|
||||
uint8_t buffer[32] = {0};
|
||||
xcb_destroy_notify_event_t *event = (xcb_destroy_notify_event_t *)buffer;
|
||||
|
||||
event->response_type = XCB_DESTROY_NOTIFY;
|
||||
event->event = selwin;
|
||||
event->window = selwin;
|
||||
|
||||
xcb_send_event(conn, false, selwin, XCB_EVENT_MASK_STRUCTURE_NOTIFY, (char*)event);
|
||||
xcb_send_event(conn, false, selwin, XCB_EVENT_MASK_STRUCTURE_NOTIFY, (char *)event);
|
||||
|
||||
send_tray_clientmessage();
|
||||
}
|
||||
@ -1397,7 +1398,7 @@ void realloc_sl_buffer(void) {
|
||||
bar_height);
|
||||
|
||||
uint32_t mask = XCB_GC_FOREGROUND;
|
||||
uint32_t vals[2] = { colors.bar_bg, colors.bar_bg };
|
||||
uint32_t vals[2] = {colors.bar_bg, colors.bar_bg};
|
||||
xcb_free_gc(xcb_connection, statusline_clear);
|
||||
statusline_clear = xcb_generate_id(xcb_connection);
|
||||
xcb_void_cookie_t clear_ctx_cookie = xcb_create_gc_checked(xcb_connection,
|
||||
@ -1421,7 +1422,6 @@ void realloc_sl_buffer(void) {
|
||||
xcb_request_failed(sl_ctx_cookie, "Could not allocate statusline-buffer-context")) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1434,7 +1434,7 @@ void reconfig_windows(bool redraw_bars) {
|
||||
static bool tray_configured = false;
|
||||
|
||||
i3_output *walk;
|
||||
SLIST_FOREACH(walk, outputs, slist) {
|
||||
SLIST_FOREACH (walk, outputs, slist) {
|
||||
if (!walk->active) {
|
||||
/* If an output is not active, we destroy its bar */
|
||||
/* FIXME: Maybe we rather want to unmap? */
|
||||
@ -1517,7 +1517,7 @@ void reconfig_windows(bool redraw_bars) {
|
||||
XCB_ATOM_ATOM,
|
||||
32,
|
||||
1,
|
||||
(unsigned char*) &atoms[_NET_WM_WINDOW_TYPE_DOCK]);
|
||||
(unsigned char *)&atoms[_NET_WM_WINDOW_TYPE_DOCK]);
|
||||
|
||||
/* We need to tell i3, where to reserve space for i3bar */
|
||||
/* left, right, top, bottom, left_start_y, left_end_y,
|
||||
@ -1578,13 +1578,13 @@ void reconfig_windows(bool redraw_bars) {
|
||||
map_cookie = xcb_map_window_checked(xcb_connection, walk->bar);
|
||||
}
|
||||
|
||||
if (xcb_request_failed(win_cookie, "Could not create window") ||
|
||||
xcb_request_failed(pm_cookie, "Could not create pixmap") ||
|
||||
xcb_request_failed(dock_cookie, "Could not set dock mode") ||
|
||||
xcb_request_failed(class_cookie, "Could not set WM_CLASS") ||
|
||||
xcb_request_failed(name_cookie, "Could not set WM_NAME") ||
|
||||
xcb_request_failed(strut_cookie, "Could not set strut") ||
|
||||
xcb_request_failed(gc_cookie, "Could not create graphical context") ||
|
||||
if (xcb_request_failed(win_cookie, "Could not create window") ||
|
||||
xcb_request_failed(pm_cookie, "Could not create pixmap") ||
|
||||
xcb_request_failed(dock_cookie, "Could not set dock mode") ||
|
||||
xcb_request_failed(class_cookie, "Could not set WM_CLASS") ||
|
||||
xcb_request_failed(name_cookie, "Could not set WM_NAME") ||
|
||||
xcb_request_failed(strut_cookie, "Could not set strut") ||
|
||||
xcb_request_failed(gc_cookie, "Could not create graphical context") ||
|
||||
((config.hide_on_modifier == M_DOCK) && xcb_request_failed(map_cookie, "Could not map window"))) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
@ -1596,9 +1596,9 @@ void reconfig_windows(bool redraw_bars) {
|
||||
* VGA-1 but output == [HDMI-1]).
|
||||
*/
|
||||
i3_output *output;
|
||||
SLIST_FOREACH(output, outputs, slist) {
|
||||
SLIST_FOREACH (output, outputs, slist) {
|
||||
if (strcasecmp(output->name, tray_output) == 0 ||
|
||||
(strcasecmp(tray_output, "primary") == 0 && output->primary)) {
|
||||
(strcasecmp(tray_output, "primary") == 0 && output->primary)) {
|
||||
init_tray();
|
||||
break;
|
||||
}
|
||||
@ -1665,9 +1665,9 @@ void reconfig_windows(bool redraw_bars) {
|
||||
|
||||
if (xcb_request_failed(cfg_cookie, "Could not reconfigure window") ||
|
||||
xcb_request_failed(chg_cookie, "Could not change window") ||
|
||||
xcb_request_failed(pm_cookie, "Could not create pixmap") ||
|
||||
(redraw_bars && (xcb_request_failed(umap_cookie, "Could not unmap window") ||
|
||||
(config.hide_on_modifier == M_DOCK && xcb_request_failed(map_cookie, "Could not map window"))))) {
|
||||
xcb_request_failed(pm_cookie, "Could not create pixmap") ||
|
||||
(redraw_bars && (xcb_request_failed(umap_cookie, "Could not unmap window") ||
|
||||
(config.hide_on_modifier == M_DOCK && xcb_request_failed(map_cookie, "Could not map window"))))) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
@ -1685,7 +1685,7 @@ void draw_bars(bool unhide) {
|
||||
refresh_statusline();
|
||||
|
||||
i3_output *outputs_walk;
|
||||
SLIST_FOREACH(outputs_walk, outputs, slist) {
|
||||
SLIST_FOREACH (outputs_walk, outputs, slist) {
|
||||
if (!outputs_walk->active) {
|
||||
DLOG("Output %s inactive, skipping...\n", outputs_walk->name);
|
||||
continue;
|
||||
@ -1700,7 +1700,7 @@ void draw_bars(bool unhide) {
|
||||
outputs_walk->bargc,
|
||||
XCB_GC_FOREGROUND,
|
||||
&color);
|
||||
xcb_rectangle_t rect = { 0, 0, outputs_walk->rect.w, bar_height };
|
||||
xcb_rectangle_t rect = {0, 0, outputs_walk->rect.w, bar_height};
|
||||
xcb_poly_fill_rectangle(xcb_connection,
|
||||
outputs_walk->buffer,
|
||||
outputs_walk->bargc,
|
||||
@ -1715,7 +1715,7 @@ void draw_bars(bool unhide) {
|
||||
* position */
|
||||
trayclient *trayclient;
|
||||
int traypx = 0;
|
||||
TAILQ_FOREACH(trayclient, outputs_walk->trayclients, tailq) {
|
||||
TAILQ_FOREACH (trayclient, outputs_walk->trayclients, tailq) {
|
||||
if (!trayclient->mapped)
|
||||
continue;
|
||||
/* We assume the tray icons are quadratic (we use the font
|
||||
@ -1737,7 +1737,7 @@ void draw_bars(bool unhide) {
|
||||
|
||||
if (!config.disable_ws) {
|
||||
i3_ws *ws_walk;
|
||||
TAILQ_FOREACH(ws_walk, outputs_walk->workspaces, tailq) {
|
||||
TAILQ_FOREACH (ws_walk, outputs_walk->workspaces, tailq) {
|
||||
DLOG("Drawing Button for WS %s at x = %d, len = %d\n",
|
||||
i3string_as_utf8(ws_walk->name), i, ws_walk->name_width);
|
||||
uint32_t fg_color = colors.inactive_ws_fg;
|
||||
@ -1762,29 +1762,29 @@ void draw_bars(bool unhide) {
|
||||
unhide = true;
|
||||
}
|
||||
uint32_t mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND;
|
||||
uint32_t vals_border[] = { border_color, border_color };
|
||||
uint32_t vals_border[] = {border_color, border_color};
|
||||
xcb_change_gc(xcb_connection,
|
||||
outputs_walk->bargc,
|
||||
mask,
|
||||
vals_border);
|
||||
xcb_rectangle_t rect_border = { i,
|
||||
logical_px(1),
|
||||
ws_walk->name_width + logical_px(10),
|
||||
font.height + logical_px(4) };
|
||||
xcb_rectangle_t rect_border = {i,
|
||||
logical_px(1),
|
||||
ws_walk->name_width + logical_px(10),
|
||||
font.height + logical_px(4)};
|
||||
xcb_poly_fill_rectangle(xcb_connection,
|
||||
outputs_walk->buffer,
|
||||
outputs_walk->bargc,
|
||||
1,
|
||||
&rect_border);
|
||||
uint32_t vals[] = { bg_color, bg_color };
|
||||
uint32_t vals[] = {bg_color, bg_color};
|
||||
xcb_change_gc(xcb_connection,
|
||||
outputs_walk->bargc,
|
||||
mask,
|
||||
vals);
|
||||
xcb_rectangle_t rect = { i + logical_px(1),
|
||||
2 * logical_px(1),
|
||||
ws_walk->name_width + logical_px(8),
|
||||
font.height + logical_px(2) };
|
||||
xcb_rectangle_t rect = {i + logical_px(1),
|
||||
2 * logical_px(1),
|
||||
ws_walk->name_width + logical_px(8),
|
||||
font.height + logical_px(2)};
|
||||
xcb_poly_fill_rectangle(xcb_connection,
|
||||
outputs_walk->buffer,
|
||||
outputs_walk->bargc,
|
||||
@ -1794,7 +1794,6 @@ void draw_bars(bool unhide) {
|
||||
draw_text(ws_walk->name, outputs_walk->buffer, outputs_walk->bargc,
|
||||
i + logical_px(5), 3 * logical_px(1), ws_walk->name_width);
|
||||
i += logical_px(10) + ws_walk->name_width + logical_px(1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1803,24 +1802,24 @@ void draw_bars(bool unhide) {
|
||||
uint32_t bg_color = colors.urgent_ws_bg;
|
||||
uint32_t mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND;
|
||||
|
||||
uint32_t vals_border[] = { colors.urgent_ws_border, colors.urgent_ws_border };
|
||||
uint32_t vals_border[] = {colors.urgent_ws_border, colors.urgent_ws_border};
|
||||
xcb_change_gc(xcb_connection,
|
||||
outputs_walk->bargc,
|
||||
mask,
|
||||
vals_border);
|
||||
xcb_rectangle_t rect_border = { i, 1, binding.width + 10, font.height + 4 };
|
||||
xcb_rectangle_t rect_border = {i, 1, binding.width + 10, font.height + 4};
|
||||
xcb_poly_fill_rectangle(xcb_connection,
|
||||
outputs_walk->buffer,
|
||||
outputs_walk->bargc,
|
||||
1,
|
||||
&rect_border);
|
||||
|
||||
uint32_t vals[] = { bg_color, bg_color };
|
||||
uint32_t vals[] = {bg_color, bg_color};
|
||||
xcb_change_gc(xcb_connection,
|
||||
outputs_walk->bargc,
|
||||
mask,
|
||||
vals);
|
||||
xcb_rectangle_t rect = { i + 1, 2, binding.width + 8, font.height + 2 };
|
||||
xcb_rectangle_t rect = {i + 1, 2, binding.width + 8, font.height + 2};
|
||||
xcb_poly_fill_rectangle(xcb_connection,
|
||||
outputs_walk->buffer,
|
||||
outputs_walk->bargc,
|
||||
@ -1838,8 +1837,8 @@ void draw_bars(bool unhide) {
|
||||
|
||||
/* Assure the bar is hidden/unhidden according to the specified hidden_state and mode */
|
||||
if (mod_pressed ||
|
||||
config.hidden_state == S_SHOW ||
|
||||
unhide) {
|
||||
config.hidden_state == S_SHOW ||
|
||||
unhide) {
|
||||
unhide_bars();
|
||||
} else if (config.hide_on_modifier == M_HIDE) {
|
||||
hide_bars();
|
||||
@ -1854,7 +1853,7 @@ void draw_bars(bool unhide) {
|
||||
*/
|
||||
void redraw_bars(void) {
|
||||
i3_output *outputs_walk;
|
||||
SLIST_FOREACH(outputs_walk, outputs, slist) {
|
||||
SLIST_FOREACH (outputs_walk, outputs, slist) {
|
||||
if (!outputs_walk->active) {
|
||||
continue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user