main zmx / examples / list_sessions.zig
Eric Bower  ·  2026-10-20
 1//! Example: list active zmx sessions and print their details.
 2const std = @import("std");
 3const zmx = @import("zmx");
 4
 5pub fn main(init: std.process.Init) !void {
 6    const gpa = init.gpa;
 7    const io = init.io;
 8
 9    const sessions = try zmx.list(gpa, io);
10    defer {
11        for (sessions) |s| s.deinit(gpa);
12        gpa.free(sessions);
13    }
14
15    if (sessions.len == 0) {
16        std.debug.print("no active sessions\n", .{});
17        return;
18    }
19
20    var buf: [4096]u8 = undefined;
21    var w = std.Io.File.stdout().writer(io, &buf);
22    for (sessions) |s| {
23        try w.interface.print("{s}\t", .{s.name});
24        if (s.pid) |pid| try w.interface.print("pid={d}\t", .{pid});
25        if (s.is_error) try w.interface.print("[error]\t", .{});
26        if (s.task_exit_code) |code| try w.interface.print("exit={d}\t", .{code});
27        if (s.labels) |labels| try w.interface.print("{s}\t", .{labels});
28        try w.interface.print("\n", .{});
29    }
30}