-
Notifications
You must be signed in to change notification settings - Fork 0
Settings Dialog
The Settings Dialog is the front door to nearly every per-collection
and global option Kartend supports. Open with Ctrl+, or File →
Settings.
This page is a tour of the dialog's structure: what each category covers, how the scope selector propagates changes across collections, the Apply Settings workflow for selectively copying fields, and how to duplicate / reparent / delete collections from the tree.
For a flat list of every config key see Configuration Reference. Most field-level descriptions repeat there; this page focuses on the workflow.
The dialog is a two-pane layout — a navigation rail on the left, the selected category's page on the right:
┌─────────────────────────────────────────────────────────────────┐
│ ┌─ navigation rail ───┐ ┌─ content ────────────────────────────┐ │
│ │ Search settings… │ │ Appearance │ │
│ │ ┌ Collections ────┐ │ │ Editing collection: Arcade │ │
│ │ │ tree [+][-][⧉] │ │ │ ──────────────────────────────────── │ │
│ │ │ Mode: Current ▼ │ │ │ │ │
│ │ └─────────────────┘ │ │ (selected category's panel) │ │
│ │ COLLECTION SETTINGS │ │ │ │
│ │ Configuration │ │ │ │
│ │ Artwork │ │ │ │
│ │ Appearance … │ │ │ │
│ │ APPLICATION │ │ │ │
│ │ General … │ │ │ │
│ └─────────────────────┘ └──────────────────────────────────────┘ │
│ [Save] [Cancel] [OK] │
└─────────────────────────────────────────────────────────────────┘
- Navigation rail (left): a search box, the collection tree with add / remove / duplicate buttons and the Mode (scope) selector, and a categorised list of settings pages.
- Content pane (right): a context header naming the current category — and, for per-collection categories, the collection being edited — above the selected page.
- Button row (bottom): Save commits changes without closing the dialog; OK saves and closes; Cancel closes (with a confirm prompt when there are unsaved edits).
The category list is split into Collection settings (per-collection: Configuration, Artwork, Appearance, Launcher, Subfolders, Details Pane) and Application (app-wide: General, Fonts, Splash, Attract Mode, Marquee, Toolbar, Controls, Launchers, Scrapers). Type in the search box to filter the list to categories containing a matching setting.
Drag the splitter handles to resize the rail and to set how its height is split between the collection tree and the category list; the dialog remembers its size and divider positions between runs. The Save button pulses with a drop-shadow glow while there are unsaved changes — an at-a-glance reminder.
Lists every collection (and subcollection) hierarchically. From here you can:
-
Add — toolbar
+button. Creates a new top-level collection. - Reparent — drag and drop a collection onto another.
- Rename — double-click the name on the Basic tab (or the context menu Rename).
- Duplicate — right-click → Duplicate opens a dialog asking for the new name and destination parent.
- Delete — right-click → Delete, with a confirm prompt.
- Expand / Collapse — context menu shortcuts to fully expand / collapse a subtree.
Selection in the tree drives the right pane: the tab editor reflects the highlighted collection. Multi-select is not supported — use Apply To Selected for batch operations.
| Field | Notes |
|---|---|
| Name | Display name. Renaming updates references everywhere. |
| Type | Free-form classification used by the type filter. |
| Parent Collection | Dropdown of all candidate parents (excluding the current collection and its descendants). |
| Linked Parents | Multi-select picker for alias parents. |
| Field | Notes |
|---|---|
| Media Directory | Path browser. Empty = parent-only collection. |
| Artwork Directory | Path browser. See Artwork. |
| Video Directory | Path browser. See Video Previews. |
| Manual Directory | Path browser. Auto-discovered manuals show in the sidebar. |
| Placeholder Artwork | File browser. Custom missing-art image. |
| Collection Icon | File browser. Image used for this collection's tile when it's a subcollection. |
| Header Logo | File + position dropdown (topleft / topcenter / topright). |
| Extensions | CSV. Empty = accept all files. |
| Include Content Subfolders | Show subfolders as virtual tiles. |
| Include Artwork Subfolders | Recurse into artwork subfolders. |
| Show All Subfolder Items | Mix subfolder items into the parent's grid. |
| Show Hidden Folders | Include .dot-prefixed directories. |
| Custom Artwork Types | CSV of free-form custom type ids. |
| Extract Archives | Auto-extract archive items. |
| Extracted Extension | Which extension to launch from inside an archive. |
See Launchers for the full launcher model.
| Section | Notes |
|---|---|
| Primary Launcher | Path / Name / Core / Parameters fields. |
| Additional Launchers | List with Add / Edit / Remove buttons. |
| Default Launcher | Dropdown selecting the pre-selected launcher. |
| Global Launcher Presets | Reusable presets (lives in [General] but managed here). |
| Section | Notes |
|---|---|
| View Type |
grid / list / coverflow / horizontal. See View Modes. |
| Grid sizing |
gridWidth, alternate grid widths for hidden sidebar, horizontal grid height. |
| Tile sizing |
itemWidth, itemHeight, fontSize, cornerRadius, spacing. |
| Alignment |
left / center / right. |
| Hide Titles / Hide Subcollection Titles | |
| Hide Horizontal / Vertical Scrollbar | |
| Hide Missing Artwork | |
| Title Exclusion Patterns | Regex patterns stripped from displayed titles, with on/off toggle. |
| Section | Notes |
|---|---|
| Background Type |
color / image / video. |
| Background Color / Image / Video | Tie-ins to the chosen type. |
| Primary / Tile / Selection Colors | Hex pickers. |
| Vignette | Enable + intensity slider. |
| Wallpaper Parallax | Enable + strength slider. |
| Toolbar Backdrop Blur | Enable + radius. |
Field groups:
- Visibility & Layout — visible, mode (overlay / expand), position (right / left / top / bottom), width / height, locked-resize.
- Background — color / image / pattern + crosshatch intensity.
- Bubbles — header & section bubble colors with per-bubble opacity.
- Typography — text color, accent color, font family, font size.
- Active Tab — initial tab on first show.
| Field | Notes |
|---|---|
| List Font Size | Row text size. |
| List Row Height | Pixels. |
| List Row Color / Alternate Row Color | Stripe colors. |
Column widths (listCollectionColumnWidth, listArtworkColumnWidth)
are global and apply to the List view across all collections, but
they have no Settings Dialog control today — hand-edit kartend.cfg
in [General].
| Field | Notes |
|---|---|
| Custom Font Family | Per-collection font override. |
| Title Tint Saturation / Lightness | Tile-title HSV adjustments. |
| Title Base Color | Hex; empty = use selection color. |
| Show Title in Placeholder | Global. |
The Application categories apply to the entire app, not the selected collection. They group:
- Selection & Navigation — remember selection, wrap, hover-select.
- Performance — pixmap cache, scroll animation duration, scroll velocity multiplier.
- Keyboard — key bindings (rebindable), repeat intervals, hold delays.
- Mouse — wheel rows, artwork-cycle modifier.
- Gamepad — D-pad / left-stick toggles, button bindings (live capture).
- Sorting — sort mode, exclude-subfolders.
-
Filtering — collection type filter. (
hideSubcollectionTileshas no UI control today; hand-edit[General] hideSubcollectionTilesinkartend.cfg.) - View toggles — show menu bar, show toolbar, fullscreen (persistent).
- Toolbar customization — visibility & label per item-page toolbar control.
- Typography — global font family / size, UI text zoom percent, title tints.
- Splash screens — boot, resume-focus, startup video, plus title / subtitle overrides. See Splash & Now Playing.
- Preview video volume — global.
- Runtime detection — toggle.
- Launch history — enabled, max entries.
- Attract mode — enabled, idle timeout, autoscroll, advance selection. See Attract Mode.
- Marquee — secondary-monitor topper window: enable, target screen, mode (artwork vs collection icon). See Marquee.
- Scrapers — provider credentials (TMDB, MusicBrainz, OpenLibrary, ScreenScraper) and global scraper options (preset, concurrency, throttle, rescrape mode, region, scrape logging, auto-resume). See Scraper and Keychain.
-
Launchers — the global launcher-preset registry (id / name /
path / core / parameters). Referenced by per-collection
additionalLaunchersentries. See Launchers. - Controls — keyboard / gamepad bindings live-capture, repeat / hold timings. Same surface as the Keyboard, Gamepad, and Mouse categories above, organised together. See Input & Controls.
- Home view — synthetic Home category at startup: enable, custom label, custom icon, keyboard shortcut. See Shell Collections.
-
RetroArch integration — optional path to a
retroarch.cfg/ core directory so the Launcher chooser can list libretro cores. See Launchers. -
First-run wizard —
firstRunCompleteflag. Reset by Help → Setup Wizard… (which re-runs the wizard interactively). - Startup collection — name of the collection opened on launch.
Each section is a fold-down so the page stays scannable.
Config-only globals — a few
[General]keys have no Settings Dialog control and must be edited inkartend.cfgby hand:hideSubcollectionTiles,listCollectionColumnWidth,listArtworkColumnWidth. See Configuration Reference for full descriptions.
The Scope dropdown (top bar) determines what saves apply to:
| Scope | Effect |
|---|---|
| Current | Save changes only to the selected collection. |
| Current and Subcollections | Save propagates to the selected collection and all of its descendants. |
| All | Save propagates to every collection. |
When scope is wider than Current, fields that cannot propagate
sensibly (paths, extensions, parent linkage, launcher path) are grayed
out — you can't accidentally overwrite all collections' media
directories with one. The grayed list is determined by a category
allow-list inside the dialog.
Save with a wider scope is a one-shot: the next time you open the dialog the scope resets to Current.
Watch out — propagating "All" is fast and not reversible from within Kartend. Use it intentionally, especially for appearance sweeps. The Apply Settings workflow is safer for targeted batch updates.
For finer control than the global scope selector, the Apply To Selected workflow lets you copy specific categories of fields from the current collection to a chosen subset of others.
Open via the action button in the dialog header (or the Settings → Apply To… menu in some builds). The Apply Settings Dialog appears:
- Source — the collection currently selected in the tree.
- Categories — a checkbox grid: Basic, Paths, Appearance, Colors, Sidebar, List View, Text & Fonts. Pick which categories to copy.
- Targets — a tree of collections with multi-select; pick which ones to receive the copied fields.
- Mode — Pull (overwrite targets with source values) or Propagate (a sub-mode that respects per-collection differences for some fields). The dialog explains the difference inline.
- OK — applies and closes; Cancel discards.
Fields that can't be copied (paths, parent linkage) are excluded regardless of the category checkboxes.
Workflow tip: use this when you've spent an hour tuning one collection's appearance and want every other collection to match.
Right-click a collection in the tree → Duplicate opens a small dialog:
| Field | Notes |
|---|---|
| New Name | Required, must be unique. |
| Parent | Sibling of the source / child of the source / root. |
On OK, all non-path settings are copied. Paths (mediaDirectory,
artworkDirectory, videoDirectory, manualDirectory) are deliberately
left blank so you don't accidentally fork into the same folder twice.
Right-click → Delete prompts for confirmation. Subcollections of the deleted collection are reparented to its parent (or to root if deleting a root collection). Per-item state remains in the database.
- Save — commits all in-memory changes to disk, applying the current scope. The dialog stays open afterward.
- Revert — discards in-memory changes and re-loads from disk. Useful when you've experimented and want to back out.
- Cancel — closes the dialog. If there are unsaved changes, you get a confirm prompt.
The Save button glows with a pulsing drop shadow while there are unsaved changes. Hovering over Revert flags fields that would be restored.
A handful of settings only take effect after restart. The Settings Dialog tags these inline; they're also called out here:
-
globalUiFontFamilyandglobalUiFontPointSize pixmapCacheSizeMB- Some startup ordering knobs (boot splash, startup video)
Most other settings apply live as you click through tabs, including view-mode and sidebar position changes.
- Tune one collection's Appearance, Colors, Sidebar, and Text & Fonts tabs to taste.
- Click Apply To Selected in the dialog header.
- Check Appearance, Colors, Sidebar, Text & Fonts under Categories.
- Select all collections under Targets (Ctrl+A or use the Select All button).
- OK.
- Launcher tab → Global Launcher Presets → Add.
- Fill in name, path, core, parameters.
- Save.
- For each collection that should use the preset: Launcher tab → edit any launcher → set the Preset dropdown to the new preset. The inline path/core/params fields gray out — preset values take over.
Drag and drop in the tree. For larger reorganizations, edit the INI
file directly: rename the [Parent > Child] section header for each
collection to point at the new parent (the section header is the
parent record — there's no separate key to flip), then restart.
The Apply Settings Dialog gates by category, not by tab. If a tab crosses categories (e.g. Appearance + Colors), uncheck the categories you don't want to propagate.
- Settings UI: src/ui/dialogs/settings/
— the dialog shell is split across sibling translation units
(
settingsdialog,settingsdialognavfor the left-rail navigation,settingsdialogtree,settingsdialogform,settingsdialogbrowse,settingsdialogchecks, …), and each settings page is its own*panelwidget added to thepageStackinsettingsdialog.ui. - Persistence: src/modules/data/settings/settingsmanager*
drives INI read/write, with
configvalidation*for live validation. - Apply rules:
applysettingsdialog.cppenumerates which fields propagate per category. Non-propagatable fields (paths, parent linkage, extensions, launchers) are listed in the source. - Save signal flow:
SettingsManager::settingsChanged→ all managers re-read the parts ofCollectionConfigandGeneralSettingsthey care about. - Adding a new field: define on
CollectionConfig(orGeneralSettings), serialize in the manager, add UI in the appropriatesettingsdialog*file, classify into a category inapplysettingsdialog, and update Configuration Reference. - Save-button pulse animation:
SettingsDialog::updateSaveButtonStyleand theQGraphicsDropShadowEffectit drives.