Themes

Pick the colors of the interface and the code blocks, make a theme of your own, or adjust a few colors on top of any theme. The footer line you can fill from your own script has moved to Status line.

Choose a theme

Run /theme. As you move through the list, the whole screen switches to that theme so you can judge it in place. Enter keeps it and saves it to your user settings; Esc puts back the theme you had when the picker opened. The same picker appears once during first-run setup.

Theme ("theme" value)Shown asFor
auto (default)Auto (match the terminal)Picks dark or light from your terminal’s background when Syntic Code starts.
darkDark modeDark terminal backgrounds.
lightLight modeLight backgrounds.
dark-daltonizedDark mode (color-blind)Diff and status colors that stay distinct with common color-vision differences.
light-daltonizedLight mode (color-blind)The same, for light backgrounds.
high-contrastHigh contrastThe most distinct colors for every role.
ansi (also ansi16)ANSI (16-color)Only the 16 standard terminal colors, so your terminal’s own palette decides how things look.

auto decides at start-up by asking the terminal for its background color, and falls back to the COLORFGBG variable some terminals set. If neither answers, it uses the dark theme.

Older theme names from earlier versions (such as system or solarized) are still accepted in settings files so they do not cause errors, but they display as one of the themes above.

Other ways to set it

WayLasts
/themeSaved to your user settings.
"theme": "light" in a settings fileEvery session that reads it.
syntic --theme lightThis run. An unknown name falls back to the default and prints the list of names.
SYNTIC_THEME=lightEvery run with that variable.

Code block colors

Code blocks use a highlighting scheme that matches the theme. To pick a different one, set syntaxTheme in your user settings or SYNTIC_SYNTAX_THEME in the environment. The built-in themes pair with these schemes:

ThemeCode scheme
darkbase16-mocha.dark
light, light-daltonizedInspiredGitHub
dark-daltonizedbase16-ocean.dark
high-contrast, ansibase16-eighties.dark
{ "theme": "dark", "syntaxTheme": "base16-ocean.dark" }

An organization policy can also set syntaxTheme; it then wins over your own choice.

Make your own theme

/theme create harbour light

This writes a starter file at ~/.syntic/themes/harbour.json and opens it in your editor. The second word is the base (dark or light); leave it out for dark.

{
  "name": "Harbour",
  "base": "light",
  "colors": {
    "accent": "#0b6bcb",
    "success": "#1a7f37",
    "warning": "#9a6700",
    "error": "#cf222e",
    "link": "#0969da"
  }
}
FieldMeaning
nameWhat the theme is called in /theme and in settings. Defaults to the file name. A name that a built-in theme already uses is refused.
baseThe built-in theme that supplies every color you leave out, and the code-block scheme: dark, light, dark-daltonized, light-daltonized, high-contrast or ansi. Defaults to dark; an unknown base is reported and dark is used.
colorsColors by role (below). Unknown roles and values that are not colors are reported and skipped.
RoleColors
accentThe prompt border, selections and highlights.
textOrdinary text.
dimSecondary text and hints.
headingHeadings in replies.
linkLinks.
codeInline code.
success, warning, errorStatus colors.
backgroundPanel backgrounds.

A color can be #rrggbb, the short #rgb, a color name such as blue or lightgreen, or a 256-color number.

Custom themes appear in /theme after the built-in ones, sorted by name. To use one without the picker, put its name in settings: "theme": "Harbour". If two files use the same name, the first one (by file name) wins and the other is reported.

Every frame goes through a readability check against your terminal’s real background. A color too faint to read there is made darker or lighter, keeping its hue. So a custom theme can be a little off and still stay legible.

Adjust a few colors with themeColors

To change just a handful of colors on top of whichever theme is active (built-in or custom), use themeColors in your settings:

{
  "themeColors": {
    "accent": "#7c3aed",
    "diffAdd": "#2da44e",
    "diffDel": "red",
    "border": 75
  }
}
KeyColors
accent (or its friendlier name border)The prompt border and selections.
text, dim, mutedNormal, secondary and quieter text.
info, success, warning, errorStatus colors.
specialSpecial markers.
linkLinks.
surfacePanel surfaces.
diffAdd, diffAddBgAdded lines in diffs, and their background.
diffDel, diffDelBgRemoved lines in diffs, and their background.

Values are #rrggbb, a terminal color number from 0 to 255, or a color name. Key names are not case sensitive. Unknown keys and unreadable values are skipped quietly.

A color for this session

/color <name> gives the current session’s prompt box its own color, so you can tell side-by-side sessions apart. The choices are red, orange, yellow, green, cyan, blue, purple and pink. /color default goes back to the theme’s color.

No color at all

Set NO_COLOR (any value) or run syntic --no-color to draw everything in your terminal’s default colors. Bold, dim, underline and reverse video still work, and the selected row in lists is shown in reverse video so it stays visible. --no-color wins over FORCE_COLOR.

All of these can also be changed in /config.

SettingEffect
prStatusFooterEnabledShow the current branch’s pull request state in the footer (needs the gh tool).
prUrlTemplateWhere that badge links. Placeholders: {number}, {owner}, {repo}, {url}, {branch}.
footerLinksRegexesUp to three footer badges built from the branch name, for example a ticket link from feature/ABC-123.
spinnerVerbsYour own words for the working spinner: a list, or {"mode": "append" or "replace", "verbs": [...]}. SYNTIC_SPINNER_VERBS adds more.
spinnerTipsEnabled, spinnerTipsTips next to the spinner, and your own tips (same mode shape as spinnerVerbs).
prefersReducedMotionA still spinner and no animations. See Accessibility.
showTurnDurationShow how long each reply took (on by default).
timeFormat12h or 24h for every time of day shown.
maxProseWidthThe widest that reply text runs on a wide terminal.
verboseShow tool results in full.

The view itself (inline or full screen) is covered on Full-screen mode, and every key is listed in the settings reference.