# Command Scripts#

Command scripts work similarly to generators - passing JSON to Avogadro to render a form interface and then perform work. In principal, the scripts can be written in any programming language, although most are currently written in Python.

This guide will cover the UI aspects of scripts, with separate discussion of generators and command operation elsewhere.

## Script Entry Points#

The script must handle the following command-line arguments:

• --debug Enable extra debugging output. Used with other commands. It is not required that the script support extra debugging, but it should not crash when this option is passed.

• --lang XX Display the user interface with a specific language or localization. It is not required that scripts support localization, but it should not crash when this option is passed.

• --print-options Print the available UI options supported by the script, e.g. simulation parameters, etc. See below for more details.

• --display-name Print a user-friendly name for the script. This is used in the GUI for menu entries, window titles, etc.

• --menu-path Print the expected menu path for the script, separated by “|” characters (e.g., “Extensions|Quantum” or “Build|Insert”). The final part of the menu path will include the display-name.

## Specifying UI options with –print-options#

The format of the --print-options output must be a JSON object of the following form:

{
"userOptions": {
...
},
"highlightStyles": [
{
"style": "Descriptive name",
"rules": [
{
"patterns": [ ... ],
"format": { ... }
},
...
],
},
...
],
"inputMoleculeFormat": "cjson"
}


The userOptions block contains a JSON object keyed with option names (e.g. “First option name”), which are used in the GUI to label simulation parameter settings. Various parameter types are supported.