Skip to content

Configuration - Config File, Themes & Startup Tabs

lazyaz stores its configuration in ~/.config/lazyaz/ (or $XDG_CONFIG_HOME/lazyaz/ if set).

The main config file is config.json:

{
"theme": "Default Dark",
"download_dir": "~/Downloads",
"nerdfonts": true,
"tabs": [
{ "kind": "blob", "subscription": "<subscription-id>" },
{ "kind": "servicebus", "subscription": "<subscription-id>" },
{ "kind": "keyvault" },
{ "kind": "dashboard" }
]
}

When tabs are configured, lazyaz opens directly into those tabs on launch instead of showing the subscription picker. Recognised kind values are blob, servicebus, keyvault, and dashboard.

Controls whether tab badges use Nerd Font glyphs (default) or terminal-safe Unicode fallbacks. Set "nerdfonts": false if your terminal isn’t using a Nerd Font — there’s no reliable runtime detection, so the choice is config-driven.

Theme files live in ~/.config/lazyaz/themes/ as Base16 YAML schemes. Stock themes (Tokyo Night, Rose Pine, Bamboo, and more — 300+ in total) are written to this directory on every launch to pick up format changes, so edits to stock theme files are overwritten. To customize a stock theme, copy it to a new filename first. Any .yaml file in the directory whose name doesn’t collide with a stock theme is picked up untouched.

Switch themes at runtime with T.

Keybinding files live in ~/.config/lazyaz/keymaps/ as JSON files. The default.json keymap uses vim-style navigation and is written on first run.

To switch to a different keymap, set keymap in config.json:

{ "keymap": "standard" }

To override individual bindings, edit the file or create a new one. Each key in the JSON maps an action name to an array of key strings:

{
"name": "custom",
"bindings": {
"quit": ["ctrl+c"],
"next_focus": ["tab"],
"open_focused": ["enter", "l"]
}
}

You can also inline a bindings object directly in config.json to override specific actions of the active keymap without keeping a separate file:

{
"keymap": "default",
"bindings": {
"subscription_picker": ["s"]
}
}

Only the bindings you specify are overridden — everything else keeps its default. See Keymaps for the full action reference.