Open-source project
embark-theme/vim avatar
embark-theme/vim

Embark for Vim: a truecolor colorscheme with plugin manager gotchas

An ambitious theme for vim

733 stars33 forksVim ScriptMIT

At a glance

What is it?
Embark is a Vim and Neovim colorscheme whose README is mostly configuration: a hard requirement for a truecolor terminal, a plugin install that only works if you rename the plugin to embark, and status line support for lightline, airline and lualine. It ships no tagged releases, so there is no version to pin to.
Who is it for?
Adopt Embark when you want a coordinated colorscheme across the editor and its status line plugins, and you already run Vim or Neovim in a terminal with termguicolors enabled and italics you can live without. Do not adopt it if your terminal cannot do true color, since the README states that only truecolor terminals work and the theme renders incorrectly otherwise, or if you need a pinned, tagged version, because the repository publishes no GitHub releases.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 95 days ago.
What is it written in?
Mainly Vim Script, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The truecolor requirement rules out plenty of terminals

The first thing the README does is set a hard boundary, and it does so with an important callout rather than a footnote. At this time only terminals supporting truecolors will work, and the requirement is that termguicolors be enabled. For Vimscript that is the line set termguicolors, and for Neovim under Lua it is vim.o.termguicolors = true.

That constraint narrows the audience more than it first appears. A colorscheme is the one part of an editor configuration that is entirely at the mercy of the terminal underneath it, and this one assumes the full 24 bit color range rather than the 256 color approximation. If your terminal falls back to 256 colors, or if you connect through a multiplexer that negotiates a smaller palette, the theme will not look as designed and may look actively wrong.

The README also flags italics as a separate environmental concern, noting that your terminal must be set up to handle them, and links to a guide on getting italics and true color working together in a terminal, multiplexer and Vim combination. Both requirements are terminal problems, not theme problems, which is worth internalising before spending an afternoon on a configuration that cannot deliver.

The plugin has to be renamed to embark or nothing works

The install instructions are short but carry a trap. The README tells you to install with your plugin manager and then reminds you to change the plugin name to embark using your plugin manager's capabilities. The repository is called embark-theme/vim, but the theme is registered under the shorter name, and the rest of the documentation refers to that name rather than the repository path.

With lazy.nvim the snippet declares the repository, disables lazy loading, sets a priority of 1000 and gives it the name embark:

lua
{
  'embark-theme/vim',
  lazy = false,
  priority = 1000,
  name = 'embark'
}

The paq-nvim form uses the as key instead:

lua
require('paq') {
  { 'embark-theme/vim', as = 'embark' }
}

And vim-plug takes the name as an option alongside a branch, pointing at main:

vim
Plug 'embark-theme/vim', { 'as': 'embark', 'branch': 'main' }

The priority of 1000 in the lazy.nvim form is what makes the theme load before other plugins that set their own highlight groups, which is the usual way a colorscheme gets partially overwritten. Setting lazy to false is what lets the colorscheme be applied as soon as it is loaded.

Applying the theme, in Vimscript and in Neovim Lua

Once the plugin is installed under the right name, the theme is applied with a colorscheme command. In Vimscript that is a single line:

vim
colorscheme embark

In Neovim under Lua the same call goes through the command interface:

lua
vim.cmd.colorscheme('embark')

The lazy.nvim users have a neater path. The README suggests setting the colorscheme up in the config callback of the plugin specification, so the theme is applied once, at the point the plugin is configured, which removes the need for a separate line in your init file.

Two details are worth carrying over to other plugins. The first is the priority value, which puts the theme early in the load order so that later plugins do not overwrite its highlight groups. The second is that the colorscheme name is embark, not embark-theme/vim, so a typo produces a colorscheme not found error rather than a subtle rendering difference, which is at least a clear failure.

Status lines: lightline, airline and lualine

A theme that colours the editor but leaves the status line in its old palette looks unfinished, so the README covers three status line plugins separately. That is one of the more useful pieces of documentation in the file, because each plugin needs a different key and each has a different default behaviour.

For lightline a theme is available and the README says you just set your colorscheme to embark:

vim
let g:lightline = {
      \ 'colorscheme': 'embark',
      \ }

Under Neovim the equivalent assigns a table:

lua
vim.g.lightline = {
  colorscheme = 'embark'
}

Airline is expected to pick the theme up automatically, with a manual fallback:

vim
let g:airline_theme = 'embark'

Lualine, for Neovim users, should pick the theme up with the auto setting, and can also be pointed at it manually:

lua
require('lualine').setup {
  options = {
    theme = 'embark'
  }
}

The distinction between the automatic and manual paths is worth remembering. Where a plugin says it should pick the theme up automatically, a mismatch usually means the theme was not registered under the name embark, so check the install before you start editing plugin options.

One configuration switch, and the terminal work behind it

The configuration section is thin, and it says so by offering a few values that control features, where setting a value to 1 turns the feature on. Only one is documented in the README, italics, which must be supported by the terminal.

In Vimscript it is enabled with:

vim
let g:embark_terminal_italics = 1

And under Neovim with Lua:

lua
vim.g.embark_terminal_italics = 1

Whether italics are on by default is not stated in the README, so treat the default as unknown and set the flag explicitly if you want slanted text. The linked guide about italics and true color in a terminal, multiplexer and Vim stack is the practical dependency here, because terminals disagree about italic support in ways that are easy to get wrong.

The absence of other documented switches is itself a limitation to plan around. The README does not describe a background colour option, a light variant of the theme, or any toggle for the syntax groups, so if you want to change how the theme looks, expect to do it with highlight group overrides in your own configuration rather than with theme options.

Ports, the repository layout and an untagged project

The final line of the README points to the project site for other available ports, which is the reminder that Embark is a design that has been carried to other editors, and the Vim version is one implementation of it. The repository itself is small. At the top level there is a colors directory, a lua directory, an autoload directory, an assets directory holding the logo and the screenshot, the README and the LICENSE file.

That layout is the normal split for a Vim plugin: the color definitions, the Lua entry points for Neovim, and autoload files for the Vimscript path. It is also small enough that you can read the whole theme source before committing to it, which is a genuine advantage over themes that ship generated or bundled output.

Two facts about the project itself are worth recording. It is licensed under MIT, so use is unrestricted provided the notice is kept. And there are no GitHub releases, so there is no tag to pin to and no changelog to read: the last push was on 2026-07-21, and the only way to know what changed is to read the commit history or compare against the copy you already have.

Editorial conclusion

Adopt Embark when you want a coordinated colorscheme across the editor and its status line plugins, and you already run Vim or Neovim in a terminal with termguicolors enabled and italics you can live without. Do not adopt it if your terminal cannot do true color, since the README states that only truecolor terminals work and the theme renders incorrectly otherwise, or if you need a pinned, tagged version, because the repository publishes no GitHub releases. Verify first that the plugin is registered under the name embark in your plugin manager, that the colorscheme command resolves to embark rather than to the repository path, and that your status line plugin picks the theme up before you remove your previous theme.

Frequently asked questions

How do I install the Embark theme in Neovim?

Install the repository embark-theme/vim with your plugin manager and rename the plugin to embark, then set the colorscheme with vim.cmd.colorscheme('embark'). For lazy.nvim the README gives a specification with lazy set to false, a priority of 1000 and the name embark.

Does the Embark theme need a special terminal?

Yes. The README states that at this time only terminals supporting truecolors will work and that termguicolors must be enabled, with set termguicolors for Vimscript and vim.o.termguicolors = true for Neovim.

How do I turn on italics in the Embark theme?

Set g:embark_terminal_italics to 1 in Vimscript, or vim.g.embark_terminal_italics = 1 under Neovim. The README notes that your terminal has to be set up to handle italics and links to a guide for getting italics and true color working together.

Does Embark work with lightline, airline and lualine?

The README covers all three. Lightline takes the colorscheme key set to embark, airline should pick the theme up automatically and can be set with let g:airline_theme = 'embark', and Lualine should pick it up with the auto setting or be pointed at the embark theme in its setup.

Official sources

  1. embark-theme/vim on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/embark-theme-vim.svg)](https://hysenlabs.com/projects/embark-theme-vim)

Was this useful?