my dotfiles for arch
at main 142 lines 4.0 kB view raw
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 color = require("util.color") 43 local alpha = require("alpha") 44 45 local mocha = require("catppuccin.palettes").get_palette("mocha") 46 47 local color_map = { 48 [[ AAAA]], 49 [[AAAAAA AAAA]], 50 [[AA AAAA AAAA KKHHKKHHHH]], 51 [[AAAA AAAA AA HHBBKKKKKKKKKKKKKK]], 52 [[ AAAAAA AAKKBBHHKKBBYYBBKKKKHHKKKKKK]], 53 [[ AAAA BBAAKKHHBBBBKKKKBBYYBBHHHHKKKKKK]], 54 [[ BBAABBKKYYYYHHKKYYYYKKKKBBBBBBZZZZZZ]], 55 [[ YYBBYYBBKKYYYYYYYYYYKKKKBBKKAAAAZZOOZZZZ]], 56 [[ XXXXYYYYBBYYYYYYYYBBBBBBKKKKBBBBAAAAZZZZ]], 57 [[ XXXXUUUUYYYYBBYYYYYYBBKKBBZZOOAAZZOOAAAAAA]], 58 [[ ZZZZZZXXUUXXXXYYYYYYYYBBAAAAZZOOOOAAOOZZZZAAAA]], 59 [[ ZZUUZZXXUUUUXXXXUUXXFFFFFFFFAAAAOOZZAAZZZZ AA]], 60 [[ RRRRUUUUZZZZZZZZXXOOFFFFOOZZOOAAAAAAZZZZAA]], 61 [[ CCSSUUUUZZXXXXZZXXOOFFFFOOZZOOOOZZOOAAAA]], 62 [[ CCCCUUUUUUUUUURRRROOFFFFOOZZOOOOZZOOZZZZ]], 63 [[ CCCCUUUUUUUUSSCCCCEEQQQQOOZZOOOOZZOOZZZZ]], 64 [[ CCCCUUGGUUUUCCCCCCEEQQQQOOZZOOOOZZEEZZ]], 65 [[ RRRRGGGGUUGGCCCCCCOOOOOOOOZZOOEEZZII]], 66 [[ IIRRGGGGGGCCCCCCOOOOOOOOZZEEII]], 67 [[ GGRRCCCCCCOOOOEEEEII II]], 68 [[ RRRRRREEEE IIII]], 69 [[ II]], 70 [[]], 71 } 72 73 local yellow = "#FAC87C" 74 local orange = "#BF854E" 75 local maroon = "#502E2B" 76 local brown = "#38291B" 77 local colors = { 78 ["A"] = { fg = mocha.rosewater }, 79 ["Y"] = { fg = yellow }, 80 ["B"] = { fg = color.darken(yellow, 5) }, 81 ["X"] = { fg = color.darken(yellow, 20) }, 82 ["U"] = { fg = color.darken(yellow, 25) }, 83 ["F"] = { fg = color.darken(yellow, 35) }, 84 ["O"] = { fg = color.darken(yellow, 45) }, 85 ["K"] = { fg = maroon }, 86 ["H"] = { fg = color.darken(maroon, 10) }, 87 ["Z"] = { fg = mocha.crust }, 88 ["G"] = { fg = color.darken(yellow, 25) }, 89 ["R"] = { fg = orange }, 90 ["Q"] = { fg = color.darken(orange, 20) }, 91 ["E"] = { fg = color.darken(orange, 35) }, 92 ["I"] = { fg = brown }, 93 ["C"] = { fg = mocha.mantle }, 94 ["S"] = { fg = mocha.subtext1 }, 95 } 96 97 local header = {} 98 for _, line in ipairs(color_map) do 99 local header_line = [[]] 100 for i = 1, #line do 101 if line:sub(i, i) ~= " " then 102 header_line = header_line .. "" 103 else 104 header_line = header_line .. " " 105 end 106 end 107 table.insert(header, header_line) 108 end 109 110 local header_add = [[ N E O B E E ]] 111 table.insert(header, header_add) 112 113 local hl_add = {} 114 for i = 1, #header_add do 115 table.insert(hl_add, { "NeoBeeTitle", 1, i }) 116 end 117 118 dashboard.section.header.val = header 119 local colorized = colorize(header, color_map, colors) 120 121 table.insert(colorized, hl_add) 122 123 dashboard.section.header.opts = { 124 hl = colorized, 125 position = "center", 126 } 127 128 dashboard.section.buttons.val = { 129 dashboard.button("SPC e e", " New file", "<Cmd>ene <CR>"), 130 dashboard.button("SPC f f", " Find file"), 131 dashboard.button("SPC s s", " NeoBee config", "<Cmd>Neotree reveal ~/.config/nvim<CR>"), 132 dashboard.button("SPC q q", " Quit", "<Cmd>qa<CR>"), 133 } 134 for _, a in ipairs(dashboard.section.buttons.val) do 135 a.opts.width = 49 136 a.opts.cursor = -2 137 end 138 139 alpha.setup(dashboard.config) 140end 141 142return M