diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 0505edff..2876c18f 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -5836,12 +5836,18 @@ Binding a game to a single node reduces memory‑access latency and limits costl fi export PW_WINE_CPU_TOPOLOGY - for dont_touch_var in $DISABLE_EDIT_DB_LIST ; do - rm_from_array "PW_EDIT_DB_LIST" "$dont_touch_var" - done - edit_db_from_gui "${PW_EDIT_DB_LIST[@]}" LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL \ + if [[ "${PW_CLI}" != "1" ]] ; then + for dont_touch_var in $DISABLE_EDIT_DB_LIST ; do + rm_from_array "PW_EDIT_DB_LIST" "$dont_touch_var" + done + fi + PW_EDIT_DB_FINAL_LIST=("${PW_EDIT_DB_LIST[@]}" \ + LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL \ WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL \ - PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR + PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR) + export PW_EDIT_DB_FINAL_LIST + + edit_db_from_gui "${PW_EDIT_DB_FINAL_LIST[@]}" if [[ -z "$MANGOHUD_CONFIG" ]] ; then MONITOR_HEIGHT="$(echo "$PW_SCREEN_RESOLUTION" | awk -F'x' '{print $2}')" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 439b257f..46f0a986 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -393,7 +393,6 @@ if [[ $(basename "${portwine_exe,,}") =~ .ppack$ ]] ; then fi ### CLI ### - get_wine_and_pfx () { [[ -n $1 ]] && export PW_WINE_USE="$1" [[ -n $2 ]] && export PW_PREFIX_NAME="$2" @@ -457,6 +456,53 @@ $(echo $files_from_autoinstall | awk '{for (i = 1; i <= NF; i++) {if (i % 10 == edit_db_from_gui $keys_all exit 0 ;; + --list-db) + export pw_yad="" + gui_edit_db + pw_skip_get_info + declare -A NODE_MAP + INDEX=0 + while read -r line; do + NODE_MAP[$INDEX]="$line" + ((INDEX++)) + done < <(lscpu | grep -Po "NUMA node\d+ CPU\(s\):\s+\K.*" 2>/dev/null || true) + for i in "${!NODE_MAP[@]}"; do + echo "NUMA_NODE_${i}=${NODE_MAP[$i]}" + done + echo "IS_AMD=$([[ $(check_vendor_gpu) == \"amd\" ]] && echo true || echo false)" + echo "LOGICAL_CORE_OPTIONS=$GET_LOGICAL_CORE" + [[ -n "$LOCALE_LIST" ]] && echo "LOCALE_LIST=$LOCALE_LIST" + [[ -n "$AMD_VULKAN_DRIVER_LIST" ]] && echo "AMD_VULKAN_DRIVER_LIST=$AMD_VULKAN_DRIVER_LIST" + for var in "${PW_EDIT_DB_FINAL_LIST[@]}"; do + if echo "$DISABLE_EDIT_DB_LIST" | grep -qw "$var"; then + echo "$var blocked" + else + echo "$var" + fi + done + exit 0 + ;; + --show-ppdb) + # --show-ppdb /полный/путь/до/файла.exe + ppdb_path="$2" + + if [[ "$ppdb_path" == *.exe ]]; then + ppdb_path="${ppdb_path}.ppdb" + fi + + if [[ ! -f "$ppdb_path" ]]; then + echo "PPDB file not found: $ppdb_path" + exit 1 + fi + + grep -E '^export ' "$ppdb_path" | sed '/^[[:space:]]*$/d' | while IFS='=' read -r var val; do + [[ -z "$var" ]] && continue + var_name=$(echo "$var" | sed 's/^export[[:space:]]*//') + val_clean=$(echo "$val" | sed 's/^"//; s/"$//') + echo "${var_name}=${val_clean}" + done + exit 0 + ;; --backup-prefix) # portproton --backup-prefix pw_create_prefix_backup "$2" "$3"