mirror of
https://github.com/ChrisTitusTech/mybash.git
synced 2026-04-02 10:38:14 +00:00
156 lines
4.5 KiB
Bash
Executable File
156 lines
4.5 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# Define color codes using tput for better compatibility
|
|
RC=$(tput sgr0)
|
|
RED=$(tput setaf 1)
|
|
YELLOW=$(tput setaf 3)
|
|
GREEN=$(tput setaf 2)
|
|
|
|
LINUXTOOLBOXDIR="$HOME/linuxtoolbox"
|
|
PACKAGER=""
|
|
SUDO_CMD=""
|
|
|
|
print_colored() {
|
|
color=$1
|
|
message=$2
|
|
printf "${color}%s${RC}\n" "$message"
|
|
}
|
|
|
|
command_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
determine_package_manager() {
|
|
PACKAGEMANAGER='nala apt dnf yum pacman zypper emerge xbps-install nix-env'
|
|
for pgm in $PACKAGEMANAGER; do
|
|
if command_exists "$pgm"; then
|
|
PACKAGER="$pgm"
|
|
printf "Using %s\n" "$pgm"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$PACKAGER" ]; then
|
|
print_colored "$RED" "Can't find a supported package manager"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
determine_sudo_command() {
|
|
if command_exists sudo; then
|
|
SUDO_CMD="sudo"
|
|
elif command_exists doas && [ -f "/etc/doas.conf" ]; then
|
|
SUDO_CMD="doas"
|
|
else
|
|
SUDO_CMD="su -c"
|
|
fi
|
|
|
|
printf "Using %s as privilege escalation software\n" "$SUDO_CMD"
|
|
}
|
|
|
|
uninstall_dependencies() {
|
|
DEPENDENCIES='bash-completion bat tree multitail fastfetch neovim trash-cli'
|
|
|
|
print_colored "$YELLOW" "Uninstalling dependencies..."
|
|
if [ "$PACKAGER" = "pacman" ]; then
|
|
if command_exists yay; then
|
|
yay -Rns --noconfirm ${DEPENDENCIES}
|
|
elif command_exists paru; then
|
|
paru -Rns --noconfirm ${DEPENDENCIES}
|
|
else
|
|
${SUDO_CMD} pacman -Rns --noconfirm ${DEPENDENCIES}
|
|
fi
|
|
elif [ "$PACKAGER" = "nala" ] || [ "$PACKAGER" = "apt" ]; then
|
|
${SUDO_CMD} ${PACKAGER} purge -y ${DEPENDENCIES}
|
|
elif [ "$PACKAGER" = "emerge" ]; then
|
|
${SUDO_CMD} ${PACKAGER} --deselect app-shells/bash-completion sys-apps/bat app-text/tree app-text/multitail app-misc/fastfetch app-editors/neovim app-misc/trash-cli
|
|
elif [ "$PACKAGER" = "xbps-install" ]; then
|
|
${SUDO_CMD} xbps-remove -Ry ${DEPENDENCIES}
|
|
elif [ "$PACKAGER" = "nix-env" ]; then
|
|
${SUDO_CMD} ${PACKAGER} -e bash-completion bat tree multitail fastfetch neovim trash-cli
|
|
elif [ "$PACKAGER" = "dnf" ] || [ "$PACKAGER" = "yum" ]; then
|
|
${SUDO_CMD} ${PACKAGER} remove -y ${DEPENDENCIES}
|
|
else
|
|
${SUDO_CMD} ${PACKAGER} remove -y ${DEPENDENCIES}
|
|
fi
|
|
}
|
|
|
|
uninstall_font() {
|
|
FONT_NAME="MesloLGS Nerd Font Mono"
|
|
FONT_DIR="$HOME/.local/share/fonts/$FONT_NAME"
|
|
|
|
if [ -d "$FONT_DIR" ]; then
|
|
print_colored "$YELLOW" "Removing font: $FONT_NAME"
|
|
rm -rf "$FONT_DIR"
|
|
fc-cache -fv
|
|
print_colored "$GREEN" "Font removed: $FONT_NAME"
|
|
else
|
|
print_colored "$YELLOW" "Font not found: $FONT_NAME"
|
|
fi
|
|
}
|
|
|
|
uninstall_starship_and_fzf() {
|
|
if command_exists starship; then
|
|
print_colored "$YELLOW" "Uninstalling Starship..."
|
|
${SUDO_CMD} rm -f "$(command -v starship)"
|
|
print_colored "$GREEN" "Starship uninstalled"
|
|
fi
|
|
|
|
if [ -d "$HOME/.fzf" ]; then
|
|
print_colored "$YELLOW" "Uninstalling fzf..."
|
|
"$HOME/.fzf/uninstall"
|
|
rm -rf "$HOME/.fzf"
|
|
print_colored "$GREEN" "fzf uninstalled"
|
|
fi
|
|
}
|
|
|
|
uninstall_zoxide() {
|
|
if command_exists zoxide; then
|
|
print_colored "$YELLOW" "Uninstalling Zoxide..."
|
|
${SUDO_CMD} rm -f "$(command -v zoxide)"
|
|
print_colored "$GREEN" "Zoxide uninstalled"
|
|
fi
|
|
}
|
|
|
|
remove_configs() {
|
|
USER_HOME=$(getent passwd "${SUDO_USER:-$USER}" | cut -d: -f6)
|
|
|
|
print_colored "$YELLOW" "Removing configuration files..."
|
|
|
|
# Remove .bashrc symlink and restore backup if it exists
|
|
if [ -L "$USER_HOME/.bashrc" ]; then
|
|
rm "$USER_HOME/.bashrc"
|
|
if [ -f "$USER_HOME/.bashrc.bak" ]; then
|
|
mv "$USER_HOME/.bashrc.bak" "$USER_HOME/.bashrc"
|
|
print_colored "$GREEN" "Restored original .bashrc"
|
|
fi
|
|
fi
|
|
|
|
# Remove starship config
|
|
rm -f "$USER_HOME/.config/starship.toml"
|
|
|
|
# Remove fastfetch config
|
|
rm -f "$USER_HOME/.config/fastfetch/config.jsonc"
|
|
|
|
print_colored "$GREEN" "Configuration files removed"
|
|
}
|
|
|
|
remove_linuxtoolbox() {
|
|
if [ -d "$LINUXTOOLBOXDIR" ]; then
|
|
print_colored "$YELLOW" "Removing linuxtoolbox directory..."
|
|
rm -rf "$LINUXTOOLBOXDIR"
|
|
print_colored "$GREEN" "linuxtoolbox directory removed"
|
|
fi
|
|
}
|
|
|
|
# Main execution
|
|
determine_package_manager
|
|
determine_sudo_command
|
|
uninstall_dependencies
|
|
uninstall_font
|
|
uninstall_starship_and_fzf
|
|
uninstall_zoxide
|
|
remove_configs
|
|
remove_linuxtoolbox
|
|
|
|
print_colored "$GREEN" "Uninstallation complete. Please restart your shell for changes to take effect." |