Skip to content

App Themes

ZestSSH ships with 11 built-in app themes that control the entire application chrome — surfaces, text, buttons, navigation, dialogs, and input fields. Terminal themes are a separate system and can be mixed independently (see Custom Theme Import).

Themes are listed in the order they appear in Settings > Appearance > App Theme.

#ThemeStyleBase
1Default DarkZestSSH signature look — OLED-friendly dark surfaces with orange accentDark
2Default LightClean light surfaces with orange accentLight
3AMOLEDPure black (#000000) backgrounds for maximum OLED battery savingsDark
4MidnightDeep navy/blue-tinted dark surfacesDark
5DraculaThe popular Dracula palette — purple-tinted dark with pink/cyan accentsDark
6NordArctic color scheme with cool blue-grey tonesDark
7MonokaiWarm, high-contrast palette inspired by the classic Monokai editor themeDark
8Solarized DarkEthan Schoonover’s precision-engineered Solarized palette (dark variant)Dark
9Catppuccin MochaSoft, pastel-tinted dark theme from the Catppuccin projectDark
10Tokyo NightCool purple-blue palette inspired by Tokyo city lightsDark
11Gruvbox DarkRetro, earthy warm tones from the Gruvbox color systemDark

The Default Dark theme is applied on first launch and used as a fallback if a stored theme ID cannot be resolved.

Each theme defines a ZestColorScheme with 22 design tokens:

  • Surfacesbackground (scaffold/window), surface (cards/sheets/dialogs), surfaceElevated (floating panels, tooltips)
  • ContentonBackground, onBackgroundMuted, onBackgroundSubtle, onSurface, onSurfaceMuted
  • Brandprimary (buttons, active indicators), primaryHover, onPrimary
  • Semanticsuccess, warning, error, info
  • Bordersborder (input outlines, card strokes), divider (section separators)
  • Interactivehover (overlay), selected (item highlight), focus (ring/border)

These tokens are mapped to a full Flutter ThemeData (Material 3) that styles every widget in the app — AppBar, cards, buttons, inputs, dialogs, bottom sheets, navigation bars, switches, chips, snackbars, tooltips, and more.

  1. Open Settings > Appearance.
  2. Tap a theme card in the App Theme grid.
  3. The theme switches instantly — no restart required.

The selected theme ID is persisted to SharedPreferences under the key app_theme_id.

Enable Follow system theme to let ZestSSH automatically switch between Default Dark and Default Light based on your device’s light/dark mode setting.

When this toggle is on, the manually selected theme is ignored. The system brightness is read from platformDispatcher.platformBrightness and re-evaluated whenever the platform brightness changes.

Individual connections can override the global app theme so different servers have visually distinct sessions. Set this in the connection editor under Appearance > Theme Override.

AspectApp ThemeTerminal Theme
ControlsApp chrome (navigation, settings, dialogs)Terminal emulator colors (ANSI palette, background, cursor)
Count11 built-inSeparate set of terminal-specific themes
CustomNot user-creatable (built-in only)Fully customizable via the theme builder
Accent overrideYes (see Accent Colors)No (terminal colors are per-theme)

The primary color of any app theme can be overridden with a custom accent color without switching themes. See Accent Colors for details.