{#if loading}
Loading configuration…
{:else if loadError}
Failed to load config {loadError}
{:else if config}
Config Workspace
Appearance Search Keybindings Performance
Appearance Fonts, palette, and theme preferences.
Theme: Light
{#each PALETTE_FIELDS as field (field.key)}
{ config!.appearance.light_palette[field.key] = v; }} />
{#if !isHexColor(config.appearance.light_palette[field.key])}

Expected hex color like #RRGGBB

{/if}
{/each}
Theme: Dark
{#each PALETTE_FIELDS as field (field.key)}
{ config!.appearance.dark_palette[field.key] = v; }} />
{#if !isHexColor(config.appearance.dark_palette[field.key])}

Expected hex color like #RRGGBB

{/if}
{/each}
Search Default engine and shortcuts.
Search Shortcuts

Map prefixes like g to URL templates.

Performance Profile WebKitGTK rendering and memory tuning presets. {#if config.performance?.hardware} {@const hw = config.performance.hardware}
Detected Hardware
CPU: {hw.cpu_cores}c/{hw.cpu_threads}t
RAM: {hw.total_ram_mb > 0 ? (hw.total_ram_mb / 1024).toFixed(0) + ' GB' : '?'}
GPU: {hw.gpu_vendor || 'Unknown'}
VRAM: {hw.vram_mb > 0 ? (hw.vram_mb / 1024).toFixed(0) + ' GB' : (hw.gpu_vendor === 'intel' ? 'Shared' : '?')}
{/if}

Experimental Feature

Performance profiles are experimental. Results may vary depending on your hardware and WebKitGTK version.

{#if config.performance}
{#each PERFORMANCE_PROFILES as profile (profile.value)} {/each}
{:else}
Performance settings not available. This may be due to a configuration error.
{/if} {#if config.performance?.profile === "custom"}
Custom Settings

0 = unset (WebKit default). Max 8.

-1 = unset, 0 = disable GPU tiles.

0 = unset (WebKit default).

0 = unset (WebKit default).

Pre-created WebViews at startup.

{/if} {#if config.performance?.resolved}
Resolved Settings (applied on restart)
Skia CPU Threads {config.performance.resolved.skia_cpu_threads === 0 ? 'unset' : config.performance.resolved.skia_cpu_threads}

Parallel threads for CPU-based 2D rendering. More threads = faster paint operations.

Skia GPU Threads {config.performance.resolved.skia_gpu_threads === -1 ? 'unset' : config.performance.resolved.skia_gpu_threads}

Threads for GPU texture uploads and shader compilation.

Web Process Memory {config.performance.resolved.web_process_memory_mb === 0 ? 'unset' : config.performance.resolved.web_process_memory_mb + ' MB'}

Memory limit for web content processes (JavaScript, DOM, rendering).

Network Process Memory {config.performance.resolved.network_process_memory_mb === 0 ? 'unset' : config.performance.resolved.network_process_memory_mb + ' MB'}

Memory limit for network operations (HTTP cache, connections).

WebView Pool Prewarm {config.performance.resolved.webview_pool_prewarm}

Pre-created WebViews at startup for faster new tab/pane creation.

{/if}
{#if saveSuccess} Saved {:else} Ready {/if} {#if themeEvents > 0} Theme x{themeEvents} {/if}
{#if activeTab !== "keybindings"}
{#snippet child({ props })} {/snippet} Reset to defaults? This will reset all settings on this page to their default values. You will still need to click Save to persist the changes. Cancel Reset Defaults
{/if}
{#if saveError}
{saveError}
{/if} {#if showRestartWarning}

Restart Required

Performance settings are applied at browser startup. Restart Dumber for changes to take effect.

{/if} {/if}