feat: add catppuccin nim-style fallback fish_prompt
This commit is contained in:
@@ -0,0 +1,138 @@
|
|||||||
|
# Copyright (C) 2026 Rootiest
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
# fish_prompt
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
# Catppuccin Mocha fallback prompt (nim-style, two-line). Active whenever
|
||||||
|
# the starship prompt is not available — either starship is not installed or
|
||||||
|
# C3 overrides are disabled. Has no external dependencies; uses only fish
|
||||||
|
# builtins (set_color, fish_git_prompt, prompt_pwd, prompt_hostname).
|
||||||
|
#
|
||||||
|
# RETURNS
|
||||||
|
# 0 Always; outputs the prompt to stdout
|
||||||
|
#
|
||||||
|
# EXAMPLE
|
||||||
|
# # Rendered automatically by fish; not called directly.
|
||||||
|
function fish_prompt
|
||||||
|
set -l last_status $status
|
||||||
|
|
||||||
|
# Catppuccin Mocha hex palette
|
||||||
|
set -l c_green a6e3a1
|
||||||
|
set -l c_red f38ba8
|
||||||
|
set -l c_yellow f9e2af
|
||||||
|
set -l c_text cdd6f4
|
||||||
|
set -l c_blue 89b4fa
|
||||||
|
set -l c_teal 94e2d5
|
||||||
|
set -l c_pink f5c2e7
|
||||||
|
set -l c_dim 6c7086
|
||||||
|
set -l c_mauve cba6f7
|
||||||
|
|
||||||
|
# Line/connector color tracks last exit status; brackets stay bold green
|
||||||
|
set -l retc $c_green
|
||||||
|
test $last_status -ne 0; and set retc $c_red
|
||||||
|
|
||||||
|
# Enable upstream arrows in git prompt (↑/↓)
|
||||||
|
set -q __fish_git_prompt_showupstream
|
||||||
|
or set -g __fish_git_prompt_showupstream auto
|
||||||
|
|
||||||
|
# ─── First line ───────────────────────────────────────────────────────────
|
||||||
|
set_color $retc
|
||||||
|
echo -n '┬─'
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n '['
|
||||||
|
|
||||||
|
# Username: red if root, yellow otherwise
|
||||||
|
if functions -q fish_is_root_user; and fish_is_root_user
|
||||||
|
set_color --bold $c_red
|
||||||
|
else
|
||||||
|
set_color --bold $c_yellow
|
||||||
|
end
|
||||||
|
echo -n $USER
|
||||||
|
|
||||||
|
set_color --bold $c_text
|
||||||
|
echo -n '@'
|
||||||
|
|
||||||
|
# Hostname: teal if SSH, blue if local
|
||||||
|
if test -n "$SSH_CLIENT"
|
||||||
|
set_color --bold $c_teal
|
||||||
|
else
|
||||||
|
set_color --bold $c_blue
|
||||||
|
end
|
||||||
|
echo -n (prompt_hostname)
|
||||||
|
|
||||||
|
set_color --bold $c_text
|
||||||
|
echo -n ':'
|
||||||
|
set_color $c_text
|
||||||
|
echo -n (prompt_pwd)
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n ']'
|
||||||
|
set_color normal
|
||||||
|
|
||||||
|
# Vi-mode segment ─[N/I/R/V]
|
||||||
|
if test "$fish_key_bindings" = fish_vi_key_bindings
|
||||||
|
or test "$fish_key_bindings" = fish_hybrid_key_bindings
|
||||||
|
set -l mode_str
|
||||||
|
switch $fish_bind_mode
|
||||||
|
case default
|
||||||
|
set mode_str (set_color --bold $c_red)'N'(set_color normal)
|
||||||
|
case insert
|
||||||
|
set mode_str (set_color --bold $c_green)'I'(set_color normal)
|
||||||
|
case replace_one replace
|
||||||
|
set mode_str (set_color --bold $c_teal)'R'(set_color normal)
|
||||||
|
case visual
|
||||||
|
set mode_str (set_color --bold $c_mauve)'V'(set_color normal)
|
||||||
|
end
|
||||||
|
set_color $retc
|
||||||
|
echo -n '─'
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n '['
|
||||||
|
echo -n $mode_str
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n ']'
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
|
||||||
|
# Virtual environment segment ─[V:name]
|
||||||
|
set -q VIRTUAL_ENV_DISABLE_PROMPT
|
||||||
|
or set -g VIRTUAL_ENV_DISABLE_PROMPT true
|
||||||
|
if set -q VIRTUAL_ENV
|
||||||
|
set_color $retc
|
||||||
|
echo -n '─'
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n '['
|
||||||
|
set_color normal
|
||||||
|
set_color $retc
|
||||||
|
echo -n 'V:'(path basename "$VIRTUAL_ENV")
|
||||||
|
set_color --bold $c_green
|
||||||
|
echo -n ']'
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
|
||||||
|
# Git branch in Catppuccin Pink, wrapped in parens: (main)
|
||||||
|
set -l git_info (fish_git_prompt '%s')
|
||||||
|
if test -n "$git_info"
|
||||||
|
echo -n ' '
|
||||||
|
set_color $c_pink
|
||||||
|
echo -n "($git_info)"
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
|
||||||
|
echo # newline
|
||||||
|
|
||||||
|
# Background jobs (one per line, dim)
|
||||||
|
for job in (jobs)
|
||||||
|
set_color $retc
|
||||||
|
echo -n '│ '
|
||||||
|
set_color $c_dim
|
||||||
|
echo $job
|
||||||
|
end
|
||||||
|
|
||||||
|
# ─── Second line ──────────────────────────────────────────────────────────
|
||||||
|
set_color $retc
|
||||||
|
echo -n '╰─>'
|
||||||
|
set_color --bold $c_red
|
||||||
|
echo -n '$ '
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user