Implement redesigned prompt
This commit is contained in:
parent
bdcdb00b7a
commit
03294e7051
126
config.fish
126
config.fish
@ -6,18 +6,20 @@
|
|||||||
# Setting Variables #
|
# Setting Variables #
|
||||||
#####################
|
#####################
|
||||||
|
|
||||||
set __fish_git_prompt_show_informative_status 1
|
set __fish_git_prompt_show_informative_status true
|
||||||
|
|
||||||
set fish_greeting ""
|
set fish_greeting "Hello, commander."
|
||||||
set fish_key_bindings fish_default_key_bindings
|
set fish_key_bindings fish_default_key_bindings
|
||||||
|
|
||||||
|
set VIRTUAL_ENV_DISABLE_PROMPT true
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Title Function #
|
# Title Function #
|
||||||
##################
|
##################
|
||||||
|
|
||||||
function fish_title --description 'Print the title of the window'
|
function fish_title --description 'Print the title of the window'
|
||||||
|
|
||||||
# Trying to set the title inside an Emacs term will break it
|
# Trying to set the title inside of Emacs will break it
|
||||||
if set -q INSIDE_EMACS
|
if set -q INSIDE_EMACS
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -33,59 +35,101 @@ end
|
|||||||
|
|
||||||
function fish_prompt --description 'Write out the prompt'
|
function fish_prompt --description 'Write out the prompt'
|
||||||
|
|
||||||
# Get Exit Status
|
####################
|
||||||
|
# Exit Status
|
||||||
|
|
||||||
|
# Cache the exit status of the last command
|
||||||
set -l last_status $status
|
set -l last_status $status
|
||||||
|
|
||||||
# Color Definitions
|
##################
|
||||||
set -l normal_color (set_color normal)
|
# Global Variables
|
||||||
set -l ssh_color (set_color brwhite)
|
|
||||||
set -l bat_color (set_color bryellow)
|
|
||||||
set -l usr_color (set_color brgreen)
|
|
||||||
set -l dir_color (set_color brblue)
|
|
||||||
set -l vcs_color (set_color brblack)
|
|
||||||
set -l err_color (set_color red)
|
|
||||||
|
|
||||||
# Battery File Location
|
# Format host name variable if not yet set
|
||||||
set -l bat_file /sys/class/power_supply/BAT0/capacity
|
if not set -q __fish_prompt_hostname
|
||||||
|
set -g __fish_prompt_hostname (prompt_hostname)
|
||||||
|
end
|
||||||
|
|
||||||
# SSH Status Formatting
|
# Format prompt character variable if not yet set
|
||||||
set -l ssh_status ""
|
if not set -q __fish_prompt_char
|
||||||
|
switch (id -u)
|
||||||
|
case 0
|
||||||
|
# Root
|
||||||
|
set -g __fish_prompt_char "#"
|
||||||
|
case '*'
|
||||||
|
# Everyone else
|
||||||
|
set -g __fish_prompt_char ">"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
# Local Variables
|
||||||
|
|
||||||
|
set -l normal (set_color normal)
|
||||||
|
set -l white (set_color brwhite)
|
||||||
|
set -l yellow (set_color ffeb3b bryellow)
|
||||||
|
set -l cyan (set_color 62d7ff brcyan)
|
||||||
|
set -l magenta (set_color f358dc brmagenta)
|
||||||
|
set -l gray (set_color 5b5b5b brblack)
|
||||||
|
set -l darkgray (set_color 2e2e2e black)
|
||||||
|
set -l red (set_color f44336 brred)
|
||||||
|
|
||||||
|
set -l battery_file /sys/class/power_supply/BAT0/capacity
|
||||||
|
|
||||||
|
#############
|
||||||
|
# SSH Segment
|
||||||
|
|
||||||
|
set -l ssh_seg ""
|
||||||
if test -n "$SSH_CONNECTION"
|
if test -n "$SSH_CONNECTION"
|
||||||
set ssh_status "$ssh_color" "[ssh]" "$nromal_color" " "
|
set ssh_seg "$white[ssh]$normal "
|
||||||
end
|
end
|
||||||
|
|
||||||
# Battery Status Formatting
|
#############################
|
||||||
set -l bat_status ""
|
# Virtual Environment Segment
|
||||||
if test -f $bat_file
|
|
||||||
set -l bat_capacity (cat $bat_file)
|
set -l venv_seg ""
|
||||||
set bat_status "$bat_color" "$bat_capacity" "%" "$normal_color" " "
|
if test -n "$VIRTUAL_ENV"
|
||||||
|
set venv_seg "$gray(" (basename $VIRTUAL_ENV) ")$normal "
|
||||||
end
|
end
|
||||||
|
|
||||||
# User/Hostname Formatting
|
#################
|
||||||
set -l user_host $usr_color $USER "@" (hostname -s) "$normal_color"
|
# Battery Segment
|
||||||
|
|
||||||
# Working Directory Formatting
|
set -l battery_seg ""
|
||||||
set -l home_escaped (echo -n $HOME | sed 's/\//\\\\\//g')
|
if test -f $battery_file
|
||||||
set -l pwd (echo -n $PWD | sed "s/^$home_escaped/~/")
|
set battery_seg "$yellow" (cat $bat_file) "%$normal "
|
||||||
set -l current_dir "$dir_color" "$pwd" "$normal_color"
|
|
||||||
|
|
||||||
# Suffix Symbol Selection
|
|
||||||
set -l suffix ""
|
|
||||||
switch $USER
|
|
||||||
case root toor; set suffix "#"
|
|
||||||
case "*"; set suffix ">"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# VCS Status Formatting
|
#################
|
||||||
set -l vcs_status "$vcs_color" (__fish_vcs_prompt) "$normal_color"
|
# User@Host Segment
|
||||||
|
|
||||||
# Exit Status Formatting
|
set -l user_host_seg "$cyan$USER$normal at $magenta$__fish_prompt_hostname$normal "
|
||||||
set -l prompt_status
|
|
||||||
|
###########################
|
||||||
|
# Working Directory (PWD) Segment
|
||||||
|
|
||||||
|
set -g fish_prompt_pwd_dir_length 1
|
||||||
|
set -l pwd_seg "in $gray" (prompt_pwd)
|
||||||
|
set pwd_seg (string replace -ar '(.+/)([^/]*$)' "$darkgray\$1$gray\$2$normal" $pwd_seg)
|
||||||
|
|
||||||
|
####################
|
||||||
|
# VCS Status Segment
|
||||||
|
|
||||||
|
set -l vcs_seg (__fish_vcs_prompt) ""
|
||||||
|
|
||||||
|
##################
|
||||||
|
# Prompt Character
|
||||||
|
|
||||||
|
set -l prompt_char "$cyan$__fish_prompt_char$normal "
|
||||||
if test $last_status -ne 0
|
if test $last_status -ne 0
|
||||||
set prompt_status " " "$err_color" "[$last_status]" "$normal_color"
|
set prompt_char "$red$__fish_prompt_char$normal "
|
||||||
end
|
end
|
||||||
|
|
||||||
# Print Prompt
|
#########
|
||||||
echo -n -s $ssh_status $bat_status $user_host " " $current_dir $vcs_status $prompt_status $suffix " "
|
# Output
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "%s" $venv_seg $ssh_seg $battery_seg $user_host_seg $pwd_seg $vcs_seg
|
||||||
|
printf "\n%s" $prompt_char
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user