This commit is contained in:
romkatv 2019-03-02 15:59:43 +01:00
parent e54b52ad26
commit afd7732058
2 changed files with 70 additions and 19 deletions

View file

@ -4,25 +4,32 @@ Powerlevel10k is a theme for ZSH. It's a backward-compatible fork of
[Powerlevel9k](https://github.com/bhilburn/powerlevel9k) with lower latency and better
prompt responsiveness.
If you like the look and feel of Powerlevel9k but feeling frustrated by the
slow prompt, simply replace your `powerlevel9k` theme with `powerlevel10k` and
enjoy responsive shell like it's 80's again!
If you like the looks of Powerlevel9k but feeling frustrated by its slow prompt,
simply replace your `powerlevel9k` theme with `powerlevel10k` and enjoy responsive
shell like it's 80's again!
Powerlevel10k uses the same configuration options as Powerlevel9k and produces the
same results. It's simply faster. There is no catch.
If you are on Linux or WSL, consider enabling [gitstatus](https://github.com/romkatv/gitstatus)
plugin for massive performance improvement in vcs/prompt segment. It works well with Powerlevel10k.
plugin for massive performance improvement in the vcs/prompt segment.
## Installation & Configuration
For installation and configuration instructions, see
For installation and configuration instructions see
[Powerlevel9k](https://github.com/bhilburn/powerlevel9k). Everything in there applies to
Powerlevel10k as well. Follow the installation guide, make sure everything works and you like
the way prompt looks. Then simply replace `powerlevel9k.zsh-theme` with the one from Powerlevel10k
([link](https://github.com/romkatv/powerlevel10k/blob/master/powerlevel9k.zsh-theme)). Or replace
the whole `powerlevel9k` directory to gain the ability to `git pull` updates in the future. Once
you restart zsh, your prompt will be faster.
Powerlevel10k as well. Follow the official installation guide, make sure everything works
and you like the way prompt looks. Then simply replace file `powerlevel9k.zsh-theme` with
the one from Powerlevel10k
([link](https://github.com/romkatv/powerlevel10k/blob/master/powerlevel9k.zsh-theme)).
Or replace the whole `powerlevel9k` directory to gain the ability to `git pull` updates
in the future. Once you restart zsh, your prompt will be faster.
```zsh
# Assuming oh-my-zsh at the standard location. Adjust to your circumstances.
rm -rf ~/.oh-my-zsh/custom/themes/powerlevel9k
git clone git@github.com:romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
```
**Do not load both Powerlevel9k and Powerlevel10k themes at the same time. Variable name
clashes will cause mayhem. Source either one or the other. Consider Powerlevel10k
@ -30,15 +37,59 @@ a patched fork of Powerlevel9k, which it is.**
## How fast is it?
Powerlevel10k with [gitstatus](https://github.com/romkatv/gitstatus) renders prompt 5+ times
faster than Powerlevel9k. In some cases it can be over 10 times faster. When using Linux,
you should expect less than 50ms prompt latency in most cases, about 100ms in large git
repos and 200ms in huge repos such as Linux kernel. To get comfortable upper bound on
latency in any repo, set `GITSTATUS_DIRTY_MAX_INDEX_SIZE=4096`. It'll disable dirty file
scanning in repos with over 4k files. This should give you under 100ms prompt latency
everywhere.
Powerlevel10k with [gitstatus](https://github.com/romkatv/gitstatus) renders prompt about
10 times faster than powerlevel9k/master (stable version) and about 4 times faster than
powerlevel9k/next (beta version). Powerlevel10k is faster than Powerlevel9k even without
[gitstatus](https://github.com/romkatv/gitstatus) but the difference isn't as dramatic.
Here's are benchmark results obtained with
[zsh-prompt-benchmark](https://github.com/romkatv/zsh-prompt-benchmark) on Intel i9-7900X
running Ubuntu 18.04.
| Theme | / | ~/testrepo | ~/nerd-fonts | ~/linux |
|----------------------------|-------:|-----------:|-------------:|--------:|
| powerlevel9k/master | 135 ms | 207 ms | 234 ms | 326 ms |
| powerlevel9k/next | 47 ms | 101 ms | 122 ms | 213 ms |
| powerlevel10k w/ vcs_info | 24 ms | 82 ms | 104 ms | 197 ms |
| powerlevel10k w/ gitstatus | 11 ms | 14 ms | 31 ms | 76 ms |
| naked zsh | 1 ms | 1 ms | 1 ms | 1 ms |
Columns define the current directory where the prompt was rendered.
* `/` -- root directory, not a git repo.
* `~/testrepo` -- a tiny git repo.
* `~/nerd-fonts` -- [nerd-fonts](https://github.com/ryanoasis/nerd-fonts) git repo
with 4k files.
* `~/linux` -- [linux](https://github.com/torvalds/linux) git repo. Huge.
Here's how the prompt looked like:
![](https://raw.githubusercontent.com/romkatv/powerlevel10k/master/prompt.png)
Configuration that was used during benchmarking:
```zsh
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir_writable dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs time custom_rprompt)
POWERLEVEL9K_MODE=nerdfont-complete
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_CUSTOM_RPROMPT=custom_rprompt
POWERLEVEL9K_ROOT_ICON=\\uF09CPOWERLEVEL9K_TIME_ICON=\\uF017
POWERLEVEL9K_CUSTOM_RPROMPT_ICON=\\uF005
POWERLEVEL9K_TIME_BACKGROUND=magenta
POWERLEVEL9K_CUSTOM_RPROMPT_BACKGROUND=blue
POWERLEVEL9K_STATUS_OK_BACKGROUND=grey53
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=orange1
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=black
# Powerlevel10k extension to enable gitstatus. Has no effect on Powerlevel9k.
POWERLEVEL9K_VCS_STATUS_COMMAND=gitstatus_query_dir
function custom_rprompt() echo -E "hello world"
```
## What's the catch?
Really, there is no catch. It's the same prompt with the same flexibility and literally the
same configuration as Powerlevel9k but **much faster**.
Really, there is no catch. It's literally the same prompt with the same flexibility
configuration format as Powerlevel9k. But **much faster**.

BIN
prompt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB