summaryrefslogtreecommitdiff
path: root/zsh/theme/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/theme/README.md')
-rw-r--r--zsh/theme/README.md2107
1 files changed, 2107 insertions, 0 deletions
diff --git a/zsh/theme/README.md b/zsh/theme/README.md
new file mode 100644
index 0000000..884cb21
--- /dev/null
+++ b/zsh/theme/README.md
@@ -0,0 +1,2107 @@
+# Powerlevel10k
+[![Gitter](https://badges.gitter.im/powerlevel10k/community.svg)](
+ https://gitter.im/powerlevel10k/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+
+- **THE PROJECT HAS VERY LIMITED SUPPORT**
+- **NO NEW FEATURES ARE IN THE WORKS**
+- **MOST BUGS WILL GO UNFIXED**
+- **HELP REQUESTS WILL BE IGNORED**
+
+Powerlevel10k is a theme for Zsh. It emphasizes [speed](#uncompromising-performance),
+[flexibility](#extremely-customizable) and [out-of-the-box experience](#configuration-wizard).
+
+![Powerlevel10k](
+https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/prompt-styles-high-contrast.png)
+
+- [Getting started](#getting-started)
+- [Features](#features)
+- [Installation](#installation)
+- [Configuration](#configuration)
+- [Fonts](#fonts)
+- [Try it in Docker](#try-it-in-docker)
+- [License](#license)
+- [FAQ](#faq)
+- [Troubleshooting](#troubleshooting)
+
+## Getting started
+
+1. [Install the recommended font](#meslo-nerd-font-patched-for-powerlevel10k). *Optional but highly
+ recommended.*
+1. [Install Powerlevel10k](#installation) itself.
+1. Restart Zsh with `exec zsh`.
+1. Type `p10k configure` if the configuration wizard doesn't start automatically.
+
+## Features
+
+- [Configuration wizard](#configuration-wizard)
+- [Uncompromising performance](#uncompromising-performance)
+- [Powerlevel9k compatibility](#powerlevel9k-compatibility)
+- [Pure compatibility](#pure-compatibility)
+- [Instant prompt](#instant-prompt)
+- [Show on command](#show-on-command)
+- [Transient prompt](#transient-prompt)
+- [Current directory that just works](#current-directory-that-just-works)
+- [Extremely customizable](#extremely-customizable)
+- [Batteries included](#batteries-included)
+- [Extensible](#extensible)
+
+### Configuration wizard
+
+Type `p10k configure` to access the builtin configuration wizard right from your terminal.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Configuration Wizard](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/configuration-wizard.gif)
+</details>
+
+All styles except [Pure](#pure-compatibility) are functionally equivalent. They display the same
+information and differ only in presentation.
+
+Configuration wizard creates `~/.p10k.zsh` based on your preferences. Additional prompt
+customization can be done by editing this file. It has plenty of comments to help you navigate
+through configuration options.
+
+*Tip*: Install [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k) before
+running `p10k configure` to unlock all prompt styles.
+
+*FAQ:*
+
+- [What is the best prompt style in the configuration wizard?](
+ #what-is-the-best-prompt-style-in-the-configuration-wizard)
+- [What do different symbols in Git status mean?](
+ #what-do-different-symbols-in-git-status-mean)
+- [How do I change prompt colors?](#how-do-i-change-prompt-colors)
+
+*Troubleshooting*:
+
+- [Some prompt styles are missing from the configuration wizard](
+ #some-prompt-styles-are-missing-from-the-configuration-wizard).
+- [Question mark in prompt](#question-mark-in-prompt).
+- [Icons, glyphs or powerline symbols don't render](#icons-glyphs-or-powerline-symbols-dont-render).
+- [Sub-pixel imperfections around powerline symbols](
+ #sub-pixel-imperfections-around-powerline-symbols).
+- [Directory is difficult to see in prompt when using Rainbow style](
+ #directory-is-difficult-to-see-in-prompt-when-using-rainbow-style).
+
+### Uncompromising performance
+
+When you hit *ENTER*, the next prompt appears instantly. With Powerlevel10k there is no prompt lag.
+If you install Cygwin on Raspberry Pi, `cd` into a Linux Git repository and activate enough prompt
+segments to fill four prompt lines on both sides of the screen... wait, that's just crazy and no
+one ever does that. Probably impossible, too. The point is, Powerlevel10k prompt is always fast, no
+matter what you do!
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Performance](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/performance.gif)
+</details>
+
+Note how the effect of every command is instantly reflected by the very next prompt.
+
+| Command | Prompt Indicator | Meaning |
+|-------------------------------|:----------------:|----------------------------------------------------------------------:|
+| `timew start hack linux` | `⌚ hack linux` | time tracking enabled in [timewarrior](https://timewarrior.net/) |
+| `touch x y` | `?2` | 2 untracked files in the Git repo |
+| `rm COPYING` | `!1` | 1 unstaged change in the Git repo |
+| `echo 3.7.3 >.python-version` | `🐍 3.7.3` | the current python version in [pyenv](https://github.com/pyenv/pyenv) |
+
+Other Zsh themes capable of displaying the same information either produce prompt lag or print
+prompt that doesn't reflect the current state of the system and then refresh it later. With
+Powerlevel10k you get fast prompt *and* up-to-date information.
+
+*FAQ*: [Is it really fast?](#is-it-really-fast)
+
+### Powerlevel9k compatibility
+
+Powerlevel10k understands all [Powerlevel9k](https://github.com/Powerlevel9k/powerlevel9k)
+configuration parameters.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Compatibility with 9k](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/9k-compatibility.gif)
+</details>
+
+[Migration](#installation) from Powerlevel9k to Powerlevel10k is a straightforward process. All
+your `POWERLEVEL9K` configuration parameters will still work. Prompt will look the same as before
+([almost](
+ #does-powerlevel10k-always-render-exactly-the-same-prompt-as-powerlevel9k-given-the-same-config))
+but it will be [much faster](#uncompromising-performance) ([certainly](#is-it-really-fast)).
+
+*FAQ*:
+
+- [I'm using Powerlevel9k with Oh My Zsh. How do I migrate?](
+ #im-using-powerlevel9k-with-oh-my-zsh-how-do-i-migrate)
+- [Does Powerlevel10k always render exactly the same prompt as Powerlevel9k given the same config?](
+ #does-powerlevel10k-always-render-exactly-the-same-prompt-as-powerlevel9k-given-the-same-config)
+- [What is the relationship between Powerlevel9k and Powerlevel10k?](
+ #What-is-the-relationship-between-powerlevel9k-and-powerlevel10k)
+
+### Pure compatibility
+
+Powerlevel10k can produce the same prompt as [Pure](https://github.com/sindresorhus/pure). Type
+`p10k configure` and select *Pure* style.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Pure Style](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/pure-style.gif)
+</details>
+
+You can still use Powerlevel10k features such as [transient prompt](#transient-prompt) or
+[instant prompt](#instant-prompt) when sporting Pure style.
+
+To customize prompt, edit `~/.p10k.zsh`. Powerlevel10k doesn't recognize Pure configuration
+parameters, so you'll need to use `POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3` instead of
+`PURE_CMD_MAX_EXEC_TIME=3`, etc. All relevant parameters are in `~/.p10k.zsh`. This file has
+plenty of comments to help you navigate through it.
+
+*FAQ:* [What is the best prompt style in the configuration wizard?](
+ #what-is-the-best-prompt-style-in-the-configuration-wizard)
+
+### <a name='what-is-instant-prompt'></a>Instant prompt
+
+If your `~/.zshrc` loads many plugins, or perhaps just a few slow ones
+(for example, [pyenv](https://github.com/pyenv/pyenv) or [nvm](https://github.com/nvm-sh/nvm)), you
+may have noticed that it takes some time for Zsh to start.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k No Instant Prompt](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/no-instant-prompt.gif)
+</details>
+
+Powerlevel10k can remove Zsh startup lag **even if it's not caused by a theme**.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Instant Prompt](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/instant-prompt.gif)
+</details>
+
+This feature is called *Instant Prompt*. You need to explicitly enable it through `p10k configure`
+or [manually](#how-do-i-configure-instant-prompt). It does what it says on the tin -- prints prompt
+instantly upon Zsh startup allowing you to start typing while plugins are still loading.
+
+Other themes *increase* Zsh startup lag -- some by a lot, others by a just a little. Powerlevel10k
+*removes* it outright.
+
+If you are curious about how *Instant Prompt* works, see
+[this section in zsh-bench](https://github.com/romkatv/zsh-bench#instant-prompt).
+
+*FAQ:* [How do I configure instant prompt?](#how-do-i-configure-instant-prompt)
+
+### Show on command
+
+The behavior of some commands depends on global environment. For example, `kubectl run ...` runs an
+image on the cluster defined by the current kubernetes context. If you frequently change context
+between "prod" and "testing", you might want to display the current context in Zsh prompt. If you do
+likewise for AWS, Azure and Google Cloud credentials, prompt will get pretty crowded.
+
+Enter *Show On Command*. This feature makes prompt segments appear only when they are relevant to
+the command you are currently typing.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Show On Command](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/show-on-command.gif)
+</details>
+
+Configs created by `p10k configure` enable show on command for several prompt segments by default.
+Here's the relevant parameter for kubernetes context:
+
+```zsh
+# Show prompt segment "kubecontext" only when the command you are typing invokes one of these tools.
+typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens'
+```
+
+To customize when different prompt segments are shown, open `~/.p10k.zsh`, search for
+`SHOW_ON_COMMAND` and either remove these parameters to display affected segments unconditionally,
+or change their values.
+
+### Transient prompt
+
+When *Transient Prompt* is enabled through `p10k configure`, Powerlevel10k will trim down every
+prompt when accepting a command line.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Transient Prompt](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/transient-prompt.gif)
+</details>
+
+Transient prompt makes it much easier to copy-paste series of commands from the terminal scrollback.
+
+*Tip*: If you enable transient prompt, take advantage of two-line prompt. You'll get the benefit of
+extra space for typing commands without the usual drawback of reduced scrollback density. Sparse
+prompt (with an empty line before prompt) also works great in combination with transient prompt.
+
+### Current directory that just works
+
+The current working directory is perhaps the most important prompt segment. Powerlevel10k goes to
+great length to highlight its important parts and to truncate it with the least loss of information
+when horizontal space gets scarce.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Directory Truncation](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/directory-truncation.gif)
+</details>
+
+When the full directory doesn't fit, the leftmost segment gets truncated to its shortest unique
+prefix. In the screencast, `~/work` becomes `~/wo`. It couldn't be truncated to `~/w` because it
+would be ambiguous (there was `~/wireguard` when the session was recorded). The next segment --
+`projects` -- turns into `p` as there was nothing else that started with `p` in `~/work/`.
+
+Directory segments are shown in one of three colors:
+
+- Truncated segments are bleak.
+- Important segments are bright and never truncated. These include the first and the last segment,
+ roots of Git repositories, etc.
+- Regular segments (not truncated but can be) use in-between color.
+
+*Tip*: If you copy-paste a truncated directory and hit *TAB*, it'll complete to the original.
+
+*Troubleshooting*: [Directory is difficult to see in prompt when using Rainbow style.](
+ #directory-is-difficult-to-see-in-prompt-when-using-rainbow-style)
+
+### Extremely customizable
+
+Powerlevel10k can be configured to look like any other Zsh theme out there.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Other Theme Emulation](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/other-theme-emulation.gif)
+</details>
+
+[Pure](#pure-compatibility), [Powerlevel9k](#powerlevel9k-compatibility) and [robbyrussell](
+ #how-to-make-powerlevel10k-look-like-robbyrussell-oh-my-zsh-theme) emulations are built-in.
+To emulate the appearance of other themes, you'll need to write a suitable configuration file. The
+best way to go about it is to run `p10k configure`, select the style that is the closest to your
+goal and then edit `~/.p10k.zsh`.
+
+The full range of Powerlevel10k appearance spans from spartan:
+
+![Powerlevel10k Spartan Style](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/spartan-style.png)
+
+To ~~ridiculous~~ extravagant:
+
+![Powerlevel10k Extravagant Style](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/extravagant-style.png)
+
+### Batteries included
+
+Powerlevel10k comes with dozens of built-in high quality prompt segments that can display
+information from a variety of sources. When you run `p10k configure` and choose any style
+except [Pure](#pure-compatibility), many of these segments get enabled by
+default while others can be manually enabled by opening `~/.p10k.zsh` and uncommenting them.
+You can enable as many segments as you like. It won't slow down your prompt or Zsh startup.
+
+| Segment | Meaning |
+|--------:|---------|
+| `anaconda` | virtual environment from [conda](https://conda.io/) |
+| `asdf` | tool versions from [asdf](https://github.com/asdf-vm/asdf) |
+| `aws` | [aws profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) |
+| `aws_eb_env` | [aws elastic beanstalk](https://aws.amazon.com/elasticbeanstalk/) environment |
+| `azure` | [azure](https://docs.microsoft.com/en-us/cli/azure) account name |
+| `background_jobs` | presence of background jobs |
+| `battery` | internal battery state and charge level (yep, batteries *literally* included) |
+| `command_execution_time` | duration (wall time) of the last command |
+| `context` | user@hostname |
+| `cpu_arch` | CPU architecture |
+| `dir` | current working directory |
+| `direnv` | [direnv](https://direnv.net/) status |
+| `disk_usage` | disk usage |
+| `dotnet_version` | [dotnet](https://dotnet.microsoft.com) version |
+| `fvm` | flutter environment from [fvm](https://github.com/leoafarias/fvm) |
+| `gcloud` | [google cloud](https://cloud.google.com/) cli account and project |
+| `goenv` | go environment from [goenv](https://github.com/syndbg/goenv) |
+| `google_app_cred` | [google application credentials](https://cloud.google.com/docs/authentication/production) |
+| `go_version` | [go](https://golang.org) version |
+| `haskell_stack` | haskell version from [stack](https://haskellstack.org/) |
+| `ip` | IP address and bandwidth usage for a specified network interface |
+| `java_version` | [java](https://www.java.com/) version |
+| `jenv` | java environment from [jenv](https://github.com/jenv/jenv) |
+| `kubecontext` | current [kubernetes](https://kubernetes.io/) context |
+| `laravel_version` | [laravel php framework](https://laravel.com/) version |
+| `load` | CPU load |
+| `luaenv` | lua environment from [luaenv](https://github.com/cehoffman/luaenv) |
+| `midnight_commander` | [midnight commander](https://midnight-commander.org/) shell |
+| `nix_shell` | [nix shell](https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) indicator |
+| `nnn` | [nnn](https://github.com/jarun/nnn) shell |
+| `lf` | [lf](https://github.com/gokcehan/lf) shell |
+| `chezmoi_shell` | [chezmoi](https://www.chezmoi.io/) shell |
+| `nodeenv` | node.js environment from [nodeenv](https://github.com/ekalinin/nodeenv) |
+| `nodenv` | node.js environment from [nodenv](https://github.com/nodenv/nodenv) |
+| `node_version` | [node.js](https://nodejs.org/) version |
+| `nordvpn` | [nordvpn](https://nordvpn.com/) connection status |
+| `nvm` | node.js environment from [nvm](https://github.com/nvm-sh/nvm) |
+| `os_icon` | your OS logo (apple for macOS, swirl for debian, etc.) |
+| `package` | `name@version` from [package.json](https://docs.npmjs.com/files/package.json) |
+| `per_directory_history` | Oh My Zsh [per-directory-history](https://github.com/jimhester/per-directory-history) local/global indicator |
+| `perlbrew` | perl version from [perlbrew](https://github.com/gugod/App-perlbrew) |
+| `phpenv` | php environment from [phpenv](https://github.com/phpenv/phpenv) |
+| `php_version` | [php](https://www.php.net/) version |
+| `plenv` | perl environment from [plenv](https://github.com/tokuhirom/plenv) |
+| `prompt_char` | multi-functional prompt symbol; changes depending on vi mode: `❯`, `❮`, `V`, `▶` for insert, command, visual and replace mode respectively; turns red on error |
+| `proxy` | system-wide http/https/ftp proxy |
+| `public_ip` | public IP address |
+| `pyenv` | python environment from [pyenv](https://github.com/pyenv/pyenv) |
+| `ram` | free RAM |
+| `ranger` | [ranger](https://github.com/ranger/ranger) shell |
+| `yazi` | [yazi](https://github.com/sxyazi/yazi) shell |
+| `rbenv` | ruby environment from [rbenv](https://github.com/rbenv/rbenv) |
+| `rust_version` | [rustc](https://www.rust-lang.org) version |
+| `rvm` | ruby environment from [rvm](https://rvm.io) |
+| `scalaenv` | scala version from [scalaenv](https://github.com/scalaenv/scalaenv) |
+| `status` | exit code of the last command |
+| `swap` | used swap |
+| `taskwarrior` | [taskwarrior](https://taskwarrior.org/) task count |
+| `terraform` | [terraform](https://www.terraform.io) workspace |
+| `terraform_version` | [terraform](https://www.terraform.io) version |
+| `time` | current time |
+| `timewarrior` | [timewarrior](https://timewarrior.net/) tracking status |
+| `todo` | [todo](https://github.com/todotxt/todo.txt-cli) items |
+| `toolbox` | [toolbox](https://github.com/containers/toolbox) name |
+| `vcs` | Git repository status |
+| `vim_shell` | [vim](https://www.vim.org/) shell (`:sh`) |
+| `virtualenv` | python environment from [venv](https://docs.python.org/3/library/venv.html) |
+| `vi_mode` | vi mode (you don't need this if you've enabled prompt_char) |
+| `vpn_ip` | virtual private network indicator |
+| `wifi` | WiFi speed |
+| `xplr` | [xplr](https://github.com/sayanarijit/xplr) shell |
+
+### Extensible
+
+If there is no prompt segment that does what you need, implement your own. Powerlevel10k provides
+public API for defining segments that are as fast and as flexible as built-in ones.
+
+<details>
+ <summary>Screen recording</summary>
+
+ ![Powerlevel10k Custom Segment](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/custom-segment.gif)
+</details>
+
+On Linux you can fetch current CPU temperature by reading `/sys/class/thermal/thermal_zone0/temp`.
+The screencast shows how to define a prompt segment to display this value. Once the segment is
+defined, you can use it like any other segment. All standard customization parameters will work for
+it out of the box.
+
+Type `p10k help segment` for reference.
+
+*Note*: If you modify `POWERLEVEL9K_*` parameters in an already initialized interactive shell (as
+opposed to editing `~/.p10k.zsh`), the changes might not be immediately effective. To apply the
+modifications, invoke `p10k reload`. Setting `POWERLEVEL9K_DISABLE_HOT_RELOAD=false` eliminates the
+necessity for `p10k reload` but results in a marginally slower prompt.
+
+*Tip*: Prefix names of your own segments with `my_` to avoid clashes with future versions of
+Powerlevel10k.
+
+## Installation
+
+- [Manual](#manual) 👈 **choose this if confused or uncertain**
+- [Oh My Zsh](#oh-my-zsh)
+- [Prezto](#prezto)
+- [Zim](#zim)
+- [Antibody](#antibody)
+- [Antidote](#antidote)
+- [Antigen](#antigen)
+- [Zplug](#zplug)
+- [Zgen](#zgen)
+- [Zplugin](#zplugin)
+- [Zinit](#zinit)
+- [Zi](#zi)
+- [Zap](#zap)
+- [Homebrew](#homebrew)
+- [Arch Linux](#arch-linux)
+- [Alpine Linux](#alpine-linux)
+- [Fig](#fig)
+
+### Manual
+
+```zsh
+git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
+echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
+```
+
+Users in China can use the official mirror on gitee.com for faster download.<br>
+中国用户可以使用 gitee.com 上的官方镜像加速下载.
+
+```zsh
+git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ~/powerlevel10k
+echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
+```
+
+This is the simplest kind of installation and it works even if you are using a plugin manager. Just
+make sure to disable the current theme in your plugin manager. See
+[troubleshooting](#cannot-make-powerlevel10k-work-with-my-plugin-manager) for help.
+
+### Oh My Zsh
+
+1. Clone the repository:
+ ```zsh
+ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
+ ```
+ Users in China can use the official mirror on gitee.com for faster download.<br>
+ 中国用户可以使用 gitee.com 上的官方镜像加速下载.
+
+ ```zsh
+ git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
+ ```
+2. Set `ZSH_THEME="powerlevel10k/powerlevel10k"` in `~/.zshrc`.
+
+### Prezto
+
+Add `zstyle :prezto:module:prompt theme powerlevel10k` to `~/.zpreztorc`.
+
+### Zim
+
+Add `zmodule romkatv/powerlevel10k --use degit` to `~/.zimrc` and run `zimfw install`.
+
+### Antibody
+
+Add `antibody bundle romkatv/powerlevel10k` to `~/.zshrc`.
+
+### Antidote
+
+Add `romkatv/powerlevel10k` to `~/.zsh_plugins.txt`.
+
+### Antigen
+
+Add `antigen theme romkatv/powerlevel10k` to `~/.zshrc`. Make sure you have `antigen apply`
+somewhere after it.
+
+### Zplug
+
+Add `zplug romkatv/powerlevel10k, as:theme, depth:1` to `~/.zshrc`.
+
+### Zgen
+
+Add `zgen load romkatv/powerlevel10k powerlevel10k` to `~/.zshrc`.
+
+### Zplugin
+
+Add `zplugin ice depth=1; zplugin light romkatv/powerlevel10k` to `~/.zshrc`.
+
+The use of `depth=1` ice is optional. Other types of ice are neither recommended nor officially
+supported by Powerlevel10k.
+
+### Zinit
+
+Add `zinit ice depth=1; zinit light romkatv/powerlevel10k` to `~/.zshrc`.
+
+The use of `depth=1` ice is optional. Other types of ice are neither recommended nor officially
+supported by Powerlevel10k.
+
+### Zi
+
+Add `zi ice depth=1; zi light romkatv/powerlevel10k` to `~/.zshrc`.
+
+The use of `depth=1` ice is optional. Other types of ice are neither recommended nor officially
+supported by Powerlevel10k.
+
+### Zap
+
+Add `plug "romkatv/powerlevel10k"` to `~/.zshrc`.
+
+### Homebrew
+
+```zsh
+brew install powerlevel10k
+echo "source $(brew --prefix)/share/powerlevel10k/powerlevel10k.zsh-theme" >>~/.zshrc
+```
+
+### Arch Linux
+
+```zsh
+yay -S --noconfirm zsh-theme-powerlevel10k-git
+echo 'source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
+```
+
+[zsh-theme-powerlevel10k-git](https://aur.archlinux.org/packages/zsh-theme-powerlevel10k-git/)
+referenced above is the official Powerlevel10k package.
+
+There is also [zsh-theme-powerlevel10k](
+ https://www.archlinux.org/packages/extra/x86_64/zsh-theme-powerlevel10k/) package.
+Historically, [it has been breaking often and for extended periods of time](
+ https://github.com/romkatv/powerlevel10k/pull/786). **Do not use it.**
+
+### Alpine Linux
+
+```zsh
+apk add zsh zsh-theme-powerlevel10k
+mkdir -p ~/.local/share/zsh/plugins
+ln -s /usr/share/zsh/plugins/powerlevel10k ~/.local/share/zsh/plugins/
+```
+
+### Fig
+
+Follow the instructions on
+[this page](https://fig.io/plugins/other/powerlevel10k).
+
+## Configuration
+
+- [For new users](#for-new-users)
+- [For Powerlevel9k users](#for-powerlevel9k-users)
+
+### For new users
+
+On the first run, Powerlevel10k [configuration wizard](#configuration-wizard) will ask you a few
+questions and configure your prompt. If it doesn't trigger automatically, type `p10k configure`.
+Configuration wizard creates `~/.p10k.zsh` based on your preferences. Additional prompt
+customization can be done by editing this file. It has plenty of comments to help you navigate
+through configuration options.
+
+*FAQ*:
+
+- [What is the best prompt style in the configuration wizard?](
+ #what-is-the-best-prompt-style-in-the-configuration-wizard)
+- [What do different symbols in Git status mean?](
+ #what-do-different-symbols-in-git-status-mean)
+- [How do I change the format of Git status?](#how-do-i-change-the-format-of-git-status)
+- [How do I add username and/or hostname to prompt?](
+ #how-do-i-add-username-andor-hostname-to-prompt)
+- [How do I change prompt colors?](#how-do-i-change-prompt-colors)
+- [Why some prompt segments appear and disappear as I'm typing?](
+ #why-some-prompt-segments-appear-and-disappear-as-im-typing)
+
+*Troubleshooting*:
+
+- [Question mark in prompt](#question-mark-in-prompt).
+- [Icons, glyphs or powerline symbols don't render](#icons-glyphs-or-powerline-symbols-dont-render).
+- [Sub-pixel imperfections around powerline symbols](
+ #sub-pixel-imperfections-around-powerline-symbols).
+- [Directory is difficult to see in prompt when using Rainbow style](
+ #directory-is-difficult-to-see-in-prompt-when-using-rainbow-style).
+
+### For Powerlevel9k users
+
+If you've been using Powerlevel9k before, **do not remove the configuration options**. Powerlevel10k
+will pick them up and provide you with the same prompt UI you are used to. See
+[Powerlevel9k compatibility](#powerlevel9k-compatibility).
+
+*FAQ*:
+
+- [I'm using Powerlevel9k with Oh My Zsh. How do I migrate?](
+ #im-using-powerlevel9k-with-oh-my-zsh-how-do-i-migrate)
+- [What is the relationship between Powerlevel9k and Powerlevel10k?](
+ #what-is-the-relationship-between-powerlevel9k-and-powerlevel10k)
+- [Does Powerlevel10k always render exactly the same prompt as Powerlevel9k given the same config?](
+ #does-powerlevel10k-always-render-exactly-the-same-prompt-as-powerlevel9k-given-the-same-config)
+
+*Troubleshooting*: [Extra or missing spaces in prompt compared to Powerlevel9k](
+ #extra-or-missing-spaces-in-prompt-compared-to-powerlevel9k).
+
+## Fonts
+
+Powerlevel10k doesn't require custom fonts but can take advantage of them if they are available.
+It works well with [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts),
+[Source Code Pro](https://github.com/adobe-fonts/source-code-pro),
+[Font Awesome](https://fontawesome.com/), [Powerline](https://github.com/powerline/fonts), and even
+the default system fonts. The full choice of style options is available only when using
+[Nerd Fonts](https://github.com/ryanoasis/nerd-fonts).
+
+👇 **Recommended font**: Meslo Nerd Font patched for Powerlevel10k. 👇
+
+### <a name='recommended-meslo-nerd-font-patched-for-powerlevel10k'></a><a name='font'></a>Meslo Nerd Font patched for Powerlevel10k
+
+Gorgeous monospace font designed by Jim Lyles for Bitstream, customized by the same for Apple,
+further customized by André Berg, and finally patched by yours truly with customized scripts
+originally developed by Ryan L McIntyre of Nerd Fonts. Contains all glyphs and symbols that
+Powerlevel10k may need. Battle-tested in dozens of different terminals on all major operating
+systems.
+
+*FAQ*: [How was the recommended font created?](#how-was-the-recommended-font-created)
+
+#### Automatic font installation
+
+If you are using iTerm2 or Termux, `p10k configure` can install the recommended font for you.
+Simply answer `Yes` when asked whether to install *Meslo Nerd Font*.
+
+If you are using a different terminal, proceed with manual font installation. 👇
+
+#### Manual font installation
+
+1. Download these four ttf files:
+ - [MesloLGS NF Regular.ttf](
+ https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf)
+ - [MesloLGS NF Bold.ttf](
+ https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf)
+ - [MesloLGS NF Italic.ttf](
+ https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf)
+ - [MesloLGS NF Bold Italic.ttf](
+ https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf)
+1. Double-click on each file and click "Install". This will make `MesloLGS NF` font available to all
+ applications on your system.
+1. Configure your terminal to use this font:
+ - **iTerm2**: Type `p10k configure` and answer `Yes` when asked whether to install
+ *Meslo Nerd Font*. Alternatively, open *iTerm2 → Preferences → Profiles → Text* and set *Font* to
+ `MesloLGS NF`.
+ - **Apple Terminal**: Open *Terminal → Preferences → Profiles → Text*, click *Change* under *Font*
+ and select `MesloLGS NF` family.
+ - **Hyper**: Open *Hyper → Edit → Preferences* and change the value of `fontFamily` under
+ `module.exports.config` to `MesloLGS NF`.
+ - **Visual Studio Code**: Open *File → Preferences → Settings* (PC) or
+ *Code → Preferences → Settings* (Mac), enter `terminal.integrated.fontFamily` in the search box at
+ the top of *Settings* tab and set the value below to `MesloLGS NF`.
+ Consult [this screenshot](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/389133fb8c9a2347929a23702ce3039aacc46c3d/visual-studio-code-font-settings.jpg)
+ to see how it should look like or see [this issue](
+ https://github.com/romkatv/powerlevel10k/issues/671) for extra information.
+ - **GNOME Terminal** (the default Ubuntu terminal): Open *Terminal → Preferences* and click on the
+ selected profile under *Profiles*. Check *Custom font* under *Text Appearance* and select
+ `MesloLGS NF Regular`.
+ - **Konsole**: Open *Settings → Edit Current Profile → Appearance*, click *Select Font* and select
+ `MesloLGS NF Regular`.
+ - **Tilix**: Open *Tilix → Preferences* and click on the selected profile under *Profiles*. Check
+ *Custom font* under *Text Appearance* and select `MesloLGS NF Regular`.
+ - **Windows Console Host** (the old thing): Click the icon in the top left corner, then
+ *Properties → Font* and set *Font* to `MesloLGS NF`.
+ - **Windows Terminal** by Microsoft (the new thing): Open *Settings* (<kbd>Ctrl+,</kbd>), click
+ either on the selected profile under *Profiles* or on *Defaults*, click *Appearance* and set
+ *Font face* to `MesloLGS NF`.
+ - **Conemu**: Open *Setup → General → Fonts* and set *Main console font* to `MesloLGS NF`.
+ - **IntelliJ** (and other IDEs by Jet Brains): Open *IDE → Edit → Preferences → Editor →
+ Color Scheme → Console Font*. Select *Use console font instead of the default* and set the font
+ name to `MesloLGS NF`.
+ - **Termux**: Type `p10k configure` and answer `Yes` when asked whether to install
+ *Meslo Nerd Font*.
+ - **Blink**: Type `config`, go to *Appearance*, tap *Add a new font*, tap *Open Gallery*, select
+ *MesloLGS NF.css*, tap *import* and type `exit` in the home view to reload the font.
+ - **Tabby** (formerly **Terminus**): Open *Settings → Appearance* and set *Font* to `MesloLGS NF`.
+ - **Terminator**: Open *Preferences* using the context menu. Under *Profiles* select the *General*
+ tab (should be selected already), uncheck *Use the system fixed width font* (if not already)
+ and select `MesloLGS NF Regular`. Exit the Preferences dialog by clicking *Close*.
+ - **Guake**: Right Click on an open terminal and open *Preferences*. Under *Appearance*
+ tab, uncheck *Use the system fixed width font* (if not already) and select `MesloLGS NF Regular`.
+ Exit the Preferences dialog by clicking *Close*.
+ - **MobaXterm**: Open *Settings* → *Configuration* → *Terminal* → (under *Terminal look and feel*)
+ and change *Font* to `MesloLGS NF`. If you have *sessions*, you need to change the font in each
+ of them through *Settings* → right click on an individual session → *Edit Session* → *Terminal
+ Settings* → *Font settings*.
+ - **Asbrú Connection Manager**: Open *Preferences → Local Shell Options → Look and Feel*, enable
+ *Use these personal options* and change *Font:* under *Terminal UI* to `MesloLGS NF Regular`.
+ To change the font for the remote host connections, go to *Preferences → Terminal Options →
+ Look and Feel* and change *Font:* under *Terminal UI* to `MesloLGS NF Regular`.
+ - **WSLtty**: Right click on an open terminal and then on *Options*. In the *Text* section, under
+ *Font*, click *"Select..."* and set Font to `MesloLGS NF Regular`.
+ - **Yakuake**: Click *≡* → *Manage Profiles* → *New* → *Appearance*. Click *Choose* next to the
+ *Font* dropdown, select `MesloLGS NF` and click *OK*. Click *OK* to save the profile. Select the
+ new profile and click *Set as Default*.
+ - **Alacritty**: Create or open `~/.config/alacritty/alacritty.toml` and add the following
+ section to it:
+ ```toml
+ [font.normal]
+ family = "MesloLGS NF"
+ ```
+ - **foot**: Create or open `~/.config/foot/foot.ini` and add the following section to it:
+ ```ini
+ font=MesloLGS NF:size=12
+ ```
+ - **kitty**: Create or open `~/.config/kitty/kitty.conf` and add the following line to it:
+ ```text
+ font_family MesloLGS NF
+ ```
+ Restart kitty by closing all sessions and opening a new session.
+ - **puTTY**: Set *Window* → *Appearance* → *Font* to `MesloLGS NF`. Requires puTTY
+ version >= 0.75.
+ - **WezTerm**: Create or open `$HOME/.config/wezterm/wezterm.lua` and add the following:
+ ```lua
+ local wezterm = require 'wezterm';
+ return {
+ font = wezterm.font("MesloLGS NF"),
+ }
+ ```
+ If the file already exists, only add the line with the font to the existing return.
+ Also add the first line if it is not already present.
+ - **urxvt**: Create or open `~/.Xresources` and add the following line to it:
+ ```text
+ URxvt.font: xft:MesloLGS NF:size=11
+ ```
+ You can adjust the font size to your preference. After changing the config run
+ `xrdb ~/.Xresources` to reload it. The new config is applied to all new terminals.
+ - **xterm**: Create or open `~/.Xresources` and add the following line to it:
+ ```text
+ xterm*faceName: MesloLGS NF
+ ```
+ After changing the config run `xrdb ~/.Xresources` to reload it. The new config is applied to
+ all new terminals.
+ - **Zed**: Open `~/.config/zed/settings.json` and set `terminal.font_family` to `"MesloLGS NF"`.
+ ```jsonc
+ {
+ "terminal": {
+ "font_family": "MesloLGS NF"
+ },
+ // Other settings.
+ }
+ ```
+ - Crostini (Linux on Chrome OS): Open
+ chrome-untrusted://terminal/html/nassh_preferences_editor.html, set *Text font family* to
+ `'MesloLGS NF'` (including the quotes) and *Custom CSS (inline text)* to the following:
+ ```css
+ @font-face {
+ font-family: "MesloLGS NF";
+ src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Regular.ttf");
+ font-weight: normal;
+ font-style: normal;
+ }
+ @font-face {
+ font-family: "MesloLGS NF";
+ src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold.ttf");
+ font-weight: bold;
+ font-style: normal;
+ }
+ @font-face {
+ font-family: "MesloLGS NF";
+ src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Italic.ttf");
+ font-weight: normal;
+ font-style: italic;
+ }
+ @font-face {
+ font-family: "MesloLGS NF";
+ src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold%20Italic.ttf");
+ font-weight: bold;
+ font-style: italic;
+ }
+ ```
+ **_CAVEAT_**: If you open the normal terminal preferences these settings will be overwritten.
+1. Run `p10k configure` to generate a new `~/.p10k.zsh`. The old config may work
+ incorrectly with the new font.
+
+_Using a different terminal and know how to set the font for it? Share your knowledge by sending a
+PR to expand the list!_
+
+## Try it in Docker
+
+Try Powerlevel10k in Docker. You can safely make any changes to the file system while trying out
+the theme. Once you exit Zsh, the container is deleted.
+
+```zsh
+docker run -e TERM -e COLORTERM -e LC_ALL=C.UTF-8 -it --rm alpine sh -uec '
+ apk add git zsh nano vim
+ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
+ echo "source ~/powerlevel10k/powerlevel10k.zsh-theme" >>~/.zshrc
+ cd ~/powerlevel10k
+ exec zsh'
+```
+
+*Tip*: Install [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k) before
+running the Docker command to get access to all prompt styles.
+
+*Tip*: Run `p10k configure` while in Docker to try a different prompt style.
+
+## License
+
+Powerlevel10k is released under the
+[MIT license](https://github.com/romkatv/powerlevel10k/blob/master/LICENSE).
+
+## FAQ
+
+- [How do I update Powerlevel10k?](#how-do-i-update-powerlevel10k)
+- [How do I uninstall Powerlevel10k?](#how-do-i-uninstall-powerlevel10k)
+- [How do I install Powerlevel10k on a machine without Internet access?](#how-do-i-install-powerlevel10k-on-a-machine-without-internet-access)
+- [Where can I ask for help and report bugs?](#where-can-i-ask-for-help-and-report-bugs)
+- [Which aspects of shell and terminal does Powerlevel10k affect?](#which-aspects-of-shell-and-terminal-does-powerlevel10k-affect)
+- [I'm using Powerlevel9k with Oh My Zsh. How do I migrate?](#im-using-powerlevel9k-with-oh-my-zsh-how-do-i-migrate)
+- [Is it really fast?](#is-it-really-fast)
+- [How do I configure instant prompt?](#how-do-i-configure-instant-prompt)
+- [How do I initialize direnv when using instant prompt?](#how-do-i-initialize-direnv-when-using-instant-prompt)
+- [How do I export GPG_TTY when using instant prompt?](#how-do-i-export-gpg_tty-when-using-instant-prompt)
+- [What do different symbols in Git status mean?](#what-do-different-symbols-in-git-status-mean)
+- [How do I change the format of Git status?](#how-do-i-change-the-format-of-git-status)
+- [Why is Git status from `$HOME/.git` not displayed in prompt?](#why-is-git-status-from-homegit-not-displayed-in-prompt)
+- [Why does Git status sometimes appear grey and then gets colored after a short period of time?](#why-does-git-status-sometimes-appear-grey-and-then-gets-colored-after-a-short-period-of-time)
+- [How do I add username and/or hostname to prompt?](#how-do-i-add-username-andor-hostname-to-prompt)
+- [Why some prompt segments appear and disappear as I'm typing?](#why-some-prompt-segments-appear-and-disappear-as-im-typing)
+- [How do I change prompt colors?](#how-do-i-change-prompt-colors)
+- [Why does Powerlevel10k spawn extra processes?](#why-does-powerlevel10k-spawn-extra-processes)
+- [Are there configuration options that make Powerlevel10k slow?](#are-there-configuration-options-that-make-powerlevel10k-slow)
+- [Is Powerlevel10k fast to load?](#is-powerlevel10k-fast-to-load)
+- [What is the relationship between Powerlevel9k and Powerlevel10k?](#what-is-the-relationship-between-powerlevel9k-and-powerlevel10k)
+- [Does Powerlevel10k always render exactly the same prompt as Powerlevel9k given the same config?](#does-powerlevel10k-always-render-exactly-the-same-prompt-as-powerlevel9k-given-the-same-config)
+- [What is the best prompt style in the configuration wizard?](#what-is-the-best-prompt-style-in-the-configuration-wizard)
+- [How to make Powerlevel10k look like robbyrussell Oh My Zsh theme?](#how-to-make-powerlevel10k-look-like-robbyrussell-oh-my-zsh-theme)
+- [Can prompts for completed commands display error status for *those* commands instead of the commands preceding them?](#can-prompts-for-completed-commands-display-error-status-for-those-commands-instead-of-the-commands-preceding-them)
+- [What is the minimum supported Zsh version?](#what-is-the-minimum-supported-zsh-version)
+- [How were these screenshots and animated gifs created?](#how-were-these-screenshots-and-animated-gifs-created)
+- [How was the recommended font created?](#how-was-the-recommended-font-created)
+- [How to package Powerlevel10k for distribution?](#how-to-package-powerlevel10k-for-distribution)
+
+### How do I update Powerlevel10k?
+
+The command to update Powerlevel10k depends on how it was installed.
+
+| Installation | Update command |
+|-------------------------------|-------------------------------------------------------------|
+| [Manual](#manual) | `git -C ~/powerlevel10k pull` |
+| [Oh My Zsh](#oh-my-zsh) | `git -C ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k pull` |
+| [Prezto](#prezto) | `zprezto-update` |
+| [Zim](#zim) | `zimfw update` |
+| [Antigen](#antigen) | `antigen update` |
+| [Antidote](#antidote) | `antidote update` |
+| [Zplug](#zplug) | `zplug update` |
+| [Zgen](#zgen) | `zgen update` |
+| [Zplugin](#zplugin) | `zplugin update` |
+| [Zinit](#zinit) | `zinit update` |
+| [Zi](#zi) | `zi update` |
+| [Zap](#zap) | `zap update` |
+| [Homebrew](#homebrew) | `brew update && brew upgrade` |
+| [Arch Linux](#arch-linux) | `yay -S --noconfirm zsh-theme-powerlevel10k-git` |
+| [Alpine Linux](#alpine-linux) | `apk update && apk upgrade` |
+
+**IMPORTANT**: Restart Zsh after updating Powerlevel10k. [Do not use `source ~/.zshrc`](
+ #weird-things-happen-after-typing-source-zshrc).
+
+### How do I uninstall Powerlevel10k?
+
+1. Remove all references to "p10k" from `~/.zshrc`. You might have this snippet at the top:
+ ```zsh
+ if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+ fi
+ ```
+ And this at the bottom:
+ ```zsh
+ [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+ ```
+ These are added by the [configuration wizard](#configuration-wizard). Remove them.
+2. Remove all references to "powerlevel10k" from `~/.zshrc`, `~/.zpreztorc` and `~/.zimrc` (some
+ of these files may be missing -- this is normal). These references have been added manually by
+ yourself when installing Powerlevel10k. Refer to the [installation instructions](#installation)
+ if you need a reminder.
+3. Verify that all references to "p10k" and "powerlevel10k" are gone from `~/.zshrc`, `~/.zpreztorc`
+ and `~/.zimrc`.
+ ```zsh
+ grep -E 'p10k|powerlevel10k' ~/.zshrc ~/.zpreztorc ~/.zimrc 2>/dev/null
+ ```
+ If this command produces output, there are still references to "p10k" or "powerlevel10k". You
+ need to remove them.
+4. Delete Powerlevel10k configuration file. This file is created by the
+ [configuration wizard](#configuration-wizard) and may contain manual edits by yourself.
+ ```zsh
+ rm -f ~/.p10k.zsh
+ ```
+5. Delete Powerlevel10k source files. These files have been downloaded when you've installed
+ Powerlevel10k. The command to delete them depends on which installation method you'd chosen.
+ Refer to the [installation instructions](#installation) if you need a reminder.
+
+ | Installation | Uninstall command |
+ |-------------------------------|------------------------------------------------------------------|
+ | [Manual](#manual) | `rm -rf ~/powerlevel10k` |
+ | [Oh My Zsh](#oh-my-zsh) | `rm -rf -- ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k` |
+ | [Prezto](#prezto) | n/a |
+ | [Zim](#zim) | `zimfw uninstall` |
+ | [Antigen](#antigen) | `antigen purge romkatv/powerlevel10k` |
+ | [Antidote](#antidote) | `antidote purge romkatv/powerlevel10k` |
+ | [Zplug](#zplug) | `zplug clean` |
+ | [Zgen](#zgen) | `zgen reset` |
+ | [Zplugin](#zplugin) | `zplugin delete romkatv/powerlevel10k` |
+ | [Zinit](#zinit) | `zinit delete romkatv/powerlevel10k` |
+ | [Zi](#zi) | `zi delete romkatv/powerlevel10k` |
+ | [Zap](#zap) | `zsh -ic 'zap clean'` |
+ | [Homebrew](#homebrew) | `brew uninstall powerlevel10k` |
+ | [Arch Linux](#arch-linux) | `yay -R --noconfirm zsh-theme-powerlevel10k-git` |
+ | [Alpine Linux](#alpine-linux) | `apk del zsh-theme-powerlevel10k` |
+6. Restart Zsh. [Do not use `source ~/.zshrc`](#weird-things-happen-after-typing-source-zshrc).
+7. Delete Powerlevel10k cache files.
+ ```zsh
+ rm -rf -- "${XDG_CACHE_HOME:-$HOME/.cache}"/p10k-*(N) "${XDG_CACHE_HOME:-$HOME/.cache}"/gitstatus
+ ```
+
+### How do I install Powerlevel10k on a machine without Internet access?
+
+1. Run this command on the machine without Internet access:
+ ```sh
+ uname -sm | tr '[A-Z]' '[a-z]'
+ ```
+2. Run these commands on a machine connected to the Internet after replacing the value of
+ `target_uname` with the output of the previous command:
+ ```sh
+ target_uname="replace this with the output of the previous command"
+ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
+ GITSTATUS_CACHE_DIR="$HOME"/powerlevel10k/gitstatus/usrbin ~/powerlevel10k/gitstatus/install -f -s "${target_uname% *}" -m "${target_uname#* }"
+ ```
+3. Copy `~/powerlevel10k` from the machine connected to the Internet to the one without Internet
+ access.
+4. Add `source ~/powerlevel10k/powerlevel10k.zsh-theme` to `~/.zshrc` on the machine without
+ Internet access:
+ ```zsh
+ echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
+ ```
+5. If `~/.zshrc` on the machine without Internet access sets `ZSH_THEME`, remove that line.
+ ```zsh
+ sed -i.bak '/^ZSH_THEME=/d' ~/.zshrc
+ ```
+
+To update, remove `~/powerlevel10k` on both machines and repeat steps 1-3.
+
+### Where can I ask for help and report bugs?
+
+The best way to ask for help and to report bugs is to [open an issue](
+ https://github.com/romkatv/powerlevel10k/issues).
+
+[Gitter](
+ https://gitter.im/powerlevel10k/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+is another option.
+
+If all else fails, email roman.perepelitsa@gmail.com.
+
+If necessary, encrypt your communication with [this PGP key](
+ https://api.github.com/users/romkatv/gpg_keys).
+
+### Which aspects of shell and terminal does Powerlevel10k affect?
+
+Powerlevel10k defines prompt and nothing else. It sets [prompt-related options](
+ http://zsh.sourceforge.net/Doc/Release/Options.html#Prompting), and parameters `PS1` and `RPS1`.
+
+![Prompt Highlight](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/prompt-highlight.png)
+
+Everything within the highlighted areas on the screenshot is produced by Powerlevel10k.
+Powerlevel10k has no control over the terminal content or colors outside these areas.
+
+Powerlevel10k does not affect:
+
+- Terminal window/tab title.
+- Colors used by `ls`.
+- The behavior of `git` command.
+- The content and style of <kbd>Tab</kbd> completions.
+- Command line colors (syntax highlighting, autosuggestions, etc.).
+- Key bindings.
+- Aliases.
+- Prompt parameters other than `PS1` and `RPS1`.
+- Zsh options other than those [related to prompt](
+ http://zsh.sourceforge.net/Doc/Release/Options.html#Prompting).
+- The set of available commands. Powerlevel10k does not install any new commands
+ with the only exception of `p10k`.
+
+### I'm using Powerlevel9k with Oh My Zsh. How do I migrate?
+
+1. Run this command:
+```zsh
+# Add powerlevel10k to the list of Oh My Zsh themes.
+git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
+# Replace ZSH_THEME="powerlevel9k/powerlevel9k" with ZSH_THEME="powerlevel10k/powerlevel10k".
+sed -i.bak 's/powerlevel9k/powerlevel10k/g' ~/.zshrc
+# Restart Zsh.
+exec zsh
+```
+2. *Optional but highly recommended:*
+ 1. Install [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k).
+ 1. Type `p10k configure` and choose your favorite prompt style.
+
+*Related:*
+ - [Powerlevel9k compatibility.](#powerlevel9k-compatibility)
+ - [Does Powerlevel10k always render exactly the same prompt as Powerlevel9k given the same config?](
+ #does-powerlevel10k-always-render-exactly-the-same-prompt-as-powerlevel9k-given-the-same-config)
+ - [Extra or missing spaces in prompt compared to Powerlevel9k.](
+ #extra-or-missing-spaces-in-prompt-compared-to-powerlevel9k)
+ - [Configuration wizard.](#configuration-wizard)
+
+### Is it really fast?
+
+Yes. See [zsh-bench](https://github.com/romkatv/zsh-bench) or a direct comparison with
+[Powerlevel9k](https://asciinema.org/a/NHRjK3BMePw66jtRVY2livHwZ) and
+[Spaceship](https://asciinema.org/a/253094).
+
+### <a name='how-do-i-enable-instant-prompt'></a>How do I configure instant prompt?
+
+See [instant prompt](#instant-prompt) to learn about instant prompt. This section explains how you
+can enable and configure it and lists caveats that you should be aware of.
+
+Instant prompt can be enabled either through `p10k configure` or by manually adding the following
+code snippet at the top of `~/.zshrc`:
+
+```zsh
+# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
+# Initialization code that may require console input (password prompts, [y/n]
+# confirmations, etc.) must go above this block; everything else may go below.
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+```
+
+It's important that you copy the lines verbatim. Don't replace `source` with something else, don't
+call `zcompile`, don't redirect output, etc.
+
+When instant prompt is enabled, for the duration of Zsh initialization standard input is redirected
+to `/dev/null` and standard output with standard error are redirected to a temporary file. Once Zsh
+is fully initialized, standard file descriptors are restored and the content of the temporary file
+is printed out.
+
+When using instant prompt, you should carefully check any output that appears on Zsh startup as it
+may indicate that initialization has been altered, or perhaps even broken, by instant prompt.
+Initialization code that may require console input, such as asking for a keyring password or for a
+*[y/n]* confirmation, must be moved above the instant prompt preamble in `~/.zshrc`. Initialization
+code that merely prints to console but never reads from it will work correctly with instant prompt,
+although output that normally has colors may appear uncolored. You can either leave it be, suppress
+the output, or move it above the instant prompt preamble.
+
+Here's an example of `~/.zshrc` that breaks when instant prompt is enabled:
+
+```zsh
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+
+keychain id_rsa --agents ssh # asks for password
+chatty-script # spams to stdout even when everything is fine
+# ...
+```
+
+Fixed version:
+
+```zsh
+keychain id_rsa --agents ssh # moved before instant prompt
+
+# OK to perform console I/O before this point.
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+# From this point on, until zsh is fully initialized, console input won't work and
+# console output may appear uncolored.
+
+chatty-script >/dev/null # spam output suppressed
+# ...
+```
+
+If `POWERLEVEL9K_INSTANT_PROMPT` is unset or set to `verbose`, Powerlevel10k will print a warning
+when it detects console output during initialization to bring attention to potential issues. You can
+silence this warning (without suppressing console output) with `POWERLEVEL9K_INSTANT_PROMPT=quiet`.
+This is recommended if some initialization code in `~/.zshrc` prints to console and it's infeasible
+to move it above the instant prompt preamble or to suppress its output. You can completely disable
+instant prompt with `POWERLEVEL9K_INSTANT_PROMPT=off`. Do this if instant prompt breaks Zsh
+initialization and you don't know how to fix it.
+
+The value of `POWERLEVEL9K_INSTANT_PROMPT` can be changed by running `p10k configure` and selecting
+the appropriate option on the *Instant Prompt* screen. Alternatively, you can search for
+`POWERLEVEL9K_INSTANT_PROMPT` in the existing `~/.p10k.zsh` and change its value there.
+
+*Note*: Instant prompt requires Zsh >= 5.4. It's OK to enable it even when using an older version of
+Zsh but it won't do anything.
+
+*FAQ*:
+
+- [How do I initialize direnv when using instant prompt?](
+ #how-do-i-initialize-direnv-when-using-instant-prompt)
+- [How do I export GPG_TTY when using instant prompt?](
+ #how-do-i-export-gpg_tty-when-using-instant-prompt)
+
+### How do I initialize direnv when using instant prompt?
+
+If you've enabled [instant prompt](#instant-prompt), you should have these lines at the top of
+`~/.zshrc`:
+
+```zsh
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+```
+
+To initialize direnv you need to add one line above that block and one line below it.
+
+```zsh
+(( ${+commands[direnv]} )) && emulate zsh -c "$(direnv export zsh)"
+
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+
+(( ${+commands[direnv]} )) && emulate zsh -c "$(direnv hook zsh)"
+```
+
+*Related*: [How do I export GPG_TTY when using instant prompt?](
+ #how-do-i-export-gpg_tty-when-using-instant-prompt)
+
+### How do I export GPG_TTY when using instant prompt?
+
+You can export `GPG_TTY` like this anywhere in `~/.zshrc`:
+
+```zsh
+export GPG_TTY=$TTY
+```
+
+This works whether you are using [instant prompt](#instant-prompt) or not. It works even if you
+aren't using powerlevel10k. As an extra bonus, it's much faster than the commonly used
+`export GPG_TTY=$(tty)`.
+
+*Related*: [How do I initialize direnv when using instant prompt?](
+ #how-do-i-initialize-direnv-when-using-instant-prompt)
+
+### What do different symbols in Git status mean?
+
+When using Lean, Classic or Rainbow style, Git status may look like this:
+
+```text
+feature:master wip ⇣42⇡42 ⇠42⇢42 *42 merge ~42 +42 !42 ?42
+```
+
+| Symbol | Meaning | Source |
+| --------- | -------------------------------------------------------------------- | ------------------------------------------------------ |
+| `feature` | current branch; replaced with `#tag` or `@commit` if not on a branch | `git status --ignore-submodules=dirty` |
+| `master` | remote tracking branch; only shown if different from local branch | `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}` |
+| `wip` | the latest commit's summary contains "wip" or "WIP" | `git show --pretty=%s --no-patch HEAD` |
+| `=` | up to date with the remote (neither ahead nor behind) | `git rev-list --count HEAD...@{upstream}` |
+| `⇣42` | this many commits behind the remote | `git rev-list --right-only --count HEAD...@{upstream}` |
+| `⇡42` | this many commits ahead of the remote | `git rev-list --left-only --count HEAD...@{upstream}` |
+| `⇠42` | this many commits behind the push remote | `git rev-list --right-only --count HEAD...@{push}` |
+| `⇢42` | this many commits ahead of the push remote | `git rev-list --left-only --count HEAD...@{push}` |
+| `*42` | this many stashes | `git stash list` |
+| `merge` | repository state | `git status --ignore-submodules=dirty` |
+| `~42` | this many merge conflicts | `git status --ignore-submodules=dirty` |
+| `+42` | this many staged changes | `git status --ignore-submodules=dirty` |
+| `!42` | this many unstaged changes | `git status --ignore-submodules=dirty` |
+| `?42` | this many untracked files | `git status --ignore-submodules=dirty` |
+| `─` | the number of staged, unstaged or untracked files is unknown | `echo $POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY` or `git config --get bash.showDirtyState` |
+
+*Related*: [How do I change the format of Git status?](#how-do-i-change-the-format-of-git-status)
+
+### How do I change the format of Git status?
+
+To change the format of Git status, open `~/.p10k.zsh`, search for `my_git_formatter` and edit its
+source code.
+
+*Related*: [What do different symbols in Git status mean?](
+ #what-do-different-symbols-in-git-status-mean)
+
+### Why is Git status from `$HOME/.git` not displayed in prompt?
+
+When using Lean, Classic or Rainbow style, `~/.p10k.zsh` contains the following parameter:
+
+```zsh
+# Don't show Git status in prompt for repositories whose workdir matches this pattern.
+# For example, if set to '~', the Git repository at $HOME/.git will be ignored.
+# Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
+typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
+```
+
+To see Git status for `$HOME/.git` in prompt, open `~/.p10k.zsh` and remove
+`POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN`.
+
+### Why does Git status sometimes appear grey and then gets colored after a short period of time?
+
+tl;dr: When Git status in prompt is greyed out, it means Powerlevel10k is currently computing
+up-to-date Git status in the background. Prompt will get automatically refreshed when this
+computation completes.
+
+When your current directory is within a Git repository, Powerlevel10k computes up-to-date Git
+status after every command. If the repository is large, or the machine is slow, this computation
+can take quite a bit of time. If it takes longer than 10 milliseconds (configurable via
+`POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS`), Powerlevel10k displays the last known Git status in
+grey and continues to compute up-to-date Git status in the background. When the computation
+completes, Powerlevel10k refreshes prompt with new information, this time with colored Git status.
+
+When using *Rainbow* style, Git status is displayed as black on grey while it's still being
+computed. Depending on the terminal color palette, this may be difficult to read. In this case you
+might want to change the background color to something lighter for more contrast. To do that, open
+`~/.p10k.zsh`, search for `POWERLEVEL9K_VCS_LOADING_BACKGROUND`, uncomment it if it's commented out,
+and change the value.
+
+```zsh
+typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=244
+```
+
+Type `source ~/.p10k.zsh` to apply your changes to the current Zsh session.
+
+*Related*: [How do I change prompt colors?](#how-do-i-change-prompt-colors)
+
+### How do I add username and/or hostname to prompt?
+
+When using Lean, Classic or Rainbow style, prompt shows `username@hostname` when you are logged in
+as root or via SSH. There is little value in showing `username` or `hostname` when you are logged in
+to your local machine as a normal user. So the absence of `username@hostname` in your prompt is an
+indication that you are working locally and that you aren't root. You can change it, however.
+
+Open `~/.p10k.zsh`. Close to the top you can see the most important parameters that define which
+segments are shown in your prompt. All generally useful prompt segments are listed in there. Some of
+them are enabled, others are commented out. One of them is of interest to you.
+
+```zsh
+typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
+ ...
+ context # user@hostname
+ ...
+)
+```
+
+Search for `context` to find the section in the config that lists parameters specific to this prompt
+segment. You should see the following lines:
+
+```zsh
+# Don't show context unless running with privileges or in SSH.
+# Tip: Remove the next line to always show context.
+typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
+```
+
+If you follow the tip and remove (or comment out) the last line, you'll always see
+`username@hostname` in prompt. You can change the format to just `username`, or change the color, by
+adjusting the values of parameters nearby. There are plenty of comments to help you navigate.
+
+You can also move `context` to a different position in `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS` or even
+to `POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`.
+
+### Why some prompt segments appear and disappear as I'm typing?
+
+Prompt segments can be configured to be shown only when the current command you are typing invokes
+a relevant tool.
+
+```zsh
+# Show prompt segment "kubecontext" only when the command you are typing invokes
+# invokes kubectl, helm, or kubens.
+typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens'
+```
+
+Configs created by `p10k configure` may contain parameters of this kind. To customize when different
+prompt segments are shown, open `~/.p10k.zsh`, search for `SHOW_ON_COMMAND` and either remove these
+parameters or change their values.
+
+You can also define a function in `~/.zshrc` to toggle the display of a prompt segment between
+*always* and *on command*. This is similar to `kubeon`/`kubeoff` from
+[kube-ps1](https://github.com/jonmosco/kube-ps1).
+
+```zsh
+function kube-toggle() {
+ if (( ${+POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND} )); then
+ unset POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND
+ else
+ POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens'
+ fi
+ p10k reload
+ if zle; then
+ zle push-input
+ zle accept-line
+ fi
+}
+```
+
+Invoke this function by typing `kube-toggle`. You can also bind it to a key by adding two more lines
+to `~/.zshrc`:
+
+```zsh
+zle -N kube-toggle
+bindkey '^]' kube-toggle # ctrl-] to toggle kubecontext in powerlevel10k prompt
+```
+
+### How do I change prompt colors?
+
+You can either [change the color palette used by your terminal](
+ #change-the-color-palette-used-by-your-terminal) or
+[set colors through Powerlevel10k configuration parameters](
+ #set-colors-through-Powerlevel10k-configuration-parameters).
+
+#### Change the color palette used by your terminal
+
+How exactly you change the terminal color palette (a.k.a. color scheme, or theme) depends on the
+kind of terminal you are using. Look around in terminal's settings/preferences or consult
+documentation.
+
+When you change the terminal color palette, it usually affects only the first 16 colors, numbered
+from 0 to 15. In order to see any effect on Powerlevel10k prompt, you need to use prompt style that
+utilizes these low-numbered colors. Type `p10k configure` and select *Rainbow*, *Lean* → *8 colors*
+or *Pure* → *Original*. Other styles use higher-numbered colors, so they look the same in any
+terminal color palette.
+
+#### Set colors through Powerlevel10k configuration parameters
+
+Open `~/.p10k.zsh`, search for "color", "foreground" and "background" and change values of
+appropriate parameters. For example, here's how you can set the foreground of `time` prompt segment
+to bright red:
+
+```zsh
+typeset -g POWERLEVEL9K_TIME_FOREGROUND=160
+```
+
+Colors are specified using numbers from 0 to 255. Colors from 0 to 15 look differently in different
+terminals. Many terminals also support customization of these colors through color palettes
+(a.k.a. color schemes, or themes). Colors from 16 to 255 always look the same.
+
+Type `source ~/.p10k.zsh` to apply your changes to the current Zsh session.
+
+To see how different numbered colors look in your terminal, run the following command:
+
+```zsh
+for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
+```
+
+If your terminal supports truecolor, you can use 24-bit colors in the `#RRGGBB` format in addition
+to the numbered colors.
+
+```zsh
+typeset -g POWERLEVEL9K_TIME_FOREGROUND='#FF0000'
+```
+
+*Related:*
+ - [Directory is difficult to see in prompt when using Rainbow style.](
+ #directory-is-difficult-to-see-in-prompt-when-using-rainbow-style)
+ - [Incorrect foreground color in VSCode Terminal.](#incorrect-foreground-color-in-vscode-terminal)
+
+By default, VSCode Terminal may arbitrarily replace the foreground color of your choice with a
+different color. This behavior can be
+[turned off](https://code.visualstudio.com/docs/terminal/appearance#_minimum-contrast-ratio) in
+VSCode settings.
+
+### Why does Powerlevel10k spawn extra processes?
+
+Powerlevel10k uses [gitstatus](https://github.com/romkatv/gitstatus) as the backend behind `vcs`
+prompt; gitstatus spawns `gitstatusd` and `zsh`. See
+[gitstatus](https://github.com/romkatv/gitstatus) for details. Powerlevel10k may also spawn `zsh`
+to perform computation without blocking prompt. To avoid security hazard, these background processes
+aren't shared by different interactive shells. They terminate automatically when the parent `zsh`
+process terminates or runs `exec(3)`.
+
+### Are there configuration options that make Powerlevel10k slow?
+
+No, Powerlevel10k is always fast, with any configuration you throw at it. If you have noticeable
+prompt latency when using Powerlevel10k, please
+[open an issue](https://github.com/romkatv/powerlevel10k/issues).
+
+### Is Powerlevel10k fast to load?
+
+Yes. See [zsh-bench](https://github.com/romkatv/zsh-bench).
+
+### What is the relationship between Powerlevel9k and Powerlevel10k?
+
+Powerlevel10k was forked from Powerlevel9k in March 2019 after a week-long discussion in
+[powerlevel9k#1170](https://github.com/Powerlevel9k/powerlevel9k/issues/1170). Powerlevel9k was
+already a mature project with a large user base and a release cycle measured in months. Powerlevel10k
+was spun off to iterate on performance improvements and new features at much higher pace.
+
+Powerlevel9k and Powerlevel10k are independent projects. When using one, you shouldn't install the
+other. Issues should be filed against the project that you actually use. There are no individuals
+that have commit rights in both repositories. All bug fixes and new features committed to
+Powerlevel9k repository get ported to Powerlevel10k.
+
+Over time, virtually all code in Powerlevel10k has been rewritten. There is currently no meaningful
+overlap between the implementations of Powerlevel9k and Powerlevel10k.
+
+Powerlevel10k is committed to maintaining backward compatibility with all configs indefinitely. This
+commitment covers all configuration parameters recognized by Powerlevel9k (see
+[Powerlevel9k compatibility](#powerlevel9k-compatibility)) and additional parameters that only
+Powerlevel10k understands. Names of all parameters in Powerlevel10k start with `POWERLEVEL9K_` for
+consistency.
+
+### Does Powerlevel10k always render exactly the same prompt as Powerlevel9k given the same config?
+
+Almost. There are a few differences.
+
+- By default only `git` vcs backend is enabled in Powerlevel10k. If you need `svn` and `hg`, add
+ them to `POWERLEVEL9K_VCS_BACKENDS`. These backends aren't yet optimized in Powerlevel10k, so
+ enabling them will make prompt *very slow*.
+- Powerlevel10k doesn't support `POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY=true`.
+- Powerlevel10k strives to be bug-compatible with Powerlevel9k but not when it comes to egregious
+ bugs. If you accidentally rely on these bugs, your prompt will differ between Powerlevel9k and
+ Powerlevel10k. Some examples:
+ - Powerlevel9k ignores some options that are set after the theme is sourced while Powerlevel10k
+ respects all options. If you see different icons in Powerlevel9k and Powerlevel10k, you've
+ probably defined `POWERLEVEL9K_MODE` before sourcing the theme. This parameter gets ignored
+ by Powerlevel9k but honored by Powerlevel10k. If you want your prompt to look in Powerlevel10k
+ the same as in Powerlevel9k, remove `POWERLEVEL9K_MODE`.
+ - Powerlevel9k doesn't respect `ZLE_RPROMPT_INDENT`. As a result, right prompt in Powerlevel10k
+ can have an extra space at the end compared to Powerlevel9k. Set `ZLE_RPROMPT_INDENT=0` if you
+ don't want that space. More details in
+ [troubleshooting](#extra-space-without-background-on-the-right-side-of-right-prompt).
+ - Powerlevel9k has inconsistent spacing around icons. This was fixed in Powerlevel10k. Set
+ `POWERLEVEL9K_LEGACY_ICON_SPACING=true` to get the same spacing as in Powerlevel9k. More
+ details in [troubleshooting](#extra-or-missing-spaces-around-icons).
+ - There are dozens more bugs in Powerlevel9k that don't exist in Powerlevel10k.
+
+If you notice any other changes in prompt appearance when switching from Powerlevel9k to
+Powerlevel10k, please [open an issue](https://github.com/romkatv/powerlevel10k/issues).
+
+### What is the best prompt style in the configuration wizard?
+
+There are as many opinions on what constitutes the best prompt as there are people. It mostly comes
+down to personal preference. There are, however, a few hidden implications of different choices.
+
+Pure style is an exact replication of [Pure Zsh theme](https://github.com/sindresorhus/pure). It
+exists to ease the migration for users of this theme. Unless you are one of them, choose Lean
+style over Pure.
+
+If you want to confine prompt colors to the selected terminal color palette (say, *Solarized Dark*),
+use *Rainbow*, *Lean* → *8 colors* or *Pure* → *Original*. Other styles use fixed colors and thus
+look the same in any terminal color palette.
+
+All styles except Pure have an option to use *ASCII* charset. Prompt will look less pretty but will
+render correctly with all fonts and in all locales.
+
+If you enable transient prompt, take advantage of two-line prompt. You'll get the benefit of
+extra space for typing commands without the usual drawback of reduced scrollback density. Having
+all commands start from the same offset is also nice.
+
+Similarly, if you enable transient prompt, sparse prompt (with an empty line before prompt) is a
+great choice.
+
+If you are using vi keymap, choose prompt with `prompt_char` in it (shown as green `❯` in the
+wizard). This symbol changes depending on vi mode: `❯`, `❮`, `V`, `▶` for insert, command, visual
+and replace mode respectively. When a command fails, the symbol turns red. *Lean* style always has
+`prompt_char` in it. *Rainbow* and *Classic* styles have it only in the two-line configuration
+without left frame.
+
+If you value horizontal space or prefer minimalist aesthetics:
+
+- Use a monospace font, such as [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k).
+ Non-monospace fonts require extra space after icons that are larger than a single column.
+- Use Lean style. Compared to Classic and Rainbow, it saves two characters per prompt segment.
+- Disable *current time* and *frame*.
+- Use *few icons*. The extra icons enabled by the *many icons* option primarily serve decorative
+ function. Informative icons, such as background job indicator, will be shown either way.
+
+*Note*: You can run configuration wizard as many times as you like. Type `p10k configure` to try new
+prompt style.
+
+### How to make Powerlevel10k look like robbyrussell Oh My Zsh theme?
+
+Use [this config](
+ https://github.com/romkatv/powerlevel10k/blob/master/config/p10k-robbyrussell.zsh).
+
+You can either download it, save as `~/.p10k.zsh` and `source ~/.p10k.zsh` from `~/.zshrc`, or
+source `p10k-robbyrussell.zsh` directly from your cloned `powerlevel10k` repository.
+
+### Can prompts for completed commands display error status for *those* commands instead of the commands preceding them?
+
+No. When you hit *ENTER* and the command you've typed starts running, its error status isn't yet
+known, so it cannot be shown in prompt. When the command completes, the error status gets known but
+it's no longer possible to update prompt for *that* command. This is why the error status for every
+command is reflected in the *next* prompt.
+
+For details, see [this post on /r/zsh](
+https://www.reddit.com/r/zsh/comments/eg49ff/powerlevel10k_prompt_history_exit_code_colors/fc5huku).
+
+### What is the minimum supported Zsh version?
+
+Zsh 5.3 or newer should work. Fast startup requires Zsh >= 5.4.
+
+### How were these screenshots and animated gifs created?
+
+All screenshots and animated gifs were recorded in GNOME Terminal with
+[the recommended font](#meslo-nerd-font-patched-for-powerlevel10k) and Tango Dark color palette with
+custom background color (`#171A1B` instead of `#2E3436` -- twice as dark).
+
+![GNOME Terminal Color Settings](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/gnome-terminal-colors.png)
+
+Syntax highlighting, where present, was provided by [zsh-syntax-highlighting](
+ https://github.com/zsh-users/zsh-syntax-highlighting).
+
+### How was the recommended font created?
+
+[The recommended font](#meslo-nerd-font-patched-for-powerlevel10k) is the product of many
+individuals. Its origin is *Bitstream Vera Sans Mono*, which has given birth to *Menlo*, which in
+turn has spawned *Meslo*. Finally, extra glyphs have been added to *Meslo* with scripts forked
+from Nerd Fonts. The final font is released under the terms of
+[Apache License](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20License.txt).
+
+MesloLGS NF font can be recreated with the following command (requires `git` and `docker`):
+
+```zsh
+git clone --depth=1 https://github.com/romkatv/nerd-fonts.git
+cd nerd-fonts
+./build 'Meslo/S/*'
+```
+
+If everything goes well, four `ttf` files will appear in `./out`.
+
+### How to package Powerlevel10k for distribution?
+
+It's currently neither easy nor recommended to package and distribute Powerlevel10k. There are no
+instructions you can follow that would allow you to easily update your package when new versions of
+Powerlevel10k are released. This may change in the future but not soon.
+
+## Troubleshooting
+
+- [`[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found`](#oh-my-zsh-theme-powerlevel10kpowerlevel10k-not-found)
+- [Question mark in prompt](#question-mark-in-prompt)
+- [Icons, glyphs or powerline symbols don't render](#icons-glyphs-or-powerline-symbols-dont-render)
+- [Sub-pixel imperfections around powerline symbols](#sub-pixel-imperfections-around-powerline-symbols)
+- [Error: character not in range](#error-character-not-in-range)
+- [Cursor is in the wrong place](#cursor-is-in-the-wrong-place)
+- [Prompt wrapping around in a weird way](#prompt-wrapping-around-in-a-weird-way)
+- [Right prompt is in the wrong place](#right-prompt-is-in-the-wrong-place)
+- [Configuration wizard runs automatically every time Zsh is started](#configuration-wizard-runs-automatically-every-time-zsh-is-started)
+- [Some prompt styles are missing from the configuration wizard](#some-prompt-styles-are-missing-from-the-configuration-wizard)
+- [Cannot install the recommended font](#cannot-install-the-recommended-font)
+- [Extra or missing spaces in prompt compared to Powerlevel9k](#extra-or-missing-spaces-in-prompt-compared-to-powerlevel9k)
+ - [Extra space without background on the right side of right prompt](#extra-space-without-background-on-the-right-side-of-right-prompt)
+ - [Extra or missing spaces around icons](#extra-or-missing-spaces-around-icons)
+- [Weird things happen after typing `source ~/.zshrc`](#weird-things-happen-after-typing-source-zshrc)
+- [Transient prompt stops working after some time](#transient-prompt-stops-working-after-some-time)
+- [Cannot make Powerlevel10k work with my plugin manager](#cannot-make-powerlevel10k-work-with-my-plugin-manager)
+- [Directory is difficult to see in prompt when using Rainbow style](#directory-is-difficult-to-see-in-prompt-when-using-rainbow-style)
+- [Incorrect foreground color in VSCode Terminal.](#incorrect-foreground-color-in-vscode-terminal)
+- [Horrific mess when resizing terminal window](#horrific-mess-when-resizing-terminal-window)
+- [Icons cut off in Konsole](#icons-cut-off-in-konsole)
+- [Arch Linux logo has a dot in the bottom right corner](#arch-linux-logo-has-a-dot-in-the-bottom-right-corner)
+- [Incorrect git status in prompt](#incorrect-git-status-in-prompt)
+
+### `[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found`
+
+When opening a terminal, or starting zsh manually, you may encounter this error message:
+
+```text
+[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found
+```
+
+1. First, run `typeset -p P9K_VERSION` to check whether Powerlevel10k has been loaded.
+ - If `typeset -p P9K_VERSION` succeeds and prints something like `typeset P9K_VERSION=1.19.14`
+ (the version could be different), remove the following line from `~/.zshrc`:
+ ```zsh
+ ZSH_THEME="powerlevel10k/powerlevel10k"
+ ```
+ - If `typeset -p P9K_VERSION` fails with the error `typeset: no such variable: P9K_VERSION`, run
+ the following command:
+ ```zsh
+ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
+ ```
+2. Restart Zsh with `exec zsh`.
+
+### Question mark in prompt
+
+If it looks like a regular `?`, that's normal. It means you have untracked files in the current Git
+repository. Type `git status` to see these files. You can change this symbol or disable the display
+of untracked files altogether. Search for `untracked files` in `~/.p10k.zsh`.
+
+*FAQ*: [What do different symbols in Git status mean?](
+ #what-do-different-symbols-in-git-status-mean)
+
+You can also get a weird-looking question mark in your prompt if your terminal's font is missing
+some glyphs. See [icons, glyphs or powerline symbols don't render](
+ #icons-glyphs-or-powerline-symbols-dont-render).
+
+### Icons, glyphs or powerline symbols don't render
+
+Restart your terminal, [install the recommended font](#meslo-nerd-font-patched-for-powerlevel10k)
+and run `p10k configure`.
+
+### Sub-pixel imperfections around powerline symbols
+
+![Powerline Prompt Imperfections](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/powerline-imperfections.png)
+
+There are three imperfections on the screenshot. From left to right:
+
+1. A thin blue line (a sub-pixel gap) between the content of a prompt segment and the following
+powerline connection.
+1. Incorrect alignment of a powerline connection and the following prompt segment. The connection
+appears shifted to the right.
+1. A thin red line below a powerline connection. The connection appears shifted up.
+
+Zsh themes don't have down-to-pixel control over the terminal content. Everything you see on the
+screen is made of monospace characters. A white powerline prompt segment is made of text on white
+background followed by U+E0B0 (a right-pointing triangle).
+
+![Powerline Prompt Imperfections](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/powerline-anatomy.png)
+
+If Powerlevel10k prompt has imperfections around powerline symbols, you'll see exactly the same
+imperfections with all powerline themes (Agnoster, Powerlevel9k, Powerline, etc.)
+
+There are several things you can try to deal with these imperfections:
+
+- Try [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k). If you are already using
+ it, switching to another font may help but is unlikely.
+- Change terminal font size one point up or down. For example, in iTerm2 powerline prompt looks
+ perfect at font sizes 11 and 13 but breaks down at 12.
+- Enable builtin powerline glyphs in terminal settings if your terminal supports it (iTerm2 does).
+- Change font hinting and/or anti-aliasing mode in the terminal settings.
+- Shift all text one pixel up/down/left/right if your terminal has an option to do so.
+- Try a different terminal.
+
+A more radical solution is to switch to prompt style without background. Type `p10k configure` and
+select *Lean*. This style has a modern lightweight look. As a bonus, it doesn't suffer from
+rendering imperfections that afflict powerline-style prompt.
+
+### Error: character not in range
+
+Type `echo '\u276F'`. If you get an error saying "zsh: character not in range", your locale
+doesn't support UTF-8. You need to fix it. If you are running Zsh over SSH, see
+[this](https://github.com/romkatv/powerlevel10k/issues/153#issuecomment-518347833). If you are
+running Zsh locally, Google "set UTF-8 locale in *your OS*".
+
+### Cursor is in the wrong place
+
+Type `echo '\u276F'`. If you get an error saying "zsh: character not in range", see the
+[previous section](#zsh-character-not-in-range).
+
+If the `echo` command prints `❯` but the cursor is still in the wrong place, install
+[the recommended font](#meslo-nerd-font-patched-for-powerlevel10k) and run
+`p10k configure`.
+
+If this doesn't help, add `unset ZLE_RPROMPT_INDENT` at the bottom of `~/.zshrc`.
+
+Still having issues? Run the following command to diagnose the problem:
+
+```zsh
+() {
+ emulate -L zsh
+ setopt err_return no_unset
+ local text
+ print -rl -- 'Select a part of your prompt from the terminal window and paste it below.' ''
+ read -r '?Prompt: ' text
+ local -i len=${(m)#text}
+ local frame="+-${(pl.$len..-.):-}-+"
+ print -lr -- $frame "| $text |" $frame
+}
+```
+
+#### If the prompt line aligns with the frame
+
+```text
++------------------------------+
+| romka@adam ✓ ~/powerlevel10k |
++------------------------------+
+```
+
+If the output of the command is aligned for every part of your prompt (left and right), this
+indicates a bug in the theme or your config. Use this command to diagnose it:
+
+```zsh
+print -rl -- ${(eq+)PROMPT} ${(eq+)RPROMPT}
+```
+
+Look for `%{...%}` and backslash escapes in the output. If there are any, they are the likely
+culprits. Open an issue if you get stuck.
+
+#### If the prompt line is longer than the frame
+
+```text
++-----------------------------+
+| romka@adam ✓ ~/powerlevel10k |
++-----------------------------+
+```
+
+This is usually caused by a terminal bug or misconfiguration that makes it print ambiguous-width
+characters as double-width instead of single width. For example,
+[this issue](https://github.com/romkatv/powerlevel10k/issues/165).
+
+#### If the prompt line is shorter than the frame and is mangled
+
+```text
++------------------------------+
+| romka@adam ✓~/powerlevel10k |
++------------------------------+
+```
+
+Note that this prompt is different from the original as it's missing a space after the check mark.
+
+This can be caused by a low-level bug in macOS. See
+[this issue](https://github.com/romkatv/powerlevel10k/issues/241).
+
+This can also happen if prompt contains glyphs designated as "wide" in the Unicode standard and your
+terminal incorrectly displays them as non-wide. Terminals suffering from this limitation include
+Konsole, Hyper and the integrated VSCode Terminal. The solution is to use a different terminal or
+remove all wide glyphs from prompt.
+
+#### If the prompt line is shorter than the frame and is not mangled
+
+```text
++--------------------------------+
+| romka@adam ✓ ~/powerlevel10k |
++--------------------------------+
+```
+
+This can be caused by misconfigured locale. See
+[this issue](https://github.com/romkatv/powerlevel10k/issues/251).
+
+### Prompt wrapping around in a weird way
+
+See [cursor is in the wrong place](#cursor-is-in-the-wrong-place).
+
+### Right prompt is in the wrong place
+
+See [cursor is in the wrong place](#cursor-is-in-the-wrong-place).
+
+### Configuration wizard runs automatically every time Zsh is started
+
+When Powerlevel10k starts, it automatically runs `p10k configure` if no `POWERLEVEL9K_*`
+parameters are defined. Based on your prompt style choices, the configuration wizard creates
+`~/.p10k.zsh` with a bunch of `POWERLEVEL9K_*` parameters in it and adds a line to `~/.zshrc` to
+source this file. The next time you start Zsh, the configuration wizard shouldn't run automatically.
+If it does, this means the evaluation of `~/.zshrc` terminates prematurely before it reaches the
+line that sources `~/.p10k.zsh`. This most often happens due to syntax errors in `~/.zshrc`. These
+errors get hidden by the configuration wizard screen, so you don't notice them. When you exit
+configuration wizard, look for error messages. You can also use
+`POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true zsh` to start Zsh without automatically running the
+configuration wizard. Once you can see the errors, fix `~/.zshrc` to get rid of them.
+
+### Some prompt styles are missing from the configuration wizard
+
+If Zsh version is below 5.7.1 or `COLORTERM` environment variable is neither `24bit` nor
+`truecolor`, configuration wizard won't offer Pure style with Snazzy color scheme. *Fix*: Install
+Zsh >= 5.7.1 and use a terminal with truecolor support. Verify with `print -P '%F{#ff0000}red%f'`.
+
+If the terminal can display fewer than 256 colors, configuration wizard preselects Lean style with
+8 colors. All other styles require at least 256 colors. *Fix*: Use a terminal with 256 color support
+and make sure that `TERM` environment variable is set correctly. Verify with
+`print $terminfo[colors]`.
+
+If there is no UTF-8 locale on the system, configuration wizard won't offer prompt styles that use
+Unicode characters. *Fix*: Install a UTF-8 locale. Verify with `locale -a`.
+
+Another case in which configuration wizard may not offer Unicode prompt styles is when the
+`MULTIBYTE` shell option is disabled. *Fix*: Enable the `MULTIBYTE` option, or rather don't disable
+it (this option is enabled in Zsh by default). Verify with `print -r -- ${options[MULTIBYTE]}`.
+
+When `MULTIBYTE` is enabled and a UTF-8 locale is available, the first few questions asked by the
+configuration wizard assess capabilities of the terminal font. If your answers indicate that some
+glyphs don't render correctly, configuration wizard won't offer prompt styles that use them. *Fix*:
+Restart your terminal and install
+[the recommended font](#meslo-nerd-font-patched-for-powerlevel10k). Verify by running
+`p10k configure` and checking that all glyphs render correctly.
+
+### Cannot install the recommended font
+
+Once you download [the recommended font](#meslo-nerd-font-patched-for-powerlevel10k),
+you can install it just like any other font. Google "how to install fonts on *your OS*".
+
+### Extra or missing spaces in prompt compared to Powerlevel9k
+
+tl;dr: Add `ZLE_RPROMPT_INDENT=0` and `POWERLEVEL9K_LEGACY_ICON_SPACING=true` to `~/.zshrc` to get
+the same prompt spacing as in Powerlevel9k.
+
+When using Powerlevel10k with a Powerlevel9k config, you might get additional spaces in prompt here
+and there. These come in two flavors.
+
+#### Extra space without background on the right side of right prompt
+
+tl;dr: Add `ZLE_RPROMPT_INDENT=0` to `~/.zshrc` to get rid of that space.
+
+From [Zsh documentation](
+ http://zsh.sourceforge.net/Doc/Release/Parameters.html#index-ZLE_005fRPROMPT_005fINDENT):
+
+> `ZLE_RPROMPT_INDENT <S>`
+>
+> If set, used to give the indentation between the right hand side of the right prompt in the line
+> editor as given by `RPS1` or `RPROMPT` and the right hand side of the screen. If not set, the
+> value `1` is used.
+>
+> Typically this will be used to set the value to `0` so that the prompt appears flush with the
+> right hand side of the screen.
+
+Powerlevel10k respects this parameter. If you set `ZLE_RPROMPT_INDENT=1` (or leave it unset, which
+is the same thing as setting it to `1`), you'll get an empty space to the right of right prompt. If
+you set `ZLE_RPROMPT_INDENT=0`, your prompt will go to the edge of the terminal. This is how it
+works in every theme except Powerlevel9k.
+
+![ZLE_RPROMPT_INDENT: Powerlevel10k vs Powerlevel9k](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/p9k-vs-p10k-zle-rprompt-indent.png)
+
+Powerlevel9k issue: [powerlevel9k#1292](https://github.com/Powerlevel9k/powerlevel9k/issues/1292).
+It's been fixed in the development branch of Powerlevel9k but the fix hasn't yet made it to
+`master`.
+
+Add `ZLE_RPROMPT_INDENT=0` to `~/.zshrc` to get the same spacing on the right edge of prompt as in
+Powerlevel9k.
+
+*Note:* Several versions of Zsh have bugs that get triggered when you set `ZLE_RPROMPT_INDENT=0`.
+Powerlevel10k can work around these bugs when using powerline prompt style. If you notice visual
+artifacts in prompt, or wrong cursor position, try removing `ZLE_RPROMPT_INDENT` from `~/.zshrc`.
+
+#### Extra or missing spaces around icons
+
+tl;dr: Add `POWERLEVEL9K_LEGACY_ICON_SPACING=true` to `~/.zshrc` to get the same spacing around
+icons as in Powerlevel9k.
+
+Spacing around icons in Powerlevel9k is inconsistent.
+
+![ZLE_RPROMPT_INDENT: Powerlevel10k vs Powerlevel9k](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/p9k-vs-p10k-icon-spacing.png)
+
+This inconsistency is a constant source of annoyance, so it was fixed in Powerlevel10k. You can add
+`POWERLEVEL9K_LEGACY_ICON_SPACING=true` to `~/.zshrc` to get the same spacing around icons as in
+Powerlevel9k.
+
+*Note:* It's not a good idea to define `POWERLEVEL9K_LEGACY_ICON_SPACING` when using
+`p10k configure`.
+
+### Weird things happen after typing `source ~/.zshrc`
+
+It's almost always a bad idea to run `source ~/.zshrc`, whether you are using Powerlevel10k or not.
+This command may result in random errors, misbehaving code and progressive slowdown of Zsh.
+
+If you've made changes to `~/.zshrc` or to files sourced by it, restart Zsh to apply them. The most
+reliable way to do this is to type `exit` and then start a new Zsh session. You can also use
+`exec zsh`. While not exactly equivalent to complete Zsh restart, this command is much more reliable
+than `source ~/.zshrc`.
+
+### Transient prompt stops working after some time
+
+See [weird things happen after typing `source ~/.zshrc`](
+ #weird-things-happen-after-typing-source-zshrc).
+
+### Cannot make Powerlevel10k work with my plugin manager
+
+If the [installation instructions](#installation) didn't work for you, try disabling your current
+theme (so that you end up with no theme) and then installing Powerlevel10k manually.
+
+1. Disable the current theme in your framework / plugin manager.
+
+- **oh-my-zsh:** Open `~/.zshrc` and remove the line that sets `ZSH_THEME`. It might look like this:
+ `ZSH_THEME="powerlevel9k/powerlevel9k"`.
+- **zplug:** Open `~/.zshrc` and remove the `zplug` command that refers to your current theme. For
+ example, if you are currently using Powerlevel9k, look for
+ `zplug bhilburn/powerlevel9k, use:powerlevel9k.zsh-theme`.
+- **prezto:** Open `~/.zpreztorc` and put `zstyle :prezto:module:prompt theme off` in it. Remove
+ any other command that sets `theme` such as `zstyle :prezto:module:prompt theme powerlevel9k`.
+- **antigen:** Open `~/.zshrc` and remove the line that sets `antigen theme`. It might look like
+ this: `antigen theme powerlevel9k/powerlevel9k`.
+
+2. Install Powerlevel10k manually.
+
+```zsh
+git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
+echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
+```
+
+This method of installation won't make anything slower or otherwise sub-par.
+
+### Directory is difficult to see in prompt when using Rainbow style
+
+In Rainbow style the current working directory is shown with bright white text on blue background.
+The white is fixed and always looks the same but the appearance of "blue" is defined by your
+terminal color palette. If it's very light, it may be difficult to see white text on it.
+
+There are several ways to fix this.
+
+- Type `p10k configure` and choose a more readable prompt style.
+- [Change terminal color palette](#change-the-color-palette-used-by-your-terminal). Try Tango Dark
+ or Solarized Dark, or change just the "blue" color.
+- [Change directory background and/or foreground color](#set-colors-through-Powerlevel10k-configuration-parameters).
+ The parameters you are looking for are called `POWERLEVEL9K_DIR_BACKGROUND`,
+ `POWERLEVEL9K_DIR_FOREGROUND`, `POWERLEVEL9K_DIR_SHORTENED_FOREGROUND`,
+ `POWERLEVEL9K_DIR_ANCHOR_FOREGROUND` and `POWERLEVEL9K_DIR_ANCHOR_BOLD`. You can find them in
+ `~/.p10k.zsh`.
+
+*Related*: [Incorrect foreground color in VSCode Terminal.](#incorrect-foreground-color-in-vscode-terminal)
+
+### Incorrect foreground color in VSCode Terminal
+
+By default, VSCode Terminal may arbitrarily replace the foreground color of your choice with a
+different color. This behavior can be
+[turned off](https://code.visualstudio.com/docs/terminal/appearance#_minimum-contrast-ratio) in
+VSCode settings.
+
+### Horrific mess when resizing terminal window
+
+When you resize a terminal window horizontally back and forth a few times, you might see this ugly
+picture.
+
+![Powerlevel10k Resizing Mess](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resizing-mess.png)
+
+tl;dr: This issue arises when a terminal reflows Zsh prompt upon resizing. It isn't specific to
+Powerlevel10k. See [mitigation](#mitigation).
+
+*Note: This section [used to say](
+ https://github.com/romkatv/powerlevel10k/blob/dce00cdb5daaa8a519df234a7012ba3257b644d4/README.md#horrific-mess-when-resizing-terminal-window)
+that the problem is caused by a bug in Zsh. While it's true that it's possible to avoid the problem
+in many circumstances by modifying Zsh, it cannot be completely resolved this way. Thus it's unfair
+to pin the blame on Zsh.*
+
+#### The anatomy of the problem
+
+The issue is manifested when the vertical distance between the start of the current prompt and the
+cursor (henceforth `VD`) changes when the terminal window is resized.
+
+When a terminal window gets shrunk horizontally, there are two ways for a terminal to handle long
+lines that no longer fit: *reflow* or *truncate*.
+
+Terminal content before shrinking:
+
+![Terminal Content Before Shrinking](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-original.png)
+
+Terminal reflows text when shrinking:
+
+![Terminal Reflows Text When Shrinking](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-reflow.png)
+
+Terminal truncates text when shrinking:
+
+![Terminal Truncates Text When Shrinking](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-truncate.png)
+
+Reflowing strategy can change the height of terminal content. If such content happens to be between
+the start of the current prompt and the cursor, Zsh will print prompt on the wrong line. Truncation
+strategy never changes the height of terminal content, so it doesn't trigger this issue.
+
+Let's see how the issue plays out in slow motion. We'll start by launching `zsh -f` and pasting
+the following code:
+
+```zsh
+function pause() { read -s }
+functions -M pause 0
+
+reset
+print -l {1..3}
+setopt prompt_subst
+PROMPT=$'${$((pause()))+}left>${(pl.$((COLUMNS-12))..-.)}<right\n> '
+```
+
+When `PROMPT` gets expanded, it calls `pause` to let us observe the state of the terminal. Here's
+the initial state:
+
+![Terminal Resizing Bug 1](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-bug-1.png)
+
+Zsh keeps track of the cursor position relative to the start of the current prompt. In this case it
+knows that the cursor is one line below. When we shrink the terminal window, it looks like this:
+
+![Terminal Resizing Bug 2](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-bug-2.png)
+
+At this point the terminal sends `SIGWINCH` to Zsh to notify it about changes in the terminal
+dimensions. Note that this signal is sent *after* the content of the terminal has been reflown.
+
+When Zsh receives `SIGWINCH`, it attempts to erase the current prompt and print it anew. It goes to
+the position where it *thinks* the current prompt is -- one line above the cursor (!) -- erases all
+terminal content that follows and prints reexpanded prompt there. However, after resizing prompt is
+no longer one line above the cursor. It's two lines above! Zsh ends up printing new prompt one line
+too low.
+
+![Terminal Resizing Bug 3](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-bug-3.png)
+
+In this case we ended up with unwanted junk content because `VD` has *increased*. When you make
+terminal window wider, `VD` can also *decrease*, which would result in the new prompt being printed
+higher than intended, potentially erasing useful content in the process.
+
+Here are a few more examples where shrinking terminal window increased `VD`.
+
+- Simple one-line left prompt with right prompt. No `prompt_subst`. Note that the cursor is below
+ the prompt line (hit *ESC-ENTER* to get it there).
+ ![Zsh Prompt That Breaks on Terminal Shrinking 1](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-breakable-1.png)
+- Simple one-line left prompt. No `prompt_subst`, no right prompt. Here `VD` is bound to increase
+ upon terminal shrinking due to the command line wrapping around.
+ ![Zsh Prompt That Breaks on Terminal Shrinking 2](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/resize-breakable-2.png)
+
+#### Zsh patch
+
+[This Zsh patch](https://github.com/romkatv/zsh/tree/fix-winchanged) fixes the issue on some
+terminals. The idea behind the patch is to use `sc` (save cursor) terminal capability before
+printing prompt and `rc` (restore cursor) to move cursor back to the original position when prompt
+needs to be refreshed.
+
+The patch works only on terminals that reflow saved cursor position together with text when the
+terminal window is resized. The patch has no observable effect on terminals that don't reflow text
+on resize (both patched and unpatched Zsh behave correctly) and on terminals that reflow text but
+not the saved cursor position (both patched and unpatched Zsh redraw prompt at the same incorrect
+position). In other words, the patch fixes the resizing issue on some terminals while keeping the
+behavior unchanged on others.
+
+There are two alternative approaches to patching Zsh that may seem to work at first glance but in
+fact don't:
+
+- Instead of `sc`, use `u7` terminal capability to query the current cursor position and then `cup`
+ to go back to it. This doesn't work because the absolute position of the start of the current
+ prompt changes when text gets reflown.
+- Recompute `VD` based on new terminal dimensions before attempting to refresh prompt. This doesn't
+ work because Zsh doesn't know whether terminal reflows text or truncates it. If Zsh could somehow
+ know that the terminal reflows text, this approach still wouldn't work on terminals that
+ continuously reflow text and rapid-fire `SIGWINCH` when the window is being resized. In such
+ environment real terminal dimensions go out of sync with what Zsh thinks the dimensions are.
+
+There is no ETA for the patch making its way into upstream Zsh. See [discussion](
+ https://www.zsh.org/mla/workers//2019/msg00561.html).
+
+#### Mitigation
+
+There are a few mitigation options for this issue.
+
+- Use [kitty](https://sw.kovidgoyal.net/kitty/) terminal version >= 0.24.0 and enable terminal-shell
+ integration in Powerlevel10k by defining `POWERLEVEL9K_TERM_SHELL_INTEGRATION=true` in
+ `~/.p10k.zsh`.
+- Apply [the patch](#zsh-patch) and [rebuild Zsh from source](
+ https://github.com/zsh-users/zsh/blob/master/INSTALL). It won't help if you are using Alacritty,
+ kitty or some other terminal that reflows text on resize but doesn't reflow saved cursor position.
+ On such terminals the patch will have no visible effect.
+- Disable text reflowing on window resize in terminal settings. If your terminal doesn't have this
+ setting, try a different terminal.
+- Avoid long lines between the start of prompt and cursor.
+ 1. Disable ruler with `POWERLEVEL9K_SHOW_RULER=false`.
+ 2. Disable prompt connection with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '`.
+ 3. Disable right frame with `POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=''`,
+ `POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=''` and
+ `POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=''`.
+ 4. Set `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()`. Right prompt on the last prompt line will cause
+ resizing issues only when the cursor is below it. This isn't very common, so you might want to
+ keep some elements in `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS` provided that none of them are
+ succeeded by `newline`.
+
+### Icons cut off in Konsole
+
+When using Konsole with a non-monospace font, icons may be cut off on the right side. Here
+"non-monospace" refers to any font with glyphs wider than a single column, or wider than two columns
+for glyphs designated as "wide" in the Unicode standard.
+
+![Icons cut off in Konsole](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/konsole-non-monospace-font.png)
+
+The last line on the screenshot shows a cut off Arch Linux logo.
+
+There are several mitigation options for this issue.
+
+1. Use a different terminal. Konsole is the only terminal that exhibits this behavior.
+2. Use a monospace font.
+3. Manually add an extra space after the icon that gets cut off. For example, if the content of
+ `os_icon` prompt segment gets cut off, open `~/.p10k.zsh`, search for
+ `POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION` and change it as follows:
+```zsh
+typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='${P9K_CONTENT} ' # extra space at the end
+```
+4. Use a different icon that is monospace. For example, if Arch Linux logo gets cut off, add
+ the following parameter to `~/.p10k.zsh`:
+```zsh
+typeset -g POWERLEVEL9K_LINUX_ARCH_ICON='Arch' # plain "Arch" in place of a logo
+```
+5. Disable the display of the icon that gets cut off. For example, if the content of
+ `os_icon` prompt segment gets cut off, open `~/.p10k.zsh` and remove `os_icon` from
+ `POWERLEVEL9K_LEFT_PROMPT_ELEMENTS` and `POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS`.
+
+*Note*: [Non-monospace fonts are not officially supported by Konsole](
+ https://bugs.kde.org/show_bug.cgi?id=418553#c5).
+
+### Arch Linux logo has a dot in the bottom right corner
+
+![Arch Linux Logo with a dot](
+ https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/arch-linux-logo-dot.png)
+
+Some fonts have this incorrect dotted icon in bold typeface. There are two ways to fix this issue.
+
+1. Use a font with a correct Arch Linux logo in bold typeface. For example,
+ [the recommended Powerlevel10k font](#meslo-nerd-font-patched-for-powerlevel10k).
+2. Display the icon in regular (non-bold) typeface. To do this, open `~/.p10k.zsh`, search for
+ `POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION` and remove `%B` from its value.
+```zsh
+typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='${P9K_CONTENT}' # not bold
+```
+
+### Incorrect git status in prompt
+
+Powerlevel10k uses [gitstatusd](https://github.com/romkatv/gitstatus) to inspect the state of git
+repositories. The project relies on the [libgit2](https://github.com/libgit2/libgit2) library, which
+has some gaps in its implementation. Under some conditions, this may result in discrepancies between
+the real state of a git repository (reflected by `git status`) and what gets shown in the
+Powerlevel10k prompt.
+
+Most notably, [libgit2 does not support `skipHash`](https://github.com/libgit2/libgit2/issues/6531).
+If you see incorrect git status in prompt, run `git config -l` and check whether `skipHash` is
+enabled. If it is, consider disabling it. Keep in mind that `skipHash` may be implicitly enabled
+when activating certain git features, such as `manyFiles`.