aboutsummaryrefslogtreecommitdiff
path: root/swaybar
diff options
context:
space:
mode:
authorIan Fan <ianfan0@gmail.com>2018-10-12 21:05:43 +0100
committerIan Fan <ianfan0@gmail.com>2018-10-14 13:33:12 +0100
commitf6f72cb949e2ab46510ba8bea63d1c6ece8a4756 (patch)
treeda6e37a3e5f64a3929bd53574e9518798eb63c7f /swaybar
parent2f1fd8072673b1824f37759e14f5388d7a87fb5c (diff)
downloadsway-f6f72cb949e2ab46510ba8bea63d1c6ece8a4756.tar.xz
swaybar: show hidden bar on urgency
Diffstat (limited to 'swaybar')
-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(
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;