From 112933c7b10393d87b71ddeb8c0d6606cd419ec5 Mon Sep 17 00:00:00 2001
From: Mikhail Tergoev <fidel@altlinux.org>
Date: Mon, 26 May 2025 10:07:13 +0300
Subject: [PATCH] added choise if WINEPREFIX is not set (fnx @minergenon)

---
 winehelper | 41 ++++++++++++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 9 deletions(-)

diff --git a/winehelper b/winehelper
index 3df630c..b2c78c7 100755
--- a/winehelper
+++ b/winehelper
@@ -850,17 +850,40 @@ get_base_pfx () {
 
 check_prefix_var () {
     if [[ -z "$WINEPREFIX" ]] ; then
-        print_warning "Префикс не выбран, используйте переменную: WINEPREFIX=имя_префикса"
-        print_info "Список существующих префиксов:"
-        ls -1 "$WH_PREFIXES_DIR"
-        echo
-        exit 1
-    else
-        if echo "$WINEPREFIX" | grep -v '/' ; then
-            export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
+        print_warning "Префикс не выбран."
+
+        local prefixes=()
+        local count=1
+        print_info "Доступные префиксы WineHelper:"
+        for prefix in "$WH_PREFIXES_DIR"/*; do
+            if [[ -d "$prefix" ]]; then
+                prefixes+=("$prefix")
+                echo "$count. $(basename "$prefix")"
+                ((count++))
+            fi
+        done
+
+        if [[ ${#prefixes[@]} -eq 0 ]]; then
+            fatal "Не найдено ни одного префикса!"
         fi
-        return 0
+
+        local max_choice=${#prefixes[@]}
+        read -p "Выберите префикс (1-$max_choice): " choice
+
+        if [[ "$choice" -ge 1 && "$choice" -le "$max_choice" ]]; then
+            export WINEPREFIX="${prefixes[$choice-1]}"
+        else
+            fatal "Неверный выбор."
+        fi
+
+        print_info "Выбран префикс: $WINEPREFIX"
     fi
+
+    if echo "$WINEPREFIX" | grep -v '/' ; then
+        export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
+    fi
+
+    return 0
 }
 
 init_wineprefix () {