Configuration Management
Terminal.Gui provides persistent configuration settings via the ConfigurationManager
class.
Configuration Lexicon and Taxonomy
Term | Meaning |
---|---|
AppSettings | Application-specific settings stored in the application's resources. |
Apply | Apply the configuration to the application; copies settings from configuration properties to corresponding static [ConfigProperty] properties. |
ConfigProperty | A property decorated with [ConfigProperty] that can be configured via the configuration system. |
Configuration | A collection of settings defining application behavior and appearance. |
ConfigurationManager | System that loads and manages application runtime settings from external sources. |
Load | Load configuration from given location(s), updating with new values. Loading doesn't apply settings automatically. |
Location | Storage location for configuration (e.g., user's home directory, application directory). |
Reset | Reset configuration to current values or hard-coded defaults. Does not load configuration. |
Scope | Defines the context where configuration applies (Settings, Theme, or AppSettings). |
Settings | Runtime options including both system settings and application-specific settings. |
Sources | Set of locations where configuration can be stored (ConfigLocations enum). |
Theme | Named instance containing specific appearance settings. |
ThemeInheritance | Mechanism where themes can inherit and override settings from other themes. |
Themes | Collection of named Theme definitions bundling visual and layout settings. |
Fundamentals
The ConfigurationManager
class provides a way to store and retrieve configuration settings for an application. The configuration is stored in JSON documents, which can be located in the user's home directory, the current working directory, in memory, or as a resource within the application's main assembly.
Settings are defined in JSON format, according to this schema: https://gui-cs.github.io/Terminal.GuiV2Docs/schemas/tui-config-schema.json.
Terminal.Gui library developers can define settings in code and set the default values in the Terminal.Gui assembly's resources (e.g. Terminal.Gui.Resources.config.json
).
Terminal.Gui application developers can define settings in their apps' code and set the default values in their apps' resources (e.g. Resources/config.json
) or by setting RuntimeConfig to string containing JSON.
Users can change settings on a global or per-application basis by providing JSON formatted configuration files. The configuration files can be placed in at .tui folder in the user's home directory (e.g. C:/Users/username/.tui
, or /usr/username/.tui
) or the folder where the Terminal.Gui application was launched from (e.g. ./.tui
).
CM is Disabled by Default
The ConfigurationManager
must be enabled explicitly by calling Enable(ConfigLocations) in an application's Main
method.
// Enable configuration with all sources
ConfigurationManager.Enable(ConfigLocations.All);
If ConfigurationManager.Enable()
is not called (ConfigurationManager.IsEnabled
is 'false'), all configuration settings are ignored and ConfigurationManager will effectively be a no-op. All [ConfigurationProperty]
properties will initially be their hard-coded default values.
Other than that, no other ConfigurationManager APIs will have any effect.
Loading and Applying Configuration
Optionally, developers can more granularly control the loading and applying of configuration by calling the Load
and Apply
methods directly.
When a configuration has been loaded, the Apply() method must be called to apply the settings to the application. This method uses reflection to find all static fields decorated with the [ConfigurationProperty]
attribute and applies the settings to the corresponding properties.
// Load the configuration from just the users home directory.
ConfigurationManager.Enable(ConfigLocations.HardCoded);
ConfigurationManager.Load(ConfigLocations.GlobalHome);
ConfigurationManager.Apply();
Important
Configuration Settings Apply at the Process Level. Configuration settings are applied at the process level, which means that they are applied to all applications that are part of the same process. This is due to the fact that configuration properties are defined as static fields, which are static for the process.
Configuration Types and Scopes
Terminal.Gui supports three main configuration scopes. See the section below titled What Can Be Configured for more details.
SettingsScope
System-level settings that affect Terminal.Gui behavior:
[ConfigurationProperty (Scope = typeof (SettingsScope))]
public static int MaxSearchResults { get; set; } = 10000;
ThemeScope
Visual appearance settings that can be themed:
[ConfigurationProperty (Scope = typeof (ThemeScope))]
public new static LineStyle DefaultBorderStyle { get; set; } = LineStyle.Single;
AppSettingsScope (default)
Application-specific settings:
[ConfigurationProperty] // AppSettingsScope is default
public static string MyAppSetting { get; set; } = "default";
Configuration Precedence
graph TD
A[Hard-coded Defaults] --> B[Terminal.Gui Defaults]
B --> C[Runtime Config]
C --> D[App Resources]
D --> E[App Home Directory]
E --> F[App Current Directory]
F --> G[Global Home Directory]
G --> H[Global Current Directory]
Settings are applied using the following precedence (higher precedence settings overwrite lower precedence settings):
HardCoded Hard-coded default values in any static property decorated with the
[ConfigurationProperty]
attribute.LibraryResources - Default settings in the Terminal.Gui assembly -- Lowest precedence.
Runtime - Settings stored in the RuntimeConfig static property.
AppResources - App settings in app resources (
Resources/config.json
).AppHome - App-specific settings in the users's home directory (
~/.tui/appname.config.json
).AppCurrent - App-specific settings in the directory the app was launched from (
./.tui/appname.config.json
).GlobalHome - Global settings in the the user's home directory (
~/.tui/config.json
).GlobalCurrent - Global settings in the directory the app was launched from (
./.tui/config.json
) --- Hightest precedence.
The ConfigurationManager
will look for configuration files in the .tui
folder in the user's home directory (e.g. C:/Users/username/.tui
or /usr/username/.tui
), the folder where the Terminal.Gui application was launched from (e.g. ./.tui
), or as a resource within the Terminal.Gui application's main assembly.
Settings that will apply to all applications (global settings) reside in files named config.json
. Settings that will apply to a specific Terminal.Gui application reside in files named appname.config.json
, where appname is the assembly name of the application (e.g. UICatalog.config.json
).
Configuration Events
The ConfigurationManager provides several events to track configuration changes:
// Called after configuration is applied
ConfigurationManager.Applied += (sender, e) => {
// Handle configuration changes
};
// Called when the active theme changes
ConfigurationManager.ThemeChanged += (sender, e) => {
// Handle theme changes
};
How Settings are Defined
Application developers define settings by decorating static properties with the [ConfigurationProperty]
attribute.
class MyApp
{
[ConfigurationProperty]
public static string MySetting { get; set; } = "Default Value";
}
Configuration Properties must be public
or internal
static
properties.
The above example will define a configuration property in the AppSettings
scope. The name of the property will be MyApp.MySetting
and will appear in JSON as:
{
"AppSettings": {
"MyApp.MySetting": "Default Value"
}
}
AppSettings
property names must be globally unique. To ensure this, the name of the AppSettings property is the name of the property prefixed with a period and the full name of the class that holds it. In the example above, the AppSettings property is named MyApp.MySetting
.
Terminal.Gui library developers can use the SettingsScope
and ThemeScope
attributes to define settings and themes for the terminal.Gui library.
Important
App developers cannot define SettingScope
or ThemeScope
properties.
/// <summary>
/// Gets or sets whether <see cref="Button"/>s are shown with a shadow effect by default.
/// </summary>
[ConfigurationProperty (Scope = typeof (ThemeScope))]
public static ShadowStyle DefaultShadow { get; set; } = ShadowStyle.None;
Sample Code
The UICatalog
application provides an example of how to use the ConfigurationManager
class to load and save configuration files.
The Configuration Editor
Scenario provides an editor that allows users to edit the configuration files. UI Catalog also uses a file system watcher to detect changes to the configuration files to tell ConfigurationManager
to reload them; allowing users to change settings without having to restart the application.
The Themes
Scenario in the UI Catalog provides a viewer for the themes defined in the configuration files.
What Can Be Configured
ConfigurationManager
provides the following features:
- Settings. Settings are applied to the
Application
class. Settings are accessed via theSettings
property ofConfigurationManager
. E.g.Settings["Application.QuitKey"]
- Themes. Themes are a named collection of settings impacting how applications look. The default theme is named "Default". Two other built-in themes are provided: "Dark", and "Light". Additional themes can be defined in the configuration files.
Settings ["Themes"]
is a dictionary of theme names to theme settings. - AppSettings. Applications can use the
ConfigurationManager
to store and retrieve application-specific settings.
Methods for discovering what can be configured are available in the ConfigurationManager
class:
- Call @Terminal.Gui.Configuration.ConfigurationManager.GetHardCodedConfig()
- Search the source code for
[ConfigurationProperty]
For complete schema details and examples, refer to:
- Schema: https://gui-cs.github.io/Terminal.GuiV2Docs/schemas/tui-config-schema.json
- Default configuration: Terminal.Gui/Resources/config.json
Themes
A Theme is a named collection of settings that impact the visual style of Terminal.Gui applications. The default theme is named "Default". The built-in configuration within the Terminal.Gui library defines two more themes: "Dark", and "Light". Additional themes can be defined in the configuration files. The JSON property Theme
defines the name of the theme that will be used. If the theme is not found, the default theme will be used.
Themes support defining Schemes (a set of colors and styles that define the appearance of views) as well as various default settings for Views. Both the default color schemes and user-defined color schemes can be configured. See Schemes for more information.
Theme Configuration
Themes provide a way to bundle visual settings together. When Apply() is called, the theme settings are applied to the application.
// ...
"Dark": {
"Dialog.DefaultButtonAlignment": "End",
"Dialog.DefaultButtonAlignmentModes": "AddSpaceBetweenItems",
"Dialog.DefaultBorderStyle": "Heavy",
"Dialog.DefaultShadow": "Transparent",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultButtonAlignment": "Center",
"MessageBox.DefaultBorderStyle": "Heavy",
"Button.DefaultShadow": "Opaque",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "LightGray",
"Background": "Black",
"Style": "None"
},
// etc...
Only properties that are defined in the theme will be applied, meaning that themes can be used to override the a previously applied theme.
To ensure a theme inherits from the default theme, first apply the default theme, then apply the new theme, like this:
// Apply the default theme
ThemeManager.Theme = "Default";
ConfigurationManager.Apply();
// Apply the new theme
ThemeManager.Theme = "MyCustomTheme";
ConfigurationManager.Apply();
Glyphs
Themes support changing the standard set of glyphs used by views (e.g. the default indicator for Button) and line drawing (e.g. LineCanvas).
The value can be either a decimal number or a string. The string may be:
- A Unicode char (e.g. "☑")
- A hex value in U+ format (e.g. "U+2611")
- A hex value in UTF-16 format (e.g. "\u2611")
"Glyphs.RightArrow": "►",
"Glyphs.LeftArrow": "U+25C4",
"Glyphs.DownArrow": "\\u25BC",
"Glyphs.UpArrow": 965010
The UI Catalog
application defines a UICatalog
Theme. Look at the UI Catalog's ./Resources/config.json
file to see how to define a theme.
Theme and Scheme Management
Terminal.Gui provides two key managers for handling visual themes and schemes:
The ThemeManager provides convenient methods for working with themes:
// Get the currently active theme
ThemeScope currentTheme = ThemeManager.GetCurrentTheme();
// Get all available themes
Dictionary<string, ThemeScope> themes = ThemeManager.GetThemes();
// Get list of theme names
ImmutableList<string> themeNames = ThemeManager.GetThemeNames();
// Get/Set current theme name
string currentThemeName = ThemeManager.GetCurrentThemeName();
ThemeManager.Theme = "Dark"; // Switch themes
// Listen for theme changes
ThemeManager.ThemeChanged += (sender, e) => {
// Handle theme changes
};
SchemeManager
The SchemeManager handles schemes within themes. Each theme contains multiple schemes for different UI contexts:
// Get current schemes
Dictionary<string, Scheme> schemes = SchemeManager.GetCurrentSchemes();
// Get list of scheme names
ImmutableList<string> schemeNames = SchemeManager.GetSchemeNames();
// Access specific schemes
Scheme topLevelScheme = SchemeManager.GetScheme("TopLevel");
// Listen for scheme changes
SchemeManager.CollectionChanged += (sender, e) => {
// Handle scheme changes
};
Built-in Schemes
The following Schemes are available by default:
- TopLevel: Used for the application's top-level windows
- Base: Default scheme for most views
- Dialog: Used for dialogs and message boxes
- Menu: Used for menus and status bars
- Error: Used for error messages and dialogs
Each Scheme defines the attributes for different VisualRoles.
Application Settings
Terminal.Gui provides several top-level application settings:
{
"Key.Separator": "+",
"Application.ArrangeKey": "Ctrl+F5",
"Application.Force16Colors": false,
"Application.IsMouseDisabled": false,
"Application.NextTabGroupKey": "F6",
"Application.NextTabKey": "Tab",
"Application.PrevTabGroupKey": "Shift+F6",
"Application.PrevTabKey": "Shift+Tab",
"Application.QuitKey": "Esc"
}
View-Specific Settings
Examples of settings that control specific view behaviors:
{
"PopoverMenu.DefaultKey": "Shift+F10",
"FileDialog.MaxSearchResults": 10000,
"FileDialogStyle.DefaultUseColors": false,
"FileDialogStyle.DefaultUseUnicodeCharacters": false
}
Key Bindings
Warning
Configuration Manager support for key bindings is not yet implemented.
Key bindings are defined in the KeyBindings
property of the configuration file. The value is an array of objects, each object defining a key binding. The key binding object has the following properties:
Key
: The key to bind to. The format is a string describing the key (e.g. "q", "Q, "Ctrl+Q"). Function keys are specified as "F1", "F2", etc.
Error Handling
{
"ConfigurationManager.ThrowOnJsonErrors": false
}
Set to true
to throw exceptions on JSON parsing errors instead of silent failures.
Configuration File Schema
Settings are defined in JSON format, according to the schema found here:
https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json
The Default Config File
To illustrate the syntax, the below is the config.json
file found in Terminal.Gui.dll
:
{
// Specifies the "source of truth" for default values for all Terminal.Gui settings managed by
// ConfigurationManager. It is automatically loaded, and applied, each time Application.Init
// is run (via the ConfigurationManager.Reset method).
//
// In other words, initial values set in the the codebase are always overwritten by the contents of this
// resource embedded in the Terminal.Gui.dll assembly.
//
// The Unit Test method "ConfigurationManagerTests.SaveDefaults" can be used to re-create the base of this file, but
// note that not all values here will be recreated (e.g. the Light and Dark themes and any property initialized
// null).
//
"$schema": "https://gui-cs.github.io/Terminal.GuiV2Docs/schemas/tui-config-schema.json",
// Set this to true in a .config file to be loaded to cause JSON parsing errors
// to throw exceptions.
"ConfigurationManager.ThrowOnJsonErrors": false,
// --------------- Application Settings ---------------
"Key.Separator": "+",
"Application.ArrangeKey": "Ctrl+F5",
"Application.Force16Colors": false,
//"Application.ForceDriver": "", // TODO: ForceDriver should be nullable
"Application.IsMouseDisabled": false,
"Application.NextTabGroupKey": "F6",
"Application.NextTabKey": "Tab",
"Application.PrevTabGroupKey": "Shift+F6",
"Application.PrevTabKey": "Shift+Tab",
"Application.QuitKey": "Esc",
// --------------- Colors ---------------
// --------------- View Specific Settings ---------------
"PopoverMenu.DefaultKey": "Shift+F10",
"FileDialog.MaxSearchResults": 10000,
"FileDialogStyle.DefaultUseColors": false,
"FileDialogStyle.DefaultUseUnicodeCharacters": false,
// --------------- Themes -----------------
"Themes": [
// We do not override any hard-coded properties for Default here;
// Default is by definition the same as hard-coded.
//{
// "Default": {
// }
//},
{
"TurboPascal 5": {
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "White",
"Background": "Blue"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "Yellow",
"Background": "Blue"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "Black",
"Background": "LightGray"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "Black",
"Background": "Cyan",
"Style": "None"
},
"Focus": {
"Foreground": "Black",
"Background": "LightGray",
"Style": "None"
},
"HotNormal": {
"Foreground": "BrightRed",
"Background": "Cyan",
"Style": "None"
},
"HotFocus": {
"Foreground": "BrightRed",
"Background": "LightGray",
"Style": "None"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Cyan",
"Style": "None"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "BrightRed",
"Background": "LightGray",
"Style": "None"
}
}
}
],
"Glyphs.CheckStateChecked": "☒",
"Glyphs.CheckStateNone": "□",
"Glyphs.CheckStateUnChecked": "☐",
"Glyphs.LeftBracket": "[",
"Glyphs.RightBracket": "]"
}
},
{
"Anders": {
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "WhiteSmoke",
"Background": "DimGray"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "White",
"Background": "DarkBlue"
}
},
},
{
"Dialog": {
"Normal": {
"Foreground": "BrightBlue",
"Background": "LightGray"
},
}
},
{
"Menu": {
"Normal": {
"Foreground": "White",
"Background": "Blue",
"Style": "Bold"
},
}
},
{
"Error": {
"Normal": {
"Foreground": "Red",
"Background": "WhiteSmoke",
"Style": "Italic"
},
}
}
],
"Glyphs.CheckStateChecked": "☒",
"Glyphs.CheckStateNone": "□",
"Glyphs.CheckStateUnChecked": "☐",
"Glyphs.LeftBracket": "[",
"Glyphs.RightBracket": "]"
}
},
{
"Dark": {
"Dialog.DefaultButtonAlignment": "End",
"Dialog.DefaultButtonAlignmentModes": "AddSpaceBetweenItems",
"Dialog.DefaultBorderStyle": "Heavy",
"Dialog.DefaultShadow": "Transparent",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultButtonAlignment": "Center",
"MessageBox.DefaultBorderStyle": "Heavy",
"Button.DefaultShadow": "Opaque",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "LightGray",
"Background": "Black",
"Style": "None"
},
"Focus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "None"
},
"HotNormal": {
"Foreground": "Silver",
"Background": "Black",
"Style": "Underline"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Black",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "Underline"
},
"Active": {
"Foreground": "White",
"Background": "Onyx",
"Style": "Bold"
},
"HotActive": {
"Foreground": "White",
"Background": "Onyx",
"Style": "Underline"
},
"Highlight": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "None"
},
"Editable": {
"Foreground": "LightYellow",
"Background": "Black",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "Black",
"Style": "Italic"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "LightGray",
"Background": "Black",
"Style": "None"
},
"Focus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "None"
},
"HotNormal": {
"Foreground": "Silver",
"Background": "Black",
"Style": "Underline"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Black",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "Underline"
},
"Active": {
"Foreground": "White",
"Background": "Onyx"
},
"HotActive": {
"Foreground": "White",
"Background": "Onyx",
"Style": "Underline"
},
"Highlight": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "None"
},
"Editable": {
"Foreground": "Gray",
"Background": "Black",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "Black",
"Style": "Italic"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "LightGray",
"Background": "Charcoal",
"Style": "None"
},
"Focus": {
"Foreground": "White",
"Background": "SlateGray",
"Style": "None"
},
"HotNormal": {
"Foreground": "Silver",
"Background": "Charcoal",
"Style": "Underline"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Charcoal",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "White",
"Background": "SlateGray",
"Style": "Underline"
},
"Active": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "Bold"
},
"HotActive": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "White",
"Background": "Onyx",
"Style": "None"
},
"Editable": {
"Foreground": "Gray",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "Charcoal",
"Style": "Italic"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "White",
"Background": "Onyx",
"Style": "Bold"
},
"Focus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "Bold"
},
"HotNormal": {
"Foreground": "Silver",
"Background": "Onyx",
"Style": "Underline,Bold"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Charcoal",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "White",
"Background": "Charcoal",
"Style": "Underline,Bold"
},
"Active": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "Bold"
},
"HotActive": {
"Foreground": "White",
"Background": "OuterSpace",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "White",
"Background": "SlateGray",
"Style": "None"
},
"Editable": {
"Foreground": "Gray",
"Background": "Onyx",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "Onyx",
"Style": "Italic"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "IndianRed",
"Background": "Black",
"Style": "None"
},
"Focus": {
"Foreground": "White",
"Background": "IndianRed",
"Style": "None"
},
"HotNormal": {
"Foreground": "LightCoral",
"Background": "Black",
"Style": "Underline"
},
"Disabled": {
"Foreground": "DarkGray",
"Background": "Black",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "White",
"Background": "IndianRed",
"Style": "Underline"
},
"Active": {
"Foreground": "White",
"Background": "LightCoral",
"Style": "Bold"
},
"HotActive": {
"Foreground": "White",
"Background": "LightCoral",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "White",
"Background": "IndianRed",
"Style": "None"
},
"Editable": {
"Foreground": "Gray",
"Background": "Black",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "Black",
"Style": "Italic"
}
}
}
]
}
},
{
"Light": {
"Dialog.DefaultButtonAlignment": "End",
"Dialog.DefaultButtonAlignmentModes": "AddSpaceBetweenItems",
"Dialog.DefaultBorderStyle": "Heavy",
"Dialog.DefaultShadow": "Transparent",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultButtonAlignment": "Center",
"MessageBox.DefaultBorderStyle": "Heavy",
"Button.DefaultShadow": "Opaque",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "DimGray",
"Background": "WhiteSmoke",
"Style": "None"
},
"Focus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "None"
},
"HotNormal": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Underline"
},
"Disabled": {
"Foreground": "LightGray",
"Background": "WhiteSmoke",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "Underline"
},
"Active": {
"Foreground": "Black",
"Background": "White",
"Style": "Bold"
},
"HotActive": {
"Foreground": "Black",
"Background": "White",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "LightGray",
"Style": "None"
},
"Editable": {
"Foreground": "Goldenrod",
"Background": "WhiteSmoke",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Italic"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "None"
},
"Focus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "None"
},
"HotNormal": {
"Foreground": "Silver",
"Background": "WhiteSmoke",
"Style": "Underline"
},
"Disabled": {
"Foreground": "LightGray",
"Background": "WhiteSmoke",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "Underline"
},
"Active": {
"Foreground": "Black",
"Background": "White",
"Style": "Bold"
},
"HotActive": {
"Foreground": "Black",
"Background": "White",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "LightGray",
"Style": "None"
},
"Editable": {
"Foreground": "Goldenrod",
"Background": "WhiteSmoke",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Italic"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "DimGray",
"Background": "WhiteSmoke",
"Style": "None"
},
"Focus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "None"
},
"HotNormal": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Underline"
},
"Disabled": {
"Foreground": "LightGray",
"Background": "WhiteSmoke",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "Underline"
},
"Active": {
"Foreground": "Black",
"Background": "White",
"Style": "Bold"
},
"HotActive": {
"Foreground": "Black",
"Background": "White",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "LightGray",
"Style": "None"
},
"Editable": {
"Foreground": "Black",
"Background": "LemonChiffon",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Italic"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "DimGray",
"Background": "White",
"Style": "Bold"
},
"Focus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "Bold"
},
"HotNormal": {
"Foreground": "Gray",
"Background": "White",
"Style": "Underline,Bold"
},
"Disabled": {
"Foreground": "LightGray",
"Background": "WhiteSmoke",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "Black",
"Background": "Gainsboro",
"Style": "Underline,Bold"
},
"Active": {
"Foreground": "Black",
"Background": "WhiteSmoke",
"Style": "Bold"
},
"HotActive": {
"Foreground": "Black",
"Background": "WhiteSmoke",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "LightGray",
"Style": "None"
},
"Editable": {
"Foreground": "DimGray",
"Background": "White",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "White",
"Style": "Italic"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "FireBrick",
"Background": "WhiteSmoke",
"Style": "None"
},
"Focus": {
"Foreground": "WhiteSmoke",
"Background": "FireBrick",
"Style": "None"
},
"HotNormal": {
"Foreground": "LightCoral",
"Background": "WhiteSmoke",
"Style": "Underline"
},
"Disabled": {
"Foreground": "LightGray",
"Background": "WhiteSmoke",
"Style": "Faint"
},
"HotFocus": {
"Foreground": "WhiteSmoke",
"Background": "FireBrick",
"Style": "Underline"
},
"Active": {
"Foreground": "WhiteSmoke",
"Background": "LightCoral",
"Style": "Bold"
},
"HotActive": {
"Foreground": "WhiteSmoke",
"Background": "LightCoral",
"Style": "Underline,Bold"
},
"Highlight": {
"Foreground": "WhiteSmoke",
"Background": "FireBrick",
"Style": "None"
},
"Editable": {
"Foreground": "Goldenrod",
"Background": "WhiteSmoke",
"Style": "None"
},
"ReadOnly": {
"Foreground": "Gray",
"Background": "WhiteSmoke",
"Style": "Italic"
}
}
}
]
}
},
{
"Green Phosphor": {
"Dialog.DefaultShadow": "None",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultBorderStyle": "Single",
"Button.DefaultShadow": "None",
"Menuv2.DefaultBorderStyle": "Single",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "None"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "None"
},
"Active": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "Bold"
},
"Highlight": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Editable": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "Bold"
},
"Active": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "None"
},
"Editable": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "Bold"
},
"Active": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "GreenPhosphor",
"Style": "None"
},
"Editable": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Active": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "Bold,Italic"
},
"Highlight": {
"Foreground": "GreenPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Editable": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "Italic"
},
"ReadOnly": {
"Foreground": "GreenPhosphor",
"Background": "Charcoal",
"Style": "Faint,Italic"
}
}
}
]
}
},
{
"Amber Phosphor": {
"Dialog.DefaultShadow": "None",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultBorderStyle": "Single",
"Button.DefaultShadow": "None",
"Menuv2.DefaultBorderStyle": "Single",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "None"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "None"
},
"Active": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "Bold"
},
"Highlight": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Editable": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "Bold"
},
"Active": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "None"
},
"Editable": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "Bold"
},
"Active": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "Bold"
},
"Highlight": {
"Foreground": "Black",
"Background": "AmberPhosphor",
"Style": "None"
},
"Editable": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "None"
},
"ReadOnly": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "Faint"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Active": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "Bold,Italic"
},
"Highlight": {
"Foreground": "AmberPhosphor",
"Background": "Black",
"Style": "Italic"
},
"Editable": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "Italic"
},
"ReadOnly": {
"Foreground": "AmberPhosphor",
"Background": "Charcoal",
"Style": "Faint,Italic"
}
}
}
]
}
},
{
"8-Bit": {
"Dialog.DefaultShadow": "None",
"FrameView.DefaultBorderStyle": "Single",
"Window.DefaultBorderStyle": "Single",
"MessageBox.DefaultBorderStyle": "Single",
"Button.DefaultShadow": "None",
"Menuv2.DefaultBorderStyle": "None",
"Glyphs.LeftBracket": "[",
"Glyphs.RightBracket": "]",
"Glyphs.CheckStateChecked": "X",
"Glyphs.CheckStateUnChecked": "O",
"Glyphs.CheckStateNone": " ",
"Glyphs.Selected": "*",
"Glyphs.UnSelected": " ",
"Glyphs.RightArrow": ">",
"Glyphs.LeftArrow": "<",
"Glyphs.DownArrow": "v",
"Glyphs.UpArrow": "^",
"Glyphs.LeftDefaultIndicator": ">",
"Glyphs.RightDefaultIndicator": "<",
"Glyphs.BlocksMeterSegment": "#",
"Glyphs.ContinuousMeterSegment": " ",
"Glyphs.Stipple": ".",
"Glyphs.Diamond": "+",
"Glyphs.Close": "X",
"Glyphs.Minimize": "_",
"Glyphs.Maximize": "^",
"Glyphs.Dot": ".",
"Glyphs.DottedSquare": "#",
"Glyphs.BlackCircle": "O",
"Glyphs.Expand": "+",
"Glyphs.Collapse": "-",
"Glyphs.IdenticalTo": "=",
"Glyphs.Move": "+",
"Glyphs.SizeHorizontal": "-",
"Glyphs.SizeVertical": "|",
"Glyphs.SizeTopLeft": "/",
"Glyphs.SizeTopRight": "\\",
"Glyphs.SizeBottomRight": "/",
"Glyphs.SizeBottomLeft": "\\",
"Glyphs.Apple": "@",
"Glyphs.AppleBMP": "@",
"Glyphs.HLine": "-",
"Glyphs.VLine": "|",
"Glyphs.HLineDbl": "=",
"Glyphs.VLineDbl": "|",
"Glyphs.HLineHvDa2": "-",
"Glyphs.VLineHvDa2": "|",
"Glyphs.HLineHvDa3": "-",
"Glyphs.VLineHvDa3": "|",
"Glyphs.HLineHvDa4": "-",
"Glyphs.VLineHvDa4": "|",
"Glyphs.HLineDa2": "-",
"Glyphs.VLineDa2": "|",
"Glyphs.HLineDa3": "-",
"Glyphs.VLineDa3": "|",
"Glyphs.HLineDa4": "-",
"Glyphs.VLineDa4": "|",
"Glyphs.HLineHv": "=",
"Glyphs.VLineHv": "|",
"Glyphs.HalfLeftLine": "-",
"Glyphs.HalfTopLine": "|",
"Glyphs.HalfRightLine": "-",
"Glyphs.HalfBottomLine": "|",
"Glyphs.HalfLeftLineHv": "-",
"Glyphs.HalfTopLineHv": "|",
"Glyphs.HalfRightLineHv": "-",
"Glyphs.HalfBottomLineLt": "|",
"Glyphs.RightSideLineLtHv": "-",
"Glyphs.BottomSideLineLtHv": "|",
"Glyphs.LeftSideLineHvLt": "-",
"Glyphs.TopSideLineHvLt": "|",
"Glyphs.ULCorner": "+",
"Glyphs.ULCornerDbl": "+",
"Glyphs.ULCornerR": "+",
"Glyphs.ULCornerHv": "+",
"Glyphs.ULCornerHvLt": "+",
"Glyphs.ULCornerLtHv": "+",
"Glyphs.ULCornerDblSingle": "+",
"Glyphs.ULCornerSingleDbl": "+",
"Glyphs.LLCorner": "+",
"Glyphs.LLCornerHv": "+",
"Glyphs.LLCornerHvLt": "+",
"Glyphs.LLCornerLtHv": "+",
"Glyphs.LLCornerDbl": "+",
"Glyphs.LLCornerSingleDbl": "+",
"Glyphs.LLCornerDblSingle": "+",
"Glyphs.LLCornerR": "+",
"Glyphs.URCorner": "+",
"Glyphs.URCornerDbl": "+",
"Glyphs.URCornerR": "+",
"Glyphs.URCornerHv": "+",
"Glyphs.URCornerHvLt": "+",
"Glyphs.URCornerLtHv": "+",
"Glyphs.URCornerDblSingle": "+",
"Glyphs.URCornerSingleDbl": "+",
"Glyphs.LRCorner": "+",
"Glyphs.LRCornerDbl": "+",
"Glyphs.LRCornerR": "+",
"Glyphs.LRCornerHv": "+",
"Glyphs.LRCornerDblSingle": "+",
"Glyphs.LRCornerSingleDbl": "+",
"Glyphs.LRCornerLtHv": "+",
"Glyphs.LRCornerHvLt": "+",
"Glyphs.LeftTee": "+",
"Glyphs.LeftTeeDblH": "+",
"Glyphs.LeftTeeDblV": "+",
"Glyphs.LeftTeeDbl": "+",
"Glyphs.LeftTeeHvH": "+",
"Glyphs.LeftTeeHvV": "+",
"Glyphs.LeftTeeHvDblH": "+",
"Glyphs.RightTee": "+",
"Glyphs.RightTeeDblH": "+",
"Glyphs.RightTeeDblV": "+",
"Glyphs.RightTeeDbl": "+",
"Glyphs.RightTeeHvH": "+",
"Glyphs.RightTeeHvV": "+",
"Glyphs.RightTeeHvDblH": "+",
"Glyphs.TopTee": "+",
"Glyphs.TopTeeDblH": "+",
"Glyphs.TopTeeDblV": "+",
"Glyphs.TopTeeDbl": "+",
"Glyphs.TopTeeHvH": "+",
"Glyphs.TopTeeHvV": "+",
"Glyphs.TopTeeHvDblH": "+",
"Glyphs.BottomTee": "+",
"Glyphs.BottomTeeDblH": "+",
"Glyphs.BottomTeeDblV": "+",
"Glyphs.BottomTeeDbl": "+",
"Glyphs.BottomTeeHvH": "+",
"Glyphs.BottomTeeHvV": "+",
"Glyphs.BottomTeeHvDblH": "+",
"Glyphs.Cross": "+",
"Glyphs.CrossDblH": "+",
"Glyphs.CrossDblV": "+",
"Glyphs.CrossDbl": "+",
"Glyphs.CrossHvH": "+",
"Glyphs.CrossHvV": "+",
"Glyphs.CrossHv": "+",
"Glyphs.ShadowVerticalStart": "|",
"Glyphs.ShadowVertical": "|",
"Glyphs.ShadowHorizontalStart": "-",
"Glyphs.ShadowHorizontal": "-",
"Glyphs.ShadowHorizontalEnd": "-",
"Schemes": [
{
"TopLevel": {
"Normal": {
"Foreground": "White",
"Background": "Black"
},
"Focus": {
"Foreground": "Black",
"Background": "White"
},
"HotNormal": {
"Foreground": "Black",
"Background": "White"
},
"HotFocus": {
"Foreground": "White",
"Background": "Black"
},
"Disabled": {
"Foreground": "Black",
"Background": "Black"
},
"Active": {
"Foreground": "Black",
"Background": "White"
},
"HotActive": {
"Foreground": "White",
"Background": "Black"
},
"Highlight": {
"Foreground": "Black",
"Background": "White"
},
"Editable": {
"Foreground": "White",
"Background": "Black"
},
"ReadOnly": {
"Foreground": "White",
"Background": "Black"
}
}
},
{
"Base": {
"Normal": {
"Foreground": "White",
"Background": "Black"
},
"Focus": {
"Foreground": "Black",
"Background": "White"
},
"HotNormal": {
"Foreground": "Black",
"Background": "White"
},
"HotFocus": {
"Foreground": "White",
"Background": "Black"
},
"Disabled": {
"Foreground": "Black",
"Background": "Black"
},
"Active": {
"Foreground": "Black",
"Background": "White"
},
"HotActive": {
"Foreground": "White",
"Background": "Black"
},
"Highlight": {
"Foreground": "Black",
"Background": "White"
},
"Editable": {
"Foreground": "White",
"Background": "Black"
},
"ReadOnly": {
"Foreground": "White",
"Background": "Black"
}
}
},
{
"Dialog": {
"Normal": {
"Foreground": "Black",
"Background": "White"
},
"Focus": {
"Foreground": "White",
"Background": "Black"
},
"HotNormal": {
"Foreground": "White",
"Background": "Black"
},
"HotFocus": {
"Foreground": "Black",
"Background": "White"
},
"Disabled": {
"Foreground": "White",
"Background": "White"
},
"Active": {
"Foreground": "White",
"Background": "Black"
},
"HotActive": {
"Foreground": "Black",
"Background": "White"
},
"Highlight": {
"Foreground": "White",
"Background": "Black"
},
"Editable": {
"Foreground": "Black",
"Background": "White"
},
"ReadOnly": {
"Foreground": "Black",
"Background": "White"
}
}
},
{
"Menu": {
"Normal": {
"Foreground": "Black",
"Background": "White"
},
"Focus": {
"Foreground": "White",
"Background": "Black"
},
"HotNormal": {
"Foreground": "White",
"Background": "Black"
},
"HotFocus": {
"Foreground": "Black",
"Background": "White"
},
"Disabled": {
"Foreground": "White",
"Background": "White"
},
"Active": {
"Foreground": "White",
"Background": "Black"
},
"HotActive": {
"Foreground": "Black",
"Background": "White"
},
"Highlight": {
"Foreground": "White",
"Background": "Black"
},
"Editable": {
"Foreground": "Black",
"Background": "White"
},
"ReadOnly": {
"Foreground": "Black",
"Background": "White"
}
}
},
{
"Error": {
"Normal": {
"Foreground": "White",
"Background": "Black"
},
"Focus": {
"Foreground": "Black",
"Background": "White"
},
"HotNormal": {
"Foreground": "Black",
"Background": "White"
},
"HotFocus": {
"Foreground": "White",
"Background": "Black"
},
"Disabled": {
"Foreground": "Black",
"Background": "Black"
},
"Active": {
"Foreground": "Black",
"Background": "White"
},
"HotActive": {
"Foreground": "White",
"Background": "Black"
},
"Highlight": {
"Foreground": "Black",
"Background": "White"
},
"Editable": {
"Foreground": "White",
"Background": "Black"
},
"ReadOnly": {
"Foreground": "White",
"Background": "Black"
}
}
}
]
}
}
]
}