make long lines shorter and add changelog

pull/596/head
Kinzie 2 months ago
parent 6a41bcf13a
commit f904be8fc0

@ -0,0 +1,41 @@
# Zig Rewrite
## Config Options
res/config.ini contains all of the available config options and their default values.
### Additions
+ border\_fg has been introduced to change the color of the borders.
+ term\_restore\_cursor\_cmd should restore the cursor to it's usual state.
+ sleep\_key and sleep\_cmd.
+ log\_path is used to store ly.log and ly.log.old for debugging purposes (pretty much nothing is logged currently).
Note: sleep\_cmd is unset by default, meaning it's hidden and has no effect.
### Changes
+ xinitrc can be set to null to hide it.
+ blank\_password has been renamed to clear\_password.
### Removals
+ wayland\_specifier has been removed.
## Save File
The save file is now in .ini format.
Example:
```ini
user = ash
session_index = 0
```
## Misc
+ getty@tty2 has been added as a conflict in res/ly.service, so if it is running, ly should still be able to start.
+ XDG\_CURRENT\_DESKTOP is now set by ly.
+ LANG is no longer set by ly.
+ X Server PID is fetched from /tmp/X{d}.lock to be able to kill the process since it detaches.

@ -85,6 +85,7 @@ shutdown_key = F1
# Specifies the key used for restart (F1-F12)
restart_key = F2
# Specifies the key used for sleep (F1-F12)
sleep_key = F3
# Command executed when pressing shutdown_key

@ -8,7 +8,6 @@ const Config = @import("config/Config.zig");
const Allocator = std.mem.Allocator;
const utmp = interop.utmp;
const Utmp = utmp.utmp;
//const LogFile = @import("logger/LogFile.zig");
pub fn authenticate(
allocator: Allocator,
@ -142,7 +141,7 @@ pub fn authenticate(
.xinitrc, .x11 => {
var vt_buf: [5]u8 = undefined;
const vt = try std.fmt.bufPrint(&vt_buf, "vt{d}", .{config.tty});
try executeX11Cmd(pwd.pw_shell, pwd.pw_dir, config.x_cmd, config.x_cmd_setup, current_environment.cmd, config.xauth_cmd, config.mcookie_cmd, vt);
try executeX11Cmd(pwd.pw_shell, pwd.pw_dir, config, current_environment.cmd, vt);
},
}
@ -172,12 +171,10 @@ pub fn authenticate(
fn initEnv(allocator: Allocator, pwd: *interop.passwd, path: ?[]const u8) !void {
const term = interop.getenv("TERM");
//const lang = interop.getenv("LANG");
_ = interop.clearenv();
if (term[0] != 0) _ = interop.setenv("TERM", term, 1);
//if (lang[0] != 0) _ = interop.setenv("LANG", lang, 1);
_ = interop.setenv("HOME", pwd.pw_dir, 1);
_ = interop.setenv("PWD", pwd.pw_dir, 1);
_ = interop.setenv("SHELL", pwd.pw_shell, 1);
@ -375,16 +372,16 @@ fn executeWaylandCmd(shell: [*:0]const u8, wayland_cmd: []const u8, desktop_cmd:
_ = interop.execl(shell, shell, "-c", cmd_str.ptr, @as([*c]const u8, 0));
}
fn executeX11Cmd(shell: [*:0]const u8, pw_dir: [*:0]const u8, x_cmd: []const u8, x_cmd_setup: []const u8, desktop_cmd: []const u8, xauth_cmd: []const u8, mcookie_cmd: []const u8, vt: []const u8) !void {
fn executeX11Cmd(shell: [*:0]const u8, pw_dir: [*:0]const u8, config: Config, desktop_cmd: []const u8, vt: []const u8) !void {
const display_num = try getFreeDisplay();
var buf: [5]u8 = undefined;
var display_name: [:0]u8 = try std.fmt.bufPrintZ(&buf, ":{d}", .{display_num});
try xauth(display_name, shell, pw_dir, xauth_cmd, mcookie_cmd);
try xauth(display_name, shell, pw_dir, config.xauth_cmd, config.mcookie_cmd);
const pid = std.c.fork();
if (pid == 0) {
var cmd_buffer = std.mem.zeroes([1024]u8);
const cmd_str = try std.fmt.bufPrintZ(&cmd_buffer, "{s} {s} {s}", .{ x_cmd, display_name, vt });
const cmd_str = try std.fmt.bufPrintZ(&cmd_buffer, "{s} {s} {s}", .{ config.x_cmd, display_name, vt });
_ = interop.execl(shell, shell, "-c", cmd_str.ptr, @as([*c]const u8, 0));
std.os.exit(0);
}
@ -406,12 +403,10 @@ fn executeX11Cmd(shell: [*:0]const u8, pw_dir: [*:0]const u8, x_cmd: []const u8,
// Pid can be fetched from /tmp/X{d}.lock
const x_pid = try getXPid(display_num);
//logger.debug("Found X Server PID: {d}", .{x_pid});
const xorg_pid = std.c.fork();
if (xorg_pid == 0) {
var cmd_buffer = std.mem.zeroes([1024]u8);
const cmd_str = try std.fmt.bufPrintZ(&cmd_buffer, "{s} {s}", .{ x_cmd_setup, desktop_cmd });
const cmd_str = try std.fmt.bufPrintZ(&cmd_buffer, "{s} {s}", .{ config.x_cmd_setup, desktop_cmd });
_ = interop.execl(shell, shell, "-c", cmd_str.ptr, @as([*c]const u8, 0));
std.os.exit(0);
}
@ -421,7 +416,6 @@ fn executeX11Cmd(shell: [*:0]const u8, pw_dir: [*:0]const u8, x_cmd: []const u8,
_ = std.c.kill(x_pid, 0);
if (std.c._errno().* != interop.ESRCH) {
//logger.debug("X Server is alive. Sending SIGTERM to process. PID: {d}", .{pid});
_ = std.c.kill(x_pid, interop.SIGTERM);
_ = std.c.waitpid(x_pid, &status, 0);
}

@ -44,7 +44,6 @@ term_reset_cmd: []const u8 = "/usr/bin/tput reset",
term_restore_cursor_cmd: []const u8 = "/usr/bin/tput cnorm",
tty: u8 = 2,
wayland_cmd: []const u8 = build_options.data_directory ++ "/wsetup.sh",
wayland_specifier: bool = false,
waylandsessions: []const u8 = "/usr/share/wayland-sessions",
x_cmd: []const u8 = "/usr/bin/X",
xinitrc: ?[]const u8 = "~/.xinitrc",

@ -1,47 +0,0 @@
const std = @import("std");
const ini = @import("ini");
const Config = @import("Config.zig");
const Lang = @import("Lang.zig");
const Allocator = std.mem.Allocator;
pub const CONFIG_MAX_SIZE: u64 = 8 * 1024;
const ConfigReader = @This();
allocator: Allocator,
config_allocated: bool = false,
lang_allocated: bool = false,
config: []u8 = undefined,
lang: []u8 = undefined,
pub fn init(config_allocator: Allocator) ConfigReader {
return .{
.allocator = config_allocator,
};
}
pub fn deinit(self: ConfigReader) void {
if (self.config_allocated) self.allocator.free(self.config);
if (self.lang_allocated) self.allocator.free(self.lang);
}
pub fn readConfig(self: *ConfigReader, path: []const u8) !Config {
var file = std.fs.cwd().openFile(path, .{}) catch return Config.init();
defer file.close();
self.config = try file.readToEndAlloc(self.allocator, CONFIG_MAX_SIZE);
self.config_allocated = true;
return try ini.readToStruct(Config, self.config);
}
pub fn readLang(self: *ConfigReader, path: []const u8) !Lang {
var file = std.fs.cwd().openFile(path, .{}) catch return Lang.init();
defer file.close();
self.lang = try file.readToEndAlloc(self.allocator, CONFIG_MAX_SIZE);
self.lang_allocated = true;
return try ini.readToStruct(Lang, self.lang);
}

@ -13,8 +13,8 @@ const Text = @import("tui/components/Text.zig");
const Config = @import("config/Config.zig");
const ini = @import("config/ini.zig");
const Lang = @import("config/Lang.zig");
const LogFile = @import("logger/LogFile.zig");
const Save = @import("config/Save.zig");
const LogFile = @import("logger/LogFile.zig");
const Ini = ini.Ini;
const termbox = interop.termbox;
@ -125,7 +125,7 @@ pub fn main() !void {
// Initialize terminal buffer
const labels_max_length = @max(lang.login.len, lang.password.len);
var buffer = TerminalBuffer.init(config.margin_box_v, config.margin_box_h, config.input_len, labels_max_length, config.fg, config.bg, config.border_fg);
var buffer = TerminalBuffer.init(config, labels_max_length);
// Initialize components
var desktop = try Desktop.init(allocator, &buffer, config.max_desktop_len);
@ -371,7 +371,6 @@ pub fn main() !void {
buffer.drawLabel(lang.sleep, length, 0);
}
// length += lang.sleep.len + 1;
}
draw_lock_state: {

@ -2,6 +2,7 @@ const std = @import("std");
const builtin = @import("builtin");
const interop = @import("../interop.zig");
const utils = @import("utils.zig");
const Config = @import("../config/Config.zig");
const Allocator = std.mem.Allocator;
const Random = std.rand.Random;
@ -35,7 +36,7 @@ box_height: u64,
margin_box_v: u8,
margin_box_h: u8,
pub fn init(margin_box_v: u8, margin_box_h: u8, input_length: u8, labels_max_length: u64, fg: u8, bg: u8, border_fg: u8) TerminalBuffer {
pub fn init(config: Config, labels_max_length: u64) TerminalBuffer {
var prng = std.rand.Isaac64.init(@intCast(std.time.timestamp()));
return .{
@ -43,9 +44,9 @@ pub fn init(margin_box_v: u8, margin_box_h: u8, input_length: u8, labels_max_len
.width = @intCast(termbox.tb_width()),
.height = @intCast(termbox.tb_height()),
.buffer = termbox.tb_cell_buffer(),
.fg = fg,
.bg = bg,
.border_fg = border_fg,
.fg = config.fg,
.bg = config.bg,
.border_fg = config.border_fg,
.box_chars = if (builtin.os.tag == .linux or builtin.os.tag.isBSD()) .{
.left_up = 0x250C,
.left_down = 0x2514,
@ -68,10 +69,10 @@ pub fn init(margin_box_v: u8, margin_box_h: u8, input_length: u8, labels_max_len
.labels_max_length = labels_max_length,
.box_x = 0,
.box_y = 0,
.box_width = (2 * margin_box_h) + input_length + 1 + labels_max_length,
.box_height = 7 + (2 * margin_box_v),
.margin_box_v = margin_box_v,
.margin_box_h = margin_box_h,
.box_width = (2 * config.margin_box_h) + config.input_len + 1 + labels_max_length,
.box_height = 7 + (2 * config.margin_box_v),
.margin_box_v = config.margin_box_v,
.margin_box_h = config.margin_box_h,
};
}

Loading…
Cancel
Save