Skip to main content

Themes & Settings

Themes

Three built-in themes — all dark:

ThemeBase
DefaultCatppuccin Mocha
Black SpaceHigh-contrast black background
Red FunctionBrand theme, red accents

Switch from Dots menu → Theme. The choice persists across sessions.

Every theme switch calls ctx.set_visuals(Visuals::dark()) first to reset any field that the previous theme changed — prevents leakage where one theme's colors bleed into the next.

Status badge colors

Status/Health/Sync pills are centralized via a StatusTier enum. Colors are consistent across the app:

TierColorUsed for
HealthyGreenReady, Running, Synced
PendingOrangeProgressing, Updating, OutOfSync-pending
FailedRedError, CrashLoopBackOff, Failed
AwaitingPurpleQueued, Starting
NeutralGrayUnknown, empty

Configuration files

Application state — window positions, kubeconfigs, per-context namespace memory, theme, resource group customizations — is persisted as JSON.

PlatformPath
Linux~/.config/KubezillaDesktop/
macOS~/Library/Application Support/KubezillaDesktop/
Windows%LOCALAPPDATA%\KubezillaDesktop\

Main file: state.json. Crash reports and update artifacts live in the same directory.

What's in state.json

  • List of configured kubeconfigs (local / SSH / inline) including bookmarks on macOS.
  • Last-used kubeconfig + context + namespace + kind.
  • Per-context namespace memory ("kubeconfig_path+context" → "last-namespace").
  • Column visibility preferences per kind.
  • Custom resource groups.
  • Theme selection.
  • Window size / position.
  • Viewport size memory (Info, Edit, Shell, Log, etc. — each remembers its last size).

Resetting

Delete state.json to restore defaults. The app will re-discover kubeconfigs from ~/.kube/ on next launch.

Auto-updater

On startup, the app checks for a newer release:

  1. If an update is available, a splash window shows progress while downloading.
  2. Binary is verified against SHA-256.
  3. On success, the app re-execs itself with the new version.
  4. On macOS, the .app bundle is replaced (requires restart if already open elsewhere).

You can defer an update by closing the splash — the app launches with the current version.

Leftover update artifacts from a previous run are cleaned up at startup.

Crash reports

A panic hook writes crash reports (stack trace + app state excerpt) to the config directory on fatal errors.

On next launch, the crash reporter (a separate small UI, invoked with --crash-report) loads the crash file and offers to submit it (opt-in).

You can find raw crash reports at:

  • Linux: ~/.config/KubezillaDesktop/crash-*.json
  • macOS: ~/Library/Application Support/KubezillaDesktop/crash-*.json
  • Windows: %LOCALAPPDATA%\KubezillaDesktop\crash-*.json

Telemetry

Opt-in. When enabled:

  • Tracks app_opened, app_closed, and feature usage events.
  • Runs a 60-second heartbeat reporting CPU and memory (via sysinfo).

Disable from the settings dialog — the flag persists in state.json.

Feedback

Send feedback without leaving the app: Dots menu → Feedback. Supports text plus attachments (images, short videos). Submissions are uploaded async.