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).
Built-in Themes
Section titled “Built-in Themes”Themes are listed in the order they appear in Settings > Appearance > App Theme.
| # | Theme | Style | Base |
|---|---|---|---|
| 1 | Default Dark | ZestSSH signature look — OLED-friendly dark surfaces with orange accent | Dark |
| 2 | Default Light | Clean light surfaces with orange accent | Light |
| 3 | AMOLED | Pure black (#000000) backgrounds for maximum OLED battery savings | Dark |
| 4 | Midnight | Deep navy/blue-tinted dark surfaces | Dark |
| 5 | Dracula | The popular Dracula palette — purple-tinted dark with pink/cyan accents | Dark |
| 6 | Nord | Arctic color scheme with cool blue-grey tones | Dark |
| 7 | Monokai | Warm, high-contrast palette inspired by the classic Monokai editor theme | Dark |
| 8 | Solarized Dark | Ethan Schoonover’s precision-engineered Solarized palette (dark variant) | Dark |
| 9 | Catppuccin Mocha | Soft, pastel-tinted dark theme from the Catppuccin project | Dark |
| 10 | Tokyo Night | Cool purple-blue palette inspired by Tokyo city lights | Dark |
| 11 | Gruvbox Dark | Retro, earthy warm tones from the Gruvbox color system | Dark |
The Default Dark theme is applied on first launch and used as a fallback if a stored theme ID cannot be resolved.
What an App Theme Controls
Section titled “What an App Theme Controls”Each theme defines a ZestColorScheme with 22 design tokens:
- Surfaces —
background(scaffold/window),surface(cards/sheets/dialogs),surfaceElevated(floating panels, tooltips) - Content —
onBackground,onBackgroundMuted,onBackgroundSubtle,onSurface,onSurfaceMuted - Brand —
primary(buttons, active indicators),primaryHover,onPrimary - Semantic —
success,warning,error,info - Borders —
border(input outlines, card strokes),divider(section separators) - Interactive —
hover(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.
How to Change the App Theme
Section titled “How to Change the App Theme”- Open Settings > Appearance.
- Tap a theme card in the App Theme grid.
- The theme switches instantly — no restart required.
The selected theme ID is persisted to SharedPreferences under the key app_theme_id.
Follow System Theme
Section titled “Follow System Theme”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.
Per-Connection Theme Override
Section titled “Per-Connection Theme Override”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.
App Themes vs. Terminal Themes
Section titled “App Themes vs. Terminal Themes”| Aspect | App Theme | Terminal Theme |
|---|---|---|
| Controls | App chrome (navigation, settings, dialogs) | Terminal emulator colors (ANSI palette, background, cursor) |
| Count | 11 built-in | Separate set of terminal-specific themes |
| Custom | Not user-creatable (built-in only) | Fully customizable via the theme builder |
| Accent override | Yes (see Accent Colors) | No (terminal colors are per-theme) |
Accent Color Override
Section titled “Accent Color Override”The primary color of any app theme can be overridden with a custom accent color without switching themes. See Accent Colors for details.