diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-03-29 11:58:54 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-03-29 22:11:08 -0400 |
commit | 1e8faeec0263a7da311a13c56a0de34e47e66fa6 (patch) | |
tree | 5d66afa22b48864f5a362971348aa0379ef248c6 /swaybar/ipc.c | |
parent | Add binding mode indicator (diff) | |
download | sway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.tar.gz sway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.tar.zst sway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.zip |
Pixel-perfect rendering
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r-- | swaybar/ipc.c | 62 |
1 files changed, 42 insertions, 20 deletions
diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 3c2d6fbc..a260b798 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c | |||
@@ -48,58 +48,76 @@ static void ipc_parse_colors( | |||
48 | json_object_object_get_ex(colors, "binding_mode_bg", &binding_mode_bg); | 48 | json_object_object_get_ex(colors, "binding_mode_bg", &binding_mode_bg); |
49 | json_object_object_get_ex(colors, "binding_mode_text", &binding_mode_text); | 49 | json_object_object_get_ex(colors, "binding_mode_text", &binding_mode_text); |
50 | if (background) { | 50 | if (background) { |
51 | config->colors.background = parse_color(json_object_get_string(background)); | 51 | config->colors.background = parse_color( |
52 | json_object_get_string(background)); | ||
52 | } | 53 | } |
53 | if (statusline) { | 54 | if (statusline) { |
54 | config->colors.statusline = parse_color(json_object_get_string(statusline)); | 55 | config->colors.statusline = parse_color( |
56 | json_object_get_string(statusline)); | ||
55 | } | 57 | } |
56 | if (separator) { | 58 | if (separator) { |
57 | config->colors.separator = parse_color(json_object_get_string(separator)); | 59 | config->colors.separator = parse_color( |
60 | json_object_get_string(separator)); | ||
58 | } | 61 | } |
59 | if (focused_background) { | 62 | if (focused_background) { |
60 | config->colors.focused_background = parse_color(json_object_get_string(focused_background)); | 63 | config->colors.focused_background = parse_color( |
64 | json_object_get_string(focused_background)); | ||
61 | } | 65 | } |
62 | if (focused_statusline) { | 66 | if (focused_statusline) { |
63 | config->colors.focused_statusline = parse_color(json_object_get_string(focused_statusline)); | 67 | config->colors.focused_statusline = parse_color( |
68 | json_object_get_string(focused_statusline)); | ||
64 | } | 69 | } |
65 | if (focused_separator) { | 70 | if (focused_separator) { |
66 | config->colors.focused_separator = parse_color(json_object_get_string(focused_separator)); | 71 | config->colors.focused_separator = parse_color( |
72 | json_object_get_string(focused_separator)); | ||
67 | } | 73 | } |
68 | if (focused_workspace_border) { | 74 | if (focused_workspace_border) { |
69 | config->colors.focused_workspace.border = parse_color(json_object_get_string(focused_workspace_border)); | 75 | config->colors.focused_workspace.border = parse_color( |
76 | json_object_get_string(focused_workspace_border)); | ||
70 | } | 77 | } |
71 | if (focused_workspace_bg) { | 78 | if (focused_workspace_bg) { |
72 | config->colors.focused_workspace.background = parse_color(json_object_get_string(focused_workspace_bg)); | 79 | config->colors.focused_workspace.background = parse_color( |
80 | json_object_get_string(focused_workspace_bg)); | ||
73 | } | 81 | } |
74 | if (focused_workspace_text) { | 82 | if (focused_workspace_text) { |
75 | config->colors.focused_workspace.text = parse_color(json_object_get_string(focused_workspace_text)); | 83 | config->colors.focused_workspace.text = parse_color( |
84 | json_object_get_string(focused_workspace_text)); | ||
76 | } | 85 | } |
77 | if (active_workspace_border) { | 86 | if (active_workspace_border) { |
78 | config->colors.active_workspace.border = parse_color(json_object_get_string(active_workspace_border)); | 87 | config->colors.active_workspace.border = parse_color( |
88 | json_object_get_string(active_workspace_border)); | ||
79 | } | 89 | } |
80 | if (active_workspace_bg) { | 90 | if (active_workspace_bg) { |
81 | config->colors.active_workspace.background = parse_color(json_object_get_string(active_workspace_bg)); | 91 | config->colors.active_workspace.background = parse_color( |
92 | json_object_get_string(active_workspace_bg)); | ||
82 | } | 93 | } |
83 | if (active_workspace_text) { | 94 | if (active_workspace_text) { |
84 | config->colors.active_workspace.text = parse_color(json_object_get_string(active_workspace_text)); | 95 | config->colors.active_workspace.text = parse_color( |
96 | json_object_get_string(active_workspace_text)); | ||
85 | } | 97 | } |
86 | if (inactive_workspace_border) { | 98 | if (inactive_workspace_border) { |
87 | config->colors.inactive_workspace.border = parse_color(json_object_get_string(inactive_workspace_border)); | 99 | config->colors.inactive_workspace.border = parse_color( |
100 | json_object_get_string(inactive_workspace_border)); | ||
88 | } | 101 | } |
89 | if (inactive_workspace_bg) { | 102 | if (inactive_workspace_bg) { |
90 | config->colors.inactive_workspace.background = parse_color(json_object_get_string(inactive_workspace_bg)); | 103 | config->colors.inactive_workspace.background = parse_color( |
104 | json_object_get_string(inactive_workspace_bg)); | ||
91 | } | 105 | } |
92 | if (inactive_workspace_text) { | 106 | if (inactive_workspace_text) { |
93 | config->colors.inactive_workspace.text = parse_color(json_object_get_string(inactive_workspace_text)); | 107 | config->colors.inactive_workspace.text = parse_color( |
108 | json_object_get_string(inactive_workspace_text)); | ||
94 | } | 109 | } |
95 | if (binding_mode_border) { | 110 | if (binding_mode_border) { |
96 | config->colors.binding_mode.border = parse_color(json_object_get_string(binding_mode_border)); | 111 | config->colors.binding_mode.border = parse_color( |
112 | json_object_get_string(binding_mode_border)); | ||
97 | } | 113 | } |
98 | if (binding_mode_bg) { | 114 | if (binding_mode_bg) { |
99 | config->colors.binding_mode.background = parse_color(json_object_get_string(binding_mode_bg)); | 115 | config->colors.binding_mode.background = parse_color( |
116 | json_object_get_string(binding_mode_bg)); | ||
100 | } | 117 | } |
101 | if (binding_mode_text) { | 118 | if (binding_mode_text) { |
102 | config->colors.binding_mode.text = parse_color(json_object_get_string(binding_mode_text)); | 119 | config->colors.binding_mode.text = parse_color( |
120 | json_object_get_string(binding_mode_text)); | ||
103 | } | 121 | } |
104 | } | 122 | } |
105 | 123 | ||
@@ -306,14 +324,13 @@ bool handle_ipc_event(struct swaybar *bar) { | |||
306 | ipc_get_workspaces(bar); | 324 | ipc_get_workspaces(bar); |
307 | break; | 325 | break; |
308 | case IPC_EVENT_MODE: { | 326 | case IPC_EVENT_MODE: { |
309 | // TODO: interpret "pango_markup" field | ||
310 | json_object *result = json_tokener_parse(resp->payload); | 327 | json_object *result = json_tokener_parse(resp->payload); |
311 | if (!result) { | 328 | if (!result) { |
312 | free_ipc_response(resp); | 329 | free_ipc_response(resp); |
313 | wlr_log(L_ERROR, "failed to parse payload as json"); | 330 | wlr_log(L_ERROR, "failed to parse payload as json"); |
314 | return false; | 331 | return false; |
315 | } | 332 | } |
316 | json_object *json_change; | 333 | json_object *json_change, *json_pango_markup; |
317 | if (json_object_object_get_ex(result, "change", &json_change)) { | 334 | if (json_object_object_get_ex(result, "change", &json_change)) { |
318 | const char *change = json_object_get_string(json_change); | 335 | const char *change = json_object_get_string(json_change); |
319 | free(bar->config->mode); | 336 | free(bar->config->mode); |
@@ -328,6 +345,11 @@ bool handle_ipc_event(struct swaybar *bar) { | |||
328 | free_ipc_response(resp); | 345 | free_ipc_response(resp); |
329 | return false; | 346 | return false; |
330 | } | 347 | } |
348 | if (json_object_object_get_ex(result, | ||
349 | "pango_markup", &json_pango_markup)) { | ||
350 | bar->config->mode_pango_markup = json_object_get_boolean( | ||
351 | json_pango_markup); | ||
352 | } | ||
331 | json_object_put(result); | 353 | json_object_put(result); |
332 | break; | 354 | break; |
333 | } | 355 | } |