diff --git a/fish/conf.d/fish_prompt.fish b/fish/conf.d/fish_prompt.fish new file mode 100644 index 0000000..64defdf --- /dev/null +++ b/fish/conf.d/fish_prompt.fish @@ -0,0 +1,41 @@ +function fish_prompt + # Check the last command status and set the error color + if test $status -eq 0 + set error_color "\033[38;2;0;255;180m" # rgb(0, 255, 180) for success + else + set error_color "\033[38;2;255;53;94m" # rgb(255, 53, 94) for error + end + + # Get SSH session status + if test -n "$SSH_CONNECTION" + set ssh_color "\033[38;2;255;149;0m" # rgb(255, 149, 0) for SSH + else + set ssh_color "\033[38;2;82;82;82m" # rgb(82, 82, 82) for non-SSH + end + + # Try to get the git branch, avoid error if not in a git repo + set git_color "\033[38;2;82;82;82m" # Default git color when not in a git repo + if test -d .git + set git_branch (git rev-parse --abbrev-ref HEAD) + if test -n "$git_branch" + switch $git_branch + case 'main' 'master' + set git_color "\033[38;2;178;98;44m" # rgb(178, 98, 44) for main/master + case 'dev' + set git_color "\033[38;2;54;159;150m" # rgb(54, 159, 150) for dev + case '*' + set git_color "\033[38;2;255;255;255m" # rgb(255, 255, 255) for other branches + end + end + end + + # Set the user color + if test $USER = "root" + set user_color "\033[38;2;255;53;94m" # rgb(255, 53, 94) for root + else + set user_color "\033[38;2;0;255;180m" # rgb(0, 255, 180) for non-root users + end + + # Print the custom prompt with the symbol and different colors + echo -n -e "$ssh_color❯$git_color❯$user_color❯$error_color❯\033[0m " +end diff --git a/fish/conf.d/fish_right_prompt.fish b/fish/conf.d/fish_right_prompt.fish new file mode 100644 index 0000000..5d156b9 --- /dev/null +++ b/fish/conf.d/fish_right_prompt.fish @@ -0,0 +1,37 @@ +function fish_right_prompt + # Check if we're in a Git repo + set git_dir (git rev-parse --show-toplevel 2>/dev/null) + if test -n "$git_dir" + # Escape + set escaped_git_dir (string replace "/" "\\/" $git_dir) + + # Get the repo name + set repo_name (basename $git_dir) + + # Relative path in git + set relative_path (string replace -r "^$escaped_git_dir/" "" (pwd)) + + # RGB color codes + set repo_color "\033[38;2;55;120;130m" # RGB for repo name (dark cyan) + set separator_color "\033[38;2;178;98;44m" # RGB for separator (bronze) + set path_color "\033[38;2;82;82;82m" # RGB for path (gray) + set reset_color "\033[0m" # Reset color + + # Ensure the relative path starts with a single slash + if not string match -r "^/" $relative_path + set relative_path "/$relative_path" + end + + # Check if we're at the Git root or inside the repo + if test "$relative_path" = "" + # At the repo root + printf "$repo_color$repo_name$reset_color" + else + # Inside the repo, print the repo name, separator, and path + printf "$repo_color$repo_name$separator_color 󰊢 $path_color$relative_path$reset_color" + end + else + # Not in a Git repo, use the default prompt_pwd function + prompt_pwd + end +end \ No newline at end of file diff --git a/fish/config.fish b/fish/config.fish index fad6a12..4591bd1 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -1,43 +1,5 @@ -set -U fish_greeting "" +if status is-interactive + # Commands to run in interactive sessions can go here +end -function fish_prompt - # Check the last command status and set the error color - if test $status -eq 0 - set error_color "\033[38;2;0;255;180m" # rgb(0, 255, 180) for success - else - set error_color "\033[38;2;255;53;94m" # rgb(255, 53, 94) for error - end - - # Get SSH session status - if test -n "$SSH_CONNECTION" - set ssh_color "\033[38;2;255;149;0m" # rgb(255, 149, 0) for SSH - else - set ssh_color "\033[38;2;82;82;82m" # rgb(82, 82, 82) for non-SSH - end - - # Try to get the git branch, avoid error if not in a git repo - set git_color "\033[38;2;82;82;82m" # Default git color when not in a git repo - if test -d .git - set git_branch (git rev-parse --abbrev-ref HEAD) - if test -n "$git_branch" - switch $git_branch - case 'main' 'master' - set git_color "\033[38;2;178;98;44m" # rgb(178, 98, 44) for main/master - case 'dev' - set git_color "\033[38;2;54;159;150m" # rgb(54, 159, 150) for dev - case '*' - set git_color "\033[38;2;255;255;255m" # rgb(255, 255, 255) for other branches - end - end - end - - # Set the user color - if test $USER = "root" - set user_color "\033[38;2;255;53;94m" # rgb(255, 53, 94) for root - else - set user_color "\033[38;2;0;255;180m" # rgb(0, 255, 180) for non-root users - end - - # Print the custom prompt with the symbol and different colors - echo -n -e "$ssh_color❯$git_color❯$user_color❯$error_color❯\033[0m " -end \ No newline at end of file +set -U fish_greeting "" \ No newline at end of file