Skip to content

Configuration

Configuration can be loaded from a variety of sources, including files ( json, toml, yaml, yml, properties, props, prop, hcl, tfvars, dotenv, env, ini), command-line flags, and environment variables (prefixed with RONG_). Rong will automatically merge values from all sources. For sake of simplicity, I'm only going to show toml configuration. Check out the examples for different format.

Locations

By default, the rong configuration file is located at:

sh
"$XDG_CONFIG_HOME/rong" # Usually `~/.config/rong`

The file can be in any of the supported format.

TIP

Use rong --config /path/to/config to load a custom config file. The extension determines the format.

Basic Structure

Here is a minimal example of a toml config:

toml
dark = true

[material]
variant = "tonal_spot"
version = "2025"

[base16]
method = "dynamic"

Configuration Fields

Core Settings

  • dark: Generate dark color palette (true) or light palette (false).
  • dry-run: Generate colors without applying templates.
  • json: Print generated colors as JSON to standard output.
  • log-file: File path to save logs.
  • quiet: Suppress all log output.
  • verbose: Verbose logging level (0-3, where 3 is most verbose).
  • frames: Number of frames to process for videos.
  • worker: Number of thread for process caching.
  • preview-format: Format generated thumbnail for videos.

Material You Settings

The [material] section controls Material You color generation:

  • variant: Color variant to use. Possible variants:

    monochromeexpressivevibrant
    neutralfidelityrainbow
    tonal_spotcontentfruit_salad
  • version: Material You specification version ("2021" or "2025").

  • platform: Target platform ("phone" or "watch").

  • contrast: Contrast adjustment (-1.0 to 1.0).

  • custom: Custom color configuration.

    • blend: Ratio of color blending with Material You primary color.
    • colors: A list of color names with there values.

Here is an example:

toml
[material]
contrast = 0.0
platform = "phone"
variant = "tonal_spot"
version = "2025"
custom.blend = 0.35

[material.custom.colors]
orange = "#FFA500"
purple = "#800080"

Base16 Settings

The [base16] section controls Base16 color generation:

  • method: Color generation method ("static" or "dynamic").
  • blend: Blend ratio toward the primary color (0.0 to 1.0).
  • colors: Source colors for Base16 color generation (all hex colors):
    • black, blue, cyan, green, magenta, red, white, yellow.

Here is an example:

toml
[base16]
blend = 0.35
method = "static"
colors.red = "#FF0000"

Themes Settings

You can use themes to copy/install file and run any command afterward.

The [[themes]] section controls copy and running command after generating colors.

  • target (required): Name of target template (without .tmpl extension).
  • links: A path or a list of path to hardlink or copy the template.
  • installs: A path or a list of path to atomically install the template.
  • cmds: A command or a list of command to run after links and installs.
toml
[[themes]] # Make sure to double square brackets here
target = "spicetify-sleek.ini"
links = "~/.config/spicetify/Themes/Sleek/color.ini"
cmds = """
spicetify watch -s 2>&1 | sed '/Reloaded Spotify/q'
"""

The configuration above will link/copy the builtin spicetify-sleek.ini template to ~/.config/spicetify/Themes/Sleek/color.ini then run spicetify watch -s 2>&1 | sed '/Reloaded Spotify/q'.

You also use independent links, installs or cmds action. This is useful when you just need copy or install.

Syntax

toml
[links]
"template_name.ext" = "destination_path"
"template_name.ext" = ["path1", "path2", ...]

For some themes, you might need to use [installs]. The structure exactly same as [links]. The difference is that fill will be installed by atomic copy. This ensure apps don't see incomplete theme files.

toml
[installs]
"quickshell.json" = "~/.local/state/quickshell/colors.json"

cmds are commands to run after which will run after links and installs.

toml
[cmds]
"hyprland.conf" = "hyprctl reload"
"kitty-full.conf" = "pidof kitty | xargs -r kill -SIGUSR1"

Examples

TOML Configuration ~/.config/rong/config.toml

toml
dark = true
verbose = 1

[material]
variant = "expressive"
version = "2025"
contrast = 0.2

[base16]
method = "dynamic"
blend = 0.7
colors.black = "#0a0a0a"
colors.blue = "#1e90ff"

[[themes]]
cmds = "pidof cava | xargs -r kill -SIGUSR2"
links = "~/.config/cava/config"
target = "cava.ini"

[[themes]]
cmds = "hyprctl reload"
links = "~/.config/hypr/colors.conf"
target = "hyprland.conf"

[[themes]]
cmds = "pidof kitty | xargs -r kill -SIGUSR1"
links = "~/.config/kitty/colors.conf"
target = "kitty-full.conf"

[installs]
"quickshell.json" = "~/.local/state/quickshell/colors.json"

[links]
"gtk.css" = [
  "~/.config/gtk-3.0/gtk.css",
  "~/.config/gtk-4.0/gtk.css"
]

YAML Configuration ~/.config/rong/config.yaml

yaml
dark: true
dry_run: false
verbose: 2

material:
  variant: vibrant
  version: "2025"
  platform: phone
  contrast: 0.1

base16:
  method: static
  blend: 0.5
  colors:
    black: "#000000"
    blue: "#0044FF"
    cyan: "#008080"
    green: "#008000"

themes:
  - cmds: pidof cava | xargs -r kill -SIGUSR2
    links: ~/.config/cava/config
    target: cava.ini
  - cmds: hyprctl reload
    links: ~/.config/hypr/colors.conf
    target: hyprland.conf
  - cmds: pidof kitty | xargs -r kill -SIGUSR1
    links: ~/.config/kitty/colors.conf
    target: kitty-full.conf

JSON Configuration ~/.config/rong/config.json

json
{
  "dark": true,
  "json": false,
  "material": {
    "variant": "monochrome",
    "version": "2021",
    "contrast": 0.0
  },
  "base16": {
    "method": "dynamic",
    "blend": 0.6,
    "colors": {
      "red": "#800000",
      "green": "#008000"
    }
  },
  "links": {
    "colors.lua": "~/.config/wezterm/colors.lua",
    "qtct.conf": [
      "~/.config/qt5ct/colors/rong.conf",
      "~/.config/qt6ct/colors/rong.conf"
    ]
  }
}

Command Line Examples

bash
# Generate dark theme with expressive variant
rong --dark --material.variant expressive image path/to/image

# Dry run to preview colors as JSON
rong --dry-run --json image path/to/image

# Debug output with custom base16 colors
rong -vvv --base16.colors.red "#ff0000" image path/to/image

Environment Variables

bash
RONG_DARK=true rong image path/to/image
RONG_MATERIAL_VARIANT=vibrant rong image path/to/image
RONG_BASE16_BLEND=0.8 rong image path/to/image