Table of Contents

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):

  1. HardCoded Hard-coded default values in any static property decorated with the [ConfigurationProperty] attribute.

  2. LibraryResources - Default settings in the Terminal.Gui assembly -- Lowest precedence.

  3. Runtime - Settings stored in the RuntimeConfig static property.

  4. AppResources - App settings in app resources (Resources/config.json).

  5. AppHome - App-specific settings in the users's home directory (~/.tui/appname.config.json).

  6. AppCurrent - App-specific settings in the directory the app was launched from (./.tui/appname.config.json).

  7. GlobalHome - Global settings in the the user's home directory (~/.tui/config.json).

  8. 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:

  1. Settings. Settings are applied to the Application class. Settings are accessed via the Settings property of ConfigurationManager. E.g. Settings["Application.QuitKey"]
  2. 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.
  3. 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:

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"
              }
            }
          }
        ]

      }
    }
  ]
}