Skip to content

AstroNvim/astrotheme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AstroTheme

The default colorscheme used by AstroNvim an aesthetically pleasing and feature-rich neovim config that is extensible and easy to use with a great set of plugins

✨ Features

  • Automatic plugin detection and highlight setting (Packer and lazy.nvim supported)
  • Override or modify EVERYTHING.
  • Global & Theme specific overrides
  • Vim terminal colors
  • Heirline highlights
  • Lualine support

🎨 Palettes

AstroDark (default)
colorscheme astrodark " Dark theme (default)

AstroLight
colorscheme astrolight " Light theme

AstroMars
colorscheme astromars " Red theme

πŸ›  Options

require("astrotheme").setup({
  palette = "astrodark", -- String of the default palette to use when calling `:colorscheme astrotheme`
  background = { -- :h background, palettes to use when using the core vim background colors
    light = "astrolight",
    dark = "astrodark",
  },

  style = {
    transparent = false,         -- Bool value, toggles transparency.
    inactive = true,             -- Bool value, toggles inactive window color.
    float = true,                -- Bool value, toggles floating windows background colors.
    neotree = true,              -- Bool value, toggles neo-trees background color.
    border = true,               -- Bool value, toggles borders.
    title_invert = true,         -- Bool value, swaps text and background colors.
    italic_comments = true,      -- Bool value, toggles italic comments.
    simple_syntax_colors = true, -- Bool value, simplifies the amounts of colors used for syntax highlighting.
  },


  termguicolors = true, -- Bool value, toggles if termguicolors are set by AstroTheme.

  terminal_color = true, -- Bool value, toggles if terminal_colors are set by AstroTheme.

  plugin_default = "auto", -- Sets how all plugins will be loaded
                           -- "auto": Uses lazy / packer enabled plugins to load highlights.
                           -- true: Enables all plugins highlights.
                           -- false: Disables all plugins.

  plugins = {              -- Allows for individual plugin overrides using plugin name and value from above.
    ["bufferline.nvim"] = false,
  },

  palettes = {
    global = {             -- Globally accessible palettes, theme palettes take priority.
      my_grey = "#ebebeb",
      my_color = "#ffffff"
    },
    astrodark = {          -- Extend or modify astrodarks palette colors
      ui = {
        red = "#800010", -- Overrides astrodarks red UI color
        accent = "#CC83E3"  -- Changes the accent color of astrodark.
      },
      syntax = {
        cyan = "#800010", -- Overrides astrodarks cyan syntax color
        comments = "#CC83E3"  -- Overrides astrodarks comment color.
      },
      my_color = "#000000" -- Overrides global.my_color
    },
  },

  highlights = {
    global = {             -- Add or modify hl groups globally, theme specific hl groups take priority.
      modify_hl_groups = function(hl, c)
        hl.PluginColor4 = {fg = c.my_grey, bg = c.none }
      end,
      ["@String"] = {fg = "#ff00ff", bg = "NONE"},
    },
    astrodark = {
      -- first parameter is the highlight table and the second parameter is the color palette table
      modify_hl_groups = function(hl, c) -- modify_hl_groups function allows you to modify hl groups,
        hl.Comment.fg = c.my_color
        hl.Comment.italic = true
      end,
      ["@String"] = {fg = "#ff00ff", bg = "NONE"},
    },
  },
})

πŸ“ƒ Palette Properties

modifiable palette names
--------------------------------
--- Syntax
--------------------------------
-- only syntax colors.

syntax.red
syntax.blue
syntax.green
syntax.yellow
syntax.purple
syntax.cyan
syntax.orange
syntax.text
syntax.comment
syntax.mute

--------------------------------
--- UI
--------------------------------
-- everything UI and none-text related.
ui.red
ui.blue
ui.green
ui.yellow
ui.purple
ui.cyan
ui.orange

ui.accent

ui.tabline
ui.winbar
ui.tool
ui.base
ui.inactive_base
ui.statusline
ui.split
ui.float
ui.title
ui.border
ui.current_line
ui.scrollbar
ui.selection
ui.menu_selection
ui.highlight
ui.none_text
ui.text
ui.text_active
ui.text_inactive
ui.text_match

ui.prompt

--------------------------------
--- terminal
--------------------------------
-- terminal colors.
term.black
term.bright_black

term.red
term.bright_red

term.green
term.bright_green

term.yellow
term.bright_yellow

term.blue
term.bright_blue

term.purple
term.bright_purple

term.cyan
term.bright_cyan

term.white
term.bright_white

term.background
term.foreground

⚑ Requirements

  • Neovim >= 0.8

πŸ”Œ Supported Plugins

Plugin Key
aerial.nvim aerial
avante.nvim avante
beacon.nvim beacon
blink.cmp blink-cmp
bufferline.nvim bufferline
dashboard-nvim dashboard-nvim
flash.nvim flash
fzf-lua fzf
gitsigns.nvim gitsigns
hop.nvim hop
indent_blankline.nvim indent-blankline
lazy.nvim lazy
lightspeed.nvim lightspeed
lualine.nvim lualine
mason.nvim mason
mini.nvim mini
mini.icons miniicons
mini.starter ministarter
neo-tree.nvim neo-tree
neogit neogit
noice.nvim noice
nvcheatsheet.nvim nvcheatsheet
nvim-cmp nvim-cmp
nvim-dap-ui nvim-dap-ui
nvim-notify nvim-notify
nvim-tree.lua nvim-tree
nvim-ts-rainbow nvim-ts-rainbow
nvim-ts-rainbow2 nvim-ts-rainbow2
nvim-web-devicons nvim-web-devicons
nvim-window-picker nvim-window-picker
rainbow-delimiters.nvim rainbow-delimiters
telescope.nvim telescope
todo-comments.nvim todo-comments
vimwiki vimwiki
vim-illuminate vim-illuminate
which-key.nvim which-key

πŸ“¦ Installation

Lazy:

{ "AstroNvim/astrotheme" }

Packer:

 use "AstroNvim/astrotheme"

πŸš€ Contributing

If you plan to contribute, please check the contribution guidelines first.

When contributing to the extras, we use a templating system for automatically generating extra files for all of the different color palettes. Here are some steps to get started:

  1. Create a file like lua/astrotheme/extras/cool-app.lua
  2. Add the name and output file extension to the extras table in lua/astrotheme/extra/init.lua
  3. Generate the new extra theme files by running the following command in the root of the repository:
    make extras
  4. Verify the new templates are working by checking the generated files in the extras/ directory. Please DO NOT commit them, as they get automatically built by the CI.