mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-12 08:10:07 +00:00
f89104f68f
As this function gets more and more important, it now checks for overrides the user has made and prints these icons instead. At least unless the first parameter is not set to "original". Then it will print the default icons.
319 lines
16 KiB
Bash
319 lines
16 KiB
Bash
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
|
################################################################
|
|
# icons
|
|
# This file holds the icon definitions and
|
|
# icon-functions for the powerlevel9k-ZSH-theme
|
|
# https://github.com/bhilburn/powerlevel9k
|
|
################################################################
|
|
|
|
# These characters require the Powerline fonts to work properly. If you see
|
|
# boxes or bizarre characters below, your fonts are not correctly installed. If
|
|
# you do not want to install a special font, you can set `POWERLEVEL9K_MODE` to
|
|
# `compatible`. This shows all icons in regular symbols.
|
|
|
|
# Initialize the icon list according to the user's `POWERLEVEL9K_MODE`.
|
|
typeset -gAH icons
|
|
case $POWERLEVEL9K_MODE in
|
|
'flat'|'awesome-patched')
|
|
# Awesome-Patched Font required! See:
|
|
# https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
|
|
# Set the right locale to protect special characters
|
|
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
|
|
icons=(
|
|
LEFT_SEGMENT_SEPARATOR $'\uE0B0' #
|
|
RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #
|
|
LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace
|
|
LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' #
|
|
RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' #
|
|
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
|
ROOT_ICON $'\uE801' #
|
|
RUBY_ICON $'\uE847 ' #
|
|
AWS_ICON $'\uE895' #
|
|
AWS_EB_ICON $'\U1F331 ' # 🌱
|
|
BACKGROUND_JOBS_ICON $'\uE82F ' #
|
|
TEST_ICON $'\uE891' #
|
|
TODO_ICON $'\u2611' # ☑
|
|
BATTERY_ICON $'\uE894' #
|
|
DISK_ICON $'\uE1AE ' #
|
|
OK_ICON $'\u2713' # ✓
|
|
FAIL_ICON $'\u2718' # ✘
|
|
SYMFONY_ICON 'SF'
|
|
NODE_ICON $'\u2B22' # ⬢
|
|
MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500'
|
|
MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 '
|
|
APPLE_ICON $'\uE26E' #
|
|
FREEBSD_ICON $'\U1F608 ' # 😈
|
|
LINUX_ICON $'\uE271' #
|
|
SUNOS_ICON $'\U1F31E ' # 🌞
|
|
HOME_ICON $'\uE12C' #
|
|
HOME_SUB_ICON $'\uE18D' #
|
|
FOLDER_ICON $'\uE818' #
|
|
NETWORK_ICON $'\uE1AD' #
|
|
LOAD_ICON $'\uE190 ' #
|
|
SWAP_ICON $'\uE87D' #
|
|
RAM_ICON $'\uE1E2 ' #
|
|
SERVER_ICON $'\uE895' #
|
|
VCS_UNTRACKED_ICON $'\uE16C' #
|
|
VCS_UNSTAGED_ICON $'\uE17C' #
|
|
VCS_STAGED_ICON $'\uE168' #
|
|
VCS_STASH_ICON $'\uE133 ' #
|
|
#VCS_INCOMING_CHANGES_ICON $'\uE1EB ' #
|
|
#VCS_INCOMING_CHANGES_ICON $'\uE80D ' #
|
|
VCS_INCOMING_CHANGES_ICON $'\uE131 ' #
|
|
#VCS_OUTGOING_CHANGES_ICON $'\uE1EC ' #
|
|
#VCS_OUTGOING_CHANGES_ICON $'\uE80E ' #
|
|
VCS_OUTGOING_CHANGES_ICON $'\uE132 ' #
|
|
VCS_TAG_ICON $'\uE817 ' #
|
|
VCS_BOOKMARK_ICON $'\uE87B' #
|
|
VCS_COMMIT_ICON $'\uE821 ' #
|
|
VCS_BRANCH_ICON $'\uE220' #
|
|
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
|
VCS_GIT_ICON $'\uE20E ' #
|
|
VCS_GIT_GITHUB_ICON $'\uE20E ' #
|
|
VCS_GIT_BITBUCKET_ICON $'\uE20E ' #
|
|
VCS_GIT_GITLAB_ICON $'\uE20E ' #
|
|
VCS_HG_ICON $'\uE1C3 ' #
|
|
VCS_SVN_ICON '(svn) '
|
|
RUST_ICON ''
|
|
PYTHON_ICON $'\U1F40D' # 🐍
|
|
SWIFT_ICON ''
|
|
PUBLIC_IP_ICON ''
|
|
LOCK_ICON $'\UE138' #
|
|
EXECUTION_TIME_ICON $'\UE89C' #
|
|
SSH_ICON '(ssh)'
|
|
)
|
|
;;
|
|
'awesome-fontconfig')
|
|
# fontconfig with awesome-font required! See
|
|
# https://github.com/gabrielelana/awesome-terminal-fonts
|
|
icons=(
|
|
LEFT_SEGMENT_SEPARATOR $'\uE0B0' #
|
|
RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #
|
|
LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace
|
|
LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' #
|
|
RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' #
|
|
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
|
ROOT_ICON $'\uF201' #
|
|
RUBY_ICON $'\uF219 ' #
|
|
AWS_ICON $'\uF270' #
|
|
AWS_EB_ICON $'\U1F331 ' # 🌱
|
|
BACKGROUND_JOBS_ICON $'\uF013 ' #
|
|
TEST_ICON $'\uF291' #
|
|
TODO_ICON $'\u2611' # ☑
|
|
BATTERY_ICON $'\U1F50B' # 🔋
|
|
DISK_ICON $'\uF0A0 ' #
|
|
OK_ICON $'\u2713' # ✓
|
|
FAIL_ICON $'\u2718' # ✘
|
|
SYMFONY_ICON 'SF'
|
|
NODE_ICON $'\u2B22' # ⬢
|
|
MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─
|
|
MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─
|
|
APPLE_ICON $'\uF179' #
|
|
FREEBSD_ICON $'\U1F608 ' # 😈
|
|
LINUX_ICON $'\uF17C' #
|
|
SUNOS_ICON $'\uF185 ' #
|
|
HOME_ICON $'\uF015' #
|
|
HOME_SUB_ICON $'\uF07C' #
|
|
FOLDER_ICON $'\uF115' #
|
|
NETWORK_ICON $'\uF09E' #
|
|
LOAD_ICON $'\uF080 ' #
|
|
SWAP_ICON $'\uF0E4' #
|
|
RAM_ICON $'\uF0E4' #
|
|
SERVER_ICON $'\uF233' #
|
|
VCS_UNTRACKED_ICON $'\uF059' #
|
|
VCS_UNSTAGED_ICON $'\uF06A' #
|
|
VCS_STAGED_ICON $'\uF055' #
|
|
VCS_STASH_ICON $'\uF01C ' #
|
|
VCS_INCOMING_CHANGES_ICON $'\uF01A ' #
|
|
VCS_OUTGOING_CHANGES_ICON $'\uF01B ' #
|
|
VCS_TAG_ICON $'\uF217 ' #
|
|
VCS_BOOKMARK_ICON $'\uF27B' #
|
|
VCS_COMMIT_ICON $'\uF221 ' #
|
|
VCS_BRANCH_ICON $'\uF126' #
|
|
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
|
VCS_GIT_ICON $'\uF1D3 ' #
|
|
VCS_GIT_GITHUB_ICON $'\uF113 ' #
|
|
VCS_GIT_BITBUCKET_ICON $'\uF171 ' #
|
|
VCS_GIT_GITLAB_ICON $'\uF296 ' #
|
|
VCS_HG_ICON $'\uF0C3 ' #
|
|
VCS_SVN_ICON '(svn) '
|
|
RUST_ICON $'\uE6A8' #
|
|
PYTHON_ICON $'\U1F40D' # 🐍
|
|
SWIFT_ICON ''
|
|
PUBLIC_IP_ICON ''
|
|
LOCK_ICON $'\UE138' #
|
|
EXECUTION_TIME_ICON $'\uF253'
|
|
SSH_ICON '(ssh)'
|
|
)
|
|
;;
|
|
'nerdfont-fontconfig')
|
|
# nerd-font patched (complete) font required! See
|
|
# https://github.com/ryanoasis/nerd-fonts
|
|
icons=(
|
|
LEFT_SEGMENT_SEPARATOR $'\uE0B0' #
|
|
RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #
|
|
LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace
|
|
LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' #
|
|
RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' #
|
|
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
|
ROOT_ICON $'\u26A1' # ⚡
|
|
RUBY_ICON $'\uF219 ' #
|
|
AWS_ICON $'\uF270' #
|
|
AWS_EB_ICON $'\U1F331 ' # 🌱
|
|
BACKGROUND_JOBS_ICON $'\uF013 ' #
|
|
TEST_ICON $'\uF188' #
|
|
TODO_ICON $'\u2611' # ☑
|
|
BATTERY_ICON $'\uF241 ' #
|
|
OK_ICON $'\u2713' # ✓
|
|
FAIL_ICON $'\u2718' # ✘
|
|
SYMFONY_ICON $'\uE757' #
|
|
NODE_ICON $'\u2B22' # ⬢
|
|
MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─
|
|
MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─
|
|
APPLE_ICON $'\uF179' #
|
|
FREEBSD_ICON $'\U1F608 ' # 😈
|
|
LINUX_ICON $'\uF17C' #
|
|
SUNOS_ICON $'\uF185 ' #
|
|
HOME_ICON $'\uF015' #
|
|
HOME_SUB_ICON $'\uF07C' #
|
|
FOLDER_ICON $'\uF115' #
|
|
NETWORK_ICON $'\uF1EB' #
|
|
LOAD_ICON $'\uF080 ' #
|
|
SWAP_ICON $'\uF464' #
|
|
RAM_ICON $'\uF0E4' #
|
|
SERVER_ICON $'\uF0AE' #
|
|
VCS_UNTRACKED_ICON $'\uF059' #
|
|
VCS_UNSTAGED_ICON $'\uF06A' #
|
|
VCS_STAGED_ICON $'\uF055' #
|
|
VCS_STASH_ICON $'\uF01C ' #
|
|
VCS_INCOMING_CHANGES_ICON $'\uF01A ' #
|
|
VCS_OUTGOING_CHANGES_ICON $'\uF01B ' #
|
|
VCS_TAG_ICON $'\uF02B ' #
|
|
VCS_BOOKMARK_ICON $'\uF462' #
|
|
VCS_COMMIT_ICON $'\uE729 ' #
|
|
VCS_BRANCH_ICON $'\uF126' #
|
|
VCS_REMOTE_BRANCH_ICON $'\uE728 ' #
|
|
VCS_GIT_ICON $'\uF113 ' #
|
|
VCS_HG_ICON $'\uF0C3 ' #
|
|
VCS_SVN_ICON '(svn) '
|
|
RUST_ICON $'\uE7A8' #
|
|
PYTHON_ICON $'\uE73C' #
|
|
SWIFT_ICON $'\uE755' #
|
|
PUBLIC_IP_ICON ''
|
|
)
|
|
;;
|
|
*)
|
|
# Powerline-Patched Font required!
|
|
# See https://github.com/Lokaltog/powerline-fonts
|
|
icons=(
|
|
LEFT_SEGMENT_SEPARATOR $'\uE0B0' #
|
|
RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #
|
|
LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace
|
|
LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' #
|
|
RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' #
|
|
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
|
ROOT_ICON $'\u26A1' # ⚡
|
|
RUBY_ICON ''
|
|
AWS_ICON 'AWS:'
|
|
AWS_EB_ICON $'\U1F331 ' # 🌱
|
|
BACKGROUND_JOBS_ICON $'\u2699' # ⚙
|
|
TEST_ICON ''
|
|
TODO_ICON $'\u2611' # ☑
|
|
BATTERY_ICON $'\U1F50B' # 🔋
|
|
DISK_ICON $'hdd '
|
|
OK_ICON $'\u2713' # ✓
|
|
FAIL_ICON $'\u2718' # ✘
|
|
SYMFONY_ICON 'SF'
|
|
NODE_ICON $'\u2B22' # ⬢
|
|
MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\u2500'
|
|
MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\u2500 '
|
|
APPLE_ICON 'OSX'
|
|
FREEBSD_ICON 'BSD'
|
|
LINUX_ICON 'Lx'
|
|
SUNOS_ICON 'Sun'
|
|
HOME_ICON ''
|
|
HOME_SUB_ICON ''
|
|
FOLDER_ICON ''
|
|
NETWORK_ICON 'IP'
|
|
LOAD_ICON 'L'
|
|
SWAP_ICON 'SWP'
|
|
RAM_ICON 'RAM'
|
|
SERVER_ICON ''
|
|
VCS_UNTRACKED_ICON '?'
|
|
VCS_UNSTAGED_ICON $'\u25CF' # ●
|
|
VCS_STAGED_ICON $'\u271A' # ✚
|
|
VCS_STASH_ICON $'\u235F' # ⍟
|
|
VCS_INCOMING_CHANGES_ICON $'\u2193' # ↓
|
|
VCS_OUTGOING_CHANGES_ICON $'\u2191' # ↑
|
|
VCS_TAG_ICON ''
|
|
VCS_BOOKMARK_ICON $'\u263F' # ☿
|
|
VCS_COMMIT_ICON ''
|
|
VCS_BRANCH_ICON $'\uE0A0' #
|
|
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
|
VCS_GIT_ICON ''
|
|
VCS_GIT_GITHUB_ICON ''
|
|
VCS_GIT_BITBUCKET_ICON ''
|
|
VCS_GIT_GITLAB_ICON ''
|
|
VCS_HG_ICON ''
|
|
VCS_SVN_ICON ''
|
|
RUST_ICON ''
|
|
PYTHON_ICON ''
|
|
SWIFT_ICON 'Swift'
|
|
PUBLIC_IP_ICON ''
|
|
LOCK_ICON $'\UE0A2'
|
|
EXECUTION_TIME_ICON 'Dur'
|
|
SSH_ICON '(ssh)'
|
|
)
|
|
;;
|
|
esac
|
|
|
|
# Override the above icon settings with any user-defined variables.
|
|
case $POWERLEVEL9K_MODE in
|
|
'flat')
|
|
icons[LEFT_SEGMENT_SEPARATOR]=''
|
|
icons[RIGHT_SEGMENT_SEPARATOR]=''
|
|
icons[LEFT_SUBSEGMENT_SEPARATOR]='|'
|
|
icons[RIGHT_SUBSEGMENT_SEPARATOR]='|'
|
|
;;
|
|
'compatible')
|
|
# Set the right locale to protect special characters
|
|
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
|
|
icons[LEFT_SEGMENT_SEPARATOR]=$'\u2B80' # ⮀
|
|
icons[RIGHT_SEGMENT_SEPARATOR]=$'\u2B82' # ⮂
|
|
icons[VCS_BRANCH_ICON]='@'
|
|
;;
|
|
esac
|
|
|
|
if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then
|
|
icons[VCS_BRANCH_ICON]=''
|
|
fi
|
|
|
|
# Safety function for printing icons
|
|
# Prints the named icon, or if that icon is undefined, the string name.
|
|
function print_icon() {
|
|
local icon_name=$1
|
|
local ICON_USER_VARIABLE=POWERLEVEL9K_${icon_name}
|
|
if defined "$ICON_USER_VARIABLE"; then
|
|
echo -n "${(P)ICON_USER_VARIABLE}"
|
|
else
|
|
echo -n "${icons[$icon_name]}"
|
|
fi
|
|
}
|
|
|
|
# Get a list of configured icons
|
|
# * $1 string - If "original", then the original icons are printed,
|
|
# otherwise "print_icon" is used, which takes the users
|
|
# overrides into account.
|
|
get_icon_names() {
|
|
# Iterate over a ordered list of keys of the icons array
|
|
for key in ${(@kon)icons}; do
|
|
echo -n "POWERLEVEL9K_$key: "
|
|
if [[ "${1}" == "original" ]]; then
|
|
# print the original icons as they are defined in the array above
|
|
echo "${icons[$key]}"
|
|
else
|
|
# print the icons as they are configured by the user
|
|
echo "$(print_icon "$key")"
|
|
fi
|
|
done
|
|
}
|