mitander/flume.nvim

github github
colorscheme
stars 71
issues 0
subscribers 1
forks 1
CREATED

UPDATED


Opal, Mesa, Mira, and Dusk in a cascading palette showcase

Flume is a Neovim colorscheme with four palettes and matching terminal and developer-tool themes. Neutral identifiers, semantic color, and soft surfaces keep the focus on code. Includes Tree-sitter, LSP semantic tokens, diagnostics, and popular plugin highlights.

Palettes

Each preview shows the same Zig expression tree with real Tree-sitter highlighting. Click a palette to inspect its full-size capture.

Explore Go, Rust, Python, TSX, Zig, Elixir, and TOML, or inspect selection, diffs, diagnostics, completion, and LSP coloring.

One file per image, with real Tree-sitter highlighting. Each language uses the same source and layout across palettes. Open a language for its full-size capture.

Palette Code examples Config
Dusk Go · Rust · Python · TSX · Zig · Elixir TOML
Opal Go · Rust · Python · TSX · Zig · Elixir TOML
Mira Go · Rust · Python · TSX · Zig · Elixir TOML
Mesa Go · Rust · Python · TSX · Zig · Elixir TOML

The examples explore cancellation, typestate, event summaries, undo, constant folding, and pattern-matched pipelines. See the source guide for details.

Install

Requires Neovim 0.9+ and true-color support. With lazy.nvim:

{
    "mitander/flume.nvim",
    lazy = false,
    priority = 1000,
    config = function()
        vim.opt.termguicolors = true
        require("flume").setup({ schema = "dusk" })
    end,
}

setup() configures and applies Flume. Do not follow it with :colorscheme. Without Lua options, use colorscheme flume-dusk instead. The other entry points are flume-opal, flume-mira, and flume-mesa.

Configure

Override palette roles, syntax styles, or exact highlight groups:

require("flume").setup({
    schema = "opal",
    transparent = false,
    overrides = {
        syntax_comment = "#7a747a",
        accent = "#5f9cab",
    },
    styles = { comments = { italic = true } },
    highlights = {
        CursorLineNr = { fg = "#ffffff", bold = true },
    },
})

Use :Inspect or :highlight GroupName to identify a highlight group. Overrides affect Neovim only; generated themes use canonical palette colors. See :help flume-options for all defaults and system-appearance hooks. Exact roles are listed in the palette manifest.

Integrations

  • Lualine: use options = { theme = "flume" } in your lualine setup. The named theme follows palette changes.

Matching external-tool themes live in extras/. Setup recipes live in the workflow guide; native preview status lives in the showcase:

Automatic installation: Ghostty, Kitty, OpenCode, Tmux, and LSD.

:FlumeInstallExtras

Manual setup: use the other tools' theme or include mechanisms. Flume does not guess user-specific destinations. See :help flume-extras for artifact paths.

Switch Neovim and the active integration set together:

:FlumeSync mira

Other running Neovim instances follow by default. To remember the synchronized palette at startup, keep a fallback in your dotfiles:

require("flume").setup({ schema = "mesa", follow_sync = true })

:FlumeSync mira records Mira in runtime state, not your Lua configuration. Set both follow_sync = false and watch_sync = false for an independent editor. Active sets live in stdpath("data")/flume, outside the plugin checkout. Print require("flume").get_sync_dir() for your exact path. After upgrading, rerun :FlumeInstallExtras and update manual includes; legacy checkout links are forwarded when possible. External tools need their own reload support. See shared workflows for setup and reload behavior, and the semantic export for custom consumers.

Commands

Command Action
:FlumeReload Reload the editor-local palette
:FlumeCompile Regenerate all integration artifacts
:FlumeSync [schema] Apply a palette and activate its integration set
:FlumeInstallExtras [app] Link integrations with standard destinations
:FlumeExtras Show safe link instructions for the five installable tools
:checkhealth flume Check the selected palette and generated files
:help flume Open the reference manual

Development

Set dev = true in your local Flume setup to reload on Lua source saves. Reloads preserve the editor's current palette and do not synchronize external tools.

Run ./scripts/check for tests, local links, and source checks. The check script requires Neovim and Python 3.11+.

Flume's visual direction draws on Jonathan Zawada's artwork for Flume. A wallpaper is available at 1376×768.

License

MIT. See LICENSE.