diff options
Diffstat (limited to 'swaybar')
-rw-r--r-- | swaybar/main.c | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/swaybar/main.c b/swaybar/main.c index 3d817f86..8f544c02 100644 --- a/swaybar/main.c +++ b/swaybar/main.c | |||
@@ -189,7 +189,9 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
189 | 189 | ||
190 | // TODO: More of these options | 190 | // TODO: More of these options |
191 | // TODO: Refactor swaybar into several files, create a bar config struct (shared with compositor?) | 191 | // TODO: Refactor swaybar into several files, create a bar config struct (shared with compositor?) |
192 | if (_status_command) status_command = strdup(json_object_get_string(_status_command)); | 192 | if (_status_command) { |
193 | status_command = strdup(json_object_get_string(_status_command)); | ||
194 | } | ||
193 | 195 | ||
194 | if (_colors) { | 196 | if (_colors) { |
195 | json_object *background, *statusline, *separator; | 197 | json_object *background, *statusline, *separator; |
@@ -219,30 +221,42 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
219 | if (background) colors.background = parse_color(json_object_get_string(background)); | 221 | if (background) colors.background = parse_color(json_object_get_string(background)); |
220 | if (statusline) colors.statusline = parse_color(json_object_get_string(statusline)); | 222 | if (statusline) colors.statusline = parse_color(json_object_get_string(statusline)); |
221 | if (separator) colors.seperator = parse_color(json_object_get_string(separator)); | 223 | if (separator) colors.seperator = parse_color(json_object_get_string(separator)); |
222 | if (focused_workspace_border) | 224 | if (focused_workspace_border) { |
223 | colors.focused_workspace.border = parse_color(json_object_get_string(focused_workspace_border)); | 225 | colors.focused_workspace.border = parse_color(json_object_get_string(focused_workspace_border)); |
224 | if (focused_workspace_bg) | 226 | } |
227 | if (focused_workspace_bg) { | ||
225 | colors.focused_workspace.background = parse_color(json_object_get_string(focused_workspace_bg)); | 228 | colors.focused_workspace.background = parse_color(json_object_get_string(focused_workspace_bg)); |
226 | if (focused_workspace_text) | 229 | } |
230 | if (focused_workspace_text) { | ||
227 | colors.focused_workspace.text = parse_color(json_object_get_string(focused_workspace_text)); | 231 | colors.focused_workspace.text = parse_color(json_object_get_string(focused_workspace_text)); |
228 | if (active_workspace_border) | 232 | } |
233 | if (active_workspace_border) { | ||
229 | colors.active_workspace.border = parse_color(json_object_get_string(active_workspace_border)); | 234 | colors.active_workspace.border = parse_color(json_object_get_string(active_workspace_border)); |
230 | if (active_workspace_bg) | 235 | } |
236 | if (active_workspace_bg) { | ||
231 | colors.active_workspace.background = parse_color(json_object_get_string(active_workspace_bg)); | 237 | colors.active_workspace.background = parse_color(json_object_get_string(active_workspace_bg)); |
232 | if (active_workspace_text) | 238 | } |
239 | if (active_workspace_text) { | ||
233 | colors.active_workspace.text = parse_color(json_object_get_string(active_workspace_text)); | 240 | colors.active_workspace.text = parse_color(json_object_get_string(active_workspace_text)); |
234 | if (inactive_workspace_border) | 241 | } |
242 | if (inactive_workspace_border) { | ||
235 | colors.inactive_workspace.border = parse_color(json_object_get_string(inactive_workspace_border)); | 243 | colors.inactive_workspace.border = parse_color(json_object_get_string(inactive_workspace_border)); |
236 | if (inactive_workspace_bg) | 244 | } |
245 | if (inactive_workspace_bg) { | ||
237 | colors.inactive_workspace.background = parse_color(json_object_get_string(inactive_workspace_bg)); | 246 | colors.inactive_workspace.background = parse_color(json_object_get_string(inactive_workspace_bg)); |
238 | if (inactive_workspace_text) | 247 | } |
248 | if (inactive_workspace_text) { | ||
239 | colors.inactive_workspace.text = parse_color(json_object_get_string(inactive_workspace_text)); | 249 | colors.inactive_workspace.text = parse_color(json_object_get_string(inactive_workspace_text)); |
240 | if (binding_mode_border) | 250 | } |
251 | if (binding_mode_border) { | ||
241 | colors.binding_mode.border = parse_color(json_object_get_string(binding_mode_border)); | 252 | colors.binding_mode.border = parse_color(json_object_get_string(binding_mode_border)); |
242 | if (binding_mode_bg) | 253 | } |
254 | if (binding_mode_bg) { | ||
243 | colors.binding_mode.background = parse_color(json_object_get_string(binding_mode_bg)); | 255 | colors.binding_mode.background = parse_color(json_object_get_string(binding_mode_bg)); |
244 | if (binding_mode_text) | 256 | } |
257 | if (binding_mode_text) { | ||
245 | colors.binding_mode.text = parse_color(json_object_get_string(binding_mode_text)); | 258 | colors.binding_mode.text = parse_color(json_object_get_string(binding_mode_text)); |
259 | } | ||
246 | } | 260 | } |
247 | 261 | ||
248 | json_object_put(bar_config); | 262 | json_object_put(bar_config); |
@@ -258,12 +272,15 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
258 | 272 | ||
259 | void update() { | 273 | void update() { |
260 | int pending; | 274 | int pending; |
261 | if (ioctl(fileno(command), FIONREAD, &pending) != -1 && pending > 0) { | 275 | // If no command is set, we don't have to update anything |
262 | free(line); | 276 | if (status_command) { |
263 | line = read_line(command); | 277 | if (ioctl(fileno(command), FIONREAD, &pending) != -1 && pending > 0) { |
264 | int l = strlen(line) - 1; | 278 | free(line); |
265 | if (line[l] == '\n') { | 279 | line = read_line(command); |
266 | line[l] = '\0'; | 280 | int l = strlen(line) - 1; |
281 | if (line[l] == '\n') { | ||
282 | line[l] = '\0'; | ||
283 | } | ||
267 | } | 284 | } |
268 | } | 285 | } |
269 | if (ioctl(socketfd, FIONREAD, &pending) != -1 && pending > 0) { | 286 | if (ioctl(socketfd, FIONREAD, &pending) != -1 && pending > 0) { |
@@ -396,9 +413,11 @@ int main(int argc, char **argv) { | |||
396 | 413 | ||
397 | bar_ipc_init(desired_output, bar_id); | 414 | bar_ipc_init(desired_output, bar_id); |
398 | 415 | ||
399 | command = popen(status_command, "r"); | 416 | if (status_command) { |
400 | line = malloc(1024); | 417 | command = popen(status_command, "r"); |
401 | line[0] = '\0'; | 418 | line = malloc(1024); |
419 | line[0] = '\0'; | ||
420 | } | ||
402 | 421 | ||
403 | window = window_setup(registry, output->width, 30, false); | 422 | window = window_setup(registry, output->width, 30, false); |
404 | if (!window) { | 423 | if (!window) { |