# Flexoki: a warm paper palette with ports for everything you type in

> Steph Ango's inky color scheme, built as a single source of truth that terminals, editors, note apps and web frameworks all read from.

**kepano/flexoki** — An inky color scheme for prose and code.

- Repository: https://github.com/kepano/flexoki
- Website: https://stephango.com/flexoki
- Stars: 3,688 · Forks: 129
- Language: CSS
- License: MIT
- Published: 2026-10-07 · Updated: 2026-10-07 · Language: en
- Canonical page: https://hysenlabs.com/projects/kepano-flexoki

## Two sentences of philosophy, then a port index

The README is short on purpose. Flexoki is described as an inky color scheme for prose and code, designed for reading and writing on digital screens and inspired by analog printing inks and warm shades of paper. Then it links to stephango.com/flexoki for the reasoning and gets straight to the list.

What follows that link is the largest part of the repository: a catalogue of ports grouped into Apps, System themes, Frameworks and Other. Roughly thirty apps are named, from terminal emulators like Alacritty, iTerm2, Kitty, WezTerm, Ghostty, Warp and Windows Terminal, through editors including Vim, Neovim, Helix, Zed, Sublime Text, Lite XL and IntelliJ, to note and writing apps such as Obsidian, Ulysses, Typora, Drafts, Tape and Standard Notes.

Almost none of those are ports by the author. Each entry credits a different person, and several live in separate repositories entirely, such as the Neovim themes, the Sublime Text port and the Obsidian theme. The README asks that any port include attribution and a link back to the page, which is a light-touch governance model for a project that otherwise has no governance at all.

## The base scale is warm, and it goes to fifteen steps

The palette is a single grayscale ramp from paper to black, which is the part most people end up using.

| Name | Hex | RGB |
| paper | #FFFCF0 | 255, 252, 240 |
| base-50 | #F2F0E5 | 242, 240, 229 |
| base-100 | #E6E4D9 | 230, 228, 217 |
| base-200 | #CECDC3 | 206, 205, 195 |
| base-400 | #9F9D96 | 159, 157, 150 |
| base-600 | #6F6E69 | 111, 110, 105 |
| base-800 | #403E3C | 64, 62, 60 |
| base-950 | #1C1B1A | 28, 27, 26 |
| black | #100F0F | 16, 15, 15 |

Two things stand out. The lightest value is not white but paper, a slightly yellow #FFFCF0, which is the whole aesthetic in one hex code. And the ramp is dense in the middle, with base-150, base-300, base-500, base-700, base-850 and base-900 filling in the gaps, which gives you more room to separate surface from border from text than a typical eight-step scale.

The accent colors follow the same logic at two weights. The standard palette uses the base colors plus the 400 and 600 values of each accent, so red-600 is #AF3029. The extended palette, added in version 2.0.0, fills in the full 50 to 950 range for every accent, which is 88 new colors.

## How the extended palette was derived

The 2.0.0 release note is the most technical thing in the repository, and it is worth reading because it explains why the ramp looks the way it does.

The new values are computed in the Oklab color space, with chroma ramped up in the light and dark ends of each scale. The stated goal is to make the colors feel vibrant and warm, like watercolor inks, and the stated constraint is to do that without desaturating the pigment effect that the first version had. The original release, version 1, only had a range of values for the grayscale colors; everything after that has been the work of expanding to full ranges for every color without losing the effect.

The repository ships the tool used to do it. There is a _playground directory with playground.js, linked from the release note as somewhere you can see how the new values are generated from the original Flexoki colors, and a _generators directory alongside it. That is a pleasant detail: rather than publishing 88 hand-picked hex codes and asking people to trust them, the project publishes the arithmetic.

There are also _samples and _images directories, which is where the screenshots in the README come from, and a css directory for the web build of the palette page.

## System themes and frameworks are the underrated half

A color scheme that only works inside a terminal or editor is a theme. Flexoki also ships system-level and framework integrations, and these are the entries most people never find.

System themes include gtk, qt5ct and qt6ct, a KDE color scheme, and an Omarchy dark theme. If you use a Linux desktop with Qt applications, the qt6ct port is what makes those match your terminal instead of fighting it. The Xresources entry covers the older X11 path for tools that read it.

Frameworks are a different category again: a Shadcn port as a gist, a Tailwind integration, theme.sh support, pywal support for generating a full desktop palette from an image, a Starlight documentation theme, and a VitePress theme. The Tailwind entry is the one with the broadest reach, since it turns the palette into utility classes for any web project rather than tying it to a single framework.

The Other category covers the long tail where someone needed Flexoki for a specific tool: an Affinity palette, a Clip Studio Paint extension, a Figma community file, a GIMP palette, a Python and Matplotlib port, an R package, and a Wikipedia UserCSS style that requires Stylus. The Matplotlib one is the most useful of these for anyone who wants their plots to match their editor.

## Some ports live in their own repositories

Worth calling out, because the repository tree can give a false impression of coverage. The tree contains directories for alacritty, chrome, discord, drafts, dunst, fish, fzf, gimp, gtk, helix, i3, imv, intellij, iterm2, kde, kitty, konsole, lite_xl, macos, oomox, python-matplotlib, pywal, qt6ct, slack, substack, tape, tealdeer, telegram, terminal, theme.sh, tmux, ulysses, vim, vitepress, vscode, warp-terminal, waybar, wezterm, windows-terminal, xcode, xresources, zathura, zed and zellij.

Several README entries are not in that list at all. Neovim is listed three times over, crediting three separate maintainers at three repository URLs, and the author explicitly does not maintain the main Neovim port. Sublime Text, Obsidian and the Affinity port by name all point elsewhere. Firefox is not on GitHub at all but on Codeberg, and the Telegram, Waybar, Tealdeer and fish entries are likewise credited to individuals.

The pattern is consistent: Flexoki supplies a canonical set of colors and the author maintains first-party ports for the tools he uses, while everyone else ports it themselves under an MIT licence that explicitly permits it. Ghostty is the exception, listed as built in.

## What the repository does not tell you

A few gaps are worth naming so nobody spends an afternoon looking for them.

There is no package to install, no build step and no binary. This is a directory of colour definitions in whatever format each target expects, plus documentation. How you wire a port into a given application is that port's problem, and for several tools the answer lives entirely outside the repository.

The README also stops at describing what Flexoki is and where to read more, without any guidance on how to apply the colours, deferring to the documentation page. There is no changelog in the repository; the version history arrives through releases, and there is exactly one, version 2.0.0 from January 2025, which is the extended palette. Version 1.0 appears in the topic list of downstream ports rather than as a release here.

Last, the repository has been quiet for a while. The last push was 2026-03-07, which is a little over seven months before the current date, and there are 15 open issues. For a palette that changes rarely and has a large port ecosystem, that is not alarming, but it does mean new application support depends on the community rather than on a maintainer with time to spare.

## Conclusion

Flexoki succeeds because it treats a palette as data and a set of ports as a community problem. The colors themselves are opinionated in a specific direction, warm and low contrast against a paper-like base rather than the usual cold blue-grey, and once you accept that, the ports make it trivial to have one look across your terminal, your editor, your phone and your notes. The standard palette of base colors plus 400 and 600 accents is enough for most people, and the extended 50 to 950 range exists for interface work. If you want the whole story of the ramp, the write-up at stephango.com/flexoki is where it lives, since the README is the port index.

## FAQ

### What is the Flexoki color scheme?

An inky color scheme for prose and code, created by Steph Ango and inspired by analog printing inks and warm shades of paper. It is MIT licensed, the colors live as data in this repository, and the full design write-up is at stephango.com/flexoki.

### How do I install Flexoki in Neovim?

There is no single official Neovim port, and the README lists three separate ones by three different maintainers at three repository URLs. Pick the one whose recent commits look alive and follow its own instructions, since the author does not maintain the main Neovim theme.

### What is the difference between the standard and extended Flexoki palettes?

The standard palette uses the grayscale base colors plus the 400 and 600 values of each accent, which is enough for most text work. The extended palette, added in version 2.0.0, adds the full 50 to 950 range for every accent color, 88 new values in total, for interface and design work. The extended values are generated in the Oklab color space.

### Which applications have official Flexoki ports?

Most ports are maintained by other people and simply credited in the README. Author-maintained directories in the repository include Alacritty, iTerm2, Kitty, WezTerm, Ghostty, Windows Terminal, Vim, Helix, Zed, Lite XL, tmux, Zellij, fish, Slack, Substack, Ulysses, Waybar, GTK, Qt and KDE. Sublime Text, Obsidian and Neovim live in separate repositories.

### Can I use Flexoki in my own application?

Yes, and the README asks for it explicitly. Flexoki is MIT licensed, you are free to port it to any application, and the request is that you include attribution and a link back to stephango.com/flexoki, then add a link to your port in the list via a pull request.

## Sources

- [kepano/flexoki on GitHub](https://github.com/kepano/flexoki)
- [License: MIT](https://github.com/kepano/flexoki/blob/main/LICENSE)
- [Project website](https://stephango.com/flexoki)
- [README](https://github.com/kepano/flexoki/blob/main/README.md)
- [Releases](https://github.com/kepano/flexoki/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/kepano-flexoki
