# Config

This section explains the client config file fields, purposes, allowed values, defaults, and fallback rules, and provides a complete example.

For `dc` format and conventions, please read:
- [Getting Started](../Getting_Started)

## Location
- Directory: `config/dlc_manager/`
- File: `config.dc`

## Complete Example
```dc
[paths]
dlcRoot = "DLC"
taczRoot = "tacz"
resourcepackRoot = "resourcepacks"
datapackRoot = "datapacks"

[ui]
isEnableAllButtonShown = true
isConfigButtonShown = false
isUButtomShown = true
isUpdateManagerOn = true
isSelfUpdateAutoCheckOn = true
isPresetFuncOn = true
ShowOnFirstRun = false
WaitingTime = 0
serverSupport = true
titleAnchor = "auto"
titleOffsetX = 0
titleOffsetY = 0
titleUpdateAnchor = "auto"
titleUpdateOffsetX = 0
titleUpdateOffsetY = 0
noticeDisplayMode = "manager_button"
noticeButtonAnchor = "bottom_right"
noticeButtonOffsetX = 0
noticeButtonOffsetY = 0
noticePanelAnchor = "top_left"
noticePanelOffsetX = 0
noticePanelOffsetY = 0
noticePanelWidth = 0
noticePanelHeight = 0
modpackUrl = ""
updateGithubRepo = ""

[downloads]
maxConcurrentDownloads = 5
maxSegmentsPerFile = 4
minSegmentMB = 20
maxRetryCount = 5
connectTimeoutSeconds = 10
taskTimeoutSeconds = 60
```

---

## Field Reference

#### `[paths].dlcRoot`
- **Purpose**: DLC root directory.
- **Allowed**: Relative or absolute path.
- **Default**: `"DLC"`.

#### `[paths].taczRoot`
- **Purpose**: Folder name for TACZ packs under the DLC root.
- **Allowed**: String.
- **Default**: `"tacz"`.

#### `[paths].resourcepackRoot`
- **Purpose**: Default target directory name for resource packs.
- **Allowed**: String.
- **Default**: `"resourcepacks"`.

#### `[paths].datapackRoot`
- **Purpose**: Default target directory name for data packs.
- **Allowed**: String.
- **Default**: `"datapacks"`.

#### `[ui].isEnableAllButtonShown`
- **Purpose**: Show “Enable/Disable All”.
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].isConfigButtonShown`
- **Purpose**: Show the config button.
- **Allowed**: Boolean.
- **Default**: `false`.

#### `[ui].isUButtomShown`
- **Purpose**: Toggle the “U” button on the main menu.
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].isUpdateManagerOn`
- **Purpose**: Enable the update manager.
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].isSelfUpdateAutoCheckOn`
- **Purpose**: Auto-check DLC Manager updates.
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].isPresetFuncOn`
- **Purpose**: Enable presets.
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].ShowOnFirstRun`
- **Purpose**: Auto-open DLC Manager on first run.
- **Allowed**: Boolean.
- **Default**: `false`.
- **Behavior**: Uses `DLC/ShownOnFirstRun` marker after first open.

#### `[ui].WaitingTime`
- **Purpose**: Alarm screen minimum wait time before confirmation.
- **Allowed**: Integer `0~10` (seconds).
- **Default**: `0`.

#### `[ui].serverSupport`
- **Purpose**: Show server manager entry (client-side).
- **Allowed**: Boolean.
- **Default**: `true`.

#### `[ui].titleAnchor`
- **Purpose**: Main menu button anchor.
- **Allowed**:
  - `auto`
  - `top_left`, `top`, `top_right`
  - `left`, `center`, `right`
  - `bottom_left`, `bottom`, `bottom_right`
- **Default**: `"auto"`.

#### `[ui].titleOffsetX`
- **Purpose**: Horizontal offset of the main menu button (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].titleOffsetY`
- **Purpose**: Vertical offset of the main menu button (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].titleUpdateAnchor`
- **Purpose**: Anchor of the main menu update button (`U`).
- **Allowed**: `auto`, `top_left`, `top`, `top_right`, `left`, `center`, `right`, `bottom_left`, `bottom`, `bottom_right`.
- **Default**: `auto`.

#### `[ui].titleUpdateOffsetX`
- **Purpose**: Horizontal offset of the update button (`U`) (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].titleUpdateOffsetY`
- **Purpose**: Vertical offset of the update button (`U`) (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].noticeDisplayMode`
- **Purpose**: Notice presentation mode.
- **Allowed**:
  - `manager_button`
  - `main_menu_button`
  - `main_menu_panel`
- **Default**: `manager_button`.

#### `[ui].noticeButtonAnchor`
- **Purpose**: Anchor of the main menu notice button.
- **Allowed**: `top_left`, `top`, `top_right`, `left`, `center`, `right`, `bottom_left`, `bottom`, `bottom_right`.
- **Default**: `bottom_right`.

#### `[ui].noticeButtonOffsetX`
- **Purpose**: Horizontal offset of the main menu notice button (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].noticeButtonOffsetY`
- **Purpose**: Vertical offset of the main menu notice button (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].noticePanelAnchor`
- **Purpose**: Anchor of the main menu notice panel.
- **Allowed**: `top_left`, `top`, `top_right`, `left`, `center`, `right`, `bottom_left`, `bottom`, `bottom_right`.
- **Default**: `top_left`.

#### `[ui].noticePanelOffsetX`
- **Purpose**: Horizontal offset of the main menu notice panel (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].noticePanelOffsetY`
- **Purpose**: Vertical offset of the main menu notice panel (pixels).
- **Allowed**: Integer.
- **Default**: `0`.

#### `[ui].noticePanelWidth`
- **Purpose**: Width of the main menu notice panel.
- **Allowed**: Integer (`0` means disabled).
- **Default**: `0`.

#### `[ui].noticePanelHeight`
- **Purpose**: Height of the main menu notice panel.
- **Allowed**: Integer (`0` means disabled).
- **Default**: `0`.

#### `[ui].modpackUrl`
- **Purpose**: Modpack homepage URL used by pack update UI.
- **Allowed**: String URL.
- **Default**: Empty.

#### `[ui].updateGithubRepo`
- **Purpose**: Repository URL used for pack release update checks.
- **Allowed**:
  - Single repository URL
  - Multiple repository URLs separated by commas (fallback in order)
  - HTTPS/HTTP repository page URL, release page URL, or SSH form (`git@host:owner/repo.git`)
- **Supported providers**:
  - GitHub
  - GitLab (including self-hosted instances)
  - Gitee
  - Generic Git hosts with API fallback probing
- **Default**: Empty.

#### `[downloads].maxConcurrentDownloads`
- **Purpose**: Max number of concurrent download tasks.
- **Allowed**: Integer.
- **Default**: `5`.

#### `[downloads].maxSegmentsPerFile`
- **Purpose**: Max number of segments per file.
- **Allowed**: Integer.
- **Default**: `4`.

#### `[downloads].minSegmentMB`
- **Purpose**: Minimum segment size (MB).
- **Allowed**: Integer.
- **Default**: `20`.

#### `[downloads].maxRetryCount`
- **Purpose**: Max retry attempts per segment.
- **Allowed**: Integer.
- **Default**: `5`.

#### `[downloads].connectTimeoutSeconds`
- **Purpose**: Connection timeout (seconds).
- **Allowed**: Integer.
- **Default**: `10`.

#### `[downloads].taskTimeoutSeconds`
- **Purpose**: Task timeout (seconds).
- **Allowed**: Integer.
- **Default**: `60`.
