-
Notifications
You must be signed in to change notification settings - Fork 0
Collections
A collection is the unit Kartend organizes around: a folder of media files paired with a launcher, plus optional artwork, video previews, and a few hundred per-collection appearance knobs. Collections can nest, can share children with other collections (alias parents), and can be tagged by free-form type for filter-based grouping.
If you've never built one, start with the Getting Started walkthrough. This page is the "everything else there is to know" reference.
| Field | Required | Notes |
|---|---|---|
| Name | yes | Display label and the INI section header. Renaming updates references. The only strictly required field. |
| Type | no | Free-form tag (e.g. Video, Audio, Documents). Used by the collection-type filter. |
| Media Directory | no | Folder of items. Supports ~. Omitted on shell collections that exist purely to group other collections. |
| Artwork Directory | no | Folder of cover images matched by base filename. See Artwork. |
| Video Directory | no | Folder of preview videos for the sidebar. See Video Previews. |
| Manual Directory | no | Folder of manuals / docs for items. See Item Metadata. |
| Launcher Path | no | Executable that opens an item. Required when the collection has its own media; omitted on shell collections. See Launchers. |
| Extensions | no | Comma-separated allow-list. Empty = accept any file. |
| Parent Collection | no | Makes this collection a subcollection. |
| Linked Parents | no | Additional alias parents. See below. |
| Collection Icon | no | Image shown on the parent's tile when this collection is a subcollection. |
| Placeholder Artwork | no | Custom image for missing-artwork items. |
| Header Logo | no | Logo overlay painted at the top of the collection's grid. |
Where to find this — Settings Dialog → tabs Basic, Paths & Extensions, Launcher, Appearance, Sidebar, Colors, Text & Fonts, List View.
A collection can also have no media directory of its own — a
shell collection used to group other
collections under a named category. Shells render their children as
tiles, open the matching subcollection on Enter, and are the
canonical way to build top-level categories like Video containing
Films / TV Shows / Documentaries.
The Settings Dialog's left-hand tree is the control surface.
- Add — toolbar button at the top of the tree. New collections are created at root by default; drag them into a parent or set the Parent Collection field afterward.
-
Rename — double-click the name field on the Basic tab, or use
the tree's right-click → Rename. Renaming updates
name, INI section header, and anyadditionalParentNamesreferences in collections that use this one as an alias parent. - Duplicate — right-click → Duplicate. Opens the Duplicate Collection dialog: choose the new name and the parent (sibling / child / root). All non-path settings (appearance, launcher config, etc.) are copied; paths are intentionally left blank so you can point the duplicate at a different folder.
- Delete — right-click → Delete with a confirmation prompt. The collection's children are reparented to its parent (or to root) — they are not deleted alongside it.
Caveat — deleting a collection drops its INI section but does not clear per-item state from the database (custom fields, manual file links, launcher overrides, history). Re-adding a collection at the same name reattaches that history. Remove the database file at
~/.local/share/kartend/kartend.dbif you want a clean slate.
A subcollection's INI section name is Parent > Child:
[Documents]
name=Documents
gridWidth=4
[Documents > Reports]
name=Reports
parentCollectionIndex=0
mediaDirectory=~/Documents/Reports
launcherPath=/usr/bin/xdg-open
extensions=pdf,docx
[Documents > Presentations]
name=Presentations
parentCollectionIndex=0
mediaDirectory=~/Documents/Presentations
launcherPath=/usr/bin/xdg-open
extensions=pptx,pdf,odpparentCollectionIndex is the 0-based index of the parent in the
collection list. The Settings Dialog manages this for you; you only
need to know about it if you're hand-editing.
Drag a collection in the Settings tree onto another to set its parent. Circular references are blocked at validation time — you can't drop a collection onto one of its own descendants.
Set Show all subcollection items (showAllSubcollectionItems=true)
to mix items from every descendant collection into the parent's grid,
in addition to the subcollection tiles themselves. Useful for "Show me
everything in Music" without drilling into each sub-genre.
A collection has one primary parent (parentCollectionIndex) but
can also have any number of linked parents — alias references that
make the collection appear as a tile under each linked parent without
duplicating its config or items.
Use it for cross-cutting groupings:
[Concert Recordings]
mediaDirectory=~/Videos/Concerts
parentCollectionIndex=2 ; primary: under "Video"
additionalParentNames=Audio ; also appears under "Audio"
launcherPath=/usr/bin/mpvWhere to find this — Settings Dialog → Basic tab → Linked Parents (multi-select picker). INI key:
additionalParentNames=Comma,Separated,Names.
Renaming a parent collection automatically rewrites every linked reference; deleting one removes the reference from any aliases.
Appearance is rendered identically whichever parent you reach the collection through (it's the same collection, just multiple paths).
Each collection has a Type — a free-form text tag. It's purely a classification you choose:
[Films]
type=Video
[Albums]
type=Audio
[Manuals]
type=DocumentsThen the global collection type filter (toolbar → filter button →
Type, or [General] collectionTypeFilter=Video) shows only collections
whose type matches. Useful for switching modes ("show me only video,
hide everything else") without rearranging the hierarchy.
Pair with Hide Subcollection Tiles (hideSubcollectionTiles=true)
to flatten the view further — type filter + hide-subs makes Kartend
behave like a flat library of media items, ignoring the tree.
See Search, Sort & Filter for filter mechanics.
If your media folder has its own internal hierarchy — say,
~/Videos/Films/Action/, ~/Videos/Films/Drama/ — you don't need to
create a Kartend subcollection for each subfolder. Enable Include
Content Subfolders (includeContentSubfolders=true) and Kartend
renders folders as virtual collection tiles right alongside media items.
Related toggles (all per-collection, on the Paths & Extensions tab):
| Setting | INI key | Effect |
|---|---|---|
| Include Content Subfolders | includeContentSubfolders |
Show subfolders as virtual tiles. |
| Include Artwork Subfolders | includeArtworkSubfolders |
Match artwork from any subfolder. |
| Show All Subfolder Items | showAllSubfolderItems |
Mix items from subfolders with the parent's items, instead of requiring you to enter the subfolder. |
| Show Hidden Folders | showHiddenFolders |
Include dot-prefixed (.config-style) folders. |
| Hide Subfolder Titles | hideSubfolderTitles |
Hide titles on virtual folder tiles. |
Generated tiles use any matching artwork in the artwork directory; if none is found you can compose a placeholder by running the subfolder artwork generator.
Tip — virtual folders are runtime-only. They don't get their own INI section, can't be reparented, and don't carry per-folder appearance. If you want richer per-folder control, promote the subfolder to a real Kartend subcollection (right-click in the Settings tree → Add Collection, set parent and media directory).
Add a per-collection branding logo painted across the top of the items grid:
| Field | INI key | Notes |
|---|---|---|
| Header Logo Image | headerLogoImage |
Path to PNG / JPG / WEBP / SVG |
| Header Logo Position | headerLogoPosition |
topleft / topcenter / topright
|
Distinct from the Collection Icon (collectionIcon) which is shown
on the tile of this collection when it's a subcollection of another.
Per-collection Expand Mode (expandMode=true) gives you a preview
step between selecting and launching:
- Press
Enteronce → full-screen artwork overlay appears. - Press
Entera second time → item launches (orEscapeto cancel).
Useful for collections where you want to see the cover at full size
before committing — coffee-table books, art galleries, screenshot
showcases. Has no effect on subcollection tiles (they always open on
the first Enter).
Every collection key, grouped by purpose:
| Key | Type | Default | Description |
|---|---|---|---|
name |
string | section header | Display name. |
type |
string | empty | Free-form type tag (used by the type filter). |
mediaDirectory |
path | empty | Folder of items. Empty = parent-only. |
artworkDirectory |
path | empty | Folder of cover images. |
videoDirectory |
path | empty | Folder of preview videos. |
manualDirectory |
path | empty | Folder of per-item manuals. |
extensions |
csv | empty | File extensions to scan. Empty = all. |
collectionIcon |
path | empty | Tile icon when this collection is a subcollection. |
placeholderArtwork |
path | empty | Image for missing-artwork tiles. |
| Key | Type | Default | Description |
|---|---|---|---|
parentCollectionIndex |
int | -1 |
Index of primary parent. -1 = root. |
additionalParentNames |
csv | empty | Linked-parent collection names. |
isSubcollection |
bool | derived | Set automatically when parent set. |
| Key | Type | Default | Description |
|---|---|---|---|
includeContentSubfolders |
bool | false |
Show subfolders as virtual tiles. |
includeArtworkSubfolders |
bool | false |
Match artwork in subfolders. |
showAllSubfolderItems |
bool | false |
Flatten subfolder items into parent grid. |
showHiddenFolders |
bool | false |
Include dot-prefixed folders. |
showAllSubcollectionItems |
bool | false |
Mix descendants' items into this collection. |
extractArchives |
bool | false |
Auto-extract .zip / .7z etc. before launch. |
extractedExtension |
string | empty | Which extension inside the archive to launch. |
| Key | Type | Default | Description |
|---|---|---|---|
expandMode |
bool | false |
Two-stage activation (preview then launch). |
hideMissingArtwork |
bool | false |
Hide items that have no artwork. |
titleExclusionPatterns |
csv (regex) | empty | Patterns stripped from displayed titles. |
titleExclusionEnabled |
bool | false |
Toggle the pattern list. |
headerLogoImage |
path | empty | Logo painted across the top of the grid. |
headerLogoPosition |
enum | topleft |
topleft / topcenter / topright. |
The remaining keys (appearance, sidebar styling, colors, list view) are covered in Themes & Appearance, Sidebar & Details Pane, and View Modes.
For the master list see Configuration Reference.
- The C++ struct is
CollectionConfigin src/utils/app/collectionutils.h. Every key in this page maps 1:1 to a struct member. - Hierarchy traversal goes through
CollectionHierarchyCache(collectionutils.h) andNavigationStackManager(src/modules/input/navigation/). Parent-index → name resolution happens there. - Linked-parent rewrites on rename are in src/ui/dialogs/settingsdialogtree.cpp.
- Virtual subfolder collections are synthesized at scan time by
QueryManager; they haveisSubcollection=truebut no INI section and no UUID. Look forcurrentSubfolderincollectionutils.hto follow the runtime-only field that drives them. - Playlists are also synthesized as virtual collections (with
isPlaylist=true); see Playlists & Favorites for the schema.