mirror of
https://codeberg.org/fairyglade/ly.git
synced 2026-08-23 14:04:20 +02:00
Merge branch 'master' into custom-commands
This commit is contained in:
commit
512ef3732a
31 changed files with 157 additions and 101 deletions
22
build.zig
22
build.zig
|
|
@ -72,36 +72,18 @@ pub fn build(b: *std.Build) !void {
|
|||
.use_llvm = true,
|
||||
});
|
||||
|
||||
const ly_core = b.dependency("ly_core", .{ .target = target, .optimize = optimize });
|
||||
exe.root_module.addImport("ly-core", ly_core.module("ly-core"));
|
||||
|
||||
const zigini = b.dependency("zigini", .{ .target = target, .optimize = optimize });
|
||||
exe.root_module.addImport("zigini", zigini.module("zigini"));
|
||||
const ly_ui = b.dependency("ly_ui", .{ .target = target, .optimize = optimize });
|
||||
exe.root_module.addImport("ly-ui", ly_ui.module("ly-ui"));
|
||||
|
||||
exe.root_module.addOptions("build_options", build_options);
|
||||
|
||||
const clap = b.dependency("clap", .{ .target = target, .optimize = optimize });
|
||||
exe.root_module.addImport("clap", clap.module("clap"));
|
||||
|
||||
const termbox_dep = b.dependency("termbox2", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
exe.linkSystemLibrary("pam");
|
||||
if (enable_x11_support) exe.linkSystemLibrary("xcb");
|
||||
exe.linkLibC();
|
||||
|
||||
const translate_c = b.addTranslateC(.{
|
||||
.root_source_file = termbox_dep.path("termbox2.h"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
translate_c.defineCMacroRaw("TB_IMPL");
|
||||
translate_c.defineCMacro("TB_OPT_ATTR_W", "32"); // Enable 24-bit color support + styling (32-bit)
|
||||
const termbox2 = translate_c.addModule("termbox2");
|
||||
exe.root_module.addImport("termbox2", termbox2);
|
||||
|
||||
b.installArtifact(exe);
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
|
|
|
|||
|
|
@ -4,21 +4,13 @@
|
|||
.fingerprint = 0xa148ffcc5dc2cb59,
|
||||
.minimum_zig_version = "0.15.0",
|
||||
.dependencies = .{
|
||||
.ly_core = .{
|
||||
.path = "ly-core",
|
||||
.ly_ui = .{
|
||||
.path = "ly-ui",
|
||||
},
|
||||
.clap = .{
|
||||
.url = "git+https://github.com/Hejsil/zig-clap#5289e0753cd274d65344bef1c114284c633536ea",
|
||||
.hash = "clap-0.11.0-oBajB-HnAQDPCKYzwF7rO3qDFwRcD39Q0DALlTSz5H7e",
|
||||
},
|
||||
.zigini = .{
|
||||
.url = "git+https://github.com/AnErrupTion/zigini?ref=zig-0.15.0#9281f47702b57779e831d7618e158abb8eb4d4a2",
|
||||
.hash = "zigini-0.3.3-36M0FRJJAADZVq5HPm-hYKMpFFTr0OgjbEYcK2ijKZ5n",
|
||||
},
|
||||
.termbox2 = .{
|
||||
.url = "git+https://github.com/AnErrupTion/termbox2?ref=master#496730697c662893eec43192f48ff616c2539da6",
|
||||
.hash = "N-V-__8AAOEWBQDt5tNdIzIFY6n8DdZsCP-6MyLoNS20wgpA",
|
||||
},
|
||||
},
|
||||
.paths = .{""},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
const std = @import("std");
|
||||
const ini = @import("zigini");
|
||||
|
||||
pub const ini = @import("zigini");
|
||||
|
||||
pub const interop = @import("interop.zig");
|
||||
pub const UidRange = @import("UidRange.zig");
|
||||
|
|
|
|||
37
ly-ui/build.zig
Normal file
37
ly-ui/build.zig
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
const mod = b.addModule("ly-ui", .{
|
||||
.root_source_file = b.path("src/root.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
const ly_core = b.dependency("ly_core", .{ .target = target, .optimize = optimize });
|
||||
mod.addImport("ly-core", ly_core.module("ly-core"));
|
||||
|
||||
const termbox_dep = b.dependency("termbox2", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
const translate_c = b.addTranslateC(.{
|
||||
.root_source_file = termbox_dep.path("termbox2.h"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
translate_c.defineCMacroRaw("TB_IMPL");
|
||||
translate_c.defineCMacro("TB_OPT_ATTR_W", "32"); // Enable 24-bit color support + styling (32-bit)
|
||||
const termbox2 = translate_c.addModule("termbox2");
|
||||
mod.addImport("termbox2", termbox2);
|
||||
|
||||
const mod_tests = b.addTest(.{
|
||||
.root_module = mod,
|
||||
});
|
||||
const run_mod_tests = b.addRunArtifact(mod_tests);
|
||||
|
||||
const test_step = b.step("test", "Run tests");
|
||||
test_step.dependOn(&run_mod_tests.step);
|
||||
}
|
||||
20
ly-ui/build.zig.zon
Normal file
20
ly-ui/build.zig.zon
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
.{
|
||||
.name = .ly_ui,
|
||||
.version = "1.0.0",
|
||||
.fingerprint = 0x8d11bf85a74ec803,
|
||||
.minimum_zig_version = "0.15.0",
|
||||
.dependencies = .{
|
||||
.ly_core = .{
|
||||
.path = "../ly-core",
|
||||
},
|
||||
.termbox2 = .{
|
||||
.url = "git+https://github.com/AnErrupTion/termbox2?ref=master#496730697c662893eec43192f48ff616c2539da6",
|
||||
.hash = "N-V-__8AAOEWBQDt5tNdIzIFY6n8DdZsCP-6MyLoNS20wgpA",
|
||||
},
|
||||
},
|
||||
.paths = .{
|
||||
"build.zig",
|
||||
"build.zig.zon",
|
||||
"src",
|
||||
},
|
||||
}
|
||||
13
ly-ui/src/root.zig
Normal file
13
ly-ui/src/root.zig
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
pub const ly_core = @import("ly-core");
|
||||
|
||||
pub const Cell = @import("Cell.zig");
|
||||
pub const keyboard = @import("keyboard.zig");
|
||||
pub const Position = @import("Position.zig");
|
||||
pub const TerminalBuffer = @import("TerminalBuffer.zig");
|
||||
pub const Widget = @import("Widget.zig");
|
||||
|
||||
pub const BigLabel = @import("components/BigLabel.zig");
|
||||
pub const CenteredBox = @import("components/CenteredBox.zig");
|
||||
pub const CyclableLabel = @import("components/generic.zig").CyclableLabel;
|
||||
pub const Label = @import("components/Label.zig");
|
||||
pub const Text = @import("components/Text.zig");
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
const ini = @import("zigini");
|
||||
const ini = @import("ly-ui").ly_core.ini;
|
||||
const Ini = ini.Ini;
|
||||
|
||||
const enums = @import("enums.zig");
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
const std = @import("std");
|
||||
const math = std.math;
|
||||
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const Cascade = @This();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
const std = @import("std");
|
||||
const math = std.math;
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const TimeOfDay = interop.TimeOfDay;
|
||||
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
|
||||
const ColorMix = @This();
|
||||
|
||||
const Vec2 = @Vector(2, f32);
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const TimeOfDay = interop.TimeOfDay;
|
||||
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
|
||||
const Doom = @This();
|
||||
|
||||
pub const STEPS = 12;
|
||||
|
|
|
|||
|
|
@ -4,18 +4,20 @@ const Json = std.json;
|
|||
const eql = std.mem.eql;
|
||||
const flate = std.compress.flate;
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Color = TerminalBuffer.Color;
|
||||
const Styling = TerminalBuffer.Styling;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const TimeOfDay = interop.TimeOfDay;
|
||||
const LogFile = ly_core.LogFile;
|
||||
|
||||
const enums = @import("../enums.zig");
|
||||
const DurOffsetAlignment = enums.DurOffsetAlignment;
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Color = TerminalBuffer.Color;
|
||||
const Styling = TerminalBuffer.Styling;
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
|
||||
fn read_decompress_file(allocator: Allocator, file_path: []const u8) ![]u8 {
|
||||
const file_buffer = std.fs.cwd().openFile(file_path, .{}) catch {
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const TimeOfDay = interop.TimeOfDay;
|
||||
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
|
||||
const GameOfLife = @This();
|
||||
|
||||
// Visual styles - using block characters like other animations
|
||||
|
|
|
|||
|
|
@ -2,14 +2,15 @@ const std = @import("std");
|
|||
const Allocator = std.mem.Allocator;
|
||||
const Random = std.Random;
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Cell = ly_ui.Cell;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const TimeOfDay = interop.TimeOfDay;
|
||||
|
||||
const Cell = @import("../tui/Cell.zig");
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const Widget = @import("../tui/Widget.zig");
|
||||
|
||||
pub const FRAME_DELAY: usize = 8;
|
||||
|
||||
// Characters change mid-scroll
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ const Md5 = std.crypto.hash.Md5;
|
|||
const builtin = @import("builtin");
|
||||
const build_options = @import("build_options");
|
||||
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_core = @import("ly-ui").ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const SharedError = ly_core.SharedError;
|
||||
const LogFile = ly_core.LogFile;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
const keyboard = @import("../keyboard.zig");
|
||||
const TerminalBuffer = @import("../TerminalBuffer.zig");
|
||||
const Widget = @import("../Widget.zig");
|
||||
const generic = @import("generic.zig");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const keyboard = ly_ui.keyboard;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
const CyclableLabel = ly_ui.CyclableLabel;
|
||||
|
||||
const MessageLabel = generic.CyclableLabel(Message, Message);
|
||||
const MessageLabel = CyclableLabel(Message, Message);
|
||||
|
||||
const InfoLine = @This();
|
||||
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
const enums = @import("../../enums.zig");
|
||||
const DisplayServer = enums.DisplayServer;
|
||||
const Environment = @import("../../Environment.zig");
|
||||
const keyboard = @import("../keyboard.zig");
|
||||
const TerminalBuffer = @import("../TerminalBuffer.zig");
|
||||
const Widget = @import("../Widget.zig");
|
||||
const generic = @import("generic.zig");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const keyboard = ly_ui.keyboard;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
const CyclableLabel = ly_ui.CyclableLabel;
|
||||
|
||||
const UserList = @import("UserList.zig");
|
||||
const Environment = @import("../Environment.zig");
|
||||
|
||||
const Env = struct {
|
||||
environment: Environment,
|
||||
index: usize,
|
||||
};
|
||||
const EnvironmentLabel = generic.CyclableLabel(Env, *UserList);
|
||||
const EnvironmentLabel = CyclableLabel(Env, *UserList);
|
||||
|
||||
const Session = @This();
|
||||
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
const SavedUsers = @import("../../config/SavedUsers.zig");
|
||||
const keyboard = @import("../keyboard.zig");
|
||||
const TerminalBuffer = @import("../TerminalBuffer.zig");
|
||||
const Widget = @import("../Widget.zig");
|
||||
const generic = @import("generic.zig");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const keyboard = ly_ui.keyboard;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
const CyclableLabel = ly_ui.CyclableLabel;
|
||||
|
||||
const Session = @import("Session.zig");
|
||||
const SavedUsers = @import("../config/SavedUsers.zig");
|
||||
|
||||
const StringList = std.ArrayListUnmanaged([]const u8);
|
||||
pub const User = struct {
|
||||
|
|
@ -15,7 +17,7 @@ pub const User = struct {
|
|||
allocated_index: bool,
|
||||
first_run: bool,
|
||||
};
|
||||
const UserLabel = generic.CyclableLabel(User, *Session);
|
||||
const UserLabel = CyclableLabel(User, *Session);
|
||||
|
||||
const UserList = @This();
|
||||
|
||||
|
|
@ -5,13 +5,14 @@
|
|||
const std = @import("std");
|
||||
var temporary_allocator = std.heap.page_allocator;
|
||||
|
||||
const ini = @import("zigini");
|
||||
const ly_core = @import("ly-core");
|
||||
const IniParser = ly_core.IniParser;
|
||||
|
||||
const TerminalBuffer = @import("../tui/TerminalBuffer.zig");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Color = TerminalBuffer.Color;
|
||||
const Styling = TerminalBuffer.Styling;
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const IniParser = ly_core.IniParser;
|
||||
const ini = ly_core.ini;
|
||||
|
||||
const Config = @import("Config.zig");
|
||||
const OldSave = @import("OldSave.zig");
|
||||
const SavedUsers = @import("SavedUsers.zig");
|
||||
|
|
|
|||
30
src/main.zig
30
src/main.zig
|
|
@ -6,14 +6,22 @@ const builtin = @import("builtin");
|
|||
const build_options = @import("build_options");
|
||||
|
||||
const clap = @import("clap");
|
||||
const ini = @import("zigini");
|
||||
const Ini = ini.Ini;
|
||||
const ly_core = @import("ly-core");
|
||||
const ly_ui = @import("ly-ui");
|
||||
const Position = ly_ui.Position;
|
||||
const BigLabel = ly_ui.BigLabel;
|
||||
const CenteredBox = ly_ui.CenteredBox;
|
||||
const Label = ly_ui.Label;
|
||||
const Text = ly_ui.Text;
|
||||
const TerminalBuffer = ly_ui.TerminalBuffer;
|
||||
const Widget = ly_ui.Widget;
|
||||
const ly_core = ly_ui.ly_core;
|
||||
const interop = ly_core.interop;
|
||||
const UidRange = ly_core.UidRange;
|
||||
const LogFile = ly_core.LogFile;
|
||||
const SharedError = ly_core.SharedError;
|
||||
const IniParser = ly_core.IniParser;
|
||||
const ini = ly_core.ini;
|
||||
const Ini = ini.Ini;
|
||||
|
||||
const Cascade = @import("animations/Cascade.zig");
|
||||
const ColorMix = @import("animations/ColorMix.zig");
|
||||
|
|
@ -22,26 +30,18 @@ const DurFile = @import("animations/DurFile.zig");
|
|||
const GameOfLife = @import("animations/GameOfLife.zig");
|
||||
const Matrix = @import("animations/Matrix.zig");
|
||||
const auth = @import("auth.zig");
|
||||
const InfoLine = @import("components/InfoLine.zig");
|
||||
const Session = @import("components/Session.zig");
|
||||
const UserList = @import("components/UserList.zig");
|
||||
const Config = @import("config/Config.zig");
|
||||
const Lang = @import("config/Lang.zig");
|
||||
const migrator = @import("config/migrator.zig");
|
||||
const OldSave = @import("config/OldSave.zig");
|
||||
const SavedUsers = @import("config/SavedUsers.zig");
|
||||
const CustomCommands = @import("config/custom.zig");
|
||||
const enums = @import("enums.zig");
|
||||
const DisplayServer = enums.DisplayServer;
|
||||
const DisplayServer = @import("enums.zig").DisplayServer;
|
||||
const Environment = @import("Environment.zig");
|
||||
const Entry = Environment.Entry;
|
||||
const Position = @import("tui/Position.zig");
|
||||
const BigLabel = @import("tui/components/BigLabel.zig");
|
||||
const CenteredBox = @import("tui/components/CenteredBox.zig");
|
||||
const InfoLine = @import("tui/components/InfoLine.zig");
|
||||
const Label = @import("tui/components/Label.zig");
|
||||
const Session = @import("tui/components/Session.zig");
|
||||
const Text = @import("tui/components/Text.zig");
|
||||
const UserList = @import("tui/components/UserList.zig");
|
||||
const TerminalBuffer = @import("tui/TerminalBuffer.zig");
|
||||
const Widget = @import("tui/Widget.zig");
|
||||
|
||||
const ly_version_str = "Ly version " ++ build_options.version;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue