my dotfiles for arch
1local function getLen(str, start_pos)
2 local byte = string.byte(str, start_pos)
3 if not byte then
4 return nil
5 end
6
7 return (byte < 0x80 and 1) or (byte < 0xE0 and 2) or (byte < 0xF0 and 3) or (byte < 0xF8 and 4) or 1
8end
9
10local function colorize(header, header_color_map, colors)
11 for letter, color in pairs(colors) do
12 local color_name = "AlphaJemuelKwelKwelWalangTatay" .. letter
13 vim.api.nvim_set_hl(0, color_name, color)
14 colors[letter] = color_name
15 end
16
17 local colorized = {}
18
19 for i, line in ipairs(header_color_map) do
20 local colorized_line = {}
21 local pos = 0
22
23 for j = 1, #line do
24 local start = pos
25 pos = pos + getLen(header[i], start + 1)
26
27 local color_name = colors[line:sub(j, j)]
28 if color_name then
29 table.insert(colorized_line, { color_name, start, pos })
30 end
31 end
32
33 table.insert(colorized, colorized_line)
34 end
35
36 return colorized
37end
38
39local M = {}
40
41M.setup = function(dashboard)
42 local header = {
43 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
44 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
45 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
46 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
47 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
48 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
49 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
50 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
51 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
52 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
53 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
54 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
55 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
56 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
57 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
58 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
59 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
60 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
61 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
62 [[ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ]],
63 }
64
65 local color_map = {
66 [[ WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBWWWWWWWWWWWWWW ]],
67 [[ RRRRWWWWWWWWWWWWWWWWRRRRRRRRRRRRRRRRWWWWWWWWWWWWWWWWBBPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPBBWWWWWWWWWWWW ]],
68 [[ RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRBBPPPPPPHHHHHHHHHHHHHHHHHHHHHHHHHHPPPPPPBBWWWWWWWWWW ]],
69 [[ RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRBBPPPPHHHHHHHHHHHHFFHHHHFFHHHHHHHHHHPPPPBBWWWWWWWWWW ]],
70 [[ OOOORRRRRRRRRRRRRRRROOOOOOOOOOOOOOOORRRRRRRRRRRRRRBBPPHHHHFFHHHHHHHHHHHHHHHHHHHHHHHHHHHHPPBBWWWWWWWWWW ]],
71 [[ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOBBPPHHHHHHHHHHHHHHHHHHHHBBBBHHHHFFHHHHPPBBWWBBBBWWWW ]],
72 [[ OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOBBPPHHHHHHHHHHHHHHHHHHBBMMMMBBHHHHHHHHPPBBBBMMMMBBWW ]],
73 [[ YYYYOOOOOOOOOOOOOOOOYYYYYYYYYYYYYYYYOOBBBBBBBBOOOOBBPPHHHHHHHHHHHHFFHHHHBBMMMMMMBBHHHHHHPPBBMMMMMMBBWW ]],
74 [[ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBMMMMBBBBOOBBPPHHHHHHHHHHHHHHHHHHBBMMMMMMMMBBBBBBBBMMMMMMMMBBWW ]],
75 [[ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBBBMMMMBBBBBBPPHHHHHHFFHHHHHHHHHHBBMMMMMMMMMMMMMMMMMMMMMMMMBBWW ]],
76 [[ GGGGYYYYYYYYYYYYYYYYGGGGGGGGGGGGGGGGYYYYBBBBMMMMBBBBPPHHHHHHHHHHHHHHFFBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMBB ]],
77 [[ GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBMMMMBBPPHHFFHHHHHHHHHHHHBBMMMMMMCCBBMMMMMMMMMMCCBBMMMMBB ]],
78 [[ GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBPPHHHHHHHHHHHHHHHHBBMMMMMMBBBBMMMMMMBBMMBBBBMMMMBB ]],
79 [[ UUUUGGGGGGGGGGGGGGGGUUUUUUUUUUUUUUUUGGGGGGGGGGGGBBBBPPHHHHHHHHHHFFHHHHBBMMRRRRMMMMMMMMMMMMMMMMMMRRRRBB ]],
80 [[ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUBBPPPPHHFFHHHHHHHHHHBBMMRRRRMMBBMMMMBBMMMMBBMMRRRRBB ]],
81 [[ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUBBPPPPPPHHHHHHHHHHHHHHBBMMMMMMBBBBBBBBBBBBBBMMMMBBWW ]],
82 [[ VVVVUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVUUUUUUUUUUUUBBBBBBPPPPPPPPPPPPPPPPPPPPBBMMMMMMMMMMMMMMMMMMMMBBWWWW ]],
83 [[ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBBMMMMMMBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBWWWWWW ]],
84 [[ VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBBMMMMBBBBWWBBMMMMBBWWWWWWWWWWBBMMMMBBWWBBMMMMBBWWWWWWWW ]],
85 [[ WWWWVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWVVVVVVVVVVBBBBBBBBWWWWBBBBBBWWWWWWWWWWWWWWBBBBBBWWWWBBBBWWWWWWWWWW ]],
86 }
87
88 local c = {
89 color0 = "#191724",
90 color1 = "#eb6f92",
91 color2 = "#31748f",
92 color3 = "#f6c177",
93 color4 = "#9ccfd8",
94 color5 = "#c4a7e7",
95 color6 = "#ebbcba",
96 color7 = "#908caa",
97 color8 = "#26233a",
98 color15 = "#e0def4",
99 }
100
101 local colors = {
102 ["W"] = { fg = c.color0 },
103 ["C"] = { fg = c.color15 },
104 ["B"] = { fg = c.color8 },
105 ["R"] = { fg = c.color1 },
106 ["O"] = { fg = c.color6 },
107 ["Y"] = { fg = c.color3 },
108 ["G"] = { fg = c.color4 },
109 ["U"] = { fg = c.color2 },
110 ["P"] = { fg = c.color3 },
111 ["H"] = { fg = c.color5 },
112 ["F"] = { fg = c.color1 },
113 ["M"] = { fg = c.color7 },
114 ["V"] = { fg = c.color5 },
115 }
116
117 dashboard.section.header.val = header
118 dashboard.section.header.opts = {
119 hl = colorize(header, color_map, colors),
120 position = "center",
121 }
122end
123
124return M