aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/main.c
diff options
context:
space:
mode:
authorLibravatar Kevin Hamacher <kevin.hamacher@rub.de>2015-12-16 11:25:55 +0100
committerLibravatar Kevin Hamacher <kevin.hamacher@rub.de>2015-12-16 12:17:18 +0100
commita9f6cd0e1740ca89595ea4d5ce909e6cf74c55d4 (patch)
treecb1e7f1e929f168f536bf7af3e2efd6293957d47 /swaybar/main.c
parentMake swaybar check command arguments (diff)
downloadsway-a9f6cd0e1740ca89595ea4d5ce909e6cf74c55d4.tar.gz
sway-a9f6cd0e1740ca89595ea4d5ce909e6cf74c55d4.tar.zst
sway-a9f6cd0e1740ca89595ea4d5ce909e6cf74c55d4.zip
Make swaybar run without status_command
Diffstat (limited to 'swaybar/main.c')
-rw-r--r--swaybar/main.c63
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
259void update() { 273void 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) {