local function run(cmd) local f = io.popen(cmd) local out = f:read("*a") f:close() return out:gsub("%s+$", "") end local use_color = true local function c(fn, text) if use_color then return fn(text) end return text end column_padding = 2 local config_dir = os.getenv("HOME") .. "/.config/fetchit" local function load_logo(path) local lines = {} for line in io.lines(path) do table.insert(lines, line) end return lines end local function colored_logo(path) local lines = load_logo(path) local out = {} for i, line in ipairs(lines) do out[i] = c(color.blue, line) end return out end function fetch() local ip = run("ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1 | head -1") local title = user.name .. "@" .. host.name local sep = string.rep("-", #title) local title_out if use_color then title_out = color.green(user.name) .. color.bold(color.green("@")) .. color.green(host.name) else title_out = user.name .. color.bold(color.blue("@")) .. host.name end return { columns = { colored_logo(config_dir .. "/logos/nix.txt"), { title_out, sep, c(color.cyan, "os: ") .. string.lower(os.name .. " @ " .. kernel.sysname .. " " .. kernel.release), c(color.cyan, "wm: ") .. "niri wm (v26.04)", c(color.cyan, "res: ") .. "(<)/1920x1080, (>)/1920x1080", c(color.red, "cpu: ") .. "ryzen 7 5700g", c(color.red, "gpu: ") .. "radeon rx 6800xt", c(color.magenta, "ram: ") .. string.format("%.1fgb/%.1fgb (%.1f%%)", memory.used_gb, memory.total_gb, memory.percent), c(color.yellow, "disk: ") .. string.format("%.1fgb/%.1fgb", disk.used_gb, disk.total_gb), c(color.blue, "shell: ") .. string.lower(shell.name), c(color.bright_cyan, "term: ") .. string.lower(terminal.name), c(color.red, "ip: ") .. string.lower(ip), } } } end