linux-presets/setup.sh

73 lines
1.7 KiB
Bash

#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
# 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() {
local icon="$1"
local starship_toml_path="./terminal/starship.toml"
if [ -f "$starship_toml_path" ]; then
echo "Overwriting starship.toml..."
mkdir -p ~/.config/starship
# Insert icon before hostname if provided
if [ -n "$icon" ]; then
sed -i "s/format = \"\"\"/format = \"\"\"\[ $icon \](fg:color_fg0)\\n/" "$starship_toml_path"
fi
cp "$starship_toml_path" ~/.config/starship/starship.toml
else
echo "starship.toml not found in the repository."
exit 1
fi
}
# Main script execution
install_fish
set_default_fish
install_starship
configure_starship
# Check for the optional icon parameter
icon_param=""
while getopts ":i:" opt; then
case $opt in
i) icon_param="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG" >&2
;;
esac
done
overwrite_starship_toml "$icon_param"
echo "Fish shell and Starship prompt setup complete!"