Themes
The themes directory in an extension should contain one or more theme files.
Each theme file should adhere to the JSON schema specified at https://zed.dev/schema/themes/v0.2.0.json.
See this blog post for additional background on creating themes.
Theme JSON Structure
The structure of a Zed theme is defined in the Zed Theme JSON Schema.
A Zed theme consists of a Theme Family object including:
name: The name for the theme familyauthor: The name of the author of the theme familythemes: An array of Themes belonging to the theme family
The core components of a Theme object include:
-
Theme Metadata:
name: The name of the themeappearance: Either "light" or "dark"
-
Style Properties under the
style, such as:background: The main background colorforeground: The main text coloraccent: The accent color used for highlighting and emphasis
-
Syntax Highlighting:
syntax: An object containing color definitions for various syntax elements (e.g., keywords, strings, comments)
-
UI Elements:
- Colors for various UI components such as:
element.background: Background color for UI elementsborder: Border colors for different states (normal, focused, selected)text: Text colors for different states (normal, muted, accent)
- Colors for various UI components such as:
-
Editor-specific Colors:
- Colors for editor-related elements such as:
editor.background: Editor background coloreditor.gutter: Gutter colorseditor.line_number: Line number colors
- Colors for editor-related elements such as:
-
Terminal Colors:
- ANSI color definitions for the integrated terminal
Designing Your Theme
You can use Zed's Theme Builder to design your own custom theme based on an existing one.
This tool lets you fine-tune and preview how surfaces in Zed will look. You can then export the JSON and publish it in Zed's extension store.