-
Notifications
You must be signed in to change notification settings - Fork 0
View Modes
Each collection can be displayed in one of four view modes. The choice
is per-collection (it's part of the collection's settings) but you can
switch on the fly — the toolbar's view dropdown and Ctrl+1–Ctrl+4
swap modes immediately.
| Mode | Shortcut | Best for |
|---|---|---|
| Grid (default) | Ctrl+1 |
Cover-art-driven libraries: games, movies, photos. |
| List | Ctrl+2 |
Long, text-heavy libraries: documents, music tracks, tools. |
| Cover Flow | Ctrl+3 |
Showcase / kiosk / slideshow-style browsing. |
| Horizontal | Ctrl+4 |
TV-style row layouts and wide displays. |
Where to find this — Settings Dialog → Appearance tab → View Type, or toolbar View dropdown. Also persisted as
viewType=grid|list|coverflow|horizontalin the collection's INI section.
Selection state is preserved across mode switches (assuming
rememberSelection=true, the default), so you can flip between Grid
and List without losing your place.
The default. Tiles flow left-to-right, wrapping into rows. Vertical scroll is primary.
| Setting | INI key | Notes |
|---|---|---|
| Items per row | gridWidth |
Default 4. Adjust live with Ctrl++ / Ctrl+-. |
| Tile width | itemWidth |
Pixels. |
| Tile height | itemHeight |
Pixels. |
| Tile font size | fontSize |
Title text size. |
| Tile corner radius | cornerRadius |
Rounded-corner radius. |
| Horizontal gap | horizontalSpacing |
Pixel gap between columns. |
| Vertical gap | verticalSpacing |
Pixel gap between rows. |
| Alignment | horizontalAlignment |
left, center, right. |
| Hide titles | hideTitles |
Hide the title line under each tile. |
| Hide subcollection titles | hideSubcollectionTitles |
Hide titles only on subcollection tiles. |
| Hide horizontal scrollbar | hideHorizontalScrollbar |
|
| Hide vertical scrollbar | hideVerticalScrollbar |
When the Expand sidebar is docked (see
Sidebar & Details Pane), the available
grid area shrinks. To avoid awkwardly-sized tiles, Kartend supports an
alternate gridWidth that takes effect when the sidebar is hidden:
| Key | Effect |
|---|---|
gridWidthSidebarHidden |
Replaces gridWidth while the Expand sidebar is hidden. |
gridHeightSidebarHidden |
Replaces vertical fit when the sidebar is docked top/bottom. |
Set both if you toggle the sidebar often.
Grid view uses virtual scrolling:
only the visible rows are materialized. A 100,000-item collection
renders the same as a 100-item one. The pixmap cache budget
(pixmapCacheSizeMB global, default 50) bounds memory.
One item per row. Columns: collection icon (or item type icon), item name, optional artwork thumbnail. Vertical scroll is primary; horizontal scroll appears only when columns overflow.
| Setting | INI key | Notes |
|---|---|---|
| Row height | listRowHeight |
Pixels. Default 40. |
| Font size | listFontSize |
Default 11. |
| Row color | listRowColor |
Hex. |
| Alternate row color | listAltRowColor |
Hex. Stripes every other row. |
| Collection-icon column width | [General] listCollectionColumnWidth |
Global, default 150. Config-only — no Settings Dialog control. |
| Artwork column width | [General] listArtworkColumnWidth |
Global, default 32. Config-only — no Settings Dialog control. |
List view honors keyboard repeat tuned for fast scrolling: see
listKeyboardRepeatIntervalMs (default 50) and
listClickHoldRepeatIntervalMs (default 80) under
Configuration Reference.
Holding ↓ in List view scrolls roughly 5× faster than in Grid by
default — tune to taste.
- Long collections of similar-looking items (text files, manuals, music tracks) where artwork doesn't help discrimination
- Discoverability via item name rather than cover art
- Side-by-side comparison of metadata in the sidebar (Item tab updates per row)
3D-style center-focus carousel. The selected item is rendered large in the center; nearby items angle off to either side. Driven by horizontal scroll.
-
Sidebar is automatically hidden while in Cover Flow so the
carousel takes the full viewport. When you switch away from Cover
Flow, the sidebar returns to whatever state it was in beforehand
(your
sidebarVisiblepreference is preserved, just temporarily overridden). -
Video-first: if the selected item has a preview video in the
collection's
videoDirectory, it plays full-screen in the Cover Flow center tile instead of artwork. Falls back to artwork when no video is available. See Video Previews. - Keyboard:
←/→move selection along the carousel.Enterlaunches.Ctrl+1–4switch to another mode.
Most Grid-view appearance keys (item width / height, corner radius,
font size, background) apply identically. The carousel's animation
timing is global and lives in UIConstants; tuning it requires a
rebuild (see docs/dev/constants.md).
- Showcase displays, kiosk setups, attract-mode walls
- Collections where video previews are the primary content (e.g. movie reels, demoscene productions)
- A movie-poster vibe where one cover gets full attention at a time
Like Grid, but the wrap axis is flipped: items flow top-to-bottom, wrapping into columns. Horizontal scroll is primary.
| Setting | INI key | Notes |
|---|---|---|
| Items per column | horizontalGridHeight |
Default 4. Re-uses the gridWidth UI; just renamed conceptually. |
| Items per column when sidebar hidden | horizontalGridHeightSidebarHidden |
Override for Expand sidebar interactions. |
All other Grid keys (tile width / height, fonts, colors, spacing, backgrounds, parallax, vignette) apply.
- Wide displays where vertical scroll feels cramped
- TV-row layouts mimicking streaming-app shelves (one long row of items)
- Collections where you want a very shallow vertical fit (one or two
rows) — set
horizontalGridHeight=1or2
Three ways:
-
Toolbar — click the View dropdown. Each option triggers an
immediate switch and writes the new
viewTypefor the collection. -
Keyboard —
Ctrl+1(Grid),Ctrl+2(List),Ctrl+3(Cover Flow),Ctrl+4(Horizontal). - Settings Dialog — Appearance tab → View Type dropdown. Useful when you want to flip multiple collections at once via the scope selector.
Each view button can be hidden globally:
[General]
toolbarShowGridViewButton=true
toolbarShowListViewButton=true
toolbarShowCoverFlowViewButton=false
toolbarShowHorizontalViewButton=falseThe keyboard shortcuts and the View → Layout menu still work; only the toolbar buttons are hidden. See Toolbar & Menus.
You can also rename buttons:
toolbarGridViewButtonText=Tiles
toolbarListViewButtonText=RowsThere is no global "default view" setting per se — each collection
remembers its own viewType. To apply one mode to many collections at
once:
- Set the desired view on a representative collection.
- Open Settings → use the Apply To Selected workflow with the Appearance category checked. See Settings Dialog.
Across all view modes, the selected item is marked by a translucent
selection overlay painted on top of the tile, tinted by
selectionColor (per-collection, see
Themes & Appearance). When you
move selection — arrow keys, mouse click, gamepad, alphabetic jump
— the overlay glides from the previous tile to the new one
rather than jump-cutting. The animation is short (matching the
scroll ease) so rapid keypresses still feel responsive.
Specifics:
- During click-and-hold scrolling the overlay is force-visible so you can see where the cursor is even as the grid scrolls underneath.
- In Cover Flow the carousel itself moves the center slot; the overlay is suppressed in favor of the carousel's depth/scale cues.
- The animation timing lives in
UIConstantsand is not a user-tunable setting today. If you need the indicator to jump instantly (e.g. for accessibility or recording), file a feature request.
| Aspect | Grid | List | Cover Flow | Horizontal |
|---|---|---|---|---|
| Scroll axis | Vertical | Vertical | Horizontal (carousel) | Horizontal |
| Sidebar default | Available | Available | Forced hidden | Available |
| Video previews | Sidebar only | Sidebar only | Full-screen center tile | Sidebar only |
| Best for | Cover-driven libraries | Text-heavy libraries | Kiosk / attract | TV / wide displays |
| Preserves selection across mode switch | ✓ | ✓ | ✓ | ✓ |
- View modes are a
ViewTypeenum in src/utils/app/collectiontypes.h. - Each mode is wired through
ScrollManagerand a corresponding view-engine class under src/modules/input/scroll/:- Grid / Horizontal share the
VirtualScrollEngine. - List has its own row-rendering path.
- Cover Flow lives in the
coverflowview engine and has its own interaction handler that overrides default arrow-key behavior.
- Grid / Horizontal share the
- Sidebar suppression in Cover Flow is an external hide flag set on
SidebarManager— it bypasses the persistedsidebarVisibleand is cleared on view-mode change so the user's preference returns. - Adding a new view mode involves: extending
ViewType, adding a view engine, wiring it intoScrollManager::switchViewMode(), adding the toolbar button + menu entry + keyboard shortcut, adding visibility & label keys toGeneralSettings, and updating Configuration Reference.