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 | |
parent | swaybar: show hidden bar on key event (diff) | |
download | sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.gz sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.zst sway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.zip |
swaybar: show hidden bar on urgency
-rw-r--r-- | include/swaybar/ipc.h | 2 | ||||
-rw-r--r-- | swaybar/ipc.c | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/include/swaybar/ipc.h b/include/swaybar/ipc.h index 51db85b5..d8cd0c76 100644 --- a/include/swaybar/ipc.h +++ b/include/swaybar/ipc.h | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | bool ipc_initialize(struct swaybar *bar); | 6 | bool ipc_initialize(struct swaybar *bar); |
7 | bool handle_ipc_readable(struct swaybar *bar); | 7 | bool handle_ipc_readable(struct swaybar *bar); |
8 | void ipc_get_workspaces(struct swaybar *bar); | 8 | bool ipc_get_workspaces(struct swaybar *bar); |
9 | void ipc_send_workspace_command(struct swaybar *bar, const char *ws); | 9 | void ipc_send_workspace_command(struct swaybar *bar, const char *ws); |
10 | void ipc_execute_binding(struct swaybar *bar, struct swaybar_binding *bind); | 10 | void ipc_execute_binding(struct swaybar *bar, struct swaybar_binding *bind); |
11 | 11 | ||
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 | ||
265 | void ipc_get_workspaces(struct swaybar *bar) { | 265 | bool 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 | ||
313 | static void ipc_get_outputs(struct swaybar *bar) { | 319 | static 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; |