config
The config command reads, writes, and deletes configuration settings for the server, the application, users, and individual devices. Some options apply only to the server; others apply app-wide with per-device or per-user overrides.
| Command Type | DisplayNet |
| Minimum Version | 2.x.x |
Usage
config get <scope_identifier> <config_name>
config set <scope_identifier> <config_name> <config_value>
config delete <scope_identifier> <config_name>
Subcommands
| Subcommand | Description |
|---|---|
get | Retrieves one or more settings. Wildcards (*) are allowed for the scope and/or the config name |
set | Sets the value of a setting in the given scope |
delete | Removes a setting. If the setting has a default value it returns to that default; otherwise the value becomes null (signaled via notification), indicating the client can delete it |
Scopes
Every configuration item has a scope, a configuration name, and a value. The scope is the area of the application the setting affects:
| Scope | Scope name | Scope identifier | Notes |
|---|---|---|---|
| Domain | DisplayNet.Domain | app | Application-level behavior of API commands, for example dev.DefaultDisplayMode sets the default display mode used by connect |
| Device | DisplayNet.Device | <mac address> or <devicename> | Per-device overrides of Domain settings |
| User | DisplayNet.User | user | Per-user behavior, regardless of session. Custom keys can be stored here for client-defined behavior |
| Server | DisplayNet.Server | server | Server configuration. Some items are read-only; writable items require an Administrator |
When a setting exists at multiple scopes, resolution is: Domain overrides default behavior, Device overrides Domain (where applicable), and User overrides both. The Server scope holds server-only settings and sits outside this hierarchy. Some commands (such as connect) can also override a configured default directly, regardless of scope.
Configuration names
A full list of configuration names is available in the Configuration Name Reference. By convention:
- Names affecting application functionality begin with
app.(e.g.app.LoggingLevel). - Names affecting application behavior for a device begin with
dev.(e.g.dev.DefaultResolution).
Not all settings strictly follow the convention. Refer to the reference for specifics.
Examples
Read one application settingconfig get app app.LoggingLevel
Read every setting on a deviceconfig get 6cdafc00487f *
Find a setting across all scopesconfig get * dev.DefaultResolution
Set a per-device default display modeconfig set 6cdafc00487f dev.DefaultDisplayMode Genlock
Remove a device descriptionconfig delete 6cdafc00487f dev.Description
Return value
- config get
- config set
- config delete
config get app app.LoggingLevel{
"status": "SUCCESS",
"request_id": null,
"result": {
"configurations": [
{
"scope": "DisplayNet.Domain",
"configkey": "app",
"keyname": "app.LoggingLevel",
"value": "error"
}
]
},
"error": null
}
A setting with no stored value returns an empty array, not a row carrying the default:
config get TESTRX dev.Locked, on a device that is not locked{
"status": "SUCCESS",
"request_id": null,
"result": {
"configurations": []
},
"error": null
}
A wildcard returns one row per scope that has a value:
config get * dev.DefaultDisplayMode{
"status": "SUCCESS",
"request_id": null,
"result": {
"configurations": [
{
"scope": "DisplayNet.Domain",
"configkey": "app",
"keyname": "dev.DefaultDisplayMode",
"value": "fastswitch"
},
{
"scope": "DisplayNet.Device",
"configkey": "6cdffb01f5ba",
"keyname": "dev.DefaultDisplayMode",
"value": "fastswitch"
}
]
},
"error": null
}
config set app app.LoggingLevel Information{
"status": "SUCCESS",
"request_id": null,
"result": null,
"error": null
}
config delete 6cdffb00387f dev.Description{
"status": "SUCCESS",
"request_id": null,
"result": null,
"error": null
}
State and side effects
- The value is persisted. This is the difference from an SDVoE
set, which changes a device's running state but stores nothing. The SDVoE value is lost on a factory reset or a device swap, while a DisplayNet configuration value is reapplied. - A write is not confined to the device you named. Values resolve through the scope hierarchy above, so a write at Domain scope becomes the default for every device that has no value of its own.
- Configuration outlives the device it describes.
replacemigratesconfigsfrom a failed unit onto its replacement, so a setting written today can reappear on hardware that is not in the system yet.
Notifications
In async mode, configuration changes are pushed to all applicable clients:
- config set
- config delete
config set app app.LoggingLevel Information{
"status": "DN_NOTIFICATION",
"request_id": null,
"result": {
"configurations": [
{
"scope": "DisplayNet.Domain",
"configkey": "app",
"keyname": "app.LoggingLevel",
"value": "Information"
}
]
},
"error": null
}
config delete 6cdffb00387f dev.Description{
"status": "DN_NOTIFICATION",
"request_id": null,
"result": {
"configurations": [
{
"scope": "DisplayNet.Device",
"configkey": "6cdffb00387f",
"keyname": "dev.Description",
"value": null
}
]
},
"error": null
}
REST API
| Endpoint type | DisplayNet API command |
|---|---|
| Address | POST /api/displaynet/<operation>, or name the operation in the body of a POST /api/displaynet. See Sending commands. |
| Role | User |
| Subcommand | Operation | Parameters |
|---|---|---|
delete | config_delete | target key |
get | config_get | target key |
set | config_set | target key value* |
A parameter marked * takes the remainder of the command line as one string. Pass the text exactly as you would type it on the TCI interface.
See also
- Configuration Name Reference: every available configuration name
getinitdata: bulk-fetch configurations on client startup