i3bar: use Pango markup

Parse text within workspace buttons and the i3bar statusline as Pango
markup. This lets people specify things like font weight, text color,
background color, font size, and font family in the text of i3bar.

fixes #1468
This commit is contained in:
Tony Crisci
2015-02-12 14:45:34 -05:00
parent fbe25297b7
commit e18e2b9f98
7 changed files with 83 additions and 14 deletions

View File

@ -182,7 +182,7 @@ static int stdin_boolean(void *context, int val) {
static int stdin_string(void *context, const unsigned char *val, size_t len) {
parser_ctx *ctx = context;
if (strcasecmp(ctx->last_map_key, "full_text") == 0) {
ctx->block.full_text = i3string_from_utf8_with_length((const char *)val, len);
ctx->block.full_text = i3string_from_markup_with_length((const char *)val, len);
}
if (strcasecmp(ctx->last_map_key, "color") == 0) {
sasprintf(&(ctx->block.color), "%.*s", len, val);
@ -196,7 +196,7 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
ctx->block.align = ALIGN_LEFT;
}
} else if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
i3String *text = i3string_from_utf8_with_length((const char *)val, len);
i3String *text = i3string_from_markup_with_length((const char *)val, len);
ctx->block.min_width = (uint32_t)predict_text_width(text);
i3string_free(text);
}
@ -304,7 +304,7 @@ static void read_flat_input(char *buffer, int length) {
buffer[length - 1] = '\0';
else
buffer[length] = '\0';
first->full_text = i3string_from_utf8(buffer);
first->full_text = i3string_from_markup(buffer);
}
static bool read_json_input(unsigned char *input, int length) {