Skip to content

πŸ€–πŸ’€ High-contrast, Futuristic & Vibrant Coloursheme for Neovim

License

Notifications You must be signed in to change notification settings

scottmckendry/cyberdream.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

A high-contrast, futuristic & vibrant theme for neovim

Issues License stars


πŸš€ Features

  • Transparency-first design - all design decisions are made with transparency in mind.
  • High contrast - Colours have been carefully chosen to be cohesive and easy on the eyes while still being easy to distinguish.
  • Terminal Support - Several included terminal themes to enhance your cyberdream experience.
  • Extensions - Support for a variety of popular plugins out of the box. Can be toggled on or off to maximise performance.
Supported Plugins/Extensions
Plugin Highlights
alpha-nvim alpha
blink.cmp blinkcmp
dashboard-nvim dashboard
fzf-lua fzflua
gitsigns.nvim gitsigns
gitpad.nvim gitpad
grapple.nvim grapple
grug-far.nvim grugfar
heirline-components.nvim heirline
helpview.nvim helpview
hop.nvim hop
indent-blankline.nvim indentblankline
kubectl.nvim kubectl
lazy.nvim lazy
leap.nvim leap
lualine.nvim lualine
markview.nvim markview
mini.nvim mini
noice.nvim noice
nvim-cmp cmp
nvim-notify notify
nvim-treesitter treesitter
nvim-treesitter-context treesittercontext
rainbow-delimiters.nvim rainbow_delimiters
render-markdown.nvim markdown
telescope.nvim telescope
trouble.nvim trouble
which-key.nvim whichkey

πŸ“¦ Installation

Lazy1:

{
    "scottmckendry/cyberdream.nvim",
    lazy = false,
    priority = 1000,
}

Packer:

use { "scottmckendry/cyberdream.nvim" }

Lualine (optional):

{
    require("lualine").setup({
        -- ... other config
        options = {
            theme = "auto", -- "auto" will set the theme dynamically based on the colorscheme
        },
        -- ... other config
    })
}

See my personal lualine config here for an example.

πŸš€ Usage

vim.cmd("colorscheme cyberdream")

βš™οΈ Configuring

Calling setup is optional, but allows you to configure the theme to your liking. Below is an example of all the available configuration options with their default values:

require("cyberdream").setup({
    -- Enable transparent background
    transparent = false,

    -- Enable italics comments
    italic_comments = false,

    -- Replace all fillchars with ' ' for the ultimate clean look
    hide_fillchars = false,

    -- Modern borderless telescope theme - also applies to fzf-lua
    borderless_telescope = true,

    -- Set terminal colors used in `:terminal`
    terminal_colors = true,

    -- Improve start up time by caching highlights. Generate cache with :CyberdreamBuildCache and clear with :CyberdreamClearCache
    cache = false,

    theme = {
        variant = "default", -- use "light" for the light variant. Also accepts "auto" to set dark or light colors based on the current value of `vim.o.background`
        saturation = 1, -- accepts a value between 0 and 1. 0 will be fully desaturated (greyscale) and 1 will be the full color (default)
        highlights = {
            -- Highlight groups to override, adding new groups is also possible
            -- See `:h highlight-groups` for a list of highlight groups or run `:hi` to see all groups and their current values

            -- Example:
            Comment = { fg = "#696969", bg = "NONE", italic = true },

            -- Complete list can be found in `lua/cyberdream/theme.lua`
        },

        -- Override a highlight group entirely using the color palette
        overrides = function(colors) -- NOTE: This function nullifies the `highlights` option
            -- Example:
            return {
                Comment = { fg = colors.green, bg = "NONE", italic = true },
                ["@property"] = { fg = colors.magenta, bold = true },
            }
        end,

        -- Override a color entirely
        colors = {
            -- For a list of colors see `lua/cyberdream/colours.lua`
            -- Example:
            bg = "#000000",
            green = "#00ff00",
            magenta = "#ff00ff",
        },
    },

    -- Disable or enable colorscheme extensions
    extensions = {
        telescope = true,
        notify = true,
        mini = true,
        ...
    },
})

Note

For a complete list of extensions, see the table in config.lua.

🎁 Extras

We've cooked up some wonderful extras to enhance your cyberdream experience. Mostly terminal themes and a few other goodies!

terminal

πŸ§‘β€πŸ³ Recipes

Include these alongside the setup function to add additional functionality to the theme.

Map a key to toggle between light and dark mode

-- Add a custom keybinding to toggle the colorscheme
vim.api.nvim_set_keymap("n", "<leader>tt", ":CyberdreamToggleMode<CR>", { noremap = true, silent = true })

Create an autocmd to hook into the toggle event and run custom code

-- The event data property will contain a string with either "default" or "light" respectively
vim.api.nvim_create_autocmd("User", {
    pattern = "CyberdreamToggleMode",
    callback = function(event)
        -- Your custom code here!
        -- For example, notify the user that the colorscheme has been toggled
        print("Switched to " .. event.data .. " mode!")
    end,
})

image

🎨 Palette

Dark
πŸ–Œ Hex Color
#16181a #16181a bg
#1e2124 #1e2124 bgAlt
#3c4048 #3c4048 bgHighlight
#ffffff #ffffff fg
#7b8496 #7b8496 grey
#5ea1ff #5ea1ff blue
#5eff6c #5eff6c green
#5ef1ff #5ef1ff cyan
#ff6e5e #ff6e5e red
#f1ff5e #f1ff5e yellow
#ff5ef1 #ff5ef1 magenta
#ff5ea0 #ff5ea0 pink
#ffbd5e #ffbd5e orange
#bd5eff #bd5eff purple
Light
πŸ–Œ Hex Color
#ffffff #ffffff bg
#eaeaea #eaeaea bgAlt
#acacac #acacac bgHighlight
#16181a #16181a fg
#7b8496 #7b8496 grey
#0057d1 #0057d1 blue
#008b0c #008b0c green
#008c99 #008c99 cyan
#d11500 #d11500 red
#997b00 #997b00 yellow
#d100bf #d100bf magenta
#f40064 #f40064 pink
#d17c00 #d17c00 orange
#a018ff #a018ff purple

🀝 Contributing

Contributions are welcome! Please read the contributing guidelines to get started.


1. For Lazyvim users, refer to the LazyVim docs for specific instructions.