diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index 0ab8185..e640d6a 100644 --- a/data_from_portwine/locales/PortProton.pot +++ b/data_from_portwine/locales/PortProton.pot @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2024-11-01 02:46+0500\n" + "POT-Creation-Date: 2024-11-02 10:04+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1381,6 +1381,9 @@ msgid "If downloading steam covers is enabled, they will be downloaded and " "is unavailable for some reason)" msgstr "" +msgid "Recommended value" +msgstr "" + msgid "Choose a graphics card to run the game" msgstr "" @@ -1388,10 +1391,10 @@ msgid "Select which video card will be used to run the game (used for all " "running games and programs in PortProton)" msgstr "" -msgid "Force dpi for fonts" +msgid "Force dpi" msgstr "" -msgid "Here you can set forced dpi for fonts in wine" +msgid "Here you can set forced dpi for applications wine" msgstr "" msgid "Choice wine audio driver" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index 862e6d3..57613f3 100644 --- a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-01 02:43+0500\n" +"POT-Creation-Date: 2024-11-02 10:04+0500\n" "PO-Revision-Date: 2024-10-26 13:58+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -1804,6 +1804,9 @@ msgstr "" "crearán. (La desactivación se proporciona en los casos en que su descarga no " "esté disponible por algún motivo)" +msgid "Recommended value" +msgstr "" + msgid "Choose a graphics card to run the game" msgstr "Elige una tarjeta gráfica para ejecutar el juego" @@ -1814,10 +1817,10 @@ msgstr "" "Selecciona qué tarjeta de vídeo se utilizará para ejecutar el juego (se " "utiliza para todos los juegos y programas en ejecución en PortProton)" -msgid "Force dpi for fonts" +msgid "Force dpi" msgstr "" -msgid "Here you can set forced dpi for fonts in wine" +msgid "Here you can set forced dpi for applications wine" msgstr "" msgid "Choice wine audio driver" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 07e0840..4b87b7e 100644 --- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-01 02:43+0500\n" -"PO-Revision-Date: 2024-11-01 02:44+0500\n" +"POT-Creation-Date: 2024-11-02 10:04+0500\n" +"PO-Revision-Date: 2024-11-02 10:05+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" @@ -1782,6 +1782,9 @@ msgstr "" "создаваться. (Отключение предусмотрено в тех случаях, когда их скачивание по " "каким-то причинам недоступно)" +msgid "Recommended value" +msgstr "Рекомендуемое значение" + msgid "Choose a graphics card to run the game" msgstr "Выбрать видеокарту для запуска игры" @@ -1792,12 +1795,11 @@ msgstr "" "Выбор видеокарты для запуска игры (используется для всех запущенных игр и " "программ в PortProton)" -msgid "Force dpi for fonts" -msgstr "Принудительное разрешение шрифтов" +msgid "Force dpi" +msgstr "Принудительный масштаб" -msgid "Here you can set forced dpi for fonts in wine" -msgstr "" -"Здесь вы можете установить принудительное разрешение для шрифтов в Wine" +msgid "Here you can set forced dpi for applications wine" +msgstr "Здесь вы можете установить принудительный масштаб для приложений wine" msgid "Choice wine audio driver" msgstr "Выбрать звуковой драйвер" diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index f81d6bf..dbc960b 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1267,65 +1267,87 @@ combobox_fix () { } get_and_set_reg_file () { - local name_block name_for_find find_block find_file find_line count name_for_new_block - local line_reg find_number_line find_check_file name_for_set name_block_old + local name_block name_for_find find_block find_file find_line count name_for_new_block name_for_find_old + local line_reg find_number_line find_check_file name_for_set name_type_reg name_fatal name_add_or_del + name_add_or_del=$1 name_block=$2 - name_block_old=$name_block name_for_find=$3 - name_for_set=$4 - name_for_new_block=$5 - name_block=${name_block//\\/\\\\} - name_block=${name_block//\[/\\[} - find_block=$(grep -n "${name_block//\]/\\]}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/"*.reg) + name_type_reg=$4 + name_for_set=$5 + name_for_new_block=$6 + name_for_find_old=$name_for_find + name_fatal="$name_block $name_for_find" + + case $name_type_reg in + REG_DWORD) + name_for_find='"'"$name_for_find"'"'"=dword:" + name_for_set=$(convert_dec_and_hex --dec "$name_for_set") ;; + REG_SZ) + name_for_find='"'"$name_for_find"'"'"=" + name_for_set='"'"$name_for_set"'"' ;; + *) + if [[ $name_add_or_del == --delete ]] ; then + name_for_find='"'"$name_for_find"'"' + else + print_error "Name type reg not set for $name_fatal" + return 1 + fi ;; + esac + name_block=${name_block//\\/\\\\\\\\\\\\\\} + name_block=${name_block//*/\\[$name_block} + name_block="${name_block//*/${name_block//\\/\\\\}\\]}" + if [[ -n $name_for_new_block ]] ; then + find_block=$(grep -n "$name_block" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg") + else + find_block=$(grep -n "$name_block" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/"*.reg) + fi if [[ -n $find_block ]] ; then - find_file=${find_block//:*/} - find_line=${find_block//$find_file:/} - find_line=${find_line//:*/} + if [[ -n $name_for_new_block ]] ; then + find_file="${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg" + find_line=${find_block//:*/} + else + find_file=${find_block//:*/} + find_line=${find_block//$find_file:/} + find_line=${find_line//:*/} + fi count=-1 while IFS= read -r line_reg ; do ((count++)) if [[ $line_reg =~ $name_for_find ]] ; then + if [[ $line_reg == $name_for_find$name_for_set ]] ; then + # когда менять не нужно, потому что такое же + return 0 + fi find_number_line=$(( count + find_line )) find_check_file=1 break fi [[ -z $line_reg ]] && break - done <<< $(sed -n "$find_line"',$p' $find_file) + done <<< "$(sed -n "$find_line"',$p' "$find_file")" IFS="$orig_IFS" fi - if [[ $1 == --add ]] ; then + if [[ $name_add_or_del == --add ]] ; then if [[ -z $find_block ]] ; then if [[ -n $name_for_new_block ]] ; then - sed -i '$a\\n'"${name_block_old//\\/\\\\}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg" - find_file=${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg + sed -i '$a\\n'"$name_block\n" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg" + find_file="${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg" find_line=$(wc -l "$find_file" | awk -F" " '{print $1}') find_line=$(( find_line - 1 )) else - print_error "$name_block_old not found in reg files" + print_error "$name_fatal not found in reg files" return 1 fi fi - if [[ $name_for_set =~ ^[0-9]+$ ]] ; then - name_for_set=$(convert_dec_and_hex --dec "$name_for_set") - fi - if [[ ! $name_for_set =~ ^[0-9]+$ ]] ; then - if [[ $find_check_file == 1 ]] ; then - sed -i "${find_number_line}s/$name_for_find.*/$name_for_find\"$name_for_set\"/" "$find_file" - else - print_info "Added ${name_for_find//=*} to reg file" - sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find\"$name_for_set\"" "$find_file" - fi + if [[ $find_check_file == 1 ]] ; then + print_info "Change $name_for_find_old to reg file" + sed -i "${find_number_line}s/$name_for_find.*/$name_for_find$name_for_set/" "$find_file" else - if [[ $find_check_file == 1 ]] ; then - sed -i "${find_number_line}s/$name_for_find.*/$name_for_find$name_for_set/" "$find_file" - else - print_info "Added ${name_for_find//=*} to reg file" - sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find$name_for_set" "$find_file" - fi + print_info "Added $name_for_find_old to reg file" + sed -i "$(( find_line + 1 ))a$name_for_find$name_for_set" "$find_file" fi - elif [[ $1 == --delete ]] ; then + elif [[ $name_add_or_del == --delete ]] ; then [[ $find_check_file != 1 ]] && return 0 - print_info "Delete ${name_for_find//=*} to reg file" + print_info "Delete $name_for_find_old to reg file" sed -i "${find_number_line}d" "$find_file" fi } @@ -1337,7 +1359,7 @@ convert_dec_and_hex () { case "$type" in --dec) # Преобразование из десятичного в шестнадцатеричный - echo -n $(printf "%08x" $num) ;; + echo -n "$(printf "%08x" "$num")" ;; --hex) # Преобразование из шестнадцатеричного в десятичный echo $(( 0x$num )) ;; @@ -1346,6 +1368,32 @@ convert_dec_and_hex () { esac } +recommend_dpi () { + local height=$1 + + if [[ -z "$height" ]] ; then + echo "disabled" + return 1 + fi + local dpi=$(( height / 9 )) + echo "$dpi" +} + +fixes_after_update () { + local fixes_path line fixes_info IFS + fixes_info=$1 + fixes_path="$PORT_WINE_TMP_PATH/fixes_apply" + [[ ! -f $fixes_path ]] && touch "$fixes_path" + + while IFS= read -r line ; do + if [[ $line == "$fixes_info" ]] ; then + return 1 + fi + done < "$fixes_path" + echo "$fixes_info" >> "$fixes_path" + return 0 +} + restart_pp () { case "$1" in --userconf) export RESTART_PP_USED="userconf" ;; @@ -3758,28 +3806,33 @@ start_portwine () { fi if [[ "$PW_DINPUT_PROTOCOL" == "1" ]] ; then - get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "0" - get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "0" + get_and_set_reg_file --add 'System\CurrentControlSet\Services\winebus' 'DisableHidraw' 'REG_DWORD' "0" "system" + get_and_set_reg_file --add 'System\CurrentControlSet\Services\winebus' 'Enable SDL' 'REG_DWORD' "0" "system" else - get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "1" - get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "1" + get_and_set_reg_file --add 'System\CurrentControlSet\Services\winebus' 'DisableHidraw' 'REG_DWORD' "1" "system" + get_and_set_reg_file --add 'System\CurrentControlSet\Services\winebus' 'Enable SDL' 'REG_DWORD' "1" "system" fi if [[ "$PW_WINE_DPI_VALUE" != "disabled" ]] ; then - get_and_set_reg_file --add '[Control Panel\\Desktop]' '"LogPixels"=dword:' "${PW_WINE_DPI_VALUE// (*/}" + if [[ "$PW_WINE_DPI_VALUE" == "recommended" ]] ; then + PW_RECOMMENDED_DPI=$(recommend_dpi "${PW_SCREEN_RESOLUTION:5:8}") + get_and_set_reg_file --add 'Control Panel\Desktop' 'LogPixels' 'REG_DWORD' "$PW_RECOMMENDED_DPI" "user" + else + get_and_set_reg_file --add 'Control Panel\Desktop' 'LogPixels' 'REG_DWORD' "$PW_WINE_DPI_VALUE" "user" + fi fi if [[ "$PW_USE_NATIVE_WAYLAND" == "1" ]] ; then export PW_DISPLAY="env DISPLAY=" export PW_USE_RUNTIME="0" - get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland" "user" + get_and_set_reg_file --add 'Software\Wine\Drivers' 'Graphics' 'REG_SZ' "x11,wayland" "user" else unset PW_DISPLAY - get_and_set_reg_file --delete '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland" + get_and_set_reg_file --delete 'Software\Wine\Drivers' 'Graphics' fi if [[ "$PW_SOUND_DRIVER_USE" != "disabled" ]] ; then - get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Audio"=' "$PW_SOUND_DRIVER_USE" "user" + get_and_set_reg_file --add 'Software\Wine\Drivers' 'Audio' 'REG_SZ' "$PW_SOUND_DRIVER_USE" "user" fi pw_stop_progress_bar @@ -5611,6 +5664,9 @@ gui_userconf () { SORT_WITH_TIME="enabled" fi + if [[ $PW_WINE_DPI_VALUE == "recommended" ]] ; then + PW_WINE_DPI_VALUE="${translations[Recommended value]}" + fi if [[ -n "$PW_WINE_DPI_VALUE" ]] \ && [[ "$PW_WINE_DPI_VALUE" != "disabled" ]] then @@ -5619,10 +5675,10 @@ gui_userconf () { YAD_DPI_VAR="disabled" fi - "${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="@" --homogeneous-row \ + "${pw_yad}" --plug=$KEY_USERCONF_GUI --tabnum="2" --form --columns=1 --separator="%" --homogeneous-row \ --gui-type-text="$PANED_GUI_TYPE_TEXT_DOWN" --gui-type-layout="$PANED_GUI_TYPE_LAYOUT_DOWN" \ --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \ - --field="${translations[Force dpi for fonts]}!${translations[Here you can set forced dpi for fonts in wine]} :CB" "$(combobox_fix --disabled "$YAD_DPI_VAR" "96 (100%)!120 (125%)!144 (150%)!168 (175%)!192 (200%)!216 (225%)!240 (250%)!264 (275%)!288 (300%)")" \ + --field="${translations[Force dpi]}!${translations[Here you can set forced dpi for applications wine]} :CB" "$(combobox_fix --disabled "$YAD_DPI_VAR" "${translations[Recommended value]}!96!120!144!168!192!216!240!264!288")" \ --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \ --field="${translations[Choice gui themes]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "default!compact!classic")" \ --field="${translations[Time display]}!${translations[Displays time spent in an application or game]} :CB" "$(combobox_fix --disabled "$DESKTOP_WITH_TIME" "enabled")" \ @@ -5657,10 +5713,13 @@ gui_userconf () { gui_open_user_conf ;; 166) - IFS='@' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" + IFS='%' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" IFS="$orig_IFS" PW_GPU_USE="${PW_ADD_SETTINGS_UC[0]}" PW_WINE_DPI_VALUE="${PW_ADD_SETTINGS_UC[1]}" + if [[ $PW_WINE_DPI_VALUE == "${translations[Recommended value]}" ]] ; then + PW_WINE_DPI_VALUE="recommended" + fi PW_SOUND_DRIVER_USE="${PW_ADD_SETTINGS_UC[2]}" GUI_THEME="${PW_ADD_SETTINGS_UC[3]}" DESKTOP_WITH_TIME="${PW_ADD_SETTINGS_UC[4]}" diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_CROSSOUT b/data_from_portwine/scripts/pw_autoinstall/PW_CROSSOUT index 12d4a6c..ab7accb 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_CROSSOUT +++ b/data_from_portwine/scripts/pw_autoinstall/PW_CROSSOUT @@ -18,7 +18,7 @@ then pw_kill_autostart launcher.exe 3 & pw_run "${PW_AUTOINSTALL_EXE}" portwine_exe="${WINEPREFIX}/drive_c/users/$USER/AppData/Local/Crossout/launcher.exe" - pw_run reg add "HKEY_CURRENT_USER\Software\Wine\X11 Driver" /v "Decorated" /t REG_SZ /d "N" /f + get_and_set_reg_file --add 'Software\Wine\X11' 'Decorated' 'REG_SZ' "N" "user" pw_create_unique_exe "crossout_launcher_pp" try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${portwine_exe}.ppdb" diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_HO_YO_PLAY b/data_from_portwine/scripts/pw_autoinstall/PW_HO_YO_PLAY index 53cef2f..9959ec8 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_HO_YO_PLAY +++ b/data_from_portwine/scripts/pw_autoinstall/PW_HO_YO_PLAY @@ -20,7 +20,7 @@ then export PATH_TO_GAME="${PW_USER_TEMP}" pw_run "${PW_AUTOINSTALL_EXE}" export portwine_exe="$WINEPREFIX/drive_c/Program Files/HoYoPlay/launcher.exe" - pw_run reg add "HKEY_CURRENT_USER\Software\Wine\X11 Driver" /v "Decorated" /t REG_SZ /d "N" /f + get_and_set_reg_file --add 'Software\Wine\X11' 'Decorated' 'REG_SZ' "N" "user" pw_create_unique_exe "hoyoplay_launcher_pp" try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${portwine_exe}.ppdb" diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 793eb4c..5c96c0b 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -248,6 +248,17 @@ if [[ ! $PW_GUI_START =~ (PANED|NOTEBOOK) ]] ; then export PW_GUI_START="NOTEBOOK" fi +# TODO:fixes_after_update +if fixes_after_update "2371: Reset PW_WINE_DPI_VALUE in user.conf" ; then + sed -i '/export PW_WINE_DPI_VALUE=/d' "$USER_CONF" + unset PW_WINE_DPI_VALUE +fi +# choose wine dpi default +if [[ -z $PW_WINE_DPI_VALUE ]] ; then + echo 'export PW_WINE_DPI_VALUE="recommended"' >> "$USER_CONF" + export PW_WINE_DPI_VALUE="recommended" +fi + if check_flatpak ; then if check_gamescope_session then PW_TERM="env LANG=C xterm -fullscreen -bg black -fg white -e"