aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000..5617450
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,102 @@
+const c = @cImport({
+ @cDefine("WLR_USE_UNSTABLE", {});
+ @cInclude("wayland-server-core.h");
+ @cInclude("wlr/backend.h");
+ @cInclude("wlr/util/log.h");
+ @cInclude("wlr/types/wlr_xdg_shell.h>");
+});
+const std = @import("std");
+
+const CursorMode = enum {
+ Passthrough,
+ Move,
+ Resize,
+};
+
+fn create_list() c.wl_list {
+ return c.wl_list{
+ .prev = null,
+ .next = null,
+ };
+}
+
+fn create_listener() c.wl_listener {
+ return c.wl_listener{
+ .link = create_list(),
+ .notify = null,
+ };
+}
+
+const Server = struct {
+ wl_display: ?*c.wl_display,
+ backend: ?*c.wlr_backend,
+ renderer: ?*c.wlr_renderer,
+
+ xdg_shell: ?*c.wlr_xdg_shell,
+ new_xdg_surface: c.wl_listener,
+ views: c.wl_list,
+
+ cursor: ?*c.wlr_cursor,
+ cursor_mgr: ?*c.wlr_xcursor_manager,
+ cursor_motion: c.wl_listener,
+ cursor_motion_absolute: c.wl_listener,
+ cursor_button: c.wl_listener,
+ cursor_axis: c.wl_listener,
+ cursor_frame: c.wl_listener,
+
+ seat: ?*c.wlr_seat,
+ new_input: c.wl_listener,
+ request_cursor: c.wl_listener,
+ keyboards: c.wl_list,
+ cursor_mode: CursorMode,
+ grabbed_view: ?*c.tinywl_view,
+ grab_x: f64,
+ grab_y: f64,
+ grab_width: c_int,
+ grab_height: c_int,
+ resize_edges: u32,
+
+ output_layout: ?*c.wlr_output_layout,
+ outputs: c.wl_list,
+ new_output: c.wl_listener,
+};
+
+pub fn main() !void {
+ std.debug.warn("Starting up.\n", .{});
+
+ c.wlr_log_init(c.enum_wlr_log_importance.WLR_DEBUG, null);
+
+ var server = Server{
+ .wl_display = null,
+ .backend = null,
+ .renderer = null,
+
+ .xdg_shell = null,
+ .new_xdg_surface = create_listener(),
+ .views = c.wl_list,
+
+ .cursor = null,
+ .cursor_mgr = null,
+ .cursor_motion = create_listener(),
+ .cursor_motion_absolute = create_listener(),
+ .cursor_button = create_listener(),
+ .cursor_axis = create_listener(),
+ .cursor_frame = create_listener(),
+
+ .seat = null,
+ .new_input = create_listener(),
+ .request_cursor = create_listener(),
+ .keyboards = c.wl_list,
+ .cursor_mode = CursorMode.Passthrough,
+ .grabbed_view = null,
+ .grab_x = 0.0,
+ .grab_y = 0.0,
+ .grab_width = 0,
+ .grab_height = 0,
+ .resize_edges = 0,
+
+ .output_layout = null,
+ .outputs = c.wl_list{ .prev = null, .next = null },
+ .new_output = create_listener(){},
+ };
+}