# This is the config I use for Powerlevel9k # Custom dir command function my_dir(){ homeIcon="" wpPluginsIcon=".p." wpThemesIcon=".t." siteIcon=" " wpSiteIcon=" " magentoSiteIcon=" " dropboxIcon="" seperator="  " seperatorDual="  " root="$seperator" # Gets the path. local current_path="$(print -P "%~")" # Replace either ~ or ~/ with  current_path=$(echo $current_path | sed -r -e "s/\~/$homeIcon/") # Replace wp-content/themes with theme icon if in theme # current_path=$(echo $current_path | sed -r -e "s/wp\-content\/themes/$wpThemesIcon/") # Replace wp-content/plugins with plugin icon if in plugin # current_path=$(echo $current_path | sed -r -e "s/wp\-content\/plugins/$wpPluginsIcon/") local current_project_full="$(project current --path)" local current_project_name="$(project current)" if [ -n "$current_project_name" ]; then if echo "$PWD" | grep -q "$current_project_full"; then current_path=$(echo $PWD | sed -r -e "s#$current_project_full##" | sed -r -e 's/^\///') current_path="$current_path" fi fi # #This is used for checking if wp or magento local ph=${PWD%/public_html*}/public_html # If in a site folder and a wp site, replace home/Sites//public_html with siteIcon if [[ -d $ph ]]; then local icon=$siteIcon if [[ -e "$ph/wp-config.php" ]]; then #If WordPress icon=$wpSiteIcon # Change wp-content in sub folders current_path=$(echo $current_path | sed -r -e "s/wp\-content\//wpc\//") if [[ $(tput cols) -lt 100 ]]; then current_path=$(echo $current_path | sed -r -e "s/wpc\/themes\//\//") current_path=$(echo $current_path | sed -r -e "s/wpc\/plugins\//\//") fi elif [[ -e "$ph/bin/magento" ]]; then #If magento icon=$magentoSiteIcon fi current_path=$(echo $current_path | sed -r -e "s/$homeIcon\/Sites\/([a-z_\-]*)\/public_html/$icon\1/") fi # Replace Dropbox with icon current_path=$(echo $current_path | sed -r -e "s/$homeIcon\/Dropbox/$dropboxIcon/") # Set the root current_path=$(echo $current_path | sed -r -e "s/^\//$root/g") # Set the dual seperator current_path=$(echo $current_path | sed -r -e "s/\/\//$seperatorDual/g") # Set the seperator current_path=$(echo $current_path | sed -r -e "s/\//$seperator/g") # If seperator is at the end, remove it (this should only be the case if in root directory) current_path=$(echo $current_path | sed -r -e "s/$seperator\$//g") echo $current_path } POWERLEVEL9K_CUSTOM_DIR="my_dir" if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then POWERLEVEL9K_CUSTOM_DIR_BACKGROUND="green" POWERLEVEL9K_CUSTOM_DIR_FOREGROUND="black" else POWERLEVEL9K_CUSTOM_DIR_BACKGROUND="blue" POWERLEVEL9K_CUSTOM_DIR_FOREGROUND="black" fi # POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR="\ue0c0" # POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR="\ue0c2" function Capslock(){ x=$(xset -q | grep Caps) 2> /dev/null || exit 0 x=${x:22:1} if [[ $x == "n" ]]; then echo "" fi } POWERLEVEL9K_CUSTOM_CAPS="Capslock" POWERLEVEL9K_CUSTOM_CAPS_BACKGROUND="red" POWERLEVEL9K_CUSTOM_CAPS_FOREGROUND="white" function prompt_project() { local segment_content state icon local current_project_name="$(project current)" local current_project_full="$(project current --path)" local parent_process="$(ps -ocommand -p $PPID | grep -v 'COMMAND' | cut -d' ' -f1)" # If there is a current project if [ -n "$current_project_name" ]; then segment_content="$current_project_name" if [[ "$parent_process" == "/usr/bin/script" ]]; then segment_content="辶$segment_content" fi # If in the current project if echo "$PWD" | grep -q "$current_project_full"; then state="INSIDE" elif echo "$PWD" | grep -q "$HOME/Projects/"; then state="WRONG" else state="OUTSIDE" fi fi if [ -n "$segment_content" ]; then "$1_prompt_segment" "${0}_${state}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content" "$icon" fi } POWERLEVEL9K_PROJECT_DEFAULT_FOREGROUND="black" POWERLEVEL9K_PROJECT_WRONG_BACKGROUND="red" POWERLEVEL9K_PROJECT_OUTSIDE_BACKGROUND="yellow" POWERLEVEL9K_PROJECT_INSIDE_BACKGROUND="green" # Left Prompt if [[ "$(basename "/"$(ps -f -p $(cat /proc/$(echo $$)/stat | cut -d \ -f 4) | tail -1 | sed 's/^.* //'))" != "$(echo $USER)" ]]; then POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(project custom_dir vcs custom_caps) fi # Right Prompt POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator)