README.md

July 12, 2026 · View on GitHub

Aporia

Deep Blue · Context-Aware · High-Performance

A professional Zsh theme built for developers who want their prompt to tell them something useful — without slowing them down.

Latest Release Zsh Version CI Status License Aporia Theme Preview

The Aporia Philosophy

Aporia isn't just a prompt — it's a context-aware environment. It adapts to your project, your privileges, and your operating system, staying out of the way when you're busy and surfacing detail the moment you need it. Every segment that touches the network or the filesystem runs asynchronously, so the prompt never blocks on a slow git status or a cold cloud CLI.

Core Features

  • Asynchronous Prompt Engine: Git status, language versions, and plugin segments all resolve in background workers (zle -F) — the prompt renders instantly and fills in as data arrives.
  • Theme Presets: Switch between deep_blue, light, amber, crimson_void, and forest_matrix with aporia theme <name>.
  • Adaptive Icons: Four icon tiers — Nerd Font, Font Awesome, standard Unicode, and plain ASCII — so the prompt still looks intentional even without a patched font.
  • Adaptive Branding: Distro-aware OS icons for macOS, Debian, Ubuntu, Arch, Fedora, and 40+ others.
  • Polyglot Awareness: Real-time project detection for Go, Rust, Python, Node, Ruby, PHP, Java, and C++, shown only when you're actually inside a matching project.
  • Context Intelligence: Dedicated segments for Docker, Kubernetes, AWS/GCP/Azure identity, VPN state, and operational target tracking.
  • Aporia Essentials: Built-in support for ghost-text autosuggestions and live syntax highlighting out of the box.

Compatibility

Aporia targets native performance on any Unix-like system:

  • macOS: Native support via Homebrew or the standard installer.
  • Linux: Debian, Ubuntu, Arch, Fedora, Alpine, and most other distributions.
  • Windows: Supported via WSL2 (install the Nerd Font on the Windows host, not just inside WSL).
  • Bash users: The installer adds a lightweight bash → zsh bridge to both ~/.bashrc and ~/.profile, so a bash login shell hands off to your themed zsh automatically — no manual chsh required (though chsh -s $(which zsh) is still offered).

Requirements:

  • Zsh: version 5.3 or newer (5.8+ recommended for higher-precision command timing).
  • Font: A Nerd Font (e.g. JetBrainsMono, Hack) for full-fidelity icons. Not strictly required — see Troubleshooting for fallback modes.

Installation

1-Click Install (Universal)

The fastest way to get started on any system. The installer handles dependencies, configures your shell, offers to install a Nerd Font, and reloads your terminal automatically:

curl -fsSL https://raw.githubusercontent.com/fr3on/aporia/main/install.sh | zsh

Homebrew (macOS)

brew tap fr3on/aporia https://github.com/fr3on/aporia
brew install aporia
aporia-setup

aporia-setup adds the source line to your .zshrc for you — safe to re-run, it skips itself if already configured.

Plugin Managers

ManagerConfiguration
Oh My Zshgit clone https://github.com/fr3on/aporia $ZSH_CUSTOM/themes/aporia
Set ZSH_THEME="aporia/aporia" in .zshrc
Zinitzinit ice pick"aporia.zsh-theme"; zinit light fr3on/aporia
Antigenantigen theme fr3on/aporia
Zplugzplug "fr3on/aporia", as:theme

Warning

Don't mix installation methods on the same machine (e.g. Homebrew and the manual installer both sourcing the theme in .zshrc). Two copies loading in the same shell will fight over config defaults — whichever sources first "wins" any variable the second one tries to set. Pick one.

The Aporia CLI

Aporia ships a built-in management command, aporia, for everything below. Run aporia help any time for the full list.

CommandDescription
aporia infoShow the status dashboard: OS, icon tier, active theme, segment toggles, plugin count. Default when run with no arguments.
aporia theme <name>Switch color preset (deep_blue, light, amber, crimson_void, forest_matrix).
aporia icons <set>Switch icon tier (nerd, font_awesome, unicode, ascii) and persist it to .zshrc. Offers to install a Nerd Font if none is detected.
aporia fonts installDownload and install JetBrainsMono Nerd Font directly (no need to re-run the full installer).
aporia doctorRun health checks: Zsh version, locale, git availability, icon mode.
aporia benchmarkProfile the git segment, language segment, and render pass — useful when the prompt feels slow.
aporia inspectDump raw segment data for debugging.
aporia listShow every registered plugin and its status (active / installed / not installed).
aporia upgradeUpdate Aporia in place (detects Homebrew, git checkout, or manual install) and reports the version change.

Plugin System

Aporia ships 23 plugins, all opt-in via the AP_PLUGINS array so a fresh install stays minimal. Two — zsh-autosuggestions and zsh-syntax-highlighting — are treated as essentials and installed automatically.

Tip

New to Aporia plugins? The Plugin Guide documents every plugin with configuration examples.

Highlights

PluginDescriptionCategory
docker-ctxDocker context in the prompt, read from config — no subprocessContext
kube-ctxkubectl context:namespace, parsed from kubeconfig directlyContext
aws-profileActive AWS profile and region, colored red for prod-like profilesContext
gh-contextGitHub CLI identity, cached per sessionContext
vpn-statusDetects Tailscale, Mullvad, or a generic tun/wg tunnelContext
telemetryCPU/RAM load, shown only above a configurable thresholdContext
targetPins an operational IP/host in the prompt to prevent command leakageContext
sudoWarns when a shell has elevated privilegesProductivity
fzf-tabReplaces the tab-completion menu with fzfUtility
fast-syntax-highlightingDrop-in FSH replacement, faster and themeableEssential

See PLUGINS.md for the remaining cloud (azure-ctx, gcp-ctx), environment (autoswitch-venv, nix-shell), search (history-substring-search, fzf-history), and interaction (forgit, autopair, you-should-use) plugins.

Management Commands

  • aporia install <p>: Downloads a third-party plugin.
  • aporia activate <p>: Enables a plugin and saves it to ~/.zshrc.
  • aporia deactivate <p>: Disables a plugin and removes it from ~/.zshrc.
  • aporia activate-all: Activates every installed-but-inactive plugin at once.
  • aporia update: Pulls the latest changes for all installed plugins.

Configuration

Set these in your ~/.zshrc before the line that sources the theme:

VariableDefaultDescription
AP_THEMEdeep_blueColor preset: deep_blue, light, amber, crimson_void, forest_matrix
AP_ICON_STYLEnerdIcon tier: nerd, font_awesome
AP_USE_NERD_FONT1Set to 0 to use the standard Unicode tier instead of Nerd Font glyphs
AP_ASCII_FALLBACK0Set to 1 to force plain ASCII (no special font or Unicode needed)
AP_SHOW_SSH1Show SSH context (user@host) when connected remotely
AP_SHOW_GIT1Show git branch, dirty state, and ahead/behind counts
AP_SHOW_LANGS1Show language versions, only inside matching projects
AP_SHOW_EXEC_TIME0Show the last command's execution time
AP_EXEC_TIME_THRESHOLD0Minimum duration (seconds) before execution time is shown; 0 shows it for every command
AP_SHOW_EXIT_CODE1Show non-zero exit codes
AP_SHOW_TIME1Show the right-side clock
AP_DIR_DEPTH3Number of path segments to show in the directory indicator

Prefer aporia theme <name> and aporia icons <set> over hand-editing AP_THEME/AP_ICON_STYLE directly — the CLI commands persist the change to .zshrc for you and validate the input.

Troubleshooting

Important

Icons appearing as squares or plain text?

  1. Confirm you're using a Nerd Font — run aporia fonts install if you don't have one, then set it as your terminal's font (installing it isn't enough; it has to be selected).
  2. Check your locale: run locale and confirm LANG includes UTF-8.
  3. No Nerd Font available? Run aporia icons unicode (or aporia icons ascii for zero special characters).

Important

Icons look inconsistent — some noticeably bigger than others? This almost always means your terminal profile isn't actually using the font you think it is (e.g. a different Nerd Font family than the one Aporia was tested against). Check what font your terminal profile is set to, and standardize on the same Nerd Font (we recommend JetBrainsMono Nerd Font Mono, via aporia fonts install) across every machine you use Aporia on.

Important

A setting I changed doesn't seem to take effect? Check for a second Aporia install sourcing the theme in the same shell (see the installation warning above) — the first one to load wins any default the second tries to set. Also check you haven't set the variable manually in the current shell session (echo $AP_SHOW_EXEC_TIME, etc.) — a bare assignment in your terminal persists for that session even after source ~/.zshrc.

License

MIT © Ahmed Mardi (fr3on)