Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (2024)

You can configure the look and feel of your prompt easily with some built-inoptions.

Double-Lined Prompt

By default, powerlevel9k is a single-lined prompt. If you would like to havethe segments display on one line, and print the command prompt below it, simplydefine POWERLEVEL9K_PROMPT_ON_NEWLINE in your ~/.zshrc:

POWERLEVEL9K_PROMPT_ON_NEWLINE=true

If you want the right prompt to appear on the newline as well, simplydefine POWERLEVEL9K_RPROMPT_ON_NEWLINE as well in your ~/.zshrc:

POWERLEVEL9K_PROMPT_ON_NEWLINE=truePOWERLEVEL9K_RPROMPT_ON_NEWLINE=true

Here is an example of a double-lined prompt where the RPROMPT is drawn on the newline:

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (1)

If you want to split your segments up between two lines, make use of the newline segment in segment list. For example:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir newline vcs)

Will give you this left-side prompt:

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (2)

You can customize the icons used to draw the multi-line prompt by setting thefollowing variables in your ~/.zshrc:

POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=""

Adding Newline Before Each Prompt

If you would like to add a newline before each prompt / print loop, like what's shown in the picture below:

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (3)

Then just set the following in your ~/.zshrc:

POWERLEVEL9K_PROMPT_ADD_NEWLINE=true

You can configure how many newlines are inserted by setting the variable POWERLEVEL9K_PROMPT_ADD_NEWLINE_COUNT (defaults to 1).

Disable Right Prompt

If you do not want a right prompt, you can completely disable it by setting:

POWERLEVEL9K_DISABLE_RPROMPT=true

Light Color Theme

If you prefer to use "light" colors, simply set POWERLEVEL9K_COLOR_SCHEMEto light in your ~/.zshrc, and you're all set!

POWERLEVEL9K_COLOR_SCHEME='light'

The 'light' color scheme works well for 'SolarizedLight' users. Check it out:

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (4)

Icon Customization

Each icon in your prompt can be customized by specifying an appropriately named variable.

Simply prefix the name of the icon from the segment with 'POWERLEVEL9K', and export this as an environment variable set to the font codepoint (glyph code) you would like to use.

As an example, if you wanted to use a different glyph for the segment separators, you can easily do that with this:

POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=$'\uE0B1'POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=$'\uE0B3'

You can use this same approach to add or remove spacing in your prompt. For example, if you would like to remove the space after the "branch" icon in the vcs segment, you can simply add a space after the codepoint for that icon:

POWERLEVEL9K_VCS_BRANCH_ICON=$'\uF126 '

If you are using git and would like to customize the icon, please note that the icon is selected as follows:

VersionIcon to override
GithubVCS_GIT_GITHUB_ICON
BitBucketVCS_GIT_BITBUCKET_ICON
GitLabVCS_GIT_GITLAB_ICON
All othersVCS_GIT_ICON

We provide a function that will print every icon name in the theme. To get a full list of icons just type get_icon_names in your terminal.

If you want to dump all of the icons you are using, shown in random colors, add the special segment icons_test to your prompt:

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(icons_test)

This special prompt does not work on the right side, as it would be too long,and ZSH hides it automatically. Please note that the output depends onyour POWERLEVEL9K_MODE settings.

Segment Color Customization

For each segment in your prompt, you can specify a foreground and backgroundcolor by setting them in your ~/.zshrc. Use the segment names from the Available Prompt Segments section of the README.md. For example, to change the appearance of the time segment, you would use:

POWERLEVEL9K_TIME_FOREGROUND='red'POWERLEVEL9K_TIME_BACKGROUND='blue'

Note that you can also use a colorcode value. Example:

POWERLEVEL9K_TIME_FOREGROUND='021' # Dark blue

For a full list of supported colors, run this little code in your terminal:

for code ({000..255}) print -P -- "$code: %F{$code}This is how your text would look like%f"

You can also reference this color chart:

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (5)

Special Segment Colors

Some segments have state. For example, if you become root, or modify a file in your versioncontrol system, segments try to reflect this fact by changing the color.For these segments you still can modify the color to your needs by setting a variable likePOWERLEVEL9K_<name-of-segment>_<state>_[BACKGROUND|FOREGROUND].

Segments with state are:

SegmentStates
batteryLOW, CHARGING, CHARGED, DISCONNECTED
contextDEFAULT, ROOT, SUDO, REMOTE, REMOTE_SUDO
dirHOME, HOME_SUBFOLDER, DEFAULT, ETC, NOT_WRITABLE
dir_writableFORBIDDEN
disk_usageNORMAL, WARNING, CRITICAL
hostLOCAL, REMOTE
loadCRITICAL, WARNING, NORMAL
rspec_statsSTATS_GOOD, STATS_AVG, STATS_BAD
statusERROR, OK (note: only, if verbose is not false)
symfony2_testsTESTS_GOOD, TESTS_AVG, TESTS_BAD
userDEFAULT, SUDO, ROOT
vcsCLEAN, UNTRACKED, MODIFIED
vi_modeNORMAL, INSERT, VISUAL

Example:

# `vcs` color customizationPOWERLEVEL9K_VCS_CLEAN_FOREGROUND='blue'POWERLEVEL9K_VCS_CLEAN_BACKGROUND='black'POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='yellow'POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='black'POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='black'# `vi_mode` color customizationPOWERLEVEL9K_VI_MODE_INSERT_FOREGROUND='teal'

Test Terminal Colors

Some terminal emulators allow you to customize the colors used by the terminal. P9k provides two commands that you can use to print out the colors & color-codes in use by your emulator to aid you in customization.

getColorCode backgroundgetColorCode foreground

Visual Identifiers For Segments

Most segment have a so called "visual identifier" which is an icon or string that serves as a "logo" for the segment. This identifier is displayed on the left side for left configured segments and on the right for right configured segments.

Let's assume you have configured the load segment. This segment can have different states (CRITICAL, WARNING and NORMAL). Now, we want to display the segment in black and white and colorize only the visual identifier.

# Segment in black and whitePOWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="black"POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="white"POWERLEVEL9K_LOAD_WARNING_BACKGROUND="black"POWERLEVEL9K_LOAD_WARNING_FOREGROUND="white"POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="black"POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="white"# Colorize only the visual identifierPOWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"

Glue Segments Together

It is possible to display two segments as one, by adding _joined to your segment definition. The segments are always joined with their predecessor, so be sure that this is always visible. Otherwise you may get unwanted results. For example, if you want to join status and background_jobs in your right prompt together, set:

POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs_joined)

This works with every segment, even with custom ones and with conditional ones.

Stylizing Your Prompt - Powerlevel9k/powerlevel9k GitHub Wiki (2024)

References

Top Articles
Latest Posts
Article information

Author: Terence Hammes MD

Last Updated:

Views: 6599

Rating: 4.9 / 5 (69 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Terence Hammes MD

Birthday: 1992-04-11

Address: Suite 408 9446 Mercy Mews, West Roxie, CT 04904

Phone: +50312511349175

Job: Product Consulting Liaison

Hobby: Jogging, Motor sports, Nordic skating, Jigsaw puzzles, Bird watching, Nordic skating, Sculpting

Introduction: My name is Terence Hammes MD, I am a inexpensive, energetic, jolly, faithful, cheerful, proud, rich person who loves writing and wants to share my knowledge and understanding with you.