Mezzaluna/src/main.zig
2025-10-20 18:28:40 -04:00

47 lines
1.1 KiB
Zig

const std = @import("std");
const wlr = @import("wlroots");
const zlua = @import("zlua");
const Lua = zlua.Lua;
const Server = @import("server.zig");
const gpa = std.heap.c_allocator;
pub var server: Server = undefined;
pub fn main() !void {
wlr.log.init(.err, null);
var lua = try Lua.init(gpa);
defer lua.deinit();
lua.openLibs();
lua.doString("print('Hello from Lua embedded in Zig!')") catch {};
std.log.info("Starting mezzaluna", .{});
try server.init();
defer server.deinit();
var buf: [11]u8 = undefined;
const socket = try server.wl_server.addSocketAuto(&buf);
if (std.os.argv.len >= 2) {
const cmd = std.mem.span(std.os.argv[1]);
var child = std.process.Child.init(&[_][]const u8{ "/bin/sh", "-c", cmd }, gpa);
var env_map = try std.process.getEnvMap(gpa);
defer env_map.deinit();
try env_map.put("WAYLAND_DISPLAY", socket);
child.env_map = &env_map;
try child.spawn();
}
std.log.info("Starting backend", .{});
server.backend.start() catch |err| {
std.debug.panic("Failed to start backend: {}", .{err});
return;
};
std.log.info("Starting server", .{});
server.wl_server.run();
}