return {
    -- status line
    "nvim-lualine/lualine.nvim",
    dependencies = { "nvim-tree/nvim-web-devicons" },
    config = function()
        local function getWords()
            local wc = vim.api.nvim_eval("wordcount()")
            if wc["visual_words"] then
                return wc["visual_words"]
            else
                return wc["words"]
            end
        end
        require("lualine").setup({
            options = {
                icons_enabled = true,
                theme = "auto",
                component_separators = { left = "", right = "" },
                section_separators = { left = "", right = "" },
                disabled_filetypes = {
                    statusline = {},
                    winbar = {},
                },
                ignore_focus = { "snacks_picker_list", "snacks_input" },
                always_divide_middle = true,
                globalstatus = false,
                refresh = {
                    statusline = 1000,
                    tabline = 1000,
                    winbar = 1000,
                },
            },
            sections = {
                lualine_a = { { "mode", separator = { left = "", right = "" } } },
                lualine_b = { "branch", "diff", "diagnostics" },
                lualine_c = { "filename" },
                lualine_x = { getWords, "encoding", "fileformat", "filetype" },
                lualine_y = { { "progress", left_padding = 0 } },
                lualine_z = { { "location", separator = { left = "", right = "" }, padding = 0 } },
            },
            inactive_sections = {
                lualine_a = {},
                lualine_b = {},
                lualine_c = { "filename" },
                lualine_x = { "location" },
                lualine_y = {},
                lualine_z = {},
            },
            tabline = {},
            winbar = {},
            inactive_winbar = {},
            extensions = {},
        })
    end,
}
