diff options
author | Connor E <38229097+c-edw@users.noreply.github.com> | 2018-11-17 16:11:28 +0000 |
---|---|---|
committer | Connor E <38229097+c-edw@users.noreply.github.com> | 2018-11-17 16:11:28 +0000 |
commit | 4bd46fb079fb5a32ee6eb2b297de273b261a9c71 (patch) | |
tree | 81dfd95a863ae17de78a6c69a14dd5698c6de862 /swaybar/ipc.c | |
parent | Merge pull request #3046 from tokyovigilante/relative-transform (diff) | |
download | sway-4bd46fb079fb5a32ee6eb2b297de273b261a9c71.tar.gz sway-4bd46fb079fb5a32ee6eb2b297de273b261a9c71.tar.zst sway-4bd46fb079fb5a32ee6eb2b297de273b261a9c71.zip |
Implement strip_workspace_name.
Diffstat (limited to 'swaybar/ipc.c')
-rw-r--r-- | swaybar/ipc.c | 29 |
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) { |