NetStacksNetStacks

Themes & Customization

Professional

Customize the terminal appearance with built-in themes, custom color schemes, per-session profiles, and font settings for an optimized network engineering experience.

Overview

NetStacks provides extensive visual customization for the terminal, from pre-built color themes to custom color palettes, font selections, cursor styles, and per-session appearance overrides. For network engineers who spend hours in the terminal, the right theme reduces eye strain, improves output readability, and provides visual cues that help distinguish production environments from labs.

Built-in Themes

NetStacks ships with 10 carefully crafted terminal themes, including network-engineering-specific options:

  • Default Dark -- VS Code-inspired dark theme with excellent contrast for long sessions (default)
  • Monokai -- classic warm-toned developer theme
  • Dracula -- popular dark theme with vibrant accent colors
  • Solarized Dark -- precision color scheme designed for readability
  • Solarized Light -- light variant for bright environments
  • Nord -- arctic-inspired muted palette that is easy on the eyes
  • Gruvbox Dark -- retro groove colors with warm contrast
  • Cisco Blue -- network-engineering theme with Cisco brand colors, ideal for IOS/NX-OS work
  • Matrix Green -- classic green-on-black for a retro terminal feel
  • Retro Amber -- amber-on-dark for vintage terminal nostalgia

Customization Options

  • Color themes -- choose from built-in themes or create custom color palettes with full 16-color ANSI support
  • Fonts -- select from 12 monospace font families with configurable size, weight, and ligature support
  • Cursor -- block, underline, or bar cursor with configurable blink rate
  • Display -- scrollback buffer size, scroll speed, GPU acceleration, window opacity, and bell behavior
  • Per-session profiles -- override global settings for specific sessions to visually distinguish environments

How It Works

The theme engine in NetStacks is built on top of xterm.js, the same terminal rendering library used by VS Code. Themes are defined as ITheme objects that specify colors for the terminal background, foreground, cursor, selection, and the full 16-color ANSI palette (8 standard colors plus 8 bright variants).

Theme Architecture

  1. Theme registry -- all built-in themes are stored in a central registry with unique IDs. When you select a theme, its color values are applied to the xterm.js renderer.
  2. Custom theme support -- custom themes extend a base theme with optional overrides for background, foreground, and cursor colors. The merge is performed at render time, allowing partial customization.
  3. Per-session overrides -- each session can store its own theme ID, font family, and font size. These override the global settings for that specific terminal tab.
  4. Real-time preview -- font changes are previewed in real time on the terminal while you adjust settings, so you can see exactly how your configuration looks before saving.

Color System

Each theme defines 20 color values that control all visual aspects of the terminal:

Color PropertyPurpose
backgroundTerminal background color
foregroundDefault text color
cursor / cursorAccentCursor and cursor text colors
selectionBackgroundText selection highlight
black through whiteStandard 8 ANSI colors
brightBlack through brightWhiteBright variant ANSI colors

Font Rendering

NetStacks uses GPU-accelerated rendering (via WebGL) for smooth font display. The terminal supports any monospace font installed on your system, with 12 pre-configured options. Font ligatures (combining characters like -> into arrows) are supported with fonts like JetBrains Mono and Fira Code.

Available Font Families

FontNotes
MenlomacOS default, clean and readable
MonacoClassic macOS monospace
ConsolasWindows default, excellent clarity
SF MonoApple's modern monospace
Fira CodePopular with ligature support
JetBrains MonoExcellent for code, built-in ligatures
Source Code ProClean Adobe monospace
Ubuntu MonoLinux default, distinctive style
IBM Plex MonoIBM's modern monospace
Cascadia CodeMicrosoft's coding font with ligatures
HackDesigned for source code, great readability

Step-by-Step Guide

Workflow 1: Switching Between Built-in Themes

  1. Open Settings (Cmd/Ctrl+,)
  2. Navigate to Appearance → Theme
  3. Select a theme from the dropdown -- the terminal preview updates immediately
  4. Try Cisco Blue for network engineering work, or Nord for a low-contrast late-night option
  5. Close settings -- the theme is saved automatically
Tip

The Cisco Blue theme uses Cisco brand colors and is specifically designed for visibility when reading IOS and NX-OS command output. The SunNight theme provides a gold-on-black look that is particularly easy on the eyes during late-night maintenance windows.

Workflow 2: Customizing Font and Display Settings

  1. Open Settings (Cmd/Ctrl+,)
  2. Navigate to the Terminal settings tab
  3. Select a font family from the dropdown (e.g., JetBrains Mono or Fira Code)
  4. Adjust font size -- changes preview in real time on the terminal
  5. Configure cursor style (block, underline, or bar) and blink behavior
  6. Set scrollback buffer size (default 10,000 lines, up to 100,000)
  7. Toggle GPU acceleration, smooth scrolling, and window opacity as needed

Workflow 3: Creating Per-Session Appearance Profiles

  1. Right-click the session tab you want to customize
  2. Select Session Settings
  3. Navigate to the Terminal tab
  4. Select a different theme from the dropdown (e.g., use a red-tinted theme for production devices)
  5. Optionally change the font family or size for this specific session
  6. Click Save -- this session will use these settings instead of the global defaults
Tip

Use per-session themes as a safety mechanism: set production sessions to a distinct theme (e.g., Cisco Blue with a red-tinted background) so you always have a visual reminder of which environment you are working in.

Code Examples

Theme Definition Structure

Each theme is defined as an ITheme object with a unique ID and name. Here is the structure of the Cisco Blue theme, designed specifically for network engineers:

cisco-blue-theme.jsonjson
{
  "id": "cisco",
  "name": "Cisco Blue",
  "theme": {
    "background": "#00274c",
    "foreground": "#ffffff",
    "cursor": "#00bceb",
    "cursorAccent": "#00274c",
    "selectionBackground": "#005073",
    "black": "#000000",
    "red": "#ff5252",
    "green": "#00d26a",
    "yellow": "#ffc107",
    "blue": "#00bceb",
    "magenta": "#e040fb",
    "cyan": "#00bcd4",
    "white": "#ffffff",
    "brightBlack": "#546e7a",
    "brightRed": "#ff8a80",
    "brightGreen": "#69f0ae",
    "brightYellow": "#ffd740",
    "brightBlue": "#40c4ff",
    "brightMagenta": "#ea80fc",
    "brightCyan": "#84ffff",
    "brightWhite": "#ffffff"
  }
}

Custom Theme with Base Override

Create a custom theme by extending a base theme with specific color overrides. Only the colors you specify are changed; everything else inherits from the base theme.

custom-theme-override.jsonjson
{
  "baseTheme": "default",
  "background": "#0d1117",
  "foreground": "#c9d1d9",
  "cursor": "#58a6ff"
}

Per-Session Environment Profiles

session-profilesyaml
# Per-session appearance settings in Session Settings > Terminal

Production devices:
  Theme:       Cisco Blue
  Font:        JetBrains Mono, 14px
  Tab Color:   Red indicator
  Use case:    Visual warning when working on production

Staging / Lab devices:
  Theme:       Nord
  Font:        Fira Code, 14px
  Tab Color:   Yellow indicator
  Use case:    Clearly distinguish from production

Development / Local:
  Theme:       Dracula
  Font:        Cascadia Code, 15px
  Tab Color:   Green indicator
  Use case:    Comfortable for extended development work

How Terminal Colors Enhance Network Output

Terminal themes affect how ANSI-colored output from network devices is displayed. Here is how different themes render the same show interfaces output:

theme-color-mappingtext
# show interfaces GigabitEthernet0/1 on a Cisco IOS device
# ANSI colors in terminal output are mapped through your theme

GigabitEthernet0/1 is up, line protocol is up    # "up" typically green
  Hardware is Gigabit Ethernet, address is aabb.cc00.0101
  Internet address is 10.0.0.1/30
  MTU 1500 bytes, BW 1000000 Kbit/sec
     5 minute input rate 245000 bits/sec, 180 packets/sec
     5 minute output rate 312000 bits/sec, 220 packets/sec
     0 input errors, 0 CRC                       # "0 errors" green
     0 output errors, 0 collisions               # errors would be red

# With the Cisco Blue theme:
#   - Green (#00d26a): "up" status, zero errors
#   - Red (#ff5252): "down" status, non-zero errors
#   - Yellow (#ffc107): warnings, high utilization
#   - Cyan (#00bcd4): interface names, IP addresses

Full Custom Theme Definition

custom-theme.jsonjson
{
  "id": "my-network-theme",
  "name": "My Network Theme",
  "theme": {
    "background": "#1a1b26",
    "foreground": "#a9b1d6",
    "cursor": "#c0caf5",
    "cursorAccent": "#1a1b26",
    "selectionBackground": "#33467c",
    "black": "#32344a",
    "red": "#f7768e",
    "green": "#9ece6a",
    "yellow": "#e0af68",
    "blue": "#7aa2f7",
    "magenta": "#ad8ee6",
    "cyan": "#449dab",
    "white": "#787c99",
    "brightBlack": "#444b6a",
    "brightRed": "#ff7a93",
    "brightGreen": "#b9f27c",
    "brightYellow": "#ff9e64",
    "brightBlue": "#7da6ff",
    "brightMagenta": "#bb9af7",
    "brightCyan": "#0db9d7",
    "brightWhite": "#acb0d0"
  }
}

Q&A

Q: What built-in themes are available?
A: NetStacks includes 10 built-in themes: Default Dark, Monokai, Dracula, Solarized Dark, Solarized Light, Nord, Gruvbox Dark, Cisco Blue, Matrix Green, and Retro Amber. The Cisco Blue theme is designed specifically for network engineering with Cisco brand colors. There is also a SunNight theme with gold-on-black colors.
Q: Can I create custom themes?
A: Yes. You can create a custom theme by specifying a base theme and overriding specific colors (background, foreground, cursor). For full customization, define all 20 color values including the 16-color ANSI palette. Custom themes are saved to your settings and persist across restarts.
Q: How do I change the terminal font?
A: Open Settings (Cmd/Ctrl+,) and navigate to Terminal settings. Select a font family from the dropdown of 12 pre-configured options including JetBrains Mono, Fira Code, Cascadia Code, SF Mono, and others. Changes preview in real time on the terminal so you can see the result before closing settings.
Q: Can I have different themes per session?
A: Yes. Right-click any session tab and select Session Settings. In the Terminal tab, you can override the global theme, font family, and font size for that specific session. This is commonly used to set production sessions to a distinct visual style (e.g., Cisco Blue with a red tab indicator) so you always know which environment you are working in.
Q: Does the theme affect how network device output is colored?
A: Yes. Network devices send ANSI color codes in their output (e.g., green for "up" status, red for errors). Your theme controls how those ANSI colors are rendered. For example, the Cisco Blue theme maps green to #00d26a and red to #ff5252, ensuring high visibility against the dark blue background.
Q: Can I share themes with my team?
A: Custom themes are defined as JSON objects that can be shared as files. Export your theme definition and share it with team members, who can import it in Settings → Appearance → Import Theme. In enterprise mode with a Controller, administrators can push standard themes to all users.
Q: What cursor styles are available?
A: NetStacks supports three cursor styles: Block (filled rectangle), Underline (line below the character), and Bar (vertical line before the character). You can also configure cursor blink on or off with a customizable blink rate (default 530ms).

Troubleshooting

Theme Not Applying

  • Verify the theme is selected in Settings → Appearance → Theme
  • If using a per-session override, check that the session settings have the correct theme selected (right-click tab → Session Settings → Terminal)
  • Try restarting the terminal -- themes are applied on session initialization

Custom Theme Not Loading

  • Verify the JSON structure is valid -- all color values must be valid hex color strings (e.g., #1a1b26)
  • If using a base theme override, ensure the baseTheme ID matches a valid built-in theme ID (e.g., default, dracula, nord)
  • Check the developer console for any error messages during theme import

Font Rendering Issues

  • Ensure the selected font is installed on your system. If a font is not found, the terminal falls back to the default monospace font
  • On macOS, SF Mono may require Xcode or Terminal.app to be installed
  • If text appears blurry, try toggling GPU acceleration in Settings → Display → GPU Acceleration
  • Font ligatures only work with fonts that support them (JetBrains Mono, Fira Code, Cascadia Code). Other fonts will display characters normally

Colors Looking Wrong on Certain Displays

  • External monitors may have different color profiles that affect how theme colors appear. Calibrate your display or adjust the Minimum Contrast setting in Display settings
  • If dim colors are hard to read, increase the Minimum Contrast value to boost low-contrast text
  • Some themes (especially Solarized) are designed for specific gamma settings and may look washed out on uncalibrated displays

Per-Session Overrides Not Persisting

  • Ensure you click Save after changing session-specific appearance settings
  • Per-session settings are stored with the saved session. If you are using Quick Connect without saving, per-session overrides are not retained
  • In enterprise mode, administrator-pushed themes may override per-session settings