Initial commit
This commit is contained in:
commit
6646826386
6 changed files with 1371 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.o
|
||||||
|
zig-cache
|
25
build.zig
Normal file
25
build.zig
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
const Builder = @import("std").build.Builder;
|
||||||
|
|
||||||
|
pub fn build(b: *Builder) void {
|
||||||
|
// Standard target options allows the person running `zig build` to choose
|
||||||
|
// what target to build for. Here we do not override the defaults, which
|
||||||
|
// means any target is allowed, and the default is native. Other options
|
||||||
|
// for restricting supported target set are available.
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
|
||||||
|
// Standard release options allow the person running `zig build` to select
|
||||||
|
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
||||||
|
const mode = b.standardReleaseOptions();
|
||||||
|
|
||||||
|
const exe = b.addExecutable("dwc", "src/main.zig");
|
||||||
|
exe.setTarget(target);
|
||||||
|
exe.setBuildMode(mode);
|
||||||
|
exe.linkLibC();
|
||||||
|
exe.install();
|
||||||
|
|
||||||
|
const run_cmd = exe.run();
|
||||||
|
run_cmd.step.dependOn(b.getInstallStep());
|
||||||
|
|
||||||
|
const run_step = b.step("run", "Run the app");
|
||||||
|
run_step.dependOn(&run_cmd.step);
|
||||||
|
}
|
BIN
main
Executable file
BIN
main
Executable file
Binary file not shown.
2
protocol/.gitignore
vendored
Normal file
2
protocol/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.c
|
||||||
|
*.h
|
1240
protocol/xdg-shell.xml
Normal file
1240
protocol/xdg-shell.xml
Normal file
File diff suppressed because it is too large
Load diff
102
src/main.zig
Normal file
102
src/main.zig
Normal file
|
@ -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(){},
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue