From 12fe0287dad91c5238a222065461772061a0f395 Mon Sep 17 00:00:00 2001 From: Tilo-K Date: Wed, 25 Jun 2025 11:52:17 +0200 Subject: [PATCH] feat: fix macos support --- .DS_Store | Bin 0 -> 6148 bytes src/term.zig | 19 +++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f07428816de36c5587f0e0cebf8f8a4acdc04b57 GIT binary patch literal 6148 zcmeHK%}T>S5T0!#)<1}N@n&8?p=U3##JkWJkfx9d4Jm3tJO%U(1W!JK2anzq4?d81 z@z!s4$2Qwok18?)yWeJhc6Ps%Ooxa}XWVZSg+$cCU~H^l`a;;wqb3c}tOE`2G0fWC zw8%#_PgVR?2Ke0tv_~18(7E^iHdhB#TV5ndZ&>u8YXu)KkJopv2fn@kt$j48{5H0p z5lT%uqf<(~thDn!vs81wT|9l}l(@W@WvpAhe00S5mgy3=%xISi8qeJ}yuGh`RP)~~ zZKPNG_Re$rRL`;4%R5i_z~@m>29yD1;I|k+&1Pw>In-GhPzIENDFgg{h%gvq!P24q zbYQYA05E{s3fA09a7-i^3ziOHffyGGbfHFC4CBI~kHjw)EFHRVGSYk)$!w%UF*ZB) zkE}bH*rCqKfHL4S&~%R>*Z;%C{l6ciPs)HY@UIv!LDEe+xRTV?+U2;`Mi|E!EbLc0 loQ7awOEG-86mMf#fj;5|FcvHwLIcr10+t4ylz|^*U;?h3W>WwF literal 0 HcmV?d00001 diff --git a/src/term.zig b/src/term.zig index 7e2f444..9c166a4 100644 --- a/src/term.zig +++ b/src/term.zig @@ -9,15 +9,18 @@ pub fn getTerminalDimensions() !Dimensions { const os_tag = builtin.os.tag; switch (os_tag) { - .linux, .macos, .freebsd, .openbsd, .netbsd => { + .linux, .freebsd, .openbsd, .netbsd => { return try getUnixTerminalDimensions(); }, .windows => { return try getWindowsTerminalDimensions(); }, + .macos => { + return try getMacOsTerminalDimensions(); + }, else => { return Error.UnsupportedOs; - } + }, } } @@ -32,6 +35,18 @@ fn getUnixTerminalDimensions() !Dimensions { return Dimensions{ .width = size.ws_col, .height = size.ws_row }; } +pub fn getMacOsTerminalDimensions() !Dimensions { + var ws: std.posix.winsize = undefined; + const fd = std.io.getStdOut().handle; + + _ = std.c.ioctl(fd, std.posix.T.IOCGWINSZ, @intFromPtr(&ws)); + + return Dimensions{ + .width = ws.col, + .height = ws.row, + }; +} + fn getWindowsTerminalDimensions() !Dimensions { const win = std.os.windows; const handle = win.GetStdHandle(win.STD_OUTPUT_HANDLE) catch return Error.ErrorFetchingDimensions;