nvrl 87ced5a47c
All checks were successful
Version Check / check-version (pull_request) Successful in 3s
Update Cargo.toml
2026-03-17 15:06:32 +01:00
2026-03-16 17:41:22 +01:00
2026-03-17 14:33:26 +01:00
2026-03-16 15:46:24 +01:00
2026-03-17 14:33:26 +01:00
2026-03-17 15:06:32 +01:00
2026-03-16 17:59:52 +01:00
2026-03-17 14:33:26 +01:00

mould

mould is a modern Terminal User Interface (TUI) tool designed for interactively generating and editing configuration files from templates. Whether you are setting up a .env file from an example, creating a docker-compose.override.yml, or editing nested JSON, YAML, or TOML configurations, mould provides a fast, Vim-inspired workflow to get your environment ready.

Features

  • Universal Format Support: Handle .env, JSON, YAML, and TOML seamlessly.
  • Tree View Navigation: Edit nested data structures (JSON, YAML, TOML) in a beautiful, depth-colored tree view.
  • Smart Template Comparison: Automatically discovers .env.example vs .env relationships and highlights missing or modified keys.
  • Add Missing Keys: Instantly pull missing keys and their default values from your template into your active configuration with a single keystroke.
  • Neovim Integration: Comes with a built-in Neovim plugin for seamless in-editor configuration management.
  • Docker Compose Integration: Automatically generate docker-compose.override.yml from docker-compose.yml.
  • Vim-inspired Workflow: Navigate with j/k, gg/G, edit with i, search with /, and save with :w.
  • Modern UI: A polished, rounded interface featuring a semantic Catppuccin Mocha palette.
  • Highly Configurable: Customize keybindings and semantic themes via a simple TOML configuration.

Installation

CLI Application

Ensure you have Rust and Cargo installed, then run:

cargo install --path .

Alternatively, you can build from source:

git clone <repository_url>
cd mould
cargo build --release

Neovim Plugin

If you use a plugin manager like mini.deps, you can add the repository directly:

add({
	source = 'https://git.narl.io/nvrl/mould-rs',
	checkout = 'main',
})

Usage

Provide an input template file to start editing. mould is smart enough to figure out if it's looking at a template or an active file, and will search for its counterpart to provide diffing.

mould .env.example
mould docker-compose.yml
mould config.template.json -o config.json

Keybindings (Default)

  • Normal Mode

    • j / Down: Move selection down
    • k / Up: Move selection up
    • gg: Jump to the top
    • G: Jump to the bottom
    • i: Edit value (cursor at start)
    • A: Edit value (cursor at end)
    • S: Substitute value (clear and edit)
    • o: Append a new item to the current array
    • O: Prepend a new item to the current array
    • dd: Delete the currently selected variable or group
    • u: Undo the last change
    • a: Add missing value from template to active config
    • /: Search for configuration keys (Jump to matches)
    • n: Jump to the next search match
    • N: Jump to the previous search match
    • :w or Enter: Save the current configuration to the output file
    • :q or q: Quit the application
    • :wq: Save and quit
    • Esc: Clear current command prompt
  • Insert Mode

    • Type your value for the selected key.
    • Arrow keys: Navigate within the input field
    • Enter / Esc: Commit the value and return to Normal Mode

Configuration

mould can be configured using a config.toml file located in your user configuration directory (e.g., ~/.config/mould/config.toml on Linux/macOS).

Example configuration:

[keybinds]
down = "j"
up = "k"
edit = "i"
save = ":w"
quit = ":q"
normal_mode = "Esc"
search = "/"
next_match = "n"
previous_match = "N"
jump_top = "gg"
jump_bottom = "G"

[theme]
# Enable transparency to let your terminal background show through
transparent = false

# Custom color palette (Semantic Catppuccin Mocha defaults)
bg_normal = "#1e1e2e"
bg_highlight = "#89b4fa"
bg_active = "#a6e3a1"
bg_search = "#cba6f7"
fg_normal = "#cdd6f4"
fg_dimmed = "#6c7086"
fg_highlight = "#1e1e2e"
fg_warning = "#f38ba8"
fg_modified = "#fab387"
fg_accent = "#b4befe"
border_normal = "#45475a"
border_active = "#a6e3a1"
tree_depth_1 = "#b4befe"
tree_depth_2 = "#cba6f7"
tree_depth_3 = "#89b4fa"
tree_depth_4 = "#fab387"

License

This project is licensed under the MIT License. See the LICENSE file for details.

Description
No description provided
Readme MIT 616 KiB
2026-03-20 10:55:49 +01:00
Languages
Rust 97.6%
Lua 2.4%