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](#-extras) 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](https://github.com/goolord/alpha-nvim) | [alpha](lua/cyberdream/extensions/alpha.lua) | | [blink.cmp](https://github.com/Saghen/blink.cmp) | [blinkcmp](lua/cyberdream/extensions/blinkcmp.lua) | | [dashboard-nvim](https://github.com/nvimdev/dashboard-nvim) | [dashboard](lua/cyberdream/extensions/dashboard.lua) | | [fzf-lua](https://github.com/ibhagwan/fzf-lua) | [fzflua](lua/cyberdream/extensions/fzflua.lua) | | [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) | [gitsigns](lua/cyberdream/extensions/gitsigns.lua) | | [gitpad.nvim](https://github.com/yujinyuz/gitpad.nvim) | [gitpad](lua/cyberdream/extensions/gitpad.lua) | | [grapple.nvim](https://github.com/cbochs/grapple.nvim) | [grapple](lua/cyberdream/extensions/grapple.lua) | | [grug-far.nvim](https://github.com/MagicDuck/grug-far.nvim) | [grugfar](lua/cyberdream/extensions/grugfar.lua) | | [heirline-components.nvim](https://github.com/Zeioth/heirline-components.nvim) | [heirline](lua/cyberdream/extensions/heirline.lua) | | [helpview.nvim](https://github.com/OXY2DEV/helpview.nvim) | [helpview](lua/cyberdream/extensions/helpview.lua) | | [hop.nvim](https://github.com/phaazon/hop.nvim) | [hop](lua/cyberdream/extensions/hop.lua) | | [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) | [indentblankline](lua/cyberdream/extensions/indentblankline.lua) | | [kubectl.nvim](https://github.com/ramilito/kubectl.nvim) | [kubectl](lua/cyberdream/extensions/kubectl.lua) | | [lazy.nvim](https://github.com/folke/lazy.nvim) | [lazy](lua/cyberdream/extensions/lazy.lua) | | [leap.nvim](https://github.com/ggandor/leap.nvim) | [leap](lua/cyberdream/extensions/leap.lua) | | [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) | [lualine](lua/cyberdream/extensions/lualine.lua) | | [markview.nvim](https://github.com/OXY2DEV/markview.nvim) | [markview](lua/cyberdream/extensions/markview.lua) | | [mini.nvim](https://github.com/echasnovski/mini.nvim) | [mini](lua/cyberdream/extensions/mini.lua) | | [noice.nvim](https://github.com/folke/noice.nvim) | [noice](lua/cyberdream/extensions/noice.lua) | | [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) | [cmp](lua/cyberdream/extensions/cmp.lua) | | [nvim-notify](https://github.com/rcarriga/nvim-notify) | [notify](lua/cyberdream/extensions/notify.lua) | | [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) | [treesitter](lua/cyberdream/extensions/treesitter.lua) | | [nvim-treesitter-context](https://github.com/nvim-treesitter/nvim-treesitter-context) | [treesittercontext](lua/cyberdream/extensions/treesittercontext.lua) | | [rainbow-delimiters.nvim](https://github.com/HiPhish/rainbow-delimiters.nvim) | [rainbow_delimiters](lua/cyberdream/extensions/rainbow_delimiters.lua) | | [render-markdown.nvim](https://github.com/MeanderingProgrammer/render-markdown.nvim) | [markdown](lua/cyberdream/extensions/markdown.lua) | | [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) | [telescope](lua/cyberdream/extensions/telescope.lua) | | [trouble.nvim](https://github.com/folke/trouble.nvim) | [trouble](lua/cyberdream/extensions/trouble.lua) | | [which-key.nvim](https://github.com/folke/which-key.nvim) | [whichkey](lua/cyberdream/extensions/whichkey.lua) |
## 📦 Installation Lazy1: ```lua { "scottmckendry/cyberdream.nvim", lazy = false, priority = 1000, } ``` Packer: ```lua use { "scottmckendry/cyberdream.nvim" } ``` Lualine (optional): ```lua { 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](https://github.com/scottmckendry/Windots/blob/main/nvim/lua/plugins/lualine.lua) for an example. ## 🚀 Usage ```lua 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: ```lua require("cyberdream").setup({ -- Set light or dark variant 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` -- Enable transparent background transparent = false, -- Reduce the overall saturation of colours for a more muted look saturation = 1, -- accepts a value between 0 and 1. 0 will be fully desaturated (greyscale) and 1 will be the full color (default) -- Enable italics comments italic_comments = false, -- Replace all fillchars with ' ' for the ultimate clean look hide_fillchars = false, -- Apply a modern borderless look to pickers like Telescope, Snacks Picker & Fzf-Lua borderless_pickers = false, -- 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, -- Override highlight groups with your own colour values 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 }, -- More examples can be found in `lua/cyberdream/extensions/*.lua` }, -- Override a highlight group entirely using the built-in colour 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`](lua/cyberdream/config.lua). ## 🎁 Extras We've cooked up some wonderful extras to enhance your cyberdream experience. Mostly terminal themes and a few other goodies! ![terminal](https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/b6727dd0-cd45-4f6c-94cd-92fb0dadcfae) - **[Alacritty](extras/alacritty/)** - **[Base16/Stylix](extras/base16/)** - **[Fish](extras/fish/)** - **[Foot](extras/foot/)** - **[Ghostty](extras/ghostty/)** - **[GitUI](extras/gitui/)** - **[Helix](extras/helix/)** - **[Kitty](extras/kitty/)** - **[Lazydocker](extras/lazydocker/)** - **[Lazygit](extras/lazygit/)** - **[lsd](extras/lsd/)** - **[Pywal](extras/pywal/)** - **[Rio](extras/rio/)** - **[Textmate/Bat/Sublime/Delta](extras/textmate/)** - **[Tilux](extras/tilux/)** - **[Tmux](extras/tmux/)** - **[Vivid](extras/vivid/)** - **[Warp](extras/warp/)** - **[Wezterm](extras/wezterm/)** - **[Windows Terminal](extras/windowsterminal/)** - **[Yazi](extras/yazi/)** - **[Zed](extras/zed/)** - **[Zellij](extras/zellij/)** ## 🧑‍🍳 Recipes Include these alongside the `setup` function to add additional functionality to the theme. #### Map a key to toggle between light and dark mode ```lua -- Add a custom keybinding to toggle the colorscheme vim.api.nvim_set_keymap("n", "tt", ":CyberdreamToggleMode", { noremap = true, silent = true }) ``` #### Create an `autocmd` to hook into the toggle event and run custom code ```lua -- 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](https://github.com/scottmckendry/cyberdream.nvim/assets/39483124/c0188d60-d62b-4a15-965d-a19757c484e6) ## 🎨 Palette
Dark | 🖌 | Hex | Color | | --------------------------------------------------------- | --------- | ------------ | | ![#16181a](https://place-hold.it/15/16181a/16181a?text=+) | `#16181a` | bg | | ![#1e2124](https://place-hold.it/15/1e2124/1e2124?text=+) | `#1e2124` | bg_alt | | ![#3c4048](https://place-hold.it/15/3c4048/3c4048?text=+) | `#3c4048` | bg_highlight | | ![#ffffff](https://place-hold.it/15/ffffff/ffffff?text=+) | `#ffffff` | fg | | ![#7b8496](https://place-hold.it/15/7b8496/7b8496?text=+) | `#7b8496` | grey | | ![#5ea1ff](https://place-hold.it/15/5ea1ff/5ea1ff?text=+) | `#5ea1ff` | blue | | ![#5eff6c](https://place-hold.it/15/5eff6c/5eff6c?text=+) | `#5eff6c` | green | | ![#5ef1ff](https://place-hold.it/15/5ef1ff/5ef1ff?text=+) | `#5ef1ff` | cyan | | ![#ff6e5e](https://place-hold.it/15/ff6e5e/ff6e5e?text=+) | `#ff6e5e` | red | | ![#f1ff5e](https://place-hold.it/15/f1ff5e/f1ff5e?text=+) | `#f1ff5e` | yellow | | ![#ff5ef1](https://place-hold.it/15/ff5ef1/ff5ef1?text=+) | `#ff5ef1` | magenta | | ![#ff5ea0](https://place-hold.it/15/ff5ea0/ff5ea0?text=+) | `#ff5ea0` | pink | | ![#ffbd5e](https://place-hold.it/15/ffbd5e/ffbd5e?text=+) | `#ffbd5e` | orange | | ![#bd5eff](https://place-hold.it/15/bd5eff/bd5eff?text=+) | `#bd5eff` | purple |
Light | 🖌 | Hex | Color | | --------------------------------------------------------- | --------- | ------------ | | ![#ffffff](https://place-hold.it/15/ffffff/ffffff?text=+) | `#ffffff` | bg | | ![#eaeaea](https://place-hold.it/15/eaeaea/eaeaea?text=+) | `#eaeaea` | bg_alt | | ![#acacac](https://place-hold.it/15/acacac/acacac?text=+) | `#acacac` | bg_highlight | | ![#16181a](https://place-hold.it/15/16181a/16181a?text=+) | `#16181a` | fg | | ![#7b8496](https://place-hold.it/15/7b8496/7b8496?text=+) | `#7b8496` | grey | | ![#0057d1](https://place-hold.it/15/0057d1/0057d1?text=+) | `#0057d1` | blue | | ![#008b0c](https://place-hold.it/15/008b0c/008b0c?text=+) | `#008b0c` | green | | ![#008c99](https://place-hold.it/15/008c99/008c99?text=+) | `#008c99` | cyan | | ![#d11500](https://place-hold.it/15/d11500/d11500?text=+) | `#d11500` | red | | ![#997b00](https://place-hold.it/15/997b00/997b00?text=+) | `#997b00` | yellow | | ![#d100bf](https://place-hold.it/15/d100bf/d100bf?text=+) | `#d100bf` | magenta | | ![#f40064](https://place-hold.it/15/f40064/f40064?text=+) | `#f40064` | pink | | ![#d17c00](https://place-hold.it/15/d17c00/d17c00?text=+) | `#d17c00` | orange | | ![#a018ff](https://place-hold.it/15/a018ff/a018ff?text=+) | `#a018ff` | purple |
## 🤝 Contributing Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) to get started.
1. For Lazyvim users, refer to the [LazyVim docs](http://www.lazyvim.org/plugins/colorscheme) for specific instructions.