const std = @import("std"); const wayland = @import("wayland"); const wl = wayland.wl; const log = std.log.scoped(.main); pub const std_options = std.Options{ .log_scope_levels = &.{ .{ .scope = .registry, .level = .info }, } }; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const allocator = gpa.allocator(); var display: wl.Display = try .open_default(allocator); defer display.deinit(allocator); try display.init(allocator, &.{ wl.Output.handler, wl.Compositor.handler, wl.Shm.handler, }); try display.roundtrip(allocator); try display.roundtrip(allocator); const ctx: wayland.Context = .{ .allocator = allocator, .display = &display, }; try display.roundtrip(allocator); for (wl.Output.instances.items) |output| { log.debug("{}", .{output}); } for (wl.Compositor.instances.items) |compositor| { log.debug("{}", .{compositor}); } for (wl.Shm.instances.items) |shm| { log.debug("{}", .{shm}); } const pool = try wl.Shm.instances.items[0].create_pool(ctx, 800 * 600 * (wl.Shm.Format.argb8888).bytes_per_pixel()); defer pool.deinit(ctx); try display.roundtrip(allocator); const buffer = try pool.create_buffer(ctx, 0, 800, 600, .argb8888); defer ctx.display.request(buffer, .{ .destroy = {} }) catch |e| log.err("error {}", .{e}); const surface = try wl.Compositor.instances.items[0].create_surface(ctx); defer surface.deinit(ctx); try display.roundtrip(allocator); log.debug("{}", .{buffer}); log.debug("{}", .{surface}); }