swayfx/include/swaybar/config.h
Brian Ashworth 02bbefda20 bar_cmd_tray_bind: Use mouse button helpers
This modifies `bar_cmd_tray_bindsym` to use `get_mouse_bindsym` for
parsing mouse buttons. This also introduces `bar_cmd_tray_bindcode`,
which will use `get_mouse_bindcode` for parsing mouse buttons. Like with
sway bindings, the two commands are encapsulated in a single file to
maximize shared code.

This also modifies tray bindings to work off of events codes rather than
x11 buttons, which allows for any mouse buttons to be used.

For `get_bar_config`, `event_code` has been added to the `tray_bindings`
section and will include to event code for the button. If the event code
can be mapped to a x11 button, `input_code` will still be the x11 button
number. Otherwise, `input_code` will be `0`.
2019-01-16 11:12:45 +01:00

93 lines
1.8 KiB
C

#ifndef _SWAYBAR_CONFIG_H
#define _SWAYBAR_CONFIG_H
#include <stdbool.h>
#include <stdint.h>
#include <wayland-client.h>
#include "../include/config.h"
#include "list.h"
#include "util.h"
struct box_colors {
uint32_t border;
uint32_t background;
uint32_t text;
};
struct config_output {
struct wl_list link; // swaybar_config::outputs
char *name;
size_t index;
};
struct swaybar_binding {
uint32_t button;
char *command;
bool release;
};
struct swaybar_config {
char *status_command;
bool pango_markup;
uint32_t position; // zwlr_layer_surface_v1_anchor
char *font;
char *sep_symbol;
char *mode;
char *hidden_state;
char *modifier;
bool strip_workspace_numbers;
bool strip_workspace_name;
bool binding_mode_indicator;
bool wrap_scroll;
bool workspace_buttons;
list_t *bindings;
struct wl_list outputs; // config_output::link
bool all_outputs;
int height;
int status_padding;
int status_edge_padding;
struct {
int top;
int right;
int bottom;
int left;
} gaps;
struct {
uint32_t background;
uint32_t statusline;
uint32_t separator;
uint32_t focused_background;
uint32_t focused_statusline;
uint32_t focused_separator;
struct box_colors focused_workspace;
struct box_colors active_workspace;
struct box_colors inactive_workspace;
struct box_colors urgent_workspace;
struct box_colors binding_mode;
} colors;
#if HAVE_TRAY
char *icon_theme;
struct wl_list tray_bindings; // struct tray_binding::link
bool tray_hidden;
list_t *tray_outputs; // char *
int tray_padding;
#endif
};
#if HAVE_TRAY
struct tray_binding {
uint32_t button;
char *command;
struct wl_list link; // struct tray_binding::link
};
#endif
struct swaybar_config *init_config(void);
void free_config(struct swaybar_config *config);
uint32_t parse_position(const char *position);
#endif