aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/ipc.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-03-29 11:58:54 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-03-29 22:11:08 -0400
commit1e8faeec0263a7da311a13c56a0de34e47e66fa6 (patch)
tree5d66afa22b48864f5a362971348aa0379ef248c6 /swaybar/ipc.c
parentAdd binding mode indicator (diff)
downloadsway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.tar.gz
sway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.tar.zst
sway-1e8faeec0263a7da311a13c56a0de34e47e66fa6.zip
Pixel-perfect rendering
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r--swaybar/ipc.c62
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 }