Skip to content

New in v1.38Custom themes, from the editors you already love

Make JET Pilot yours.

Bring your VS Code, Sublime Text, TextMate or T3 Code theme — or pick one of the built-ins. The sidebar, tables, YAML editor and terminal all follow.

  • T3 Code compatible
  • VS Code · Sublime · TextMate
  • Open VSX gallery
  • JSON editor with live preview
  • MIT

JETdarkJET Pilot contributors(MIT)

Try your own theme

Drop a VS Code theme, a Sublime Text colour scheme, a TextMate theme or a T3 Code / JET Pilot theme. The same engine JET Pilot uses converts it right here in your browser.

⌘ / Ctrl + Enter

Everything happens in your browser. Nothing is uploaded, nothing is stored.

What works

  • VS Code*-color-theme.json — workbench colours, tokenColors for the editor and terminal.ansi* for the terminal. JSONC and include are fine.
  • Sublime.sublime-color-scheme, with variables and color().
  • TextMate.tmTheme property lists.
  • T3 · JETT3 Code themes as they are, and JET Pilot’s own files.

Light and dark files of one theme? Drop both at once — they pair up into one theme, as in the app.

How to install

Three ways in. All of them instant.

Every theme can have its own light and dark appearance, and you can pick a different theme for each mode.

Settings › Appearance

Drag theme files onto the theme library, pick them with the file picker or paste the JSON. VS Code, Sublime, TextMate and T3 Code themes are converted on the spot. Hover a card to preview it on the whole app.

The Open VSX gallery

Search thousands of VS Code themes on open-vsx.org from inside JET Pilot and install one in a click — every colour theme in the extension comes along.

Only MIT-licensed extensions can be installed, so JET Pilot stays MIT.

The themes folder

Save a .json theme in JET Pilot’s themes folder. It’s watched: edit the file in any editor and the app updates as you save. Broken files show up with their error, not silently.

macOS
~/Library/Application Support/com.unxsist.jetpilot/themes
Windows
%APPDATA%\com.unxsist.jetpilot\themes
Linux
~/.config/com.unxsist.jetpilot/themes

⌘⌥A/CtrlAltA

Change theme…

The command palette lists every theme. Arrow through them to preview live; Esc puts the old one back.

⌘⌥⇧A/CtrlAltShiftA

Change appearance

Switch between System, Light and Dark. Each mode keeps its own theme.

⌘K/CtrlK

Or just search

Type “theme” in the command palette. Shortcuts are listed in the ? cheat sheet.

Write your own

Two colours are enough.

A theme is a small JSON file. Give it a canvas and an accent and JET Pilot derives the rest of the palette from them — with contrast guarantees: text at 7:1, other foregrounds at 4.5:1 and buttons at 3:1.

  • Override any of the 57 roles under colors
  • Add the other appearance under variants
  • JET Pilot extras under jetPilot: success and info colours, the 16 terminal colours, editor syntax colours and raw VS Code editor keys
  • Any CSS colour works: hex, rgb(), hsl(), oklch()…

Completion and validation, everywhere

Add the schema line and VS Code (or any JSON Schema-aware editor) completes role names, explains them on hover and flags mistakes:

"$schema": "https://www.jet-pilot.app/schemas/theme.json"

Inside the app, Settings › Appearance › New theme opens a JSON editor with the same schema, a live preview on the whole app and ⌘S / Ctrl+S to save.

nightfall.jsonThe short form
{
  "$schema": "https://www.jet-pilot.app/schemas/theme.json",
  "name": "Nightfall",
  "appearance": "dark",
  "canvas": "#16161e",
  "accent": "#7aa2f7"
}
nightfall.jsonWith overrides, a light variant and JET Pilot extras
{
  "$schema": "https://www.jet-pilot.app/schemas/theme.json",
  "version": 1,
  "id": "nightfall",
  "name": "Nightfall",
  "appearance": "dark",
  "canvas": "#16161e",
  "accent": "#7aa2f7",
  "colors": {
    "text": "#c0caf5",
    "sidebar": "#1a1b26",
    "messageAction": "#bb9af7",
    "errorForeground": "#f7768e"
  },
  "jetPilot": {
    "colors": { "success": "#9ece6a", "info": "#7dcfff" },
    "terminal": {
      "black": "#15161e",
      "red": "#f7768e",
      "green": "#9ece6a",
      "yellow": "#e0af68",
      "blue": "#7aa2f7",
      "magenta": "#bb9af7",
      "cyan": "#7dcfff",
      "white": "#a9b1d6",
      "brightBlack": "#414868",
      "brightRed": "#f7768e",
      "brightGreen": "#9ece6a",
      "brightYellow": "#e0af68",
      "brightBlue": "#7aa2f7",
      "brightMagenta": "#bb9af7",
      "brightCyan": "#7dcfff",
      "brightWhite": "#c0caf5"
    },
    "syntax": {
      "key": "#7aa2f7",
      "string": "#9ece6a",
      "number": "#ff9e64",
      "constant": "#bb9af7",
      "comment": "#565f89",
      "punctuation": "#89ddff"
    },
    "editor": { "editor.lineHighlightBackground": "#1e2030" }
  },
  "variants": {
    "light": {
      "canvas": "#f6f6fb",
      "accent": "#2e7de9",
      "colors": { "text": "#343b58" },
      "jetPilot": {
        "syntax": {
          "key": "#2e7de9",
          "string": "#587539",
          "number": "#b15c00",
          "comment": "#848cb5"
        }
      }
    }
  }
}

T3 Code themes import as they are

The format is T3 Code’s theme file (version 1, its 57 roles, the seeded short form and variants). Paste a T3 theme and you’re done.

And they go back, too

T3 Code ignores the jetPilot block. Export for T3 Code writes a strict T3 file: all 57 roles resolved, variants included.

More than a palette

VS Code themes bring their tokenColors to the YAML editor and terminal.ansi* to the terminal — the parts T3 Code leaves out.

Roles reference

Every key a theme can set, straight from the JSON schema. Roles marked T3 Code are kept for compatibility; JET Pilot paints the rest.

Surfaces & lines9
Surfaces & lines roles
KeyWhat it paints
colors.canvasMain background behind content: tables, editor, terminal (--background). Seed of the derived palette.
colors.surfacePanels and cards: side panel, grouped settings (--surface-2 / --card).
colors.surfaceRaisedRaised surfaces; the placeholder text is checked against it.
colors.surfaceOverlayPopovers, menus, dialogs, command palette and editor widgets (--surface-3 / --popover).
colors.borderHairline borders (--border); --border-subtle and --border-strong are mixed from it.
colors.inputInput borders (--input).
colors.focusFocus rings (--ring) and the editor's focus border.
colors.codeBackgroundInline code background.
colors.codeForegroundInline code text.
Text7
Text roles
KeyWhat it paints
colors.textPrimary text (--foreground). Kept at 7:1 contrast on the canvas.
colors.textMutedSecondary text (T3 Code). JET Pilot's muted text is mutedForeground.
colors.mutedMuted backgrounds: skeletons, subtle fills (--muted).
colors.mutedForegroundMuted text: descriptions, captions, table meta (--muted-foreground).
colors.placeholderInput placeholder text.
colors.secondaryLabelSecondary labels (T3 Code).
colors.iconMutedMuted icons (T3 Code).
Accent & actions9
Accent & actions roles
KeyWhat it paints
colors.accentBrand / accent colour: links (--link), text selection (--selection), editor selection. Seed of the derived palette.
colors.accentForegroundText on a solid accent fill.
colors.accentSurfaceHover and selected rows, menu highlight (--accent) and the editor's selected suggestion.
colors.accentSurfaceForegroundText on hovered / selected rows (--accent-foreground).
colors.messageActionPrimary buttons, switches, the active nav indicator (--primary). When it is not a vivid colour (3:1 on the canvas, apart from accentSurface), the accent / focus colour is used instead.
colors.messageActionForegroundText on primary buttons (--primary-foreground).
colors.messageActionHoverPrimary button hover (T3 Code).
colors.secondarySecondary buttons and controls (--secondary).
colors.secondaryForegroundText on secondary buttons (--secondary-foreground).
Status9
Status roles
KeyWhat it paints
colors.errorError signal colour (T3 Code). The editor's find highlights use warning.
colors.errorForegroundReadable error text; becomes --destructive (also checked on the canvas).
colors.errorSurfaceBackground of error alerts.
colors.warningWarning signal colour; editor find-match highlight.
colors.warningForegroundReadable warning text; becomes --warning (also checked on the canvas).
colors.warningSurfaceBackground of warning alerts.
colors.updateUpdate / info signal colour (T3 Code).
colors.updateForegroundText on update surfaces (T3 Code).
colors.updateSurfaceBackground of update notices (T3 Code).
Sidebar8
Sidebar roles
KeyWhat it paints
colors.sidebarApp chrome: navigation, tab bar, toolbars (--surface-1 / --sidebar).
colors.sidebarForegroundNavigation text (--sidebar-foreground).
colors.sidebarMutedForegroundMuted navigation text.
colors.sidebarControlSurfaceControls in the sidebar (T3 Code).
colors.sidebarRowHoverSidebar row on hover (T3 Code).
colors.sidebarRowActiveActive sidebar row (T3 Code).
colors.sidebarRowSelectedSelected sidebar row (T3 Code).
colors.sidebarBorderSidebar border (T3 Code).
Terminal6
Terminal roles
KeyWhat it paints
colors.terminalBackgroundTerminal background.
colors.terminalForegroundTerminal text.
colors.terminalCursorTerminal and editor cursor.
colors.terminalSelectionTerminal selection.
colors.terminalScrollbarScrollbar thumbs (--scrollbar), also in the editor.
colors.terminalScrollbarHoverScrollbar thumbs on hover (--scrollbar-hover).
T3 Code chrome9
T3 Code chrome roles
KeyWhat it paints
colors.chromeWindow chrome background (T3 Code). JET Pilot uses sidebar for its chrome.
colors.toolbarToolbar background (T3 Code).
colors.toolbarForegroundText on the toolbar (T3 Code).
colors.toolbarBorderToolbar border (T3 Code).
colors.toolbarControlToolbar button background (T3 Code).
colors.toolbarControlForegroundToolbar button text (T3 Code).
colors.toolbarControlHoverToolbar button background on hover (T3 Code).
colors.messageSurfaceMessage bubble background (T3 Code).
colors.messageForegroundMessage bubble text (T3 Code).
JET Pilot extras4
JET Pilot extras roles
KeyWhat it paints
jetPilot.colors.successSuccess colour, text-grade on the canvas (--success): ready pods, healthy status. Derived as a green when missing.
jetPilot.colors.successForegroundText on a solid success fill (--success-foreground).
jetPilot.colors.infoInfo colour, text-grade on the canvas (--info). Derived as a blue when missing.
jetPilot.colors.infoForegroundText on a solid info fill (--info-foreground).
Editor syntax7
Editor syntax roles
KeyWhat it paints
jetPilot.syntax.keyYAML / JSON keys.
jetPilot.syntax.stringString values.
jetPilot.syntax.numberNumbers.
jetPilot.syntax.constantBooleans, null and keywords.
jetPilot.syntax.commentComments (italic).
jetPilot.syntax.punctuationColons, dashes, brackets.
jetPilot.syntax.textPlain text.
Terminal ANSI16
Terminal ANSI roles
KeyWhat it paints
jetPilot.terminal.blackANSI black (VS Code terminal.ansiBlack).
jetPilot.terminal.redANSI red (VS Code terminal.ansiRed).
jetPilot.terminal.greenANSI green (VS Code terminal.ansiGreen).
jetPilot.terminal.yellowANSI yellow (VS Code terminal.ansiYellow).
jetPilot.terminal.blueANSI blue (VS Code terminal.ansiBlue).
jetPilot.terminal.magentaANSI magenta (VS Code terminal.ansiMagenta).
jetPilot.terminal.cyanANSI cyan (VS Code terminal.ansiCyan).
jetPilot.terminal.whiteANSI white (VS Code terminal.ansiWhite).
jetPilot.terminal.brightBlackANSI bright black (VS Code terminal.ansiBrightBlack).
jetPilot.terminal.brightRedANSI bright red (VS Code terminal.ansiBrightRed).
jetPilot.terminal.brightGreenANSI bright green (VS Code terminal.ansiBrightGreen).
jetPilot.terminal.brightYellowANSI bright yellow (VS Code terminal.ansiBrightYellow).
jetPilot.terminal.brightBlueANSI bright blue (VS Code terminal.ansiBrightBlue).
jetPilot.terminal.brightMagentaANSI bright magenta (VS Code terminal.ansiBrightMagenta).
jetPilot.terminal.brightCyanANSI bright cyan (VS Code terminal.ansiBrightCyan).
jetPilot.terminal.brightWhiteANSI bright white (VS Code terminal.ansiBrightWhite).
Credits

Built on the shoulders of great themes.

The built-in themes are converted from their upstream projects, all under the MIT licence. Palettes and parts of the theme engine — the palette derivation, the contrast solver and the VS Code mapping — are ported from T3 Code (MIT). Thank you.

ThemeUpstreamLicenceCopyright
T3 Chat, Grove, Ocean, Ember, Irispingdotgg/t3codeMITCopyright (c) 2026 T3 Tools Inc.
Catppuccin (Latte, Mocha)catppuccin/vscodeMITCopyright (c) 2021 Catppuccin
Tokyo Night (Night, Light)tokyo-night/tokyo-night-vscode-themeMITCopyright (c) 2018-present Enkia
Draculadracula/visual-studio-codeMITCopyright (c) 2016 Dracula Theme
Nordnordtheme/visual-studio-codeMITCopyright (c) 2016-present Sven Greb
GitHub (Light Default, Dark Default)primer/github-vscode-themeMITCopyright (c) 2020 Primer
One Dark ProBinaryify/OneDark-ProMITCopyright (c) 2013-2022 Binaryify
Rosé Pine (Dawn, Main)rose-pine/vscodeMITCopyright (c) 2021 Rosé Pine
Gruvbox (Light Medium, Dark Medium)jdinhify/vscode-theme-gruvboxMITCopyright © 2017 JD

Full notices in THIRD_PARTY_THEMES.md. JET is JET Pilot’s own theme.