aboutsummaryrefslogtreecommitdiffstats
path: root/include/swaybar/bar.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/swaybar/bar.h')
-rw-r--r--include/swaybar/bar.h89
1 files changed, 39 insertions, 50 deletions
diff --git a/include/swaybar/bar.h b/include/swaybar/bar.h
index 50d36e76..1bf2ea2d 100644
--- a/include/swaybar/bar.h
+++ b/include/swaybar/bar.h
@@ -1,36 +1,49 @@
1#ifndef _SWAYBAR_BAR_H 1#ifndef _SWAYBAR_BAR_H
2#define _SWAYBAR_BAR_H 2#define _SWAYBAR_BAR_H
3 3#include <wayland-client.h>
4#include "client/registry.h" 4#include "pool-buffer.h"
5#include "client/window.h"
6#include "list.h" 5#include "list.h"
7 6
8struct bar { 7struct swaybar_config;
9 struct config *config; 8struct swaybar_output;
9struct swaybar_workspace;
10
11struct swaybar {
12 struct wl_display *display;
13 struct wl_compositor *compositor;
14 struct zwlr_layer_shell_v1 *layer_shell;
15 struct wl_shm *shm;
16
17 struct swaybar_config *config;
18 struct swaybar_output *focused_output;
10 struct status_line *status; 19 struct status_line *status;
11 list_t *outputs;
12 struct output *focused_output;
13 20
14 int ipc_event_socketfd; 21 int ipc_event_socketfd;
15 int ipc_socketfd; 22 int ipc_socketfd;
16 int status_read_fd; 23
17 int status_write_fd; 24 struct wl_list outputs;
18 pid_t status_command_pid;
19}; 25};
20 26
21struct output { 27struct swaybar_output {
22 struct window *window; 28 struct wl_list link;
23 struct registry *registry; 29 struct swaybar *bar;
24 list_t *workspaces; 30 struct wl_output *output;
25#ifdef ENABLE_TRAY 31 struct wl_surface *surface;
26 list_t *items; 32 struct zwlr_layer_surface_v1 *layer_surface;
27#endif 33
34 struct wl_list workspaces;
35
28 char *name; 36 char *name;
29 int idx; 37 size_t index;
30 bool focused; 38 bool focused;
39
40 uint32_t width, height;
41 struct pool_buffer buffers[2];
42 struct pool_buffer *current_buffer;
31}; 43};
32 44
33struct workspace { 45struct swaybar_workspace {
46 struct wl_list link;
34 int num; 47 int num;
35 char *name; 48 char *name;
36 bool focused; 49 bool focused;
@@ -38,35 +51,11 @@ struct workspace {
38 bool urgent; 51 bool urgent;
39}; 52};
40 53
41/** Global bar state */ 54// TODO: Rename stuff to match wlroots conventions (init/create/etc)
42extern struct bar swaybar; 55void bar_setup(struct swaybar *bar,
56 const char *socket_path,
57 const char *bar_id);
58void bar_run(struct swaybar *bar);
59void bar_teardown(struct swaybar *bar);
43 60
44/** True if sway needs to render */ 61#endif
45extern bool dirty;
46
47/**
48 * Setup bar.
49 */
50void bar_setup(struct bar *bar, const char *socket_path, const char *bar_id);
51
52/**
53 * Create new output struct from name.
54 */
55struct output *new_output(const char *name);
56
57/**
58 * Bar mainloop.
59 */
60void bar_run(struct bar *bar);
61
62/**
63 * free workspace list.
64 */
65void free_workspaces(list_t *workspaces);
66
67/**
68 * Teardown bar.
69 */
70void bar_teardown(struct bar *bar);
71
72#endif /* _SWAYBAR_BAR_H */