56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
#pragma once
|
|
|
|
#include <cairo.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <zdwm/action.h>
|
|
#include <zdwm/bar.h>
|
|
#include <zdwm/types.h>
|
|
|
|
#include "bar/text.h"
|
|
#include "bar/types.h"
|
|
#include "base/color.h"
|
|
#include "common/listeners.h"
|
|
#include "interface/tray.h"
|
|
|
|
typedef struct bar_output_t {
|
|
cairo_t *cr;
|
|
zdwm_window_id_t window_id;
|
|
zdwm_output_id_t output_id;
|
|
int32_t width;
|
|
int32_t height;
|
|
bar_side_t left;
|
|
bar_side_t right;
|
|
zdwm_bar_item_t center;
|
|
} bar_output_t;
|
|
|
|
typedef struct bar_palette_t {
|
|
color_t bg;
|
|
} bar_palette_t;
|
|
|
|
typedef struct bar_t {
|
|
bar_output_t *bars;
|
|
size_t count;
|
|
|
|
bool visible;
|
|
int timerfd;
|
|
|
|
zdwm_bar_config_t config;
|
|
bar_palette_t palette;
|
|
text_context_t *ctx;
|
|
tray_t tray;
|
|
} bar_t;
|
|
|
|
void bar_init(bar_t *bar, listeners_t *listeners);
|
|
void bar_cleanup(bar_t *bar);
|
|
void bar_update(bar_t *bar);
|
|
bool bar_draw(bar_t *bar);
|
|
|
|
typedef struct bar_click_info_t {
|
|
zdwm_window_id_t window;
|
|
int32_t x;
|
|
zdwm_modifier_mask_t modifiers;
|
|
zdwm_button_t button;
|
|
} bar_click_info_t;
|
|
bool bar_click(bar_t *bar, bar_click_info_t info, zdwm_action_t *action);
|