Themes & Settings
Themes
Three built-in themes — all dark:
| Theme | Base |
|---|---|
| Default | Catppuccin Mocha |
| Black Space | High-contrast black background |
| Red Function | Brand 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:
| Tier | Color | Used for |
|---|---|---|
| Healthy | Green | Ready, Running, Synced |
| Pending | Orange | Progressing, Updating, OutOfSync-pending |
| Failed | Red | Error, CrashLoopBackOff, Failed |
| Awaiting | Purple | Queued, Starting |
| Neutral | Gray | Unknown, empty |
Configuration files
Application state — window positions, kubeconfigs, per-context namespace memory, theme, resource group customizations — is persisted as JSON.
| Platform | Path |
|---|---|
| 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:
- If an update is available, a splash window shows progress while downloading.
- Binary is verified against SHA-256.
- On success, the app re-execs itself with the new version.
- On macOS, the
.appbundle 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.