return { "nvim-lualine/lualine.nvim", event = "VimEnter", init = function() vim.g.lualine_laststatus = vim.o.laststatus if vim.fn.argc(-1) > 0 then -- set an empty statusline till lualine loads vim.o.statusline = " " else -- hide the statusline on the starter page vim.o.laststatus = 0 end end, opts = function() -- Colors and theme setup local colors = { blue = "#80a0ff", cyan = "#79dac8", black = "#080808", white = "#c6c6c6", red = "#ff5189", violet = "#d183e8", grey = "#303030", } local bubbles_theme = { normal = { a = { fg = colors.black, bg = colors.violet }, b = { fg = colors.white, bg = colors.grey }, c = { fg = colors.white }, }, insert = { a = { fg = colors.black, bg = colors.blue } }, visual = { a = { fg = colors.black, bg = colors.cyan } }, replace = { a = { fg = colors.black, bg = colors.red } }, inactive = { a = { fg = colors.white, bg = colors.black }, b = { fg = colors.white, bg = colors.black }, c = { fg = colors.white }, }, } local icons = LazyVim.config.icons vim.o.laststatus = vim.g.lualine_laststatus return { options = { theme = bubbles_theme, -- globalstatus = vim.o.laststatus == 3, -- disabled_filetypes = { statusline = { "dashboard", "alpha", "ministarter" } }, component_separators = "", section_separators = { left = "", right = "" }, }, sections = { lualine_a = { { "mode", separator = { left = "" }, right_padding = 2 } }, lualine_b = { "branch", { "diagnostics", symbols = { error = icons.diagnostics.Error, warn = icons.diagnostics.Warn, info = icons.diagnostics.Info, hint = icons.diagnostics.Hint, }, }, }, lualine_c = { "%=", { "filetype", icon_only = true, padding = { 0 } }, { "filename", path = 1 }, { "filetype", icon_only = true, padding = { 0 } }, }, lualine_x = { { "diff", symbols = { added = icons.git.added, modified = icons.git.modified, removed = icons.git.removed, }, source = function() local gitsigns = vim.b.gitsigns_status_dict if gitsigns then return { added = gitsigns.added, modified = gitsigns.changed, removed = gitsigns.removed, } end end, }, }, lualine_y = { "encoding", "progress", { function() return require("noice").api.status.mode.get() end, cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end, color = function() return { fg = Snacks.util.color("Constant") } end, }, { function() return require("noice").api.status.command.get() end, cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end, color = { colors.black }, }, }, lualine_z = { { "location", separator = { right = "" }, left_padding = 2 }, }, }, inactive_sections = { lualine_a = { "filename" }, lualine_b = {}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = { "location" }, }, tabline = {}, extensions = { "neo-tree", "lazy" }, } end, }