diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-01-03 22:38:54 +0100 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-01-03 22:40:43 +0100 |
commit | 576181ec099cbe9cb085c9bea1856518d2784a50 (patch) | |
tree | a95207beaa0699178211ca14426ba39aafb619f9 /swaybar/main.c | |
parent | Merge pull request #428 from mikkeloscar/bar-mode-indicator (diff) | |
download | sway-576181ec099cbe9cb085c9bea1856518d2784a50.tar.gz sway-576181ec099cbe9cb085c9bea1856518d2784a50.tar.zst sway-576181ec099cbe9cb085c9bea1856518d2784a50.zip |
swaybar: Implement workspace_buttons yes|no
Diffstat (limited to 'swaybar/main.c')
-rw-r--r-- | swaybar/main.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/swaybar/main.c b/swaybar/main.c index 18283afa..e96c9df0 100644 --- a/swaybar/main.c +++ b/swaybar/main.c | |||
@@ -79,6 +79,7 @@ char *separator_symbol = NULL; | |||
79 | char *mode = NULL; | 79 | char *mode = NULL; |
80 | bool binding_mode_indicator = true; | 80 | bool binding_mode_indicator = true; |
81 | bool strip_workspace_numbers = false; | 81 | bool strip_workspace_numbers = false; |
82 | bool workspace_buttons = true; | ||
82 | typedef enum {UNDEF, TEXT, I3BAR} command_protocol; | 83 | typedef enum {UNDEF, TEXT, I3BAR} command_protocol; |
83 | command_protocol protocol = UNDEF; | 84 | command_protocol protocol = UNDEF; |
84 | 85 | ||
@@ -292,7 +293,7 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
292 | 293 | ||
293 | json_object *bar_config = json_tokener_parse(res); | 294 | json_object *bar_config = json_tokener_parse(res); |
294 | json_object *tray_output, *mode, *hidden_state, *position, *_status_command; | 295 | json_object *tray_output, *mode, *hidden_state, *position, *_status_command; |
295 | json_object *font, *bar_height, *workspace_buttons, *_strip_workspace_numbers; | 296 | json_object *font, *bar_height, *_workspace_buttons, *_strip_workspace_numbers; |
296 | json_object *_binding_mode_indicator, *verbose, *_colors, *sep_symbol; | 297 | json_object *_binding_mode_indicator, *verbose, *_colors, *sep_symbol; |
297 | json_object_object_get_ex(bar_config, "tray_output", &tray_output); | 298 | json_object_object_get_ex(bar_config, "tray_output", &tray_output); |
298 | json_object_object_get_ex(bar_config, "mode", &mode); | 299 | json_object_object_get_ex(bar_config, "mode", &mode); |
@@ -301,7 +302,7 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
301 | json_object_object_get_ex(bar_config, "status_command", &_status_command); | 302 | json_object_object_get_ex(bar_config, "status_command", &_status_command); |
302 | json_object_object_get_ex(bar_config, "font", &font); | 303 | json_object_object_get_ex(bar_config, "font", &font); |
303 | json_object_object_get_ex(bar_config, "bar_height", &bar_height); | 304 | json_object_object_get_ex(bar_config, "bar_height", &bar_height); |
304 | json_object_object_get_ex(bar_config, "workspace_buttons", &workspace_buttons); | 305 | json_object_object_get_ex(bar_config, "workspace_buttons", &_workspace_buttons); |
305 | json_object_object_get_ex(bar_config, "strip_workspace_numbers", &_strip_workspace_numbers); | 306 | json_object_object_get_ex(bar_config, "strip_workspace_numbers", &_strip_workspace_numbers); |
306 | json_object_object_get_ex(bar_config, "binding_mode_indicator", &_binding_mode_indicator); | 307 | json_object_object_get_ex(bar_config, "binding_mode_indicator", &_binding_mode_indicator); |
307 | json_object_object_get_ex(bar_config, "verbose", &verbose); | 308 | json_object_object_get_ex(bar_config, "verbose", &verbose); |
@@ -334,6 +335,10 @@ void bar_ipc_init(int outputi, const char *bar_id) { | |||
334 | binding_mode_indicator = json_object_get_boolean(_binding_mode_indicator); | 335 | binding_mode_indicator = json_object_get_boolean(_binding_mode_indicator); |
335 | } | 336 | } |
336 | 337 | ||
338 | if (_workspace_buttons) { | ||
339 | workspace_buttons = json_object_get_boolean(_workspace_buttons); | ||
340 | } | ||
341 | |||
337 | if (bar_height) { | 342 | if (bar_height) { |
338 | int width, height; | 343 | int width, height; |
339 | get_text_size(window, &width, &height, "Test string for measuring purposes"); | 344 | get_text_size(window, &width, &height, "Test string for measuring purposes"); |
@@ -696,12 +701,15 @@ void render() { | |||
696 | } | 701 | } |
697 | } | 702 | } |
698 | 703 | ||
699 | // Workspaces | ||
700 | cairo_set_line_width(window->cairo, 1.0); | 704 | cairo_set_line_width(window->cairo, 1.0); |
701 | double x = 0.5; | 705 | double x = 0.5; |
702 | for (i = 0; i < workspaces->length; ++i) { | 706 | |
703 | struct workspace *ws = workspaces->items[i]; | 707 | // Workspaces |
704 | render_workspace_button(ws, &x); | 708 | if (workspace_buttons) { |
709 | for (i = 0; i < workspaces->length; ++i) { | ||
710 | struct workspace *ws = workspaces->items[i]; | ||
711 | render_workspace_button(ws, &x); | ||
712 | } | ||
705 | } | 713 | } |
706 | 714 | ||
707 | // binding mode indicator | 715 | // binding mode indicator |