78 lines
2.9 KiB
Bash
78 lines
2.9 KiB
Bash
# Detect logo capability.
|
|
|
|
_uy_fetch_probe() {
|
|
if (( $+commands[kgp-query] )) && kgp-query 2>/dev/null; then
|
|
uy_fetch_logo_type=kitty
|
|
elif (( $+commands[sixel-query] )) && sixel-query 2>/dev/null; then
|
|
uy_fetch_logo_type=sixel
|
|
elif (( $+commands[kgp-query] )) || (( $+commands[sixel-query] )); then
|
|
uy_fetch_logo_type=logo
|
|
else
|
|
uy_fetch_logo_type=auto
|
|
fi
|
|
}
|
|
|
|
if [[ -z "$uy_fetch_logo_type" ]]; then
|
|
if [[ -t 0 ]] && (( $+commands[kgp-query] || $+commands[sixel-query] )); then
|
|
_uy_fetch_cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/logo-type"
|
|
# Terminal identity, sanitised down to a single path component
|
|
_uy_fetch_cache_file="$_uy_fetch_cache_dir/${${TERM:-none}//[^A-Za-z0-9._-]/_}@${${TERM_PROGRAM:-none}//[^A-Za-z0-9._-]/_}"
|
|
|
|
[[ -s "$_uy_fetch_cache_file" ]] && uy_fetch_logo_type="$(<"$_uy_fetch_cache_file")"
|
|
|
|
# Covers both a cache miss and a cache file holding anything unexpected
|
|
if [[ "$uy_fetch_logo_type" != (kitty|sixel|logo|symbols|auto) ]]; then
|
|
_uy_fetch_probe
|
|
[[ -d "$_uy_fetch_cache_dir" ]] || mkdir -p "$_uy_fetch_cache_dir"
|
|
print -r -- "$uy_fetch_logo_type" >| "$_uy_fetch_cache_file"
|
|
fi
|
|
|
|
unset _uy_fetch_cache_dir _uy_fetch_cache_file
|
|
else
|
|
_uy_fetch_probe
|
|
fi
|
|
fi
|
|
|
|
unfunction _uy_fetch_probe
|
|
|
|
: ${uy_fetch_color:="38;2;137;180;250"}
|
|
|
|
# Build fastfetch args (arrays to handle paths with spaces safely)
|
|
|
|
case "$uy_fetch_logo_type" in
|
|
symbols)
|
|
uy_fetch_args=(--logo-type raw --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/42x.symbols" --color "$uy_fetch_color")
|
|
uy_fetch_args_brief=(--logo-type raw --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/28x.symbols" --color "$uy_fetch_color")
|
|
;;
|
|
logo)
|
|
uy_fetch_args=(--logo-type builtin)
|
|
uy_fetch_args_brief=(--logo-type small)
|
|
;;
|
|
sixel)
|
|
uy_fetch_args=(--logo-type raw --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/42x.sixel" --color "$uy_fetch_color")
|
|
uy_fetch_args_brief=(--logo-type raw --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/28x.sixel" --color "$uy_fetch_color")
|
|
;;
|
|
*) # kitty, auto, etc.
|
|
uy_fetch_args=(--logo-type "$uy_fetch_logo_type" --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/ros.png" --color "$uy_fetch_color")
|
|
uy_fetch_args_brief=(--logo-type "$uy_fetch_logo_type" --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/ros.png" --color "$uy_fetch_color")
|
|
;;
|
|
esac
|
|
|
|
# Functions
|
|
|
|
if (( $+commands[fastfetch] )); then
|
|
ff() { fastfetch -c "$HOME/.config/fastfetch/config.jsonc" "${uy_fetch_args[@]}" "$@"; }
|
|
|
|
if [[ -f "$HOME/.config/fastfetch/brief.jsonc" ]]; then
|
|
ffb() { fastfetch -c "$HOME/.config/fastfetch/brief.jsonc" "${uy_fetch_args_brief[@]}" "$@"; }
|
|
else
|
|
ffb() { ff "$@"; }
|
|
fi
|
|
fi
|
|
|
|
# Auto-fetch on startup
|
|
|
|
if [[ -z "$uy_no_fetch" ]] && (( $+functions[ffb] )); then
|
|
ffb
|
|
fi
|