diff options
author | Tony Crisci <tony@dubstepdish.com> | 2018-04-02 16:09:27 -0400 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2018-04-02 16:09:27 -0400 |
commit | d434da563239c43c5fe417ce83b23b417f2ab635 (patch) | |
tree | e154daaf43c42d11c5afb8b7739ae6b52dd01215 /include/swaybar/status_line.h | |
parent | d070244362f7d34bc15418154e52f8c968fbad41 (diff) | |
parent | 0c0cc79282b5ce29616893977aca629f90521988 (diff) | |
download | sway-d434da563239c43c5fe417ce83b23b417f2ab635.tar.xz |
Merge branch 'wlroots' into split-containers
Diffstat (limited to 'include/swaybar/status_line.h')
-rw-r--r-- | include/swaybar/status_line.h | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/include/swaybar/status_line.h b/include/swaybar/status_line.h index 6c595df0..3538f49c 100644 --- a/include/swaybar/status_line.h +++ b/include/swaybar/status_line.h @@ -7,10 +7,52 @@ enum status_protocol { PROTOCOL_UNDEF, + PROTOCOL_ERROR, PROTOCOL_TEXT, PROTOCOL_I3BAR, }; +struct text_protocol_state { + char *buffer; + size_t buffer_size; +}; + +enum json_node_type { + JSON_NODE_UNKNOWN, + JSON_NODE_ARRAY, + JSON_NODE_STRING, +}; + +struct i3bar_protocol_state { + bool click_events; + char *buffer; + size_t buffer_size; + size_t buffer_index; + const char *current_node; + bool escape; + size_t depth; + enum json_node_type nodes[16]; +}; + +struct i3bar_block { + struct wl_list link; + char *full_text, *short_text, *align; + bool urgent; + uint32_t *color; + int min_width; + char *name, *instance; + bool separator; + int separator_block_width; + bool markup; + // Airblader features + uint32_t background; + uint32_t border; + int border_top; + int border_bottom; + int border_left; + int border_right; +}; + struct status_line { pid_t pid; int read_fd, write_fd; @@ -18,13 +60,18 @@ struct status_line { enum status_protocol protocol; const char *text; + struct wl_list blocks; // i3bar_block::link - char *buffer; - size_t buffer_size; + struct text_protocol_state text_state; + struct i3bar_protocol_state i3bar_state; }; struct status_line *status_line_init(char *cmd); +void status_error(struct status_line *status, const char *text); +bool status_handle_readable(struct status_line *status); void status_line_free(struct status_line *status); -bool handle_status_readable(struct status_line *status); +bool i3bar_handle_readable(struct status_line *status); +void i3bar_block_send_click(struct status_line *status, + struct i3bar_block *block, int x, int y, uint32_t button); #endif |