aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar/main.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-12-13 08:35:39 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-12-13 08:35:39 -0500
commit6596582bc381d371f0e355d61595b2b87b5ee821 (patch)
treebf80e40778342d9e81c37b2f19d50cd35e269a3c /swaybar/main.c
parentCorrectly handle moving between fullscreen views (diff)
downloadsway-6596582bc381d371f0e355d61595b2b87b5ee821.tar.gz
sway-6596582bc381d371f0e355d61595b2b87b5ee821.tar.zst
sway-6596582bc381d371f0e355d61595b2b87b5ee821.zip
Display output from a command on swaybar
Diffstat (limited to 'swaybar/main.c')
-rw-r--r--swaybar/main.c26
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
30FILE *command;
31char *line;
28struct registry *registry; 32struct registry *registry;
29struct window *window; 33struct window *window;
30struct colors colors = { 34struct 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
80void 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
76void render() { 90void 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
90int main(int argc, char **argv) { 107int 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 }