summaryrefslogtreecommitdiffstats
path: root/home-configuration/managed/fetchit/init.lua
blob: cb5c180e39b2d52b10c4d1dab637d6cae0ea822f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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