diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-10-12 21:05:43 +0100 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-10-14 13:33:12 +0100 |
commit | f6f72cb949e2ab46510ba8bea63d1c6ece8a4756 (patch) | |
tree | da6e37a3e5f64a3929bd53574e9518798eb63c7f /swaybar | |
parent | 2f1fd8072673b1824f37759e14f5388d7a87fb5c (diff) | |
download | sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.xz |
swaybar: show hidden bar on urgency
Diffstat (limited to 'swaybar')
-rw-r--r-- | swaybar/ipc.c | 12 |
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( return true; } -void ipc_get_workspaces(struct swaybar *bar) { +bool ipc_get_workspaces(struct swaybar *bar) { struct swaybar_output *output; wl_list_for_each(output, &bar->outputs, link) { free_workspaces(&output->workspaces); @@ -274,8 +274,10 @@ void ipc_get_workspaces(struct swaybar *bar) { json_object *results = json_tokener_parse(res); if (!results) { free(res); - return; + return false; } + + bar->visible_by_urgency = false; size_t length = json_object_array_length(results); json_object *ws_json; json_object *num, *name, *visible, *focused, *out, *urgent; @@ -302,12 +304,16 @@ void ipc_get_workspaces(struct swaybar *bar) { output->focused = true; } ws->urgent = json_object_get_boolean(urgent); + if (ws->urgent) { + bar->visible_by_urgency = true; + } wl_list_insert(&output->workspaces, &ws->link); } } } json_object_put(results); free(res); + return determine_bar_visibility(bar, false); } static void ipc_get_outputs(struct swaybar *bar) { @@ -436,7 +442,7 @@ bool handle_ipc_readable(struct swaybar *bar) { bool bar_is_dirty = true; switch (resp->type) { case IPC_EVENT_WORKSPACE: - ipc_get_workspaces(bar); + bar_is_dirty = ipc_get_workspaces(bar); break; case IPC_EVENT_MODE: { json_object *json_change, *json_pango_markup; |