aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/ipc.c
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-10-12 21:05:43 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-10-14 13:33:12 +0100
commitf6f72cb949e2ab46510ba8bea63d1c6ece8a4756 (patch)
treeda6e37a3e5f64a3929bd53574e9518798eb63c7f /swaybar/ipc.c
parentswaybar: show hidden bar on key event (diff)
downloadsway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.gz
sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.zst
sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.zip
swaybar: show hidden bar on urgency
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r--swaybar/ipc.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/swaybar/ipc.c b/swaybar/ipc.c
index c7fdffae..e1b30b52 100644
--- a/swaybar/ipc.c
+++ b/swaybar/ipc.c
@@ -262,7 +262,7 @@ static bool ipc_parse_config(
262 return true; 262 return true;
263} 263}
264 264
265void ipc_get_workspaces(struct swaybar *bar) { 265bool ipc_get_workspaces(struct swaybar *bar) {
266 struct swaybar_output *output; 266 struct swaybar_output *output;
267 wl_list_for_each(output, &bar->outputs, link) { 267 wl_list_for_each(output, &bar->outputs, link) {
268 free_workspaces(&output->workspaces); 268 free_workspaces(&output->workspaces);
@@ -274,8 +274,10 @@ void ipc_get_workspaces(struct swaybar *bar) {
274 json_object *results = json_tokener_parse(res); 274 json_object *results = json_tokener_parse(res);
275 if (!results) { 275 if (!results) {
276 free(res); 276 free(res);
277 return; 277 return false;
278 } 278 }
279
280 bar->visible_by_urgency = false;
279 size_t length = json_object_array_length(results); 281 size_t length = json_object_array_length(results);
280 json_object *ws_json; 282 json_object *ws_json;
281 json_object *num, *name, *visible, *focused, *out, *urgent; 283 json_object *num, *name, *visible, *focused, *out, *urgent;
@@ -302,12 +304,16 @@ void ipc_get_workspaces(struct swaybar *bar) {
302 output->focused = true; 304 output->focused = true;
303 } 305 }
304 ws->urgent = json_object_get_boolean(urgent); 306 ws->urgent = json_object_get_boolean(urgent);
307 if (ws->urgent) {
308 bar->visible_by_urgency = true;
309 }
305 wl_list_insert(&output->workspaces, &ws->link); 310 wl_list_insert(&output->workspaces, &ws->link);
306 } 311 }
307 } 312 }
308 } 313 }
309 json_object_put(results); 314 json_object_put(results);
310 free(res); 315 free(res);
316 return determine_bar_visibility(bar, false);
311} 317}
312 318
313static void ipc_get_outputs(struct swaybar *bar) { 319static void ipc_get_outputs(struct swaybar *bar) {
@@ -436,7 +442,7 @@ bool handle_ipc_readable(struct swaybar *bar) {
436 bool bar_is_dirty = true; 442 bool bar_is_dirty = true;
437 switch (resp->type) { 443 switch (resp->type) {
438 case IPC_EVENT_WORKSPACE: 444 case IPC_EVENT_WORKSPACE:
439 ipc_get_workspaces(bar); 445 bar_is_dirty = ipc_get_workspaces(bar);
440 break; 446 break;
441 case IPC_EVENT_MODE: { 447 case IPC_EVENT_MODE: {
442 json_object *json_change, *json_pango_markup; 448 json_object *json_change, *json_pango_markup;