diff --git a/ly-core/build.zig b/ly-core/build.zig index f6574de..9400ff2 100644 --- a/ly-core/build.zig +++ b/ly-core/build.zig @@ -45,6 +45,7 @@ pub fn build(b: *std.Build) void { } else if (target.result.os.tag == .freebsd) { addCImport(b, mod, translate_c, target, optimize, "kbio", "#include "); addCImport(b, mod, translate_c, target, optimize, "consio", "#include "); + addCImport(b, mod, translate_c, target, optimize, "sysctl", "#include "); } const mod_tests = b.addTest(.{ diff --git a/ly-core/src/interop.zig b/ly-core/src/interop.zig index f23583c..9b16c62 100644 --- a/ly-core/src/interop.zig +++ b/ly-core/src/interop.zig @@ -13,6 +13,9 @@ pub const utmp = @import("utmp"); // Exists for X11 support only pub const xcb = @import("xcb"); +// FreeBSD only +pub const sysctl = @import("sysctl"); + pub const TimeOfDay = struct { seconds: i64, microseconds: i64, diff --git a/res/config.ini b/res/config.ini index a290773..9d9fc57 100644 --- a/res/config.ini +++ b/res/config.ini @@ -49,6 +49,7 @@ auth_fails = 10 # Identifier for battery whose charge to display at top left # Primary battery is usually BAT0 or BAT1 # If set to null, battery status won't be shown +# Unused on FreeBSD (a sysctl is used there) battery_id = null # Automatic login configuration diff --git a/src/main.zig b/src/main.zig index b51b55a..b756d57 100644 --- a/src/main.zig +++ b/src/main.zig @@ -43,8 +43,6 @@ const DisplayServer = @import("enums.zig").DisplayServer; const Environment = @import("Environment.zig"); const Entry = Environment.Entry; -const sysctl = if (builtin.os.tag == .freebsd) @cImport(@cInclude("sys/sysctl.h")) else struct {}; - const ly_version_str = "Ly version " ++ build_options.version; var session_pid: std.posix.pid_t = -1; @@ -2323,7 +2321,7 @@ fn getBatteryPercentage(io: std.Io, battery_id: []const u8) !u8 { var capacity: c_int = -1; var size: usize = @sizeOf(c_int); - const ret = sysctl.sysctlbyname("hw.acpi.battery.life", &capacity, &size, null, 0); + const ret = interop.sysctl.sysctlbyname("hw.acpi.battery.life", &capacity, &size, null, 0); if (ret != 0) return error.SysctlFailed; if (capacity < 0 or capacity > 100) return error.InvalidBatteryCapacity;