██████╗ ██████╗ ██████╗ ██████╗
██╔══██╗██╔════╝ ██╔═══██╗██╔══██╗
██║ ██║██║ ███╗██║ ██║██████╔╝
██║ ██║██║ ██║██║ ██║██╔═══╝
██████╔╝╚██████╔╝╚██████╔╝██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
DGOP Configuration
API
For the API, you can set the following environment variable to override the port of the http server:
API_PORT(defaults to63484)
Colors
dgop will ready colors from ~/.config/dgop/colors.json:
Example:
{
"ui": {
"border_primary": "#ccbeff",
"border_secondary": "#cac3dc",
"header_background": "#ccbeff",
"header_text": "#33275e",
"footer_background": "#141318",
"footer_text": "#cac4cf",
"text_primary": "#e6e1e9",
"text_secondary": "#cac4cf",
"text_accent": "#ccbeff",
"selection_background": "#ccbeff",
"selection_text": "#33275e"
},
"charts": {
"network_download": "#ccbeff",
"network_upload": "#4a3e76",
"network_line": "#cac3dc",
"cpu_core_low": "#4a3e76",
"cpu_core_medium": "#ccbeff",
"cpu_core_high": "#eeb8ca",
"disk_read": "#ccbeff",
"disk_write": "#4a3e76"
},
"progress_bars": {
"memory_low": "#4a3e76",
"memory_medium": "#ccbeff",
"memory_high": "#eeb8ca",
"disk_low": "#4a3e76",
"disk_medium": "#ccbeff",
"disk_high": "#eeb8ca",
"cpu_low": "#4a3e76",
"cpu_medium": "#ccbeff",
"cpu_high": "#eeb8ca",
"progress_background": "#201f24"
},
"temperature": {
"cold": "#4a3e76",
"warm": "#ccbeff",
"hot": "#eeb8ca",
"danger": "#ffb4ab"
},
"status": {
"success": "#22C55E",
"warning": "#F59E0B",
"error": "#ffb4ab",
"info": "#ccbeff"
}
}
matugen template
Below is a template that can be used with matugen:
{
"ui": {
"border_primary": "{{colors.primary.default.hex}}",
"border_secondary": "{{colors.secondary.default.hex}}",
"header_background": "{{colors.primary.default.hex}}",
"header_text": "{{colors.on_primary.default.hex}}",
"footer_background": "{{colors.surface_container.default.hex}}",
"footer_text": "{{colors.on_surface_variant.default.hex}}",
"text_primary": "{{colors.on_surface.default.hex}}",
"text_secondary": "{{colors.on_surface_variant.default.hex}}",
"text_accent": "{{colors.primary.default.hex}}",
"selection_background": "{{colors.primary.default.hex}}",
"selection_text": "{{colors.on_primary.default.hex}}"
},
"charts": {
"network_download": "{{colors.primary.default.hex}}",
"network_upload": "{{colors.primary_container.default.hex}}",
"network_line": "{{colors.secondary.default.hex}}",
"cpu_core_low": "{{colors.primary_container.default.hex}}",
"cpu_core_medium": "{{colors.primary.default.hex}}",
"cpu_core_high": "{{colors.tertiary.default.hex}}",
"disk_read": "{{colors.primary.default.hex}}",
"disk_write": "{{colors.primary_container.default.hex}}"
},
"progress_bars": {
"memory_low": "{{colors.primary_container.default.hex}}",
"memory_medium": "{{colors.primary.default.hex}}",
"memory_high": "{{colors.tertiary.default.hex}}",
"disk_low": "{{colors.primary_container.default.hex}}",
"disk_medium": "{{colors.primary.default.hex}}",
"disk_high": "{{colors.tertiary.default.hex}}",
"cpu_low": "{{colors.primary_container.default.hex}}",
"cpu_medium": "{{colors.primary.default.hex}}",
"cpu_high": "{{colors.tertiary.default.hex}}",
"progress_background": "{{colors.surface_container_high.default.hex}}"
},
"temperature": {
"cold": "{{colors.primary_container.default.hex}}",
"warm": "{{colors.primary.default.hex}}",
"hot": "{{colors.tertiary.default.hex}}",
"danger": "{{colors.error.default.hex}}"
},
"status": {
"success": "#22C55E",
"warning": "#F59E0B",
"error": "{{colors.error.default.hex}}",
"info": "{{colors.primary.default.hex}}"
}
}
Keybinds
The interactive TUI reads keybinds from ~/.config/dgop/keybinds.json. The file is created with the defaults on first run, and changes are hot-reloaded while dgop is running.
Custom keys are additive: any keys you set are added on top of the built-in defaults, so the default arrow/vim keys keep working. This makes it easy to add bindings for alternative keyboard layouts (e.g. Colemak-DH) without losing the defaults.
Each action maps to a list of keys. Special keys use the names up, down, left, right, enter, esc, and modifiers like ctrl+c.
Default keybinds.json:
{
"quit": ["q", "ctrl+c"],
"refresh": ["r"],
"details": ["d"],
"kill": ["x"],
"group": ["g"],
"sortCPU": ["c"],
"sortMemory": ["m"],
"sortName": ["n"],
"sortPID": ["p"],
"navUp": ["up", "k"],
"navDown": ["down", "j"],
"selectLeft": ["left", "h"],
"selectRight": ["right", "l"],
"confirm": ["enter"],
"cancel": ["esc", "escape"]
}
Actions
| Action | Description |
|---|---|
quit | Exit the TUI |
refresh | Force a data refresh |
details | Toggle the process details panel |
kill | Open the kill confirmation for the selected process |
group | Toggle grouping of child processes |
sortCPU | Sort processes by CPU usage |
sortMemory | Sort processes by memory usage |
sortName | Sort processes by name |
sortPID | Sort processes by PID |
navUp / navDown | Move the process selection up/down |
selectLeft / selectRight | Move between options in the kill confirmation |
confirm | Confirm the kill action |
cancel | Dismiss the kill confirmation |
Example: Colemak-DH navigation
Add your layout's home-row keys for navigation. The defaults (j/k, arrows) still work alongside them:
{
"navUp": ["e"],
"navDown": ["n"]
}
You only need to include the actions you want to extend — omitted actions keep their defaults.
Troubleshooting
Common Issues
API not starting:
- Check port availability:
netstat -tlnp | grep :63484 - Check logs
Next Steps
- Usage - Learn CLI commands and API usage