diff options
Diffstat (limited to 'swaybar/main.c')
-rw-r--r-- | swaybar/main.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/swaybar/main.c b/swaybar/main.c index 7a54f74b..e4a97e69 100644 --- a/swaybar/main.c +++ b/swaybar/main.c | |||
@@ -1,5 +1,7 @@ | |||
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | #include <string.h> | ||
4 | #include "readline.h" | ||
3 | #include "client/registry.h" | 5 | #include "client/registry.h" |
4 | #include "client/window.h" | 6 | #include "client/window.h" |
5 | #include "client/pango.h" | 7 | #include "client/pango.h" |
@@ -25,6 +27,8 @@ struct colors { | |||
25 | struct box_colors binding_mode; | 27 | struct box_colors binding_mode; |
26 | }; | 28 | }; |
27 | 29 | ||
30 | FILE *command; | ||
31 | char *line; | ||
28 | struct registry *registry; | 32 | struct registry *registry; |
29 | struct window *window; | 33 | struct window *window; |
30 | struct colors colors = { | 34 | struct colors colors = { |
@@ -73,6 +77,16 @@ void cairo_set_source_u32(cairo_t *cairo, uint32_t color) { | |||
73 | (color & 0xFF) / 256.0); | 77 | (color & 0xFF) / 256.0); |
74 | } | 78 | } |
75 | 79 | ||
80 | void update() { | ||
81 | if (!feof(command)) { | ||
82 | line = read_line(command); | ||
83 | int l = strlen(line) - 1; | ||
84 | if (line[l] == '\n') { | ||
85 | line[l] = '\0'; | ||
86 | } | ||
87 | } | ||
88 | } | ||
89 | |||
76 | void render() { | 90 | void render() { |
77 | cairo_save(window->cairo); | 91 | cairo_save(window->cairo); |
78 | cairo_set_operator(window->cairo, CAIRO_OPERATOR_CLEAR); | 92 | cairo_set_operator(window->cairo, CAIRO_OPERATOR_CLEAR); |
@@ -82,9 +96,12 @@ void render() { | |||
82 | cairo_set_source_u32(window->cairo, colors.background); | 96 | cairo_set_source_u32(window->cairo, colors.background); |
83 | cairo_paint(window->cairo); | 97 | cairo_paint(window->cairo); |
84 | 98 | ||
85 | cairo_move_to(window->cairo, MARGIN, MARGIN); | ||
86 | cairo_set_source_u32(window->cairo, colors.statusline); | 99 | cairo_set_source_u32(window->cairo, colors.statusline); |
87 | pango_printf(window, "TODO: finish bar"); | 100 | int width, height; |
101 | get_text_size(window, &width, &height, "%s", line); | ||
102 | |||
103 | cairo_move_to(window->cairo, window->width - MARGIN - width, MARGIN); | ||
104 | pango_printf(window, "%s", line); | ||
88 | } | 105 | } |
89 | 106 | ||
90 | int main(int argc, char **argv) { | 107 | int main(int argc, char **argv) { |
@@ -110,8 +127,13 @@ int main(int argc, char **argv) { | |||
110 | get_text_size(window, &width, &height, "Test string for measuring purposes"); | 127 | get_text_size(window, &width, &height, "Test string for measuring purposes"); |
111 | window->height = height + MARGIN * 2; | 128 | window->height = height + MARGIN * 2; |
112 | 129 | ||
130 | command = popen(argv[2], "r"); | ||
131 | line = malloc(1024); | ||
132 | line[0] = '\0'; | ||
133 | |||
113 | do { | 134 | do { |
114 | if (window_prerender(window) && window->cairo) { | 135 | if (window_prerender(window) && window->cairo) { |
136 | update(); | ||
115 | render(); | 137 | render(); |
116 | window_render(window); | 138 | window_render(window); |
117 | } | 139 | } |