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 () {