update create shortcut
This commit is contained in:
parent
c1b7b01073
commit
643c8b4fd4
@ -3,6 +3,8 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
* создан новый трей на основе libayatana-appindicator (спасибо Htylol)
|
* создан новый трей на основе libayatana-appindicator (спасибо Htylol)
|
||||||
|
* улучшено автоматическое создание ярлыков галочкой "создать ярлык" в самом установщике (спасибо Boria138 и Htylol)
|
||||||
|
|
||||||
|
|
||||||
###Scripts version 2328### / Дата: 25.07.2024 / Размер скачиваемого обновления: 4 мегабайта
|
###Scripts version 2328### / Дата: 25.07.2024 / Размер скачиваемого обновления: 4 мегабайта
|
||||||
* обновлена иконка для setup файлов (спасибо Dervart)
|
* обновлена иконка для setup файлов (спасибо Dervart)
|
||||||
|
@ -1318,192 +1318,6 @@ check_nvidia_rtx () {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
create_shortcut_from_link () {
|
|
||||||
PORTPROTON_NAME="$link_name"
|
|
||||||
PW_RESIZE_TO=128
|
|
||||||
|
|
||||||
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
|
|
||||||
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
|
|
||||||
|
|
||||||
if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then
|
|
||||||
if command -v sestatus &>/dev/null && sestatus | grep "Current mode: *enforcing" ; then
|
|
||||||
SESTATUS="1"
|
|
||||||
else
|
|
||||||
SESTATUS="0"
|
|
||||||
fi
|
|
||||||
if command -v exe-thumbnailer &>/dev/null && [[ "${SESTATUS}" == "0" ]] ; then
|
|
||||||
exe-thumbnailer -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
|
|
||||||
else
|
|
||||||
env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \
|
|
||||||
LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" \
|
|
||||||
"${PW_WINELIB}/runtime/files/bin/python3.9" \
|
|
||||||
"${PW_PLUGINS_PATH}/portable/bin/exe-thumbnailer" -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
unset SHORTCUT_DUPLICATE SHORTCUT_ALREADY_CREATED
|
|
||||||
if [[ -f "${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop" ]] ; then
|
|
||||||
if ! grep -i "${exe_path}" "${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop" &>/dev/null ; then
|
|
||||||
create_new_dir "${PORT_WINE_PATH}/duplicate"
|
|
||||||
if [[ "$(ls -A "${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name}"* 2>/dev/null)" ]] ; then
|
|
||||||
if ! grep -i "${exe_path}" "${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name}"* &>/dev/null ; then
|
|
||||||
number_duplication="$(ls "${PORT_WINE_PATH}/duplicate"/ 2>/dev/null)"
|
|
||||||
number_duplication="${number_duplication//${PORTPROTON_NAME} - ${prefix_name}/}"
|
|
||||||
number_duplication="${number_duplication//].desktop/}"
|
|
||||||
number_duplication=(${number_duplication//[/})
|
|
||||||
dup_prev="0"
|
|
||||||
for dup_num in ${number_duplication[@]} ; do
|
|
||||||
dup_num_list="$(("$dup_num" - 1))"
|
|
||||||
if [[ "$dup_num_list" != "$dup_prev" ]] ; then
|
|
||||||
dup_num_list_new+="$dup_num_list "
|
|
||||||
fi
|
|
||||||
dup_prev="$dup_num"
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ -z "$dup_num_list_new" ]] ; then
|
|
||||||
number_duplication="${dup_prev}"
|
|
||||||
else
|
|
||||||
dup_helper="$(echo ${dup_num_list_new} | awk '{print $1}')"
|
|
||||||
for dup in ${number_duplication[@]} ; do
|
|
||||||
if (( "$dup_helper" > "$dup" )) ; then
|
|
||||||
dup_helper_new+="$dup "
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
number_duplication="$(echo ${dup_helper_new} | awk '{print $NF}')"
|
|
||||||
fi
|
|
||||||
number_duplication="$(("$number_duplication" + 1))"
|
|
||||||
else
|
|
||||||
SHORTCUT_DUPLICATE="true"
|
|
||||||
SHORTCUT_ALREADY_CREATED="true"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
number_duplication="1"
|
|
||||||
fi
|
|
||||||
SHORTCUT_DUPLICATE="true"
|
|
||||||
PW_NAME_DESKTOP="${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name} [$number_duplication].desktop"
|
|
||||||
else
|
|
||||||
SHORTCUT_ALREADY_CREATED="true"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
PW_NAME_DESKTOP="${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[Desktop Entry]" > "${PW_NAME_DESKTOP}"
|
|
||||||
echo "Name=${PORTPROTON_NAME}" >> "${PW_NAME_DESKTOP}"
|
|
||||||
if [[ ! -z "$link_cmd" ]] ; then
|
|
||||||
if check_flatpak
|
|
||||||
then echo "Exec=flatpak run ru.linux_gaming.PortProton \"${exe_path}\" \"${link_cmd}\"" >> "${PW_NAME_DESKTOP}"
|
|
||||||
else echo "Exec=env \"${PORT_SCRIPTS_PATH}/start.sh\" \"${exe_path}\" \"${link_cmd}\"" >> "${PW_NAME_DESKTOP}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if check_flatpak
|
|
||||||
then echo "Exec=flatpak run ru.linux_gaming.PortProton \"${exe_path}\"" >> "${PW_NAME_DESKTOP}"
|
|
||||||
else echo "Exec=env \"${PORT_SCRIPTS_PATH}/start.sh\" \"${exe_path}\"" >> "${PW_NAME_DESKTOP}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
{
|
|
||||||
echo "Type=Application"
|
|
||||||
echo "Categories=Game"
|
|
||||||
echo "StartupNotify=true"
|
|
||||||
echo "Path=${PORT_SCRIPTS_PATH}/"
|
|
||||||
echo "Icon=${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
|
|
||||||
} >> "${PW_NAME_DESKTOP}"
|
|
||||||
chmod u+x "${PW_NAME_DESKTOP}"
|
|
||||||
|
|
||||||
[[ -z "${PW_SHORTCUT_DESKTOP}" ]] && PW_SHORTCUT_DESKTOP="TRUE"
|
|
||||||
|
|
||||||
if [[ "$DESKTOP_SESSION" =~ "gnome" ]] ; then
|
|
||||||
try_remove_file "${HOME}/.local/share/applications/${PORTPROTON_NAME}.desktop"
|
|
||||||
cp -f "${PW_NAME_DESKTOP}" "${HOME}/.local/share/applications/"
|
|
||||||
else
|
|
||||||
if [[ ${PW_SHORTCUT_DESKTOP} == "TRUE" ]] ; then
|
|
||||||
if [[ -d "${HOME}/Desktop" ]] ; then
|
|
||||||
cp -f "${PW_NAME_DESKTOP}" "${HOME}/Desktop/"
|
|
||||||
elif [[ -d "${HOME}/Рабочий стол" ]] ; then
|
|
||||||
cp -f "${PW_NAME_DESKTOP}" "${HOME}/Рабочий стол/"
|
|
||||||
elif [[ $(xdg-user-dir DESKTOP) ]] ; then
|
|
||||||
cp -f "${PW_NAME_DESKTOP}" "$(xdg-user-dir DESKTOP)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f create_shortcut_from_link
|
|
||||||
|
|
||||||
pw_auto_create_shortcut () {
|
|
||||||
[[ "${PW_CHECK_AUTOINSTALL}" == 1 ]] && return 0
|
|
||||||
|
|
||||||
unset LINKS
|
|
||||||
for link_file in "${PORT_WINE_PATH}"/data/prefixes/*/drive_c/users/*/Desktop/*.lnk
|
|
||||||
do
|
|
||||||
if ! echo "$link_file" | grep "\*.lnk" &>/dev/null ; then
|
|
||||||
link_file=$(readlink -f "${link_file}")
|
|
||||||
LINKS+=("${link_file// /@_@}")
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[[ -z "$LINKS" ]] && return 0
|
|
||||||
SORTED_LINKS=($(echo ${LINKS[@]} | tr ' ' '\n' | sort -u))
|
|
||||||
|
|
||||||
for link_file in "${SORTED_LINKS[@]//@_@/ }" ; do
|
|
||||||
if timeout 3 exiftool "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp" ; then
|
|
||||||
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
|
|
||||||
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
|
|
||||||
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
|
|
||||||
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
|
||||||
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
|
||||||
else
|
|
||||||
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
|
||||||
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
|
||||||
fi
|
|
||||||
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
|
|
||||||
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
|
||||||
else
|
|
||||||
if ! command -v exiftool &>/dev/null ; then
|
|
||||||
print_warning "use portable exiftool"
|
|
||||||
env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp"
|
|
||||||
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
|
|
||||||
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
|
|
||||||
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
|
|
||||||
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
|
||||||
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
|
||||||
else
|
|
||||||
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
|
||||||
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
|
||||||
fi
|
|
||||||
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
|
|
||||||
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
|
||||||
else
|
|
||||||
yad_error "exiftool - broken!"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
try_remove_file "$link_file"
|
|
||||||
|
|
||||||
if ! exe_path="$(realpath "${link_path}" 2>/dev/null)" ; then
|
|
||||||
print_warning "Removed broken link for: $link_name"
|
|
||||||
else
|
|
||||||
create_shortcut_from_link
|
|
||||||
if [[ "${SHORTCUT_DUPLICATE}" == "true" ]] ; then
|
|
||||||
if [[ "${SHORTCUT_ALREADY_CREATED}" == "true" ]] ; then
|
|
||||||
print_warning "There is already a shortcut with this path for duplicate: $link_name - $prefix_name"
|
|
||||||
else
|
|
||||||
print_info "Created link for duplicate: $link_name - $prefix_name [$number_duplication]"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ "${SHORTCUT_ALREADY_CREATED}" == "true" ]] ; then
|
|
||||||
print_warning "There is already a shortcut with this path for: $link_name"
|
|
||||||
else
|
|
||||||
print_info "Created link for: $link_name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
export -f pw_auto_create_shortcut
|
|
||||||
|
|
||||||
pw_init_db () {
|
pw_init_db () {
|
||||||
if [[ -f "${portwine_exe}" ]] ; then
|
if [[ -f "${portwine_exe}" ]] ; then
|
||||||
PORTWINE_DB="$(basename "${portwine_exe}" .exe)"
|
PORTWINE_DB="$(basename "${portwine_exe}" .exe)"
|
||||||
@ -1902,48 +1716,6 @@ pw_find_exe () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pw_duplicate () {
|
|
||||||
export USE_DUPLICATE_GUI="1"
|
|
||||||
orig_IFS="$IFS" && IFS=$'\n'
|
|
||||||
PW_DESKTOP_D="$(ls "${PORT_WINE_PATH}"/duplicate/ | grep .desktop)"
|
|
||||||
for PW_DESKTOP_FILES_D in ${PW_DESKTOP_D} ; do
|
|
||||||
PW_NAME_D_ICON_D="$(grep Icon "${PORT_WINE_PATH}/duplicate/${PW_DESKTOP_FILES_D}" | awk -F= '{print $2}')"
|
|
||||||
PW_NAME_D_ICON_48_D="${PW_NAME_D_ICON_D//".png"/"_48.png"}"
|
|
||||||
if [[ ! -f "${PW_NAME_D_ICON_48_D}" ]] \
|
|
||||||
&& [[ -f "${PW_NAME_D_ICON_D}" ]] \
|
|
||||||
&& command -v "convert" 2>/dev/null
|
|
||||||
then
|
|
||||||
convert "${PW_NAME_D_ICON_D}" -resize 48x48 "${PW_NAME_D_ICON_48_D}"
|
|
||||||
fi
|
|
||||||
PW_DESKTOP_HELPER_D="${PW_DESKTOP_FILES_D// /@_@}"
|
|
||||||
PW_GENERATE_BUTTONS_D+="--field= ${PW_DESKTOP_FILES_D//".desktop"/""}!${PW_NAME_D_ICON_48_D}!:FBTN%@bash -c \"run_desktop_b_click "${PW_DESKTOP_HELPER_D}"\"%"
|
|
||||||
done
|
|
||||||
IFS="$orig_IFS"
|
|
||||||
|
|
||||||
old_IFS=$IFS && IFS="%"
|
|
||||||
"${pw_yad}" --width="${PW_DUPLICATE_SIZE_W}" --height="${PW_DUPLICATE_SIZE_H}" \
|
|
||||||
--columns="$MAIN_GUI_COLUMNS" --homogeneous-column --form \
|
|
||||||
--gui-type-layout=${MAIN_MENU_GUI_TYPE_LAYOUT} \
|
|
||||||
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
|
|
||||||
--title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \
|
|
||||||
--align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS_D} \
|
|
||||||
--button="$(gettext "MAIN MENU")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png" 2>/dev/null
|
|
||||||
IFS="$orig_IFS"
|
|
||||||
|
|
||||||
pw_yad_set_form
|
|
||||||
case "$PW_YAD_SET" in
|
|
||||||
*.desktop)
|
|
||||||
run_desktop_b_click
|
|
||||||
;;
|
|
||||||
pw_duplicate)
|
|
||||||
export SKIP_CHECK_UPDATES=1
|
|
||||||
/usr/bin/env bash -c ${pw_full_command_line[*]} &
|
|
||||||
print_info "Restarting..."
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
pw_create_unique_exe () {
|
pw_create_unique_exe () {
|
||||||
BASEDIR_GAME="$(dirname "$portwine_exe")"
|
BASEDIR_GAME="$(dirname "$portwine_exe")"
|
||||||
if [[ -d "$BASEDIR_GAME" ]] ; then
|
if [[ -d "$BASEDIR_GAME" ]] ; then
|
||||||
@ -4774,6 +4546,7 @@ portwine_create_shortcut () {
|
|||||||
--field=" $(gettext "Add shortcut to MENU -> GAMES")":CHK "$PW_SHORTCUT_MENU" \
|
--field=" $(gettext "Add shortcut to MENU -> GAMES")":CHK "$PW_SHORTCUT_MENU" \
|
||||||
--field=" $(gettext "Add shortcut to Desktop")":CHK "$PW_SHORTCUT_DESKTOP" \
|
--field=" $(gettext "Add shortcut to Desktop")":CHK "$PW_SHORTCUT_DESKTOP" \
|
||||||
--field=" $(gettext "Add shortcut to STEAM library")":CHK "$PW_SHORTCUT_STEAM" \
|
--field=" $(gettext "Add shortcut to STEAM library")":CHK "$PW_SHORTCUT_STEAM" \
|
||||||
|
--button="$(gettext "CANCEL")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":2 \
|
||||||
--button="$(gettext "CREATE SHORTCUT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0)
|
--button="$(gettext "CREATE SHORTCUT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0)
|
||||||
PW_YAD_OUT=$?
|
PW_YAD_OUT=$?
|
||||||
else
|
else
|
||||||
@ -4789,6 +4562,7 @@ portwine_create_shortcut () {
|
|||||||
--field=" $(gettext "Add shortcut to MENU -> GAMES")":CHK "$PW_SHORTCUT_MENU" \
|
--field=" $(gettext "Add shortcut to MENU -> GAMES")":CHK "$PW_SHORTCUT_MENU" \
|
||||||
--field=" $(gettext "Add shortcut to Desktop")":CHK "$PW_SHORTCUT_DESKTOP" \
|
--field=" $(gettext "Add shortcut to Desktop")":CHK "$PW_SHORTCUT_DESKTOP" \
|
||||||
--field=" $(gettext "Add shortcut to STEAM library")":CHK "$PW_SHORTCUT_STEAM" \
|
--field=" $(gettext "Add shortcut to STEAM library")":CHK "$PW_SHORTCUT_STEAM" \
|
||||||
|
--button="$(gettext "CANCEL")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":2 \
|
||||||
--button="$(gettext "CREATE SHORTCUT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0)
|
--button="$(gettext "CREATE SHORTCUT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png":0)
|
||||||
PW_YAD_OUT=$?
|
PW_YAD_OUT=$?
|
||||||
fi
|
fi
|
||||||
@ -4879,6 +4653,7 @@ portwine_create_shortcut () {
|
|||||||
|
|
||||||
if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then
|
if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then
|
||||||
print_info "Restarting PP..."
|
print_info "Restarting PP..."
|
||||||
|
unset PW_YAD_FORM_TAB
|
||||||
export SKIP_CHECK_UPDATES="1"
|
export SKIP_CHECK_UPDATES="1"
|
||||||
/usr/bin/env bash -c ${pw_full_command_line[*]} &
|
/usr/bin/env bash -c ${pw_full_command_line[*]} &
|
||||||
exit 0
|
exit 0
|
||||||
@ -4886,10 +4661,100 @@ portwine_create_shortcut () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
create_shortcut_from_link () {
|
||||||
|
PORTPROTON_NAME="$link_name"
|
||||||
|
PW_RESIZE_TO=128
|
||||||
|
|
||||||
|
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
|
||||||
|
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
|
||||||
|
|
||||||
|
if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then
|
||||||
|
if command -v sestatus &>/dev/null && sestatus | grep "Current mode: *enforcing" ; then
|
||||||
|
SESTATUS="1"
|
||||||
|
else
|
||||||
|
SESTATUS="0"
|
||||||
|
fi
|
||||||
|
if command -v exe-thumbnailer &>/dev/null && [[ "${SESTATUS}" == "0" ]] ; then
|
||||||
|
exe-thumbnailer -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
|
||||||
|
else
|
||||||
|
env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \
|
||||||
|
LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" \
|
||||||
|
"${PW_WINELIB}/runtime/files/bin/python3.9" \
|
||||||
|
"${PW_PLUGINS_PATH}/portable/bin/exe-thumbnailer" -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
export portwine_exe="$exe_path"
|
||||||
|
export PW_NO_RESTART_PPDB=1
|
||||||
|
portwine_create_shortcut
|
||||||
|
}
|
||||||
|
export -f create_shortcut_from_link
|
||||||
|
|
||||||
|
pw_auto_create_shortcut () {
|
||||||
|
[[ "${PW_CHECK_AUTOINSTALL}" == 1 ]] && return 0
|
||||||
|
|
||||||
|
unset LINKS
|
||||||
|
for link_file in "${PORT_WINE_PATH}"/data/prefixes/*/drive_c/users/*/Desktop/*.lnk
|
||||||
|
do
|
||||||
|
if ! echo "$link_file" | grep "\*.lnk" &>/dev/null ; then
|
||||||
|
link_file=$(readlink -f "${link_file}")
|
||||||
|
LINKS+=("${link_file// /@_@}")
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[[ -z "$LINKS" ]] && return 0
|
||||||
|
SORTED_LINKS=($(echo ${LINKS[@]} | tr ' ' '\n' | sort -u))
|
||||||
|
|
||||||
|
for link_file in "${SORTED_LINKS[@]//@_@/ }" ; do
|
||||||
|
if timeout 3 exiftool "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp" ; then
|
||||||
|
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
|
||||||
|
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
|
||||||
|
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
|
||||||
|
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
||||||
|
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
||||||
|
else
|
||||||
|
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
||||||
|
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
||||||
|
fi
|
||||||
|
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
|
||||||
|
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
||||||
|
else
|
||||||
|
if ! command -v exiftool &>/dev/null ; then
|
||||||
|
print_warning "use portable exiftool"
|
||||||
|
env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp"
|
||||||
|
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
|
||||||
|
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
|
||||||
|
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
|
||||||
|
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
||||||
|
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
||||||
|
else
|
||||||
|
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
|
||||||
|
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
|
||||||
|
fi
|
||||||
|
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
|
||||||
|
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
|
||||||
|
else
|
||||||
|
yad_error "exiftool - broken!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
try_remove_file "$link_file"
|
||||||
|
|
||||||
|
if ! exe_path="$(realpath "${link_path}" 2>/dev/null)" ; then
|
||||||
|
print_warning "Removed broken link for: $link_name"
|
||||||
|
else
|
||||||
|
print_info "Created link for: $link_name"
|
||||||
|
create_shortcut_from_link
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
export -f pw_auto_create_shortcut
|
||||||
|
|
||||||
portwine_delete_shortcut () {
|
portwine_delete_shortcut () {
|
||||||
rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" &>/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}" "${PORT_WINE_PATH}"/*.desktop)" &>/dev/null
|
||||||
rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}/duplicate"/*.desktop)" &>/dev/null
|
|
||||||
# rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null
|
# rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null
|
||||||
if [[ -d "${HOME}/Desktop" ]] ; then
|
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
|
||||||
@ -5310,15 +5175,7 @@ export -f button_click_start
|
|||||||
|
|
||||||
run_desktop_b_click () {
|
run_desktop_b_click () {
|
||||||
[[ ! -z "$1" ]] && echo "$1" > "${PW_TMPFS_PATH}/tmp_yad_form"
|
[[ ! -z "$1" ]] && echo "$1" > "${PW_TMPFS_PATH}/tmp_yad_form"
|
||||||
if [[ "${USE_DUPLICATE_GUI}" == "1" ]] ; then
|
|
||||||
if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then
|
|
||||||
kill -s SIGUSR1 $(pgrep -a yad | grep "\--width="${PW_DUPLICATE_SIZE_W}" \--height="${PW_DUPLICATE_SIZE_H}"" | awk '{print $1}') > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
if check_flatpak
|
|
||||||
then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/duplicate/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
|
|
||||||
else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/duplicate/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then
|
if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then
|
||||||
kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1
|
kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
@ -5326,7 +5183,6 @@ run_desktop_b_click () {
|
|||||||
then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
|
then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
|
||||||
else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')"
|
else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
print_info "Restarting PP after choose desktop file..."
|
print_info "Restarting PP after choose desktop file..."
|
||||||
# stop_portwine
|
# stop_portwine
|
||||||
|
@ -87,7 +87,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T
|
|||||||
unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY
|
unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY
|
||||||
unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48
|
unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48
|
||||||
unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR
|
unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR
|
||||||
unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR USE_DUPLICATE_GUI
|
unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR
|
||||||
|
|
||||||
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
|
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
|
||||||
rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}*
|
rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}*
|
||||||
@ -637,9 +637,7 @@ else
|
|||||||
else PW_GUI_SORT_TABS=(2 3 4 5 1)
|
else PW_GUI_SORT_TABS=(2 3 4 5 1)
|
||||||
fi
|
fi
|
||||||
PW_GENERATE_BUTTONS="--field= $(gettext "Create shortcut...")!${PW_GUI_ICON_PATH}/find_48.svg!:FBTN%@bash -c \"button_click pw_find_exe\"%"
|
PW_GENERATE_BUTTONS="--field= $(gettext "Create shortcut...")!${PW_GUI_ICON_PATH}/find_48.svg!:FBTN%@bash -c \"button_click pw_find_exe\"%"
|
||||||
if grep -i "[Desktop Entry]" "${PORT_WINE_PATH}/duplicate"/* &>/dev/null ; then
|
|
||||||
PW_GENERATE_BUTTONS+="--field= $(gettext "Duplicates")!${PW_GUI_ICON_PATH}/duplicate.svg!:FBTN%@bash -c \"button_click pw_duplicate\"%"
|
|
||||||
fi
|
|
||||||
for PW_DESKTOP_FILES in ${PW_ALL_DF} ; do
|
for PW_DESKTOP_FILES in ${PW_ALL_DF} ; do
|
||||||
PW_NAME_D_ICON="$(grep Icon "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F= '{print $2}')"
|
PW_NAME_D_ICON="$(grep Icon "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F= '{print $2}')"
|
||||||
PW_NAME_D_ICON_48="${PW_NAME_D_ICON//".png"/"_48.png"}"
|
PW_NAME_D_ICON_48="${PW_NAME_D_ICON//".png"/"_48.png"}"
|
||||||
@ -840,7 +838,6 @@ fi
|
|||||||
gui_credits) gui_credits ;;
|
gui_credits) gui_credits ;;
|
||||||
pw_start_cont_xterm) pw_start_cont_xterm ;;
|
pw_start_cont_xterm) pw_start_cont_xterm ;;
|
||||||
pw_find_exe) pw_find_exe ;;
|
pw_find_exe) pw_find_exe ;;
|
||||||
pw_duplicate) pw_duplicate ;;
|
|
||||||
PW_*) pw_autoinstall_from_db ;;
|
PW_*) pw_autoinstall_from_db ;;
|
||||||
*.desktop) run_desktop_b_click ;;
|
*.desktop) run_desktop_b_click ;;
|
||||||
1|252|*) exit 0 ;;
|
1|252|*) exit 0 ;;
|
||||||
|
@ -23,9 +23,6 @@ export TAB_SIZE=28
|
|||||||
export PW_MAIN_SIZE_W=1100
|
export PW_MAIN_SIZE_W=1100
|
||||||
export PW_MAIN_SIZE_H=350
|
export PW_MAIN_SIZE_H=350
|
||||||
|
|
||||||
export PW_DUPLICATE_SIZE_W=1100
|
|
||||||
export PW_DUPLICATE_SIZE_H=350
|
|
||||||
|
|
||||||
export PW_START_SIZE_W=600
|
export PW_START_SIZE_W=600
|
||||||
export PW_START_SIZE_H=350
|
export PW_START_SIZE_H=350
|
||||||
export PW_TAB_POSITON=top
|
export PW_TAB_POSITON=top
|
||||||
|
@ -26,9 +26,6 @@ export TAB_SIZE=32 # 24, 28, 32, 36, 40
|
|||||||
export PW_MAIN_SIZE_W=500
|
export PW_MAIN_SIZE_W=500
|
||||||
export PW_MAIN_SIZE_H=350
|
export PW_MAIN_SIZE_H=350
|
||||||
|
|
||||||
export PW_DUPLICATE_SIZE_W=1000
|
|
||||||
export PW_DUPLICATE_SIZE_H=350
|
|
||||||
|
|
||||||
export PW_START_SIZE_W=500
|
export PW_START_SIZE_W=500
|
||||||
export PW_START_SIZE_H=350
|
export PW_START_SIZE_H=350
|
||||||
export PW_TAB_POSITON=top
|
export PW_TAB_POSITON=top
|
||||||
|
@ -34,10 +34,6 @@ export TAB_SIZE=32 # 24, 28, 32, 36, 40
|
|||||||
export PW_MAIN_SIZE_W=500
|
export PW_MAIN_SIZE_W=500
|
||||||
export PW_MAIN_SIZE_H=330
|
export PW_MAIN_SIZE_H=330
|
||||||
|
|
||||||
# размер окна для дубликатов
|
|
||||||
export PW_DUPLICATE_SIZE_W=1000
|
|
||||||
export PW_DUPLICATE_SIZE_H=330
|
|
||||||
|
|
||||||
# размер меню запуска и положения табов
|
# размер меню запуска и положения табов
|
||||||
export PW_START_SIZE_W=800
|
export PW_START_SIZE_W=800
|
||||||
export PW_START_SIZE_H=330
|
export PW_START_SIZE_H=330
|
||||||
|
Loading…
Reference in New Issue
Block a user