#!/bin/bash # ========================================================== # ProxMenu - A menu-driven script for Proxmox VE management # ========================================================== # Author : MacRimi # Copyright : (c) 2024 MacRimi # License : MIT (https://raw.githubusercontent.com/MacRimi/ProxMenux/main/LICENSE) # Version : 1.0 # Last Updated: 24/02/2025 # ========================================================== # Configuration ============================================ REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main" BASE_DIR="/usr/local/share/proxmenux" UTILS_FILE="$BASE_DIR/utils.sh" VENV_PATH="/opt/googletrans-env" if [[ -f "$UTILS_FILE" ]]; then source "$UTILS_FILE" fi load_language initialize_cache #show_proxmenux_logo # ========================================================== confirm_and_run() { local name="$1" local command="$2" if whiptail --title "$(translate "Confirmation")" \ --yesno "$(translate "Do you want to run the post-installation script from") $name?" \ 10 70; then eval "$command" echo "" msg_success "$(translate 'Press ENTER to continue...')" read -r _ else msg_warn "$(translate "Cancelled by user.")" sleep 1 fi } # Define scripts array scripts=( "Customizable script post-installation|ProxMenux|bash <(curl -s $REPO_URL/scripts/customizable_post_install.sh)" "Proxmox VE Post Install|Helper-Scripts|bash -c \"\$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh); msg_success \\\"\$(translate 'Press ENTER to continue...')\\\"; read -r _\"" "xshok-proxmox Post install|fork xshok-proxmox|confirm_and_run \"Xshok\" \"wget https://raw.githubusercontent.com/MacRimi/xshok-proxmox/master/install-post.sh -c -O install-post.sh && bash install-post.sh && rm install-post.sh\"" "Uninstall Tools|ProxMenux|bash <(curl -s $REPO_URL/scripts/uninstall-tools.sh)" ) show_menu() { while true; do HEADER=$(printf " %-52s %-20s" "$(translate "Name")" "$(translate "Repository")") menu_items=() for i in "${!scripts[@]}"; do IFS='|' read -r name repository command <<< "${scripts[$i]}" number=$((i+1)) padded_option=$(printf "%2d %-50s" "$number" "$(translate "$name")") menu_items+=("$padded_option" "$repository") done menu_items+=("$(printf "%2d %-40s" "$((${#scripts[@]}+1))" "$(translate "Return to Main Menu")")" "") cleanup script_selection=$(whiptail --title "$(translate "Post-Installation Scripts Menu")" \ --menu "\n$HEADER" 20 78 $((${#scripts[@]}+1)) \ "${menu_items[@]}" 3>&1 1>&2 2>&3) if [ -n "$script_selection" ]; then selected_number=$(echo "$script_selection" | awk '{print $1}') if [ "$selected_number" = "$((${#scripts[@]}+1))" ]; then #show_proxmenux_logo exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") fi index=$((selected_number - 1)) if [ $index -ge 0 ] && [ $index -lt ${#scripts[@]} ]; then IFS='|' read -r name repository command <<< "${scripts[$index]}" eval "$command" fi else #show_proxmenux_logo exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") fi done } clear if [[ "$LANGUAGE" != "en" ]]; then show_proxmenux_logo msg_lang "$(translate "Generating automatic translations...")" fi show_menu