aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r--swaybar/ipc.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/swaybar/ipc.c b/swaybar/ipc.c
index 706f968d..db4360c1 100644
--- a/swaybar/ipc.c
+++ b/swaybar/ipc.c
@@ -153,9 +153,10 @@ static bool ipc_parse_config(
153 return false; 153 return false;
154 } 154 }
155 json_object *markup, *mode, *hidden_state, *position, *status_command; 155 json_object *markup, *mode, *hidden_state, *position, *status_command;
156 json_object *font, *bar_height, *wrap_scroll, *workspace_buttons, *strip_workspace_numbers; 156 json_object *font, *bar_height, *wrap_scroll, *workspace_buttons;
157 json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol, *outputs; 157 json_object *strip_workspace_numbers, *strip_workspace_name;
158 json_object *bindings; 158 json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol;
159 json_object *outputs, *bindings;
159 json_object_object_get_ex(bar_config, "mode", &mode); 160 json_object_object_get_ex(bar_config, "mode", &mode);
160 json_object_object_get_ex(bar_config, "hidden_state", &hidden_state); 161 json_object_object_get_ex(bar_config, "hidden_state", &hidden_state);
161 json_object_object_get_ex(bar_config, "position", &position); 162 json_object_object_get_ex(bar_config, "position", &position);
@@ -165,6 +166,7 @@ static bool ipc_parse_config(
165 json_object_object_get_ex(bar_config, "wrap_scroll", &wrap_scroll); 166 json_object_object_get_ex(bar_config, "wrap_scroll", &wrap_scroll);
166 json_object_object_get_ex(bar_config, "workspace_buttons", &workspace_buttons); 167 json_object_object_get_ex(bar_config, "workspace_buttons", &workspace_buttons);
167 json_object_object_get_ex(bar_config, "strip_workspace_numbers", &strip_workspace_numbers); 168 json_object_object_get_ex(bar_config, "strip_workspace_numbers", &strip_workspace_numbers);
169 json_object_object_get_ex(bar_config, "strip_workspace_name", &strip_workspace_name);
168 json_object_object_get_ex(bar_config, "binding_mode_indicator", &binding_mode_indicator); 170 json_object_object_get_ex(bar_config, "binding_mode_indicator", &binding_mode_indicator);
169 json_object_object_get_ex(bar_config, "verbose", &verbose); 171 json_object_object_get_ex(bar_config, "verbose", &verbose);
170 json_object_object_get_ex(bar_config, "separator_symbol", &sep_symbol); 172 json_object_object_get_ex(bar_config, "separator_symbol", &sep_symbol);
@@ -190,6 +192,9 @@ static bool ipc_parse_config(
190 if (strip_workspace_numbers) { 192 if (strip_workspace_numbers) {
191 config->strip_workspace_numbers = json_object_get_boolean(strip_workspace_numbers); 193 config->strip_workspace_numbers = json_object_get_boolean(strip_workspace_numbers);
192 } 194 }
195 if (strip_workspace_name) {
196 config->strip_workspace_name = json_object_get_boolean(strip_workspace_name);
197 }
193 if (binding_mode_indicator) { 198 if (binding_mode_indicator) {
194 config->binding_mode_indicator = json_object_get_boolean(binding_mode_indicator); 199 config->binding_mode_indicator = json_object_get_boolean(binding_mode_indicator);
195 } 200 }
@@ -298,6 +303,24 @@ bool ipc_get_workspaces(struct swaybar *bar) {
298 calloc(1, sizeof(struct swaybar_workspace)); 303 calloc(1, sizeof(struct swaybar_workspace));
299 ws->num = json_object_get_int(num); 304 ws->num = json_object_get_int(num);
300 ws->name = strdup(json_object_get_string(name)); 305 ws->name = strdup(json_object_get_string(name));
306 ws->label = strdup(ws->name);
307 // ws->num will be -1 if workspace name doesn't begin with int.
308 if (ws->num != -1) {
309 size_t len_offset = numlen(ws->num);
310 if (bar->config->strip_workspace_name) {
311 free(ws->label);
312 ws->label = malloc(len_offset + 1 * sizeof(char));
313 ws->label[len_offset] = '\0';
314 strncpy(ws->label, ws->name, len_offset);
315 } else if (bar->config->strip_workspace_numbers) {
316 len_offset += ws->label[len_offset] == ':';
317 if (strlen(ws->name) > len_offset) {
318 free(ws->label);
319 // Strip number prefix [1-?:] using len_offset.
320 ws->label = strdup(ws->name + len_offset);
321 }
322 }
323 }
301 ws->visible = json_object_get_boolean(visible); 324 ws->visible = json_object_get_boolean(visible);
302 ws->focused = json_object_get_boolean(focused); 325 ws->focused = json_object_get_boolean(focused);
303 if (ws->focused) { 326 if (ws->focused) {