srctree

Gregory Mullen parent eb8e981d 6335af98
add backlight and battery basics to line

filename was Deleted added: 103, removed: 8, total 95
@@ -0,0 +1,33 @@
const std = @import("std");
 
const DELAY = 10;
 
const Battery = @This();
 
update: i64 = 0,
capacity: u8 = 0,
 
pub fn init() !Battery {
var bat = Battery{};
try bat.read();
return bat;
}
 
fn read(self: *Battery) !void {
var file = try std.fs.openFileAbsolute("/sys/class/power_supply/BAT1/capacity", .{});
defer file.close();
var buffer: [10]u8 = undefined;
var count = try file.read(&buffer);
self.capacity = try std.fmt.parseInt(u8, buffer[0 .. count - 1], 10);
}
 
pub fn update(self: *Battery, i: i64) !void {
if (self.update > i) return;
 
self.update = i + DELAY;
try self.read();
}
 
pub fn format(self: Battery, comptime _: []const u8, _: std.fmt.FormatOptions, out: anytype) !void {
return out.print("Battery {}%", .{self.capacity});
}
 
src/datetime.zig added: 103, removed: 8, total 95
@@ -47,6 +47,10 @@ pub fn now() DateTime {
return fromEpoch(std.time.timestamp()) catch unreachable;
}
 
pub fn nowOffset(os: i64) DateTime {
return fromEpoch(std.time.timestamp() + os) catch unreachable;
}
 
pub fn today() DateTime {
var self = now();
const offset = @as(i64, self.hours) * 60 * 60 + @as(i64, self.minutes) * 60 + self.seconds;
 
src/main.zig added: 103, removed: 8, total 95
@@ -1,5 +1,7 @@
const std = @import("std");
const datetime = @import("datetime.zig");
const DateTime = @import("datetime.zig");
const Video = @import("video.zig");
const Battery = @import("battery.zig");
 
const Header = struct {
version: usize = 1,
@@ -31,15 +33,33 @@ const Body = struct {
var date_buffer: [1024]u8 = undefined;
fn date() Body {
return Body{
.full_text = std.fmt.bufPrint(&date_buffer, "{}", .{datetime.now()}) catch unreachable,
.full_text = std.fmt.bufPrint(&date_buffer, "{}", .{DateTime.nowOffset(-28800)}) catch unreachable,
};
}
 
var bl_buffer: [1024]u8 = undefined;
fn bl() !Body {
return Body{
.full_text = std.fmt.bufPrint(&bl_buffer, "{}", .{try Video.Backlight.init()}) catch unreachable,
};
}
 
var bat_buffer: [1024]u8 = undefined;
fn battery() !Body {
var bat = try Battery.init();
//try bat.update(std.time.timestamp());
return Body{
.full_text = std.fmt.bufPrint(&bat_buffer, "{}", .{bat}) catch unreachable,
};
}
 
fn build(a: std.mem.Allocator) ![]Body {
const list = try a.alloc(Body, 1);
const list = try a.alloc(Body, 3);
for (list) |*l|
l.* = Body{};
list[0] = date();
list[0] = try bl();
list[1] = try battery();
list[2] = date();
return list;
}
 
 
filename was Deleted added: 103, removed: 8, total 95
@@ -0,0 +1,38 @@
const std = @import("std");
 
pub const Backlight = struct {
update: i64 = 0,
current: u32 = 0,
max: u32 = 0,
 
pub fn init() !Backlight {
var bl = Backlight{};
try bl.read(true);
return bl;
}
 
pub fn read(self: *Backlight, both: bool) !void {
var file = try std.fs.openFileAbsolute("/sys/class/backlight/amdgpu_bl1/brightness", .{});
defer file.close();
var buffer: [10]u8 = undefined;
var count = try file.read(&buffer);
self.current = try std.fmt.parseInt(u32, buffer[0 .. count - 1], 10);
if (!both) return;
 
file.close();
file = try std.fs.openFileAbsolute("/sys/class/backlight/amdgpu_bl1/max_brightness", .{});
count = try file.read(&buffer);
self.max = try std.fmt.parseInt(u32, buffer[0 .. count - 1], 10);
}
 
pub fn update(self: *Backlight, t: i64) !void {
if (self.update > t) return;
self.update = t + 10;
try self.read(false);
}
 
pub fn format(self: Backlight, comptime _: []const u8, _: std.fmt.FormatOptions, out: anytype) !void {
const pct = self.current * 100 / self.max;
return out.print("BL {}%", .{pct});
}
};