#!/bin/bash # Exit immediately if a command exits with a non-zero status. set -e # Default icon value (empty if not provided) icon="" # Function to display script usage usage() { echo "Usage: $0 [--icon ]" exit 1 } # Parse command-line options while [[ $# -gt 0 ]]; do key="$1" case $key in --icon) icon="$2" shift # past argument shift # past value ;; *) # unknown option usage ;; esac done # Function to install Fish shell install_fish() { echo "Installing Fish shell..." sudo apt update sudo apt install -y fish } # Function to set Fish as the default shell set_default_fish() { echo "Setting Fish as the default shell..." chsh -s $(which fish) } # Function to install Starship install_starship() { echo "Installing Starship..." curl -sS https://starship.rs/install.sh | sh -s -- -y } # Function to configure Starship for Fish configure_starship() { echo "Configuring Starship for Fish..." mkdir -p ~/.config/fish echo 'starship init fish | source' >> ~/.config/fish/config.fish } # Function to overwrite starship.toml overwrite_starship_toml() { if [ -f "./terminal/starship.toml" ]; then echo "Overwriting starship.toml..." mkdir -p ~/.config/starship cp ./terminal/starship.toml ~/.config/starship.toml # Check if icon parameter is provided if [ ! -z "$icon" ]; then echo "Adding icon [$icon](bg:color_purple fg:color_white) to starship.toml..." # Escape special characters in icon variable for sed escaped_icon=$(printf '%s\n' "$icon" | sed -e 's/[]\/$*.^[]/\\&/g') sed -i "5i\icon = \"$escaped_icon\"" ~/.config/starship.toml fi else echo "starship.toml not found in the repository." exit 1 fi } # Main script execution install_fish set_default_fish install_starship configure_starship overwrite_starship_toml echo "Fish shell and Starship prompt setup complete!"