Home

Awesome

<p align="center"> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/e758f47a-32eb-4eac-a008-eb59272badef"> <b><i>A high-contrast, futuristic & vibrant theme for neovim</i></b> </p> <p align="center"> <a href="https://github.com/scottmckendry/cyberdream.nvim/issues"> <img alt="Issues" src="https://img.shields.io/github/issues/scottmckendry/cyberdream.nvim?style=for-the-badge&logo=github&color=%23ffbd5e"> </a> <a href="https://github.com/scottmckendry/cyberdream.nvim/blob/main/LICENSE"> <img alt="License" src="https://img.shields.io/github/license/scottmckendry/cyberdream.nvim?style=for-the-badge&logo=github&color=%235ef1ff"> </a> <a href="https://github.com/scottmckendry/cyberdream.nvim/stars"> <img alt="stars" src="https://img.shields.io/github/stars/scottmckendry/cyberdream.nvim?style=for-the-badge&logo=github&color=%23bd5eff"> </a> <br> <a href="https://dotfyle.com/plugins/scottmckendry/cyberdream.nvim"> <img src="https://dotfyle.com/plugins/scottmckendry/cyberdream.nvim/shield?style=for-the-badge" /> </a> </p> <hr> <table align="center"> <tr> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/f9dc6523-f458-48df-8837-09d5c131a5c7"> </td> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/0a0595a9-4d4d-4fc3-9bb3-dab2eb3b3e04" </td> </tr> <tr> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/ac6f5b6e-458b-4087-bbe3-745c1033cfb0" </td> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/e7721a7d-26a9-4bcb-b72b-18c44defd7c6" </td> </tr> <tr> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/18c40e4c-e1f7-40c6-be82-f82c011338bd" </td> <td> <img src="https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/80def4be-476e-4f1d-9e2a-cd141264fecd" </td> </tr> </table>

🚀 Features

<details> <summary><b>Supported Plugins/Extensions</b></summary> <ul> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/goolord/alpha-nvim"> alpha-nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/nvimdev/dashboard-nvim"> dashboard-nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/ibhagwan/fzf-lua"> fzf-lua</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/lewis6991/gitsigns.nvim"> gitsigns.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/cbochs/grapple.nvim"> grapple.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/yujinyuz/gitpad.nvim"> gitpad.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/Zeioth/heirline-components.nvim"> heirline-components.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/lukas-reineke/indent-blankline.nvim"> indent-blankline.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/ramilito/kubectl.nvim"> kubectl.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/folke/lazy.nvim"> lazy.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/ggandor/leap.nvim"> leap.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/nvim-lualine/lualine.nvim"> lualine.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/OXY2DEV/markview.nvim"> markview.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/echasnovski/mini.nvim"> mini.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/folke/noice.nvim"> noice.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/hrsh7th/nvim-cmp"> nvim-cmp</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/rcarriga/nvim-notify"> nvim-notify</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/nvim-treesitter/nvim-treesitter"> nvim-treesitter</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/nvim-treesitter/nvim-treesitter-context"> nvim-treesitter-context</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/HiPhish/rainbow-delimiters.nvim"> rainbow-delimiters.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/nvim-telescope/telescope.nvim"> telescope.nvim</a></label></li> <li><input type="checkbox" checked disabled><label for=""><a href="https://github.com/folke/which-key.nvim"> which-key.nvim</a></label></li> </ul> </details>

📦 Installation

Lazy<sup>1</sup>:

{
    "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
    borderless_telescope = true,

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

    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`
        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

<details> <summary><b>Dark</b></summary>
🖌HexColor
#16181a#16181abg
#1e2124#1e2124bgAlt
#3c4048#3c4048bgHighlight
#ffffff#fffffffg
#7b8496#7b8496grey
#5ea1ff#5ea1ffblue
#5eff6c#5eff6cgreen
#5ef1ff#5ef1ffcyan
#ff6e5e#ff6e5ered
#f1ff5e#f1ff5eyellow
#ff5ef1#ff5ef1magenta
#ff5ea0#ff5ea0pink
#ffbd5e#ffbd5eorange
#bd5eff#bd5effpurple
</details> <details> <summary><b>Light</b></summary>
🖌HexColor
#ffffff#ffffffbg
#eaeaea#eaeaeabgAlt
#acacac#acacacbgHighlight
#16181a#16181afg
#7b8496#7b8496grey
#0057d1#0057d1blue
#008b0c#008b0cgreen
#008c99#008c99cyan
#d11500#d11500red
#997b00#997b00yellow
#d100bf#d100bfmagenta
#f40064#f40064pink
#d17c00#d17c00orange
#a018ff#a018ffpurple
</details>

🤝 Contributing

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

<hr>

<sub>1. For Lazyvim users, refer to the LazyVim docs for specific instructions.</sub>