Merge branch 'i3bar_fix_tabs' into next
This commit is contained in:
commit
4e0ccbf57b
|
@ -17,10 +17,10 @@ char *statusline;
|
||||||
char *statusline_buffer;
|
char *statusline_buffer;
|
||||||
|
|
||||||
struct rect_t {
|
struct rect_t {
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
int w;
|
int w;
|
||||||
int h;
|
int h;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
|
|
@ -22,33 +22,33 @@ struct outputs_head *outputs;
|
||||||
* Start parsing the received json-string
|
* Start parsing the received json-string
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void parse_outputs_json(char* json);
|
void parse_outputs_json(char* json);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initiate the output-list
|
* Initiate the output-list
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void init_outputs();
|
void init_outputs();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the output with the given name
|
* Returns the output with the given name
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
i3_output* get_output_by_name(char* name);
|
i3_output* get_output_by_name(char* name);
|
||||||
|
|
||||||
struct i3_output {
|
struct i3_output {
|
||||||
char* name; /* Name of the output */
|
char* name; /* Name of the output */
|
||||||
bool active; /* If the output is active */
|
bool active; /* If the output is active */
|
||||||
int ws; /* The number of the currently visible ws */
|
int ws; /* The number of the currently visible ws */
|
||||||
rect rect; /* The rect (relative to the root-win) */
|
rect rect; /* The rect (relative to the root-win) */
|
||||||
|
|
||||||
xcb_window_t bar; /* The id of the bar of the output */
|
xcb_window_t bar; /* The id of the bar of the output */
|
||||||
xcb_pixmap_t buffer; /* An extra pixmap for double-buffering */
|
xcb_pixmap_t buffer; /* An extra pixmap for double-buffering */
|
||||||
xcb_gcontext_t bargc; /* The graphical context of the bar */
|
xcb_gcontext_t bargc; /* The graphical context of the bar */
|
||||||
|
|
||||||
struct ws_head *workspaces; /* The workspaces on this output */
|
struct ws_head *workspaces; /* The workspaces on this output */
|
||||||
|
|
||||||
SLIST_ENTRY(i3_output) slist; /* Pointer for the SLIST-Macro */
|
SLIST_ENTRY(i3_output) slist; /* Pointer for the SLIST-Macro */
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -87,7 +87,7 @@ void stdin_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) {
|
||||||
if (rec == buffer_len) {
|
if (rec == buffer_len) {
|
||||||
buffer_len += STDIN_CHUNK_SIZE;
|
buffer_len += STDIN_CHUNK_SIZE;
|
||||||
buffer = realloc(buffer, buffer_len);
|
buffer = realloc(buffer, buffer_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (*buffer == '\0') {
|
if (*buffer == '\0') {
|
||||||
FREE(buffer);
|
FREE(buffer);
|
||||||
|
|
|
@ -23,18 +23,18 @@ static iconv_t conversion_descriptor2 = 0;
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
char *convert_ucs_to_utf8(char *input) {
|
char *convert_ucs_to_utf8(char *input) {
|
||||||
size_t input_size = 2;
|
size_t input_size = 2;
|
||||||
/* UTF-8 may consume up to 4 byte */
|
/* UTF-8 may consume up to 4 byte */
|
||||||
int buffer_size = 8;
|
int buffer_size = 8;
|
||||||
|
|
||||||
char *buffer = calloc(buffer_size, 1);
|
char *buffer = calloc(buffer_size, 1);
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
err(EXIT_FAILURE, "malloc() failed\n");
|
err(EXIT_FAILURE, "malloc() failed\n");
|
||||||
size_t output_size = buffer_size;
|
size_t output_size = buffer_size;
|
||||||
/* We need to use an additional pointer, because iconv() modifies it */
|
/* We need to use an additional pointer, because iconv() modifies it */
|
||||||
char *output = buffer;
|
char *output = buffer;
|
||||||
|
|
||||||
/* We convert the input into UCS-2 big endian */
|
/* We convert the input into UCS-2 big endian */
|
||||||
if (conversion_descriptor == 0) {
|
if (conversion_descriptor == 0) {
|
||||||
conversion_descriptor = iconv_open("UTF-8", "UCS-2BE");
|
conversion_descriptor = iconv_open("UTF-8", "UCS-2BE");
|
||||||
if (conversion_descriptor == 0) {
|
if (conversion_descriptor == 0) {
|
||||||
|
@ -43,17 +43,17 @@ char *convert_ucs_to_utf8(char *input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the conversion descriptor back to original state */
|
/* Get the conversion descriptor back to original state */
|
||||||
iconv(conversion_descriptor, NULL, NULL, NULL, NULL);
|
iconv(conversion_descriptor, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Convert our text */
|
/* Convert our text */
|
||||||
int rc = iconv(conversion_descriptor, (void*)&input, &input_size, &output, &output_size);
|
int rc = iconv(conversion_descriptor, (void*)&input, &input_size, &output, &output_size);
|
||||||
if (rc == (size_t)-1) {
|
if (rc == (size_t)-1) {
|
||||||
perror("Converting to UCS-2 failed");
|
perror("Converting to UCS-2 failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -64,18 +64,18 @@ char *convert_ucs_to_utf8(char *input) {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
char *convert_utf8_to_ucs2(char *input, int *real_strlen) {
|
char *convert_utf8_to_ucs2(char *input, int *real_strlen) {
|
||||||
size_t input_size = strlen(input) + 1;
|
size_t input_size = strlen(input) + 1;
|
||||||
/* UCS-2 consumes exactly two bytes for each glyph */
|
/* UCS-2 consumes exactly two bytes for each glyph */
|
||||||
int buffer_size = input_size * 2;
|
int buffer_size = input_size * 2;
|
||||||
|
|
||||||
char *buffer = malloc(buffer_size);
|
char *buffer = malloc(buffer_size);
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
err(EXIT_FAILURE, "malloc() failed\n");
|
err(EXIT_FAILURE, "malloc() failed\n");
|
||||||
size_t output_size = buffer_size;
|
size_t output_size = buffer_size;
|
||||||
/* We need to use an additional pointer, because iconv() modifies it */
|
/* We need to use an additional pointer, because iconv() modifies it */
|
||||||
char *output = buffer;
|
char *output = buffer;
|
||||||
|
|
||||||
/* We convert the input into UCS-2 big endian */
|
/* We convert the input into UCS-2 big endian */
|
||||||
if (conversion_descriptor2 == 0) {
|
if (conversion_descriptor2 == 0) {
|
||||||
conversion_descriptor2 = iconv_open("UCS-2BE", "UTF-8");
|
conversion_descriptor2 = iconv_open("UCS-2BE", "UTF-8");
|
||||||
if (conversion_descriptor2 == 0) {
|
if (conversion_descriptor2 == 0) {
|
||||||
|
@ -84,20 +84,20 @@ char *convert_utf8_to_ucs2(char *input, int *real_strlen) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the conversion descriptor back to original state */
|
/* Get the conversion descriptor back to original state */
|
||||||
iconv(conversion_descriptor2, NULL, NULL, NULL, NULL);
|
iconv(conversion_descriptor2, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
/* Convert our text */
|
/* Convert our text */
|
||||||
int rc = iconv(conversion_descriptor2, (void*)&input, &input_size, &output, &output_size);
|
int rc = iconv(conversion_descriptor2, (void*)&input, &input_size, &output, &output_size);
|
||||||
if (rc == (size_t)-1) {
|
if (rc == (size_t)-1) {
|
||||||
perror("Converting to UCS-2 failed");
|
perror("Converting to UCS-2 failed");
|
||||||
if (real_strlen != NULL)
|
if (real_strlen != NULL)
|
||||||
*real_strlen = 0;
|
*real_strlen = 0;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (real_strlen != NULL)
|
if (real_strlen != NULL)
|
||||||
*real_strlen = ((buffer_size - output_size) / 2) - 1;
|
*real_strlen = ((buffer_size - output_size) / 2) - 1;
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue