forked from CastroFidel/PortWINE
		
	Scripts version 2255
This commit is contained in:
		| @@ -2,6 +2,10 @@ You can help us in the development of the project on the website: https://linux- | ||||
| ---------------------------------------- | ||||
| Changelog: | ||||
|  | ||||
| ###Scripts version 2255### Date: 12.02.2024 / Download update size: 15 megabytes | ||||
| * the portable versions of MANGOHUD and GAMESCOPE are disabled for Steam Deck in Gaming Mode | ||||
| * small additional script improvements | ||||
|  | ||||
| ###Scripts version 2254### Date: 11.02.2024 / Download update size: 15 megabytes | ||||
| * PortProton interface restart has been accelerated | ||||
| * added priority for using the system gamemode if it is installed (thanks to Boria138) | ||||
|   | ||||
| @@ -2,6 +2,10 @@ | ||||
| ----------------------------------------- | ||||
| История изменений: | ||||
|  | ||||
| ###Scripts version 2255### Дата: 11.02.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * для Steam Deck в режиме Gaming Mode отключены портативные версии MANGOHUD и GAMESCOPE | ||||
| * небольшие дополнительные улучшения скриптов | ||||
|  | ||||
| ###Scripts version 2254### Дата: 11.02.2024 / Размер скачиваемого обновления: 15 мегабайт | ||||
| * ускорен перезапуск интерфейса PortProton | ||||
| * добавлен приоритет использования системного gamemode если он установлен (спасибо Boria138) | ||||
|   | ||||
| @@ -252,6 +252,13 @@ check_start_from_steam () { | ||||
|     fi | ||||
| } | ||||
|  | ||||
| check_gamescope_session () { | ||||
|     if echo "${DESKTOP_SESSION}" | grep -i "gamescope" &>/dev/null | ||||
|     then return 0 | ||||
|     else return 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| unpack_tar_zst () { | ||||
|     set -o pipefail | ||||
|     unset PW_ZSTD_PORT | ||||
| @@ -469,9 +476,9 @@ init_wine_ver () { | ||||
|  | ||||
| pw_init_runtime () { | ||||
|  | ||||
|     if grep -q -E '(ROSA Fresh|RED OS)' "/etc/os-release" ; then | ||||
|     if grep -i -E '(ROSA|RED OS)' "/etc/os-release" &>/dev/null ; then | ||||
|         export LOCPATH="/run/host/usr/share/locale/" | ||||
|     elif grep -q "altlinux" "/etc/os-release" ; then | ||||
|     elif grep -i "altlinux" "/etc/os-release" &>/dev/null ; then | ||||
|         export LIBGL_DRIVERS_PATH="/usr/lib/X11/modules/dri:/usr/lib64/X11/modules/dri" | ||||
|     fi | ||||
|  | ||||
| @@ -553,7 +560,7 @@ pw_init_runtime () { | ||||
| } | ||||
|  | ||||
| pw_mangohud_check () { | ||||
|     if [[ "${PW_MANGOHUD}" == "1" ]] ; then | ||||
|     if [[ "${PW_MANGOHUD}" == "1" ]] && ! check_gamescope_session ; then | ||||
|         export PW_MANGOHUD_SLR='MANGOHUD=1' | ||||
|         MANGOHUD_LIB_NAME="libMangoHud.so" | ||||
|         if [[ "${PW_VULKAN_USE}" = "0" ]] ; then  | ||||
| @@ -564,10 +571,10 @@ pw_mangohud_check () { | ||||
|         else export PW_LD_PRELOAD="${MANGOHUD_LIB_NAME}" | ||||
|         fi | ||||
|         var_vk_istance_layers_config_update "VK_LAYER_MANGOHUD_overlay64:VK_LAYER_MANGOHUD_overlay32" | ||||
|         print_info "MANGOHUD is enabled" | ||||
|         print_info "Portable MANGOHUD is enabled" | ||||
|     else | ||||
|         export PW_MANGOHUD_SLR='DISABLE_MANGOHUD=1' | ||||
|         print_info "MANGOHUD is disabled" | ||||
|         export PW_MANGOHUD_SLR="" | ||||
|         print_info "Portable MANGOHUD is disabled" | ||||
|     fi | ||||
|     return 0 | ||||
| } | ||||
| @@ -1152,19 +1159,40 @@ pw_create_gui_png () { | ||||
|     if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then | ||||
|         try_remove_dir "${PORT_WINE_TMP_PATH}/tmp_img" | ||||
|         create_new_dir "${PORT_WINE_TMP_PATH}/tmp_img" | ||||
|         env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/wrestool" -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" -t14 "$(readlink -f "${portwine_exe}")" | ||||
|         if command -v wrestool &>/dev/null ; then | ||||
|             wrestool -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" -t14 "$(readlink -f "${portwine_exe}")" | ||||
|         else | ||||
|             env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/wrestool" \ | ||||
|             -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" -t14 "$(readlink -f "${portwine_exe}")" | ||||
|         fi | ||||
|         cp "$(ls -S -1 "${PORT_WINE_TMP_PATH}/tmp_img/"*".ico" | head -n 1)" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|         env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/icotool" -x --width=${PW_RESIZE_TO} --height=${PW_RESIZE_TO} --output="${PORT_WINE_TMP_PATH}/tmp_img/" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|          | ||||
|         if command -v icotool &>/dev/null ; then | ||||
|             icotool -x --width=${PW_RESIZE_TO} --height=${PW_RESIZE_TO} --output="${PORT_WINE_TMP_PATH}/tmp_img/" \ | ||||
|             "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|         else | ||||
|             env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/icotool" \ | ||||
|             -x --width=${PW_RESIZE_TO} --height=${PW_RESIZE_TO} --output="${PORT_WINE_TMP_PATH}/tmp_img/" \ | ||||
|             "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|         fi | ||||
|         if [[ ! -f "$(ls -S -1 "${PORT_WINE_TMP_PATH}/tmp_img/"*".png" | grep "${PW_RESIZE_TO}x${PW_RESIZE_TO}")" ]] ; then  | ||||
|             env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/icotool" -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|             if command -v icotool &>/dev/null ; then | ||||
|                 icotool -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|             else | ||||
|                 env LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" "${PW_PLUGINS_PATH}/portable/bin/icotool" \ | ||||
|                 -x --output="${PORT_WINE_TMP_PATH}/tmp_img/" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.ico" | ||||
|             fi | ||||
|             cp "$(ls -S -1 "${PORT_WINE_TMP_PATH}/tmp_img/"*".png" | head -n 1)" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.png" | ||||
|         else | ||||
|             cp "$(ls -S -1 "${PORT_WINE_TMP_PATH}/tmp_img/"*".png" | grep "${PW_RESIZE_TO}x${PW_RESIZE_TO}" | head -n 1)" "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.png" | ||||
|             cp "$(ls -S -1 "${PORT_WINE_TMP_PATH}/tmp_img/"*".png" | grep "${PW_RESIZE_TO}x${PW_RESIZE_TO}" | head -n 1)" \ | ||||
|             "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.png" | ||||
|         fi | ||||
|         cp -f "${PORT_WINE_TMP_PATH}/tmp_img/${PORTPROTON_NAME}.png" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" | ||||
|     fi | ||||
|     if [[ -z "`file "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" | grep "${PW_RESIZE_TO} x ${PW_RESIZE_TO}"`" ]] && \ | ||||
|        [[ -x "`command -v "convert" 2>/dev/null`" ]] && [[ -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then | ||||
|     if [[ -z "`file "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" | grep "${PW_RESIZE_TO} x ${PW_RESIZE_TO}"`" ]] \ | ||||
|     && command -v convert &>/dev/null \ | ||||
|     && [[ -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] | ||||
|     then | ||||
|         convert "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" -resize ${PW_RESIZE_TO}x${PW_RESIZE_TO} "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"  | ||||
|     fi | ||||
|     if [[ -z "${PW_ICON_FOR_YAD}" ]] ; then | ||||
|   | ||||
| @@ -136,7 +136,6 @@ if [[ "${update_loc}" == "RUS" ]] ; then | ||||
| 	export PW_HIDE_NVIDIA_GPU_INFO='Замаскировать все функции используемые для видеокарт NVIDIA' | ||||
| 	export PW_FORCE_USE_VSYNC_INFO='Принудительное включение вертикальной синхронизации' | ||||
| 	export PW_VIRTUAL_DESKTOP_INFO='Включить запуск приложение в виртуальном рабочем столе WINE' | ||||
| 	export PW_WINEDBG_DISABLE_INFO='Отключить все функции отладки WINE (Рекомендуется не изменять значение)' | ||||
| 	export PW_USE_TERMINAL_INFO='Запускать приложение в терминале' | ||||
| 	export PW_HEAP_DELAY_FREE_INFO='Включить задержку освобождения некоторой памяти, чтобы обойти ошибки, связанные с использованием приложения после освобождения памяти.' | ||||
| 	export PW_NO_WRITE_WATCH_INFO='Очень опасный способ взлома таймера записи в памяти в ntdll. Это улучшает производительность некоторых очень специфических игр. (Рекомендуется не изменять значение)' | ||||
| @@ -541,7 +540,6 @@ elif [[ "${update_loc}" == "ENG" ]] ; then | ||||
| 	export PW_HIDE_NVIDIA_GPU_INFO='Disguise all features used for NVIDIA graphics cards' | ||||
| 	export PW_FORCE_USE_VSYNC_INFO='Forced activation of vertical sync' | ||||
| 	export PW_VIRTUAL_DESKTOP_INFO='Enable the application to run in the WINE virtual desktop' | ||||
| 	export PW_WINEDBG_DISABLE_INFO='Disable all WINE debugging functions (It is recommended not to change the value)' | ||||
| 	export PW_USE_TERMINAL_INFO='Run the application in the terminal' | ||||
| 	export PW_HEAP_DELAY_FREE_INFO='Include a delay in releasing some memory to bypass errors associated with using the application after the memory is released' | ||||
| 	export PW_NO_WRITE_WATCH_INFO='A very dangerous way to hack the memory write timer in ntdll. This improves the performance of some very specific games. (It is recommended not to change the value.)' | ||||
|   | ||||
| @@ -20,7 +20,6 @@ export PW_DLL_INSTALL="" | ||||
| ##export PW_NO_WRITE_WATCH=0                      # Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). | ||||
| ##export PW_HIDE_NVIDIA_GPU=0 | ||||
| ##export PW_FORCE_USE_VSYNC=2                     # Vsync: 0-FORCE_OFF, 1-FORCE_ON, 2-BY_DEFAULT | ||||
| ##export PW_WINEDBG_DISABLE=1                     # Disabled WINEDBG | ||||
| ##export PW_USE_GAMEMODE=0              # Force disabele gamemod | ||||
| ##export PW_FORCE_LARGE_ADDRESS_AWARE=1           # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| ##export PULSE_LATENCY_MSEC=60                    # Fix crackling audio in games | ||||
|   | ||||
| @@ -6,5 +6,4 @@ | ||||
| export PW_VULKAN_USE=1                       #dxvk, vkd3d or 0 for OpenGL | ||||
| export PW_DLL_INSTALL="lucida vcrun2019"     # Install DDL in port prefix (used winetricks)  | ||||
| export WINEDLLOVERRIDES="xaudio2_7=" | ||||
| export PW_WINEDBG_DISABLE=1                     # Disabled WINEDBG | ||||
| export PW_USE_D3D_EXTRAS=0 | ||||
|   | ||||
| @@ -38,7 +38,6 @@ | ||||
| ##export WINEARCH=win32                           # defaut = win64 | ||||
| ##export WINEPREFIX= | ||||
|  | ||||
| ##export PW_WINEDBG_DISABLE=1                     # Disabled WINEDBG | ||||
| ##export PW_USE_TERMINAL=1                        # Force run in terminal | ||||
| ##export PW_GUI_DISABLED_CS=1                     # 1 = disabled GUI | ||||
|  | ||||
|   | ||||
| @@ -12,7 +12,6 @@ export PW_VULKAN_USE=1 | ||||
| export PW_MANGOHUD=0 | ||||
| export PW_NO_FSYNC=1        # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. | ||||
| export PW_NO_ESYNC=1        # Do not use eventfd-based in-process synchronization primitives | ||||
| export PW_WINEDBG_DISABLE=1 | ||||
| export PW_USE_GAMEMODE=0             # Force disabele gamemod | ||||
| export PW_FORCE_LARGE_ADDRESS_AWARE=1          # Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. | ||||
| export PW_DLL_INSTALL="" | ||||
|   | ||||
| @@ -115,10 +115,10 @@ start_portwine () { | ||||
|         var_vkd3d_config_update single_queue | ||||
|     fi | ||||
|  | ||||
|     if [[ "${PW_USE_GAMESCOPE}" == 1 ]] && command -v gamescope &>/dev/null ; then | ||||
|     if [[ "${PW_USE_GAMESCOPE}" == 1 ]] && command -v gamescope &>/dev/null && ! check_gamescope_session ; then | ||||
|         # Workaround for https://gitlab.freedesktop.org/mesa/mesa/-/issues/6029 | ||||
|         if [[ -d "/sys/module/i915" ]] ; then | ||||
|             export INTEL_DEBUG=norbc | ||||
|             export INTEL_DEBUG="norbc" | ||||
|         fi | ||||
|         if [[ "${PW_GPU_USE}" != "disabled" ]] ; then | ||||
|             PW_vendorID="$("$PW_VULKANINFO_PORTABLE" 2>/dev/null | grep -B3 "${PW_GPU_USE}" | grep vendorID | sort -u | awk -F'0x' '{print $2}')" | ||||
| @@ -128,11 +128,11 @@ start_portwine () { | ||||
|             unset PW_ID_VIDEO | ||||
|         fi | ||||
|         export PW_RUN_GAMESCOPE="gamescope -o 30 ${PW_ID_VIDEO} ${GAMESCOPE_ARGS} --" | ||||
|         export PW_WINE_FULLSCREEN_FSR=0 | ||||
|         export vk_xwayland_wait_ready=false | ||||
|         export PW_WINE_FULLSCREEN_FSR="0" | ||||
|         export vk_xwayland_wait_ready="false" | ||||
|     else | ||||
|         export PW_USE_GAMESCOPE=0 | ||||
|         unset PW_RUN_GAMESCOPE INTEL_DEBUG vk_xwayland_wait_ready | ||||
|         export PW_USE_GAMESCOPE="0" | ||||
|         export PW_RUN_GAMESCOPE="" | ||||
|     fi | ||||
|      | ||||
|     enabled_fake_nvidia_videocard ()  | ||||
| @@ -729,6 +729,13 @@ pw_run () { | ||||
|     print_var "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" | ||||
|     kill -s SIGUSR1 "$PW_YAD_PID_PFX_COVER_UI" &>/dev/null | ||||
|     if [[ "${PW_LOG}" == 1 ]] ; then | ||||
|         if check_start_from_steam ; then | ||||
|             for VAR_LOGGER in PW_WINE_USE WINEDIR WINEDLLPATH WINEPREFIX PATH_TO_GAME PW_VULKAN_USE PW_LD_LIBRARY_PATH LD_LIBRARY_PATH PATH \ | ||||
|                               VKD3D_CONFIG WINEESYNC WINEFSYNC WINEFSYNC_FUTEX2 WINE_CPU_TOPOLOGY DESKTOP_SESSION | ||||
|             do | ||||
|                 echo "${VAR_LOGGER}=${!VAR_LOGGER}" >> "${PW_LOG_TO_FILE}" | ||||
|             done | ||||
|         fi | ||||
|         echo "WINEDLLOVERRIDES=${WINEDLLOVERRIDES}" >> "${PW_LOG_TO_FILE}" | ||||
|         echo "------------------------------------" >> "${PW_LOG_TO_FILE}" | ||||
|         echo "Log WINE:" >> "${PW_LOG_TO_FILE}" | ||||
| @@ -869,6 +876,7 @@ export install_ver=`cat "${PORT_WINE_TMP_PATH}/${portname}_ver" | head -n 1` | ||||
| export WINETRICKS_DOWNLOADER="curl" | ||||
| export USER_CONF="${PORT_WINE_PATH}/data/user.conf" | ||||
| check_user_conf  | ||||
| check_variables PW_LOG "0" | ||||
|  | ||||
| if [[ -z "${INSTALLING_PORT}" ]] ; then | ||||
|     . "${USER_CONF}" | ||||
|   | ||||
| @@ -32,10 +32,14 @@ else | ||||
| 	chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" | ||||
| fi | ||||
|  | ||||
| if [[ ! -f /usr/bin/portproton ]]; then | ||||
| if [[ ! -f /usr/bin/portproton ]] ; then | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" ${HOME}/.local/share/applications/ | ||||
| fi | ||||
|  | ||||
| if grep "SteamOS" "/etc/os-release" &>/dev/null ; then | ||||
| 	cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "$(xdg-user-dir DESKTOP)" | ||||
| fi | ||||
|  | ||||
| update-desktop-database -q "${HOME}/.local/share/applications" | ||||
|  | ||||
| if ! grep -i "flatpak" /etc/os-release &>/dev/null ; then | ||||
|   | ||||
| @@ -99,7 +99,6 @@ portwine_launch () { | ||||
| portwine_start_debug () { | ||||
|     kill_portwine | ||||
|     export PW_LOG=1 | ||||
|     export PW_WINEDBG_DISABLE=0 | ||||
|     if [[ -z "$VULKAN_DRIVER_NAME" ]] || [[ "$VULKAN_DRIVER_NAME" == "llvmpipe" ]] ; then | ||||
| 	yad_info "Attention working version of vulkan not detected!\nIt is recommended to run games in OpenGL (low performance possible)!" | ||||
|     fi | ||||
| @@ -495,7 +494,7 @@ pw_edit_db () { | ||||
|         /usr/bin/env bash -c ${pw_full_command_line[*]} & | ||||
|         exit 0 | ||||
|     fi | ||||
|     # PW_FORCE_USE_VSYNC PW_WINEDBG_DISABLE HEAP_DELAY_FREE | ||||
|     # PW_FORCE_USE_VSYNC HEAP_DELAY_FREE | ||||
| } | ||||
|  | ||||
| pw_autoinstall_from_db () { | ||||
| @@ -504,7 +503,6 @@ pw_autoinstall_from_db () { | ||||
|     export PW_USE_GAMEMODE=0 | ||||
|     export PW_CHECK_AUTOINSTAL=1 | ||||
|     export PW_GUI_DISABLED_CS=1 | ||||
|     export PW_WINEDBG_DISABLE=1 | ||||
|     export PW_NO_WRITE_WATCH=0 | ||||
|     export PW_VULKAN_USE=1 | ||||
|     export PW_USE_EAC_AND_BE=0 | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| #Author: Castro-Fidel (linux-gaming.ru) | ||||
| #SCRIPTS_NEXT_VERSION=2254 | ||||
| #SCRIPTS_NEXT_VERSION=2255 | ||||
| ######################################################################## | ||||
| export PW_MANGOHUD="0" | ||||
| export DEFAULT_MANGOHUD_CONFIG="cpu_stats,cpu_temp,cpu_mhz,gpu_stats,gpu_temp,gpu_core_clock,gpu_mem_clock,vulkan_driver,gpu_name,vram,ram,frame_timing=1,time,arch,wine,toggle_hud=Shift_R+F12,resolution,vkbasalt,gamemode" | ||||
| @@ -14,9 +14,7 @@ export PW_RT_MOUNT_RW=("/media" "/mnt" "/run/media/${USER}" "${PORT_WINE_PATH}") | ||||
| export PW_NO_ESYNC="1" | ||||
| export PW_USE_GAMEMODE="1" | ||||
| export PW_FORCE_USE_VSYNC="2" | ||||
| export PW_LOG="0" | ||||
| export PW_USE_TERMINAL="0" | ||||
| export PW_WINEDBG_DISABLE="1" | ||||
| export PW_WINDOWS_VER="10" | ||||
| export WINEARCH="win64" | ||||
| export PW_LIBS_VER="_v46" | ||||
|   | ||||
| @@ -781,13 +781,15 @@ portwine_create_shortcut () { | ||||
| } | ||||
|  | ||||
| portwine_delete_shortcut () { | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" $>/dev/null | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop)" $>/dev/null | ||||
|     # rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" $>/dev/null | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" &>/dev/null | ||||
|     rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop)" &>/dev/null | ||||
|     # rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null | ||||
|     if [[ -d "${HOME}/Desktop" ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop)" $>/dev/null | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop)" &>/dev/null | ||||
|     elif [[ -d "${HOME}/Рабочий стол" ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop)" $>/dev/null | ||||
|         rm -f "$(grep -il "${portwine_exe}" "${HOME}/Рабочий стол"/*.desktop)" &>/dev/null | ||||
|     elif [[ $(xdg-user-dir DESKTOP) ]] ; then | ||||
|         rm -f "$(grep -il "${portwine_exe}" "$(xdg-user-dir DESKTOP)"/*.desktop)" &>/dev/null | ||||
|     fi | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user