Skip to main content
Magictt uses Rose Pine as its default colorscheme, configured with the “moon” variant and transparency enabled.

Current Configuration

The colorscheme is configured in lua/magictt/plugins/colorscheme.lua:
return {
  {
    "rose-pine/neovim",
    name = "rose-pine",
    config = function()
      require("rose-pine").setup({
        variant = "moon",
        styles = {
          transparency = true,
        },
      })
      vim.cmd("colorscheme rose-pine")
    end,
  },
}

Rose Pine Variants

Rose Pine comes with three variants:

Moon (Current)

The default variant with balanced contrast:
require("rose-pine").setup({
  variant = "moon",
})

Main

The original Rose Pine palette:
require("rose-pine").setup({
  variant = "main",
})

Dawn

A light variant:
require("rose-pine").setup({
  variant = "dawn",
})

Customizing Rose Pine

1

Open colorscheme.lua

Open the colorscheme configuration file:
nvim lua/magictt/plugins/colorscheme.lua
2

Modify the configuration

Edit the setup options. Here are some common customizations:
require("rose-pine").setup({
  variant = "moon", -- or "main", "dawn"
  dark_variant = "moon",
  dim_inactive_windows = false,
  extend_background_behind_borders = true,

  styles = {
    bold = true,
    italic = true,
    transparency = true,
  },

  -- Customize specific highlight groups
  highlight_groups = {
    Comment = { italic = true },
    Keyword = { bold = true },
    -- Add more custom highlights
  },
})
3

Apply the changes

Save the file and restart Neovim, or run:
:source %
:colorscheme rose-pine

Changing to a Different Colorscheme

To use a completely different colorscheme:
1

Choose a colorscheme

Popular Neovim colorschemes:
  • Catppuccin - Soothing pastel theme
  • Tokyo Night - Clean, dark theme
  • Gruvbox - Retro groove colors
  • Nord - Arctic, north-bluish theme
  • Dracula - Dark theme with vibrant colors
  • Kanagawa - Inspired by famous painting
  • Nightfox - Highly customizable
  • OneDark - Atom’s iconic One Dark theme
2

Update colorscheme.lua

Replace the Rose Pine configuration with your chosen colorscheme.Example: Catppuccin
return {
  {
    "catppuccin/nvim",
    name = "catppuccin",
    config = function()
      require("catppuccin").setup({
        flavour = "mocha", -- latte, frappe, macchiato, mocha
        transparent_background = true,
      })
      vim.cmd("colorscheme catppuccin")
    end,
  },
}
Example: Tokyo Night
return {
  {
    "folke/tokyonight.nvim",
    config = function()
      require("tokyonight").setup({
        style = "night", -- storm, moon, night, day
        transparent = true,
      })
      vim.cmd("colorscheme tokyonight")
    end,
  },
}
Example: Gruvbox
return {
  {
    "ellisonleao/gruvbox.nvim",
    config = function()
      require("gruvbox").setup({
        transparent_mode = true,
      })
      vim.cmd("colorscheme gruvbox")
    end,
  },
}
3

Sync plugins

Restart Neovim or run :Lazy sync to install the new colorscheme plugin.

Multiple Colorschemes

You can keep multiple colorschemes installed and switch between them:
return {
  {
    "rose-pine/neovim",
    name = "rose-pine",
    config = function()
      require("rose-pine").setup({
        variant = "moon",
        styles = { transparency = true },
      })
    end,
  },
  {
    "catppuccin/nvim",
    name = "catppuccin",
    config = function()
      require("catppuccin").setup({
        flavour = "mocha",
        transparent_background = true,
      })
      -- Set as active colorscheme
      vim.cmd("colorscheme catppuccin")
    end,
  },
}
Switch colorschemes at runtime:
:colorscheme rose-pine
:colorscheme catppuccin

Transparency

Most modern colorschemes support transparency, which allows your terminal background to show through.

Enable Transparency

require("rose-pine").setup({
  styles = {
    transparency = true,
  },
})

Disable Transparency

require("rose-pine").setup({
  styles = {
    transparency = false,
  },
})
Note: Your terminal must support transparency for this to work.

Advanced Customization

Custom Highlight Groups

Override specific syntax highlighting:
require("rose-pine").setup({
  highlight_groups = {
    Comment = { fg = "foam", italic = true },
    Keyword = { fg = "pine", bold = true },
    String = { fg = "gold" },
    Function = { fg = "rose" },
    Variable = { fg = "text" },
  },
})

Conditional Colorscheme

Set different colorschemes based on conditions:
config = function()
  require("rose-pine").setup({
    variant = "moon",
    styles = { transparency = true },
  })
  
  -- Use dawn variant during day, moon at night
  local hour = tonumber(os.date("%H"))
  if hour >= 6 and hour < 18 then
    vim.cmd("colorscheme rose-pine-dawn")
  else
    vim.cmd("colorscheme rose-pine-moon")
  end
end,

Create a Toggle Keymap

Add a keymap to toggle between colorschemes in lua/magictt/core/keymaps.lua:
local dark_mode = true

keymap.set("n", "<leader>ct", function()
  if dark_mode then
    vim.cmd("colorscheme rose-pine-dawn")
    dark_mode = false
  else
    vim.cmd("colorscheme rose-pine-moon")
    dark_mode = true
  end
end, { desc = "Toggle colorscheme" })

Troubleshooting

Colors Look Wrong

  1. Check terminal support: Ensure your terminal supports true color (24-bit)
  2. Set termguicolors: Add to lua/magictt/core/options.lua:
    vim.opt.termguicolors = true
    

Transparency Not Working

  1. Terminal support: Verify your terminal supports transparency
  2. Terminal settings: Enable transparency in your terminal emulator settings
  3. Compositor: On Linux, you may need a compositor like picom

Colorscheme Not Loading

  1. Check plugin installation: Run :Lazy sync
  2. Check for errors: Run :checkhealth
  3. Verify syntax: Ensure the config function has no Lua errors

Finding More Colorschemes

Best Practices

  1. Test before committing: Try colorschemes for a few days before settling
  2. Match your terminal: Choose colors that complement your terminal theme
  3. Consider contrast: Ensure sufficient contrast for readability
  4. Use transparency wisely: Transparency looks great but can reduce readability
  5. Customize minimally: Start with defaults, customize only what’s needed

Build docs developers (and LLMs) love