Themes & Customization
ProfessionalCustomize 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
- 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.
- 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.
- 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.
- 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 Property | Purpose |
|---|---|
background | Terminal background color |
foreground | Default text color |
cursor / cursorAccent | Cursor and cursor text colors |
selectionBackground | Text selection highlight |
black through white | Standard 8 ANSI colors |
brightBlack through brightWhite | Bright 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
| Font | Notes |
|---|---|
| Menlo | macOS default, clean and readable |
| Monaco | Classic macOS monospace |
| Consolas | Windows default, excellent clarity |
| SF Mono | Apple's modern monospace |
| Fira Code | Popular with ligature support |
| JetBrains Mono | Excellent for code, built-in ligatures |
| Source Code Pro | Clean Adobe monospace |
| Ubuntu Mono | Linux default, distinctive style |
| IBM Plex Mono | IBM's modern monospace |
| Cascadia Code | Microsoft's coding font with ligatures |
| Hack | Designed for source code, great readability |
Step-by-Step Guide
Workflow 1: Switching Between Built-in Themes
- Open Settings (
Cmd/Ctrl+,) - Navigate to Appearance → Theme
- Select a theme from the dropdown -- the terminal preview updates immediately
- Try Cisco Blue for network engineering work, or Nord for a low-contrast late-night option
- Close settings -- the theme is saved automatically
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
- Open Settings (
Cmd/Ctrl+,) - Navigate to the Terminal settings tab
- Select a font family from the dropdown (e.g., JetBrains Mono or Fira Code)
- Adjust font size -- changes preview in real time on the terminal
- Configure cursor style (block, underline, or bar) and blink behavior
- Set scrollback buffer size (default 10,000 lines, up to 100,000)
- Toggle GPU acceleration, smooth scrolling, and window opacity as needed
Workflow 3: Creating Per-Session Appearance Profiles
- Right-click the session tab you want to customize
- Select Session Settings
- Navigate to the Terminal tab
- Select a different theme from the dropdown (e.g., use a red-tinted theme for production devices)
- Optionally change the font family or size for this specific session
- Click Save -- this session will use these settings instead of the global defaults
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:
{
"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.
{
"baseTheme": "default",
"background": "#0d1117",
"foreground": "#c9d1d9",
"cursor": "#58a6ff"
}Per-Session Environment Profiles
# 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 workHow 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:
# 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 addressesFull Custom Theme Definition
{
"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
#00d26aand 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
baseThemeID 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
Related Features
- Terminal Overview -- explore the terminal interface that themes customize
- Keyboard Shortcuts -- learn shortcuts for quickly switching themes and adjusting font size
- Connecting to Devices -- understand session settings where per-session themes are configured
- Device Types -- see how device detection works with theme-based color rendering