Something went wrong. Try again.
An example of how to hack DVUI and layer shell protocol together.
Something went wrong. Try again.
2.4 kB · 81 lines
Zig
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182const std = @import("std");const dvui = @import("dvui");const builtin = @import("builtin");const SDLBackend = @import("backend");const SDLCustomInit = @import("./sdlCustomInit.zig");
var g_backend: ?SDLBackend = null;
pub fn main(init: std.process.Init) !void { if (builtin.os.tag == .windows) { dvui.Backend.Common.windowsAttachConsole(); } SDLBackend.enableSDLLogging(); std.log.info("SDL version: {f}", .{ SDLBackend.getSDLVersion() });
const ctx = try SDLCustomInit.initWindow(.{ .io = init.io, .title = "[bpavuk/mustfloat] SDL Standalone example", .environ_map = init.environ_map, .vsync = true, .size = .{ .h = 600, .w = 800 }, .min_size = .{ .h = 600, .w = 800 }, }, init.gpa); var backend = ctx.backend; g_backend = backend; const wayland = ctx.waylandCtx; defer backend.deinit(); defer wayland.deinit(init.gpa);
_ = SDLBackend.c.SDL_EnableScreenSaver();
var window_open = true; var win = try dvui.Window.init(@src(), init.gpa, backend.backend(), .{ .theme = switch (backend.preferredColorScheme() orelse .light) { .light => dvui.Theme.builtin.adwaita_light, .dark => dvui.Theme.builtin.adwaita_dark, }, .open_flag = &window_open, }); defer win.deinit();
var interrupted = false;
main_loop: while (window_open) { const nstime = win.beginWait(interrupted);
try win.begin(nstime); try backend.addAllEvents(&win);
const keep_running = content(); if (!keep_running) break :main_loop;
const end_micros = try win.end(.{});
const wait_event_micros = win.waitTime(end_micros); interrupted = try backend.waitEventTimeout(wait_event_micros); }}
fn content() bool { const backend = g_backend orelse { std.log.debug("g_backend is null", .{}); return false; }; _ = backend;
var box = dvui.box(@src(), .{}, .{ .gravity_y = 0.5, .gravity_x = 0.5 }); defer box.deinit();
const hello_world = "Hello World"; dvui.label(@src(), hello_world, .{}, .{ .font = .theme(.title) });
const button = dvui.button(@src(), "Click me!", .{ .touch_drag = true, }, .{});
if (button) { std.debug.print("Pressed\n", .{}); }
return true;}