162 lines
4.4 KiB
Bash
Executable File
162 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
REQUIRED_TOOLS=("git" "curl" "fastfetch" "lsd" "micro" "zoxide" "fzf" "kitty")
|
|
|
|
echo -n "📦 Checking and installing dependencies... "
|
|
# OS Detection
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
OS=$ID
|
|
else
|
|
echo "Unsupported OS. Manual installation required."
|
|
exit 1
|
|
fi
|
|
|
|
# Install dependancies
|
|
install_tool() {
|
|
local tool=$1
|
|
echo "--- Tool '$tool' is missing. ---"
|
|
read -p "Would you like to install $tool? (y/n): " confirm
|
|
|
|
if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
|
|
case $OS in
|
|
ubuntu|debian|kali|pop|mint|linuxmint|kubuntu|xubuntu|lubuntu|elementary|zorin)
|
|
sudo apt update && sudo apt install -y "$tool"
|
|
echo "'$tool' Installed"
|
|
;;
|
|
fedora|rhel|centos)
|
|
sudo dnf install -y "$tool" > /dev/null 2>&1
|
|
;;
|
|
*)
|
|
echo "Package manager for '$OS' not defined in this script."
|
|
exit 1
|
|
;;
|
|
esac
|
|
else
|
|
echo "Exiting: $tool is required for this script."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Confirm everything installed correctly
|
|
for tool in "${REQUIRED_TOOLS[@]}"; do
|
|
if ! command -v "$tool" &> /dev/null; then
|
|
install_tool "$tool"
|
|
fi
|
|
done
|
|
|
|
|
|
|
|
# --- 0. Pre-installation Setup ---
|
|
echo "🎨 Customize your Terminal Color Palette"
|
|
echo "Select a primary color for your Starship prompt:"
|
|
echo " 1) Vibrant Orange (#FF8C00) [Default]"
|
|
echo " 2) Yellow (#E6D709)"
|
|
echo " 3) Mint Green (#50FA7B)"
|
|
echo " 4) Light Blue (#8BE9FD)"
|
|
echo " 5) Pink (#FF79C6)"
|
|
echo " 6) Red (#FF5555)"
|
|
echo " 7) Purple (#BD93F9)"
|
|
echo " 8) Cyan (#00FFFF)"
|
|
echo " 9) Lime (#32CD32)"
|
|
echo " 10) Blue (#007BFF)"
|
|
|
|
read -p "Enter the number of your choice [1]: " color_choice
|
|
|
|
case $color_choice in
|
|
2) PRIMARY_COLOR="#E6D709" ;;
|
|
3) PRIMARY_COLOR="#50FA7B" ;;
|
|
4) PRIMARY_COLOR="#8BE9FD" ;;
|
|
5) PRIMARY_COLOR="#FF79C6" ;;
|
|
6) PRIMARY_COLOR="#FF5555" ;;
|
|
7) PRIMARY_COLOR="#BD93F9" ;;
|
|
8) PRIMARY_COLOR="#00FFFF" ;;
|
|
9) PRIMARY_COLOR="#32CD32" ;;
|
|
10) PRIMARY_COLOR="#007BFF" ;;
|
|
*) PRIMARY_COLOR="#FF8C00" ;; # Default
|
|
esac
|
|
|
|
echo -e "Selected hex color: $PRIMARY_COLOR\n"
|
|
|
|
# --- 2. Setup Fonts ---
|
|
echo -n "🔨 Syncing fonts... "
|
|
mkdir -p ~/.local/share/fonts
|
|
|
|
if [ -d "./fonts" ]; then
|
|
changed=false
|
|
|
|
for font in ./fonts/*.ttf; do
|
|
dest="$HOME/.local/share/fonts/$(basename "$font")"
|
|
if [ ! -f "$dest" ] || ! cmp -s "$font" "$dest"; then
|
|
cp "$font" "$dest"
|
|
changed=true
|
|
fi
|
|
done
|
|
|
|
if [ "$changed" = true ]; then
|
|
fc-cache -f > /dev/null 2>&1
|
|
echo "Fonts updated."
|
|
else
|
|
echo "No changes."
|
|
fi
|
|
else
|
|
echo "No fonts folder found."
|
|
fi
|
|
|
|
# --- 3. Install Starship ---
|
|
echo -n " Installing/Updating Starship... "
|
|
if curl -sS https://starship.rs/install.sh | sh -s -- -y > /dev/null 2>&1; then
|
|
echo "Done."
|
|
else
|
|
echo "Failed to install Starship."
|
|
fi
|
|
|
|
# --- 4. Setup Configs ---
|
|
|
|
# Fastfetch
|
|
echo -n " Configuring Fastfetch... "
|
|
mkdir -p ~/.config/fastfetch
|
|
if [ -f "config.jsonc" ]; then
|
|
cp -f config.jsonc ~/.config/fastfetch/config.jsonc && echo "Done."
|
|
else
|
|
echo "Skipped (config.jsonc not found)."
|
|
fi
|
|
|
|
# Starship
|
|
echo -n " Configuring Starship... "
|
|
mkdir -p ~/.config
|
|
if [ -f "starship.toml" ]; then
|
|
cp -f starship.toml ~/.config/starship.toml
|
|
sed -i "s/{{PRIMARY_COLOR}}/${PRIMARY_COLOR}/g" ~/.config/starship.toml
|
|
echo "Done."
|
|
else
|
|
echo "Failed (starship.toml not found)."
|
|
fi
|
|
|
|
# Configure Kitty
|
|
echo -n " Configuring Kitty... "
|
|
mkdir -p ~/.config/kitty
|
|
if [ -f "kitty.conf" ]; then
|
|
cp -f kitty.conf ~/.config/kitty/kitty.conf
|
|
sed -i "s/{{PRIMARY_COLOR}}/${PRIMARY_COLOR}/g" ~/.config/kitty/kitty.conf
|
|
echo "Done."
|
|
fi
|
|
|
|
# Bashrc
|
|
echo -n " Applying .bashrc... "
|
|
if [ -f ".bashrc" ]; then
|
|
if [ ! -L ~/.bashrc ] && [ ! -f ~/.bashrc.bak ]; then
|
|
cp ~/.bashrc ~/.bashrc.bak
|
|
fi
|
|
cp -f .bashrc ~/.bashrc && echo "Done."
|
|
else
|
|
echo "Skipped (.bashrc not found)."
|
|
fi
|
|
|
|
# --- 5. Refresh Kitty ---
|
|
echo -n "🔄 Refreshing Kitty config... "
|
|
pkill -USR1 kitty && echo "Done." || echo "Kitty not running."
|
|
|
|
echo "-----------------------------------------------"
|
|
echo "✅ All set! Terminal Restarting."
|
|
echo "-----------------------------------------------" |