# Equalizer Plugin Configuration Values

This file documents all currently supported values for:

```text
~/.hyprtile/gl/equalizer.json
```

The configuration file is optional.

If `equalizer.json` does not exist, the Equalizer plugin uses its built-in defaults.

Every value is also optional. If a value is missing from the JSON file, the built-in default for that value remains active.

---

## Complete Example

```json
{
  "scan_wave": true,
  "scan_strength": 0.035,
  "scan_speed": 60.0,
  "scan_frequency": 0.055,

  "noise": true,
  "noise_strength": 0.022,

  "center_pulse": true,
  "center_pulse_strength": 1.0,

  "black_lines": true,
  "black_lines_strength": 1.0,

  "tint_enabled": false,
  "tint": "255,255,255",
  "tint_strength": 1.0
}
```

---

# Valid Range Overview

| Value | Type | Valid range / values |
|---|---|---|
| `scan_wave` | boolean | `true` or `false` |
| `scan_strength` | number | `0.0` to `0.5` |
| `scan_speed` | number | `-1000.0` to `1000.0` |
| `scan_frequency` | number | `0.0` to `2.0` |
| `noise` | boolean | `true` or `false` |
| `noise_strength` | number | `0.0` to `0.5` |
| `center_pulse` | boolean | `true` or `false` |
| `center_pulse_strength` | number | `0.0` to `2.0` |
| `black_lines` | boolean | `true` or `false` |
| `black_lines_strength` | number | `0.0` to `4.0` |
| `tint_enabled` | boolean | `true` or `false` |
| `tint` | RGB string | each component: `0` to `255` |
| `tint_strength` | number | `0.0` to `1.0` |

Numeric values outside the supported range are not accepted by the plugin configuration loader. Invalid tint strings are ignored and the built-in tint color remains active.

---

# Scan Wave

## `scan_wave`

**Type:** `boolean`  
**Default:** `true`  
**Valid values:** `true`, `false`

Enables or disables the animated horizontal scan-wave effect moving through the background.

```json
"scan_wave": true
```

Set it to `false` for a calmer and cleaner background.

```json
"scan_wave": false
```

---

## `scan_strength`

**Type:** `number`  
**Default:** `0.035`  
**Valid range:** `0.0` to `0.5`

Controls how strongly the animated scan wave affects the image.

```json
"scan_strength": 0.035
```

Lower values make the effect more subtle.

```json
"scan_strength": 0.012
```

Higher values make the wave more visible.

```json
"scan_strength": 0.08
```

A value of `0.0` effectively makes the effect invisible.

---

## `scan_speed`

**Type:** `number`  
**Default:** `60.0`  
**Valid range:** `-1000.0` to `1000.0`

Controls how quickly and in which direction the scan wave moves through the image.

```json
"scan_speed": 60.0
```

Values closer to `0.0` create slower movement.

```json
"scan_speed": 20.0
```

Higher absolute values create faster movement.

```json
"scan_speed": 120.0
```

Negative values reverse the movement direction.

```json
"scan_speed": -60.0
```

A value of `0.0` stops the scan wave from moving while keeping the wave pattern visible.

---

## `scan_frequency`

**Type:** `number`  
**Default:** `0.055`  
**Valid range:** `0.0` to `2.0`

Controls the spatial frequency of the scan-wave pattern.

```json
"scan_frequency": 0.055
```

Lower values create broader and more widely spaced waves.

```json
"scan_frequency": 0.025
```

Higher values create tighter and more frequent waves.

```json
"scan_frequency": 0.12
```

---

# Noise

## `noise`

**Type:** `boolean`  
**Default:** `true`  
**Valid values:** `true`, `false`

Enables or disables the animated noise layer.

```json
"noise": true
```

Set it to `false` to remove the subtle animated TV-like or film-like noise.

```json
"noise": false
```

---

## `noise_strength`

**Type:** `number`  
**Default:** `0.022`  
**Valid range:** `0.0` to `0.5`

Controls the strength of the animated noise.

```json
"noise_strength": 0.022
```

Lower values create a cleaner image.

```json
"noise_strength": 0.008
```

Higher values create a more visibly noisy or grainy image.

```json
"noise_strength": 0.05
```

A value of `0.0` effectively disables the visible noise.

---

# Center Pulse

## `center_pulse`

**Type:** `boolean`  
**Default:** `true`  
**Valid values:** `true`, `false`

Enables or disables the pulsating radial effect in the center of the Equalizer background.

```json
"center_pulse": true
```

Set it to `false` to remove the animated circular center effect.

```json
"center_pulse": false
```

---

## `center_pulse_strength`

**Type:** `number`  
**Default:** `1.0`  
**Valid range:** `0.0` to `2.0`

Controls the strength of the pulsating center effect.

```json
"center_pulse_strength": 1.0
```

Lower values make the center pulse more subtle.

```json
"center_pulse_strength": 0.5
```

Higher values make it more pronounced.

```json
"center_pulse_strength": 1.5
```

A value of `0.0` effectively disables the visible center pulse.

---

# Black Lines

## `black_lines`

**Type:** `boolean`  
**Default:** `true`  
**Valid values:** `true`, `false`

Enables or disables the animated dark horizontal line effect that appears intermittently in the background.

```json
"black_lines": true
```

Set it to `false` for a cleaner and less glitch-like appearance.

```json
"black_lines": false
```

---

## `black_lines_strength`

**Type:** `number`  
**Default:** `1.0`  
**Valid range:** `0.0` to `4.0`

Controls the strength of the intermittent dark horizontal lines.

```json
"black_lines_strength": 1.0
```

Lower values make the lines more subtle.

```json
"black_lines_strength": 0.25
```

Higher values make the effect more pronounced.

```json
"black_lines_strength": 2.0
```

A value of `0.0` effectively makes the lines invisible.

---

# Tint

## `tint_enabled`

**Type:** `boolean`  
**Default:** `false`  
**Valid values:** `true`, `false`

Enables or disables the global color tint.

```json
"tint_enabled": false
```

When enabled, the complete Equalizer effect can be blended toward a custom color.

```json
"tint_enabled": true
```

This is useful for adapting the Equalizer to a specific HyprTile theme.

---

## `tint`

**Type:** `string`  
**Default:** `"255,255,255"`  
**Valid range:** each RGB component must be an integer from `0` to `255`

Defines the tint color as an RGB string.

```json
"tint": "255,255,255"
```

Format:

```text
"R,G,B"
```

Each component must be between `0` and `255`. Values outside this range are rejected and the built-in tint color remains active.

Examples:

Cyan:

```json
"tint": "0,255,255"
```

Purple:

```json
"tint": "180,80,255"
```

Red:

```json
"tint": "255,80,80"
```

The tint only affects the final image when `tint_enabled` is set to `true`.

---

## `tint_strength`

**Type:** `number`  
**Default:** `1.0`  
**Valid range:** `0.0` to `1.0`

Controls how strongly the tint color is applied.

```json
"tint_strength": 1.0
```

Typical values:

```text
0.0 = original Equalizer colors
0.5 = partial blend between the original colors and the tint
1.0 = full tint
```

Example:

```json
"tint_strength": 0.7
```

This creates a strong tint while still preserving some of the original Equalizer appearance.

---

# Example Presets

## Clean

```json
{
  "scan_wave": false,
  "noise": false,
  "center_pulse": false,
  "black_lines": false,
  "tint_enabled": false
}
```

## Subtle

```json
{
  "scan_wave": true,
  "scan_strength": 0.012,
  "scan_speed": 30.0,
  "scan_frequency": 0.04,

  "noise": true,
  "noise_strength": 0.006,

  "center_pulse": true,
  "center_pulse_strength": 0.5,

  "black_lines": true,
  "black_lines_strength": 0.25,

  "tint_enabled": false
}
```

## Cyan Theme

```json
{
  "scan_wave": true,
  "scan_strength": 0.035,
  "scan_speed": 60.0,
  "scan_frequency": 0.055,

  "noise": true,
  "noise_strength": 0.022,

  "center_pulse": true,
  "center_pulse_strength": 0.5,

  "black_lines": true,
  "black_lines_strength": 0.25,

  "tint_enabled": true,
  "tint": "0,255,255",
  "tint_strength": 0.7
}
```

---

# Notes

- The configuration file is optional.
- Every individual value is optional.
- Missing values use the plugin's built-in defaults.
- Unknown values are ignored.
- The configuration is loaded when the Equalizer plugin is initialized.
- Switching away from the plugin and back to it reloads the configuration.