Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
PortWINE
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mikhail Tergoev
PortWINE
Commits
83e7db8a
Commit
83e7db8a
authored
Nov 12, 2024
by
Mikhail Tergoev
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'Htylol-mega_bash_func' into devel
parents
994f0350
7033cb8c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
148 additions
and
86 deletions
+148
-86
functions_helper
data_from_portwine/scripts/functions_helper
+134
-73
start.sh
data_from_portwine/scripts/start.sh
+14
-13
No files found.
data_from_portwine/scripts/functions_helper
View file @
83e7db8a
...
@@ -40,7 +40,7 @@ export -f print_wrapped
...
@@ -40,7 +40,7 @@ export -f print_wrapped
make_acronym
()
{
make_acronym
()
{
local
words acronym i
local
words acronym i
IFS
=
' '
read
-r
-a
words
<<<
"
$1
"
read
-r
-a
words
<<<
"
$1
"
acronym
=
"
${
words
[0]
:0:1
}
"
acronym
=
"
${
words
[0]
:0:1
}
"
for
((
i
=
1
;
i<
${#
words
[@]
}
;
i++
))
;
do
for
((
i
=
1
;
i<
${#
words
[@]
}
;
i++
))
;
do
acronym+
=
"
${
words
[
$i
]
:0:1
}
"
acronym+
=
"
${
words
[
$i
]
:0:1
}
"
...
@@ -73,8 +73,7 @@ set_several_variables () {
...
@@ -73,8 +73,7 @@ set_several_variables () {
key
=
${
1
//=*/
}
key
=
${
1
//=*/
}
value
=
${
1
//*=/
}
value
=
${
1
//*=/
}
keys_all+
=
"
$key
"
keys_all+
=
"
$key
"
export
"
$key
"
=
"
$value
"
export
"
$key
"
=
"
$value
"
;
shift
shift
done
done
}
}
...
@@ -265,7 +264,7 @@ EOF
...
@@ -265,7 +264,7 @@ EOF
po_file
=
"
${
PORT_WINE_PATH
}
/data/locales/
$LANGUAGE
/LC_MESSAGES/PortProton.po"
po_file
=
"
${
PORT_WINE_PATH
}
/data/locales/
$LANGUAGE
/LC_MESSAGES/PortProton.po"
fi
fi
while
IFS
=
read
-r
line
;
do
while
read
-r
line
;
do
while
[[
$line
=
~ msgid
]]
;
do
while
[[
$line
=
~ msgid
]]
;
do
unset
msgid
unset
msgid
msgid
=
"
$line
"
msgid
=
"
$line
"
...
@@ -406,6 +405,74 @@ try_copy_file_with_checksums () {
...
@@ -406,6 +405,74 @@ try_copy_file_with_checksums () {
}
}
export -f try_copy_file_with_checksums
export -f try_copy_file_with_checksums
lsbash () {
local grep_with_i grep_with_v find_name directory find_file found_successfully find_file_old find_file_old_array
if [[
$1
=~
\/
]] ; then
directory=
$1
; shift
else
directory=
$PWD
fi
grep_find_file1 () {
find_file_old=
$find_file
if [[
$grep_with_i
== true ]] ; then
find_file=
${
find_file
,,
}
find_name=
${
find_name
,,
}
fi
grep_find_file2 () {
if [[ -z
$1
]] ; then
echo "
$find_file_old
"
found_successfully=1
else
find_file_old_array+=("
$find_file_old
")
fi
}
if [[
$grep_with_v
== true ]] ; then
if [[ !
$find_file
=~
$find_name
]] ; then
grep_find_file2 "
$@
"
fi
else
if [[
$find_file
=~
$find_name
]]
\
|| [[ -z
$find_name
]] ; then
grep_find_file2 "
$@
"
fi
fi
}
while true ; do
unset grep_with_i grep_with_v
if [[
$1
== --grep ]] ; then
shift
while true ; do
# аналог grep -i
if [[
$1
== "
-i
" ]] ; then
grep_with_i=true ; shift ; continue
fi
# аналог grep -v
if [[
$1
== "
-v
" ]] ; then
grep_with_v=true ; shift ; continue
fi
find_name=
$1
; shift ; break
done
fi
if [[ -n
${
find_file_old_array
[0]
}
]] ; then
for find_file in "
${
find_file_old_array
[@]
}
" ; do
unset find_file_old_array
grep_find_file1 "
$@
"
done
else
for find_file in "
$directory
"/* ; do
find_file=
${
find_file
//*\//
}
grep_find_file1 "
$@
"
done
fi
if [[ -n
$1
]] ; then continue ; else break ; fi
done
if [[
$found_successfully
== 1 ]] ; then
return 0
else
return 1
fi
}
try_copy_dir () {
try_copy_dir () {
if [[ ! -d "
$1
" ]] ; then print_info "
directory
$1
not found for copy
"
if [[ ! -d "
$1
" ]] ; then print_info "
directory
$1
not found for copy
"
elif [[ -z "
$2
" ]] ; then print_error "
no
way to copy directory
$1
"
elif [[ -z "
$2
" ]] ; then print_error "
no
way to copy directory
$1
"
...
@@ -538,9 +605,9 @@ try_download () {
...
@@ -538,9 +605,9 @@ try_download () {
&& [[ "
$no_mirror
" != "
true
" ]]
&& [[ "
$no_mirror
" != "
true
" ]]
then
then
FIRST_URL=("
$url_cloud
/
$filename
")
FIRST_URL=("
$url_cloud
/
$filename
")
IFS=' '
read -r -a SECOND_URL <<< "
$1
"
read -r -a SECOND_URL <<< "
$1
"
else
else
IFS=' '
read -r -a FIRST_URL <<< "
$1
"
read -r -a FIRST_URL <<< "
$1
"
SECOND_URL=("
$url_cloud
/
$filename
")
SECOND_URL=("
$url_cloud
/
$filename
")
fi
fi
...
@@ -652,17 +719,14 @@ var_ld_library_path_update () {
...
@@ -652,17 +719,14 @@ var_ld_library_path_update () {
# GUI NOTIFY SEND
# GUI NOTIFY SEND
pw_notify_send () {
pw_notify_send () {
if command -v gdbus &>/dev/null ; then
if command -v gdbus &>/dev/null ; then
local app="
PortProton
"
local icon title body app timeout OPTIND
local icon=""
app="
PortProton
"
local timeout="
5000
"
timeout="
5000
"
local title=""
OPTIND="
1
"
local body=""
local OPTIND="
1
"
while getopts a:i:t: opt ; do
while getopts a:i:t: opt ; do
case "
$opt
" in
case "
$opt
" in
a)
a)
local
app=
$OPTARG
app=
$OPTARG
;;
;;
i)
i)
case "
$OPTARG
" in
case "
$OPTARG
" in
...
@@ -670,10 +734,10 @@ pw_notify_send () {
...
@@ -670,10 +734,10 @@ pw_notify_send () {
warning) local OPTARG="
${
PORT_WINE_PATH
}
/data/img/gui/notify_warning.svg
";;
warning) local OPTARG="
${
PORT_WINE_PATH
}
/data/img/gui/notify_warning.svg
";;
error) local OPTARG="
${
PORT_WINE_PATH
}
/data/img/gui/notify_error.svg
";;
error) local OPTARG="
${
PORT_WINE_PATH
}
/data/img/gui/notify_error.svg
";;
esac
esac
local
icon=
$OPTARG
icon=
$OPTARG
;;
;;
t)
t)
local
timeout=
$OPTARG
timeout=
$OPTARG
;;
;;
*)
*)
echo "
usage
:
$0
echo "
usage
:
$0
...
@@ -686,10 +750,8 @@ pw_notify_send () {
...
@@ -686,10 +750,8 @@ pw_notify_send () {
done
done
shift
$((
OPTIND
-
1
))
shift
$((
OPTIND
-
1
))
[[ "
$1
" == "
--
" ]] && shift
[[ "
$1
" == "
--
" ]] && shift
title="
$1
" ; shift
local title="
$1
"
body="
$*
"
shift
local body="
$*
"
gdbus call --session --dest org.freedesktop.Notifications
\
gdbus call --session --dest org.freedesktop.Notifications
\
--object-path /org/freedesktop/Notifications
\
--object-path /org/freedesktop/Notifications
\
...
@@ -883,7 +945,7 @@ search_desktop_file () {
...
@@ -883,7 +945,7 @@ search_desktop_file () {
desktop_file_new
=
"
${
desktop_file
//
"
$PORT_WINE_PATH
/"
/
}
"
desktop_file_new
=
"
${
desktop_file
//
"
$PORT_WINE_PATH
/"
/
}
"
if
[[
$desktop_file_new
=
~ .desktop
$
]]
;
then
if
[[
$desktop_file_new
=
~ .desktop
$
]]
;
then
if
[[
!
$desktop_file_new
=
~
(
PortProton|readme
)
]]
;
then
if
[[
!
$desktop_file_new
=
~
(
PortProton|readme
)
]]
;
then
while
IFS
=
read
-r
line1
;
do
while
read
-r
line1
;
do
if
[[
$line1
=
~ ^Exec
=
]]
;
then
if
[[
$line1
=
~ ^Exec
=
]]
;
then
if
check_flatpak
;
then
if
check_flatpak
;
then
EXEC_DESKTOP
=
${
line1
//Exec=flatpak run ru.linux_gaming.PortProton /
}
EXEC_DESKTOP
=
${
line1
//Exec=flatpak run ru.linux_gaming.PortProton /
}
...
@@ -900,7 +962,7 @@ search_desktop_file () {
...
@@ -900,7 +962,7 @@ search_desktop_file () {
fi
fi
done
done
if [[
$DESKTOP_WITH_TIME
== enabled ]] || [[
$SORT_WITH_TIME
== enabled ]] ; then
if [[
$DESKTOP_WITH_TIME
== enabled ]] || [[
$SORT_WITH_TIME
== enabled ]] ; then
while
IFS=
' '
read -r -a line2 ; do
while read -r -a line2 ; do
if [[ -z
${
line2
[0]
}
]] \
if [[ -z
${
line2
[0]
}
]] \
|| [[ !
${
line2
[0],,
}
=~ .(bat|exe|msi|reg)
$
]] ; then
|| [[ !
${
line2
[0],,
}
=~ .(bat|exe|msi|reg)
$
]] ; then
BROKEN_LINE=1
BROKEN_LINE=1
...
@@ -922,7 +984,7 @@ search_desktop_file () {
...
@@ -922,7 +984,7 @@ search_desktop_file () {
## Ремонты
:
## Ремонты
:
# Ремонт, проверяет чтобы длинна хеш суммы была равна 64 символам, в ином случае удалит битые
# Ремонт, проверяет чтобы длинна хеш суммы была равна 64 символам, в ином случае удалит битые
if [[
$FILE_SHA256SUM_NOT_FOUND
== 1 ]] && [[
${#
line2
[1]
}
!=
"64"
]] ; then
if [[
$FILE_SHA256SUM_NOT_FOUND
== 1 ]] && [[
${#
line2
[1]
}
!=
"64"
]] ; then
while
IFS=
' '
read -r -a line3 ; do
while read -r -a line3 ; do
if [[
${#
line3
[1]
}
==
"64"
]]
if [[
${#
line3
[1]
}
==
"64"
]]
then echo
"
${
line3
[*]
}
"
then echo
"
${
line3
[*]
}
"
fi
fi
...
@@ -934,7 +996,7 @@ search_desktop_file () {
...
@@ -934,7 +996,7 @@ search_desktop_file () {
# Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg
# Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg
if [[
$BROKEN_LINE
== 1 ]] ; then
if [[
$BROKEN_LINE
== 1 ]] ; then
while
IFS=
' '
read -r -a line4 ; do
while read -r -a line4 ; do
if [[ -n
${
line4
[0]
}
]] && [[
${
line4
[0],,
}
=~ .(bat|exe|msi|reg)
$
]]
if [[ -n
${
line4
[0]
}
]] && [[
${
line4
[0],,
}
=~ .(bat|exe|msi|reg)
$
]]
then echo
"
${
line4
[*]
}
"
then echo
"
${
line4
[*]
}
"
fi
fi
...
@@ -1306,7 +1368,7 @@ get_and_set_reg_file () {
...
@@ -1306,7 +1368,7 @@ get_and_set_reg_file () {
find_line
=
${
find_line
//
:
*/
}
find_line
=
${
find_line
//
:
*/
}
fi
fi
count
=
-1
count
=
-1
while
IFS
=
read
-r
line_reg
;
do
while
read
-r
line_reg
;
do
((
count++
))
((
count++
))
if
[[
$line_reg
=
~
$name_for_find
]]
;
then
if
[[
$line_reg
=
~
$name_for_find
]]
;
then
if
[[
$line_reg
==
$name_for_find$name_for_set
]]
;
then
if
[[
$line_reg
==
$name_for_find$name_for_set
]]
;
then
...
@@ -1318,7 +1380,7 @@ get_and_set_reg_file () {
...
@@ -1318,7 +1380,7 @@ get_and_set_reg_file () {
break
break
fi
fi
[[
-z
$line_reg
]]
&&
break
[[
-z
$line_reg
]]
&&
break
done
<
<<
"
$(
sed
-n
"
$find_line
"
',$p'
"
$find_file
"
)
"
done
<
<
(
sed
-n
"
$find_line
"
',$p'
"
$find_file
"
)
fi
fi
if
[[
$name_add_or_del
==
--add
]]
;
then
if
[[
$name_add_or_del
==
--add
]]
;
then
if
[[
-z
$find_block
]]
;
then
if
[[
-z
$find_block
]]
;
then
...
@@ -1370,7 +1432,7 @@ recommend_dpi () {
...
@@ -1370,7 +1432,7 @@ recommend_dpi () {
return
1
return
1
fi
fi
local
dpi
=
$((
height
/
11
))
local
dpi
=
$((
height
/
11
))
((
dpi < 96
))
&&
local
dpi
=
"96"
((
dpi < 96
))
&&
dpi
=
"96"
echo
"
$dpi
"
echo
"
$dpi
"
}
}
...
@@ -1380,7 +1442,7 @@ fixes_after_update () {
...
@@ -1380,7 +1442,7 @@ fixes_after_update () {
fixes_path
=
"
$PORT_WINE_TMP_PATH
/fixes_apply"
fixes_path
=
"
$PORT_WINE_TMP_PATH
/fixes_apply"
[[
!
-f
$fixes_path
]]
&&
touch
"
$fixes_path
"
[[
!
-f
$fixes_path
]]
&&
touch
"
$fixes_path
"
while
IFS
=
read
-r
line
;
do
while
read
-r
line
;
do
if
[[
$line
==
"
$fixes_info
"
]]
;
then
if
[[
$line
==
"
$fixes_info
"
]]
;
then
return
1
return
1
fi
fi
...
@@ -1394,7 +1456,7 @@ restart_pp () {
...
@@ -1394,7 +1456,7 @@ restart_pp () {
--userconf
)
export
RESTART_PP_USED
=
"userconf"
;;
--userconf
)
export
RESTART_PP_USED
=
"userconf"
;;
--edit_db
)
export
RESTART_PP_USED
=
"edit_db"
;;
--edit_db
)
export
RESTART_PP_USED
=
"edit_db"
;;
esac
esac
/usr/bin/env bash
-c
${
pw_full_command_line
[@]
}
&
/usr/bin/env bash
-c
"
${
pw_full_command_line
[@]
}
"
&
exit
0
exit
0
}
}
...
@@ -1493,7 +1555,7 @@ init_wine_ver () {
...
@@ -1493,7 +1555,7 @@ init_wine_ver () {
else
else
if
[[
-d
"
${
PORT_WINE_PATH
}
/data/dist"
]]
;
then
if
[[
-d
"
${
PORT_WINE_PATH
}
/data/dist"
]]
;
then
IFS
=
$'
\n
'
IFS
=
$'
\n
'
for
dist_dir
in
$(
ls
-1
"
${
PORT_WINE_PATH
}
/data/dist/"
)
;
do
for
dist_dir
in
$(
ls
bash
"
${
PORT_WINE_PATH
}
/data/dist/"
)
;
do
dist_dir_new
=
$(
echo
"
${
dist_dir
}
"
|
awk
'$1=$1'
|
sed
-e
s/[[:blank:]]/_/g
)
dist_dir_new
=
$(
echo
"
${
dist_dir
}
"
|
awk
'$1=$1'
|
sed
-e
s/[[:blank:]]/_/g
)
if
[[
!
-d
"
${
PORT_WINE_PATH
}
/data/dist/
${
dist_dir_new
^^
}
"
]]
;
then
if
[[
!
-d
"
${
PORT_WINE_PATH
}
/data/dist/
${
dist_dir_new
^^
}
"
]]
;
then
mv
--
"
${
PORT_WINE_PATH
}
/data/dist/
$dist_dir
"
"
${
PORT_WINE_PATH
}
/data/dist/
${
dist_dir_new
^^
}
"
mv
--
"
${
PORT_WINE_PATH
}
/data/dist/
$dist_dir
"
"
${
PORT_WINE_PATH
}
/data/dist/
${
dist_dir_new
^^
}
"
...
@@ -1501,7 +1563,7 @@ init_wine_ver () {
...
@@ -1501,7 +1563,7 @@ init_wine_ver () {
done
done
IFS
=
"
$orig_IFS
"
IFS
=
"
$orig_IFS
"
fi
fi
if
[[
-z
$(
ls
"
${
PORT_WINE_PATH
}
/data/dist/"
|
grep
"
${
PW_WINE_USE
}
"
)
]]
;
then
if
[[
-z
$(
ls
bash
"
${
PORT_WINE_PATH
}
/data/dist/"
--
grep
"
${
PW_WINE_USE
}
"
)
]]
;
then
if
[[
"
$PW_WINE_USE
"
=
~ PROTON_LG
*
]]
if
[[
"
$PW_WINE_USE
"
=
~ PROTON_LG
*
]]
then
export
PW_WINE_USE
=
PROTON_LG
then
export
PW_WINE_USE
=
PROTON_LG
else
export
PW_WINE_USE
=
WINE_LG
else
export
PW_WINE_USE
=
WINE_LG
...
@@ -1518,20 +1580,20 @@ init_wine_ver () {
...
@@ -1518,20 +1580,20 @@ init_wine_ver () {
export
WINELOADER
=
"
${
WINEDIR
}
/bin/wine"
export
WINELOADER
=
"
${
WINEDIR
}
/bin/wine"
export
WINESERVER
=
"
${
WINEDIR
}
/bin/wineserver"
export
WINESERVER
=
"
${
WINEDIR
}
/bin/wineserver"
if
[[
-d
"
${
WINEDIR
}
/files"
&&
!
-d
"
${
WINEDIR
}
/dist"
]]
;
then
if
[[
-d
"
${
WINEDIR
}
/files"
&&
!
-d
"
${
WINEDIR
}
/dist"
]]
;
then
for
clear_dist_files
in
$(
ls
"
${
WINEDIR
}
"
|
sed
-r
"s/^(files|version)
$/
/g"
)
;
do
for
clear_dist_files
in
$(
ls
bash
"
$WINEDIR
"
|
sed
-r
"s/^(files|version)
$/
/g"
)
;
do
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
done
done
mv
-f
"
${
WINEDIR
}
/files"
/
*
"
${
WINEDIR
}
/"
mv
-f
"
${
WINEDIR
}
/files"
/
*
"
${
WINEDIR
}
/"
rm
-fr
"
${
WINEDIR
}
/files"
rm
-fr
"
${
WINEDIR
}
/files"
elif
[[
!
-d
"
${
WINEDIR
}
/files"
&&
-d
"
${
WINEDIR
}
/dist"
]]
;
then
elif
[[
!
-d
"
${
WINEDIR
}
/files"
&&
-d
"
${
WINEDIR
}
/dist"
]]
;
then
for
clear_dist_files
in
$(
ls
"
${
WINEDIR
}
"
|
sed
-r
"s/^(dist|version)
$/
/g"
)
;
do
for
clear_dist_files
in
$(
ls
bash
"
$WINEDIR
"
|
sed
-r
"s/^(dist|version)
$/
/g"
)
;
do
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
done
done
mv
-f
"
${
WINEDIR
}
/dist"
/
*
"
${
WINEDIR
}
/"
mv
-f
"
${
WINEDIR
}
/dist"
/
*
"
${
WINEDIR
}
/"
rm
-fr
"
${
WINEDIR
}
/dist"
rm
-fr
"
${
WINEDIR
}
/dist"
elif
[[
-f
"
${
WINEDIR
}
/proton_dist.tar"
]]
;
then
elif
[[
-f
"
${
WINEDIR
}
/proton_dist.tar"
]]
;
then
unpack
"
${
WINEDIR
}
/proton_dist.tar"
"
${
WINEDIR
}
/"
unpack
"
${
WINEDIR
}
/proton_dist.tar"
"
${
WINEDIR
}
/"
for
clear_dist_files
in
$(
ls
"
${
WINEDIR
}
"
|
sed
-r
"s/^(bin|lib|lib64|share|version)
$/
/g"
)
;
do
for
clear_dist_files
in
$(
ls
bash
"
$WINEDIR
"
|
sed
-r
"s/^(bin|lib|lib64|share|version)
$/
/g"
)
;
do
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
rm
-fr
"
${
WINEDIR
}
/
$clear_dist_files
"
done
done
fi
fi
...
@@ -1814,7 +1876,7 @@ pw_kill_autostart () {
...
@@ -1814,7 +1876,7 @@ pw_kill_autostart () {
fi
fi
done
done
if
[[
-n
"
$(
ls
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
"
/drive_c/ |
grep
-m
1
".tmp"
)
"
]]
;
then
if
[[
-n
"
$(
ls
bash
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
"
/drive_c/ |
grep
-m
1
".tmp"
)
"
]]
;
then
rm
-f
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
"
/drive_c/
*
.tmp
rm
-f
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
"
/drive_c/
*
.tmp
fi
fi
...
@@ -1905,8 +1967,8 @@ pw_download_libs () {
...
@@ -1905,8 +1967,8 @@ pw_download_libs () {
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
;
then
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
;
then
if
unpack
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
"
${
PORT_WINE_TMP_PATH
}
/"
;
then
if
unpack
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
"
${
PORT_WINE_TMP_PATH
}
/"
;
then
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/libs
${
PW_LIBS_VER
}
.tar.xz"
if
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
libs_v |
grep
-v
libs
"
${
PW_LIBS_VER
}
"
;
then
if
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
libs_v
--
grep
-v
libs
"
${
PW_LIBS_VER
}
"
;
then
for
RM_LIBS
in
$(
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
libs_v |
grep
-v
libs
"
${
PW_LIBS_VER
}
"
)
for
RM_LIBS
in
$(
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
libs_v
--
grep
-v
libs
"
${
PW_LIBS_VER
}
"
)
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_LIBS
}
"
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_LIBS
}
"
done
done
fi
fi
...
@@ -2056,9 +2118,9 @@ pw_check_and_download_plugins () {
...
@@ -2056,9 +2118,9 @@ pw_check_and_download_plugins () {
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/plugins
${
PW_PLUGINS_VER
}
.tar.xz"
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/plugins
${
PW_PLUGINS_VER
}
.tar.xz"
# TODO: drop clear prefix, and add update prefix from new plugins
# TODO: drop clear prefix, and add update prefix from new plugins
pw_clear_pfx
pw_clear_pfx
if
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
plugins_v |
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
if
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
plugins_v
--
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
then
then
for
RM_PLUGINS
in
$(
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
plugins_v |
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
)
for
RM_PLUGINS
in
$(
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
plugins_v
--
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
)
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_PLUGINS
}
"
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_PLUGINS
}
"
done
done
fi
fi
...
@@ -2089,9 +2151,9 @@ pw_check_and_download_plugins () {
...
@@ -2089,9 +2151,9 @@ pw_check_and_download_plugins () {
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/plugins
${
PW_PLUGINS_VER
}
.tar.xz"
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
/plugins
${
PW_PLUGINS_VER
}
.tar.xz"
# TODO: drop clear prefix, and add update prefix from new plugins
# TODO: drop clear prefix, and add update prefix from new plugins
pw_clear_pfx
pw_clear_pfx
if
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
plugins_v |
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
if
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
plugins_v
--
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
then
then
for
RM_PLUGINS
in
$(
ls
"
${
PORT_WINE_TMP_PATH
}
"
|
grep
plugins_v |
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
)
for
RM_PLUGINS
in
$(
ls
bash
"
${
PORT_WINE_TMP_PATH
}
"
--grep
plugins_v
--
grep
-v
"plugins
${
PW_PLUGINS_VER
}
"
)
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_PLUGINS
}
"
do
try_remove_dir
"
${
PORT_WINE_TMP_PATH
}
/
${
RM_PLUGINS
}
"
done
done
fi
fi
...
@@ -2218,7 +2280,7 @@ pw_init_db () {
...
@@ -2218,7 +2280,7 @@ pw_init_db () {
# shellcheck source=/dev/null
# shellcheck source=/dev/null
source
"
${
PORTWINE_DB_FILE
}
"
source
"
${
PORTWINE_DB_FILE
}
"
if
echo
"
${
portwine_exe
}
"
|
grep
"/prefixes/"
&>/dev/null
;
then
if
echo
"
${
portwine_exe
}
"
|
grep
"/prefixes/"
&>/dev/null
;
then
if
[[
-z
$(
ls
"
${
PORT_WINE_PATH
}
/prefixes/"
|
grep
-e
^
"
${
PW_PREFIX_NAME
}
"
$)
]]
\
if
[[
-z
$(
ls
bash
"
${
PORT_WINE_PATH
}
/prefixes/"
--grep
^
"
${
PW_PREFIX_NAME
}
"
$)
]]
\
||
[[
-z
$(
grep
-e
^
"export PW_PREFIX_NAME="
"
${
PORTWINE_DB_FILE
}
"
2>/dev/null
)
]]
||
[[
-z
$(
grep
-e
^
"export PW_PREFIX_NAME="
"
${
PORTWINE_DB_FILE
}
"
2>/dev/null
)
]]
then
then
PW_PREFIX_NAME
=
$(
echo
"
${
portwine_exe
}
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
PW_PREFIX_NAME
=
$(
echo
"
${
portwine_exe
}
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
...
@@ -2258,7 +2320,7 @@ pw_init_db () {
...
@@ -2258,7 +2320,7 @@ pw_init_db () {
try_copy_file
"
${
PW_FIND_DB_FILE
}
"
"
${
portwine_exe
}
"
.ppdb
try_copy_file
"
${
PW_FIND_DB_FILE
}
"
"
${
portwine_exe
}
"
.ppdb
PORTWINE_DB_FILE
=
"
${
portwine_exe
}
"
.ppdb
PORTWINE_DB_FILE
=
"
${
portwine_exe
}
"
.ppdb
if
echo
"
${
portwine_exe
}
"
|
grep
"/prefixes/"
&>/dev/null
;
then
if
echo
"
${
portwine_exe
}
"
|
grep
"/prefixes/"
&>/dev/null
;
then
if
[[
-z
$(
ls
"
${
PORT_WINE_PATH
}
/prefixes/"
|
grep
-e
^
"
${
PW_PREFIX_NAME
}
"
$)
]]
\
if
[[
-z
$(
ls
bash
"
${
PORT_WINE_PATH
}
/prefixes/"
--grep
^
"
${
PW_PREFIX_NAME
}
"
$)
]]
\
||
[[
-z
$(
grep
-e
^
"export PW_PREFIX_NAME="
"
${
PORTWINE_DB_FILE
}
"
2>/dev/null
)
]]
||
[[
-z
$(
grep
-e
^
"export PW_PREFIX_NAME="
"
${
PORTWINE_DB_FILE
}
"
2>/dev/null
)
]]
then
then
PW_PREFIX_NAME
=
$(
echo
"
${
portwine_exe
}
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
PW_PREFIX_NAME
=
$(
echo
"
${
portwine_exe
}
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
...
@@ -2307,7 +2369,7 @@ pw_init_db () {
...
@@ -2307,7 +2369,7 @@ pw_init_db () {
if
[[
"
${
PW_WINE_CPU_TOPOLOGY
}
"
==
"disabled"
]]
&&
[[
-n
"
${
WINE_CPU_TOPOLOGY
}
"
]]
;
then
if
[[
"
${
PW_WINE_CPU_TOPOLOGY
}
"
==
"disabled"
]]
&&
[[
-n
"
${
WINE_CPU_TOPOLOGY
}
"
]]
;
then
export
PW_WINE_CPU_TOPOLOGY
=
"
${
WINE_CPU_TOPOLOGY
}
"
export
PW_WINE_CPU_TOPOLOGY
=
"
${
WINE_CPU_TOPOLOGY
}
"
fi
fi
if
ls
"
${
PATH_TO_GAME
}
"
/
*
_Data/Resources/ 2>/dev/null |
grep
"unity"
&>/dev/null
\
if
ls
bash
"
${
PATH_TO_GAME
}
"
/
*
_Data/Resources/
--
grep
"unity"
&>/dev/null
\
&&
[[
"
${
PW_WINE_CPU_TOPOLOGY
}
"
==
"disabled"
]]
\
&&
[[
"
${
PW_WINE_CPU_TOPOLOGY
}
"
==
"disabled"
]]
\
&&
[[
$(
grep
-c
^
"processor"
/proc/cpuinfo
)
-gt
"8"
]]
&&
[[
$(
grep
-c
^
"processor"
/proc/cpuinfo
)
-gt
"8"
]]
then
then
...
@@ -2375,7 +2437,7 @@ pw_port_update () {
...
@@ -2375,7 +2437,7 @@ pw_port_update () {
return
1
return
1
fi
fi
IFS
=
' '
read
-r
-a
PW_UPDATE_ALL_LIST
<<<
"
$UPDATE_ETERFUND
$UPDATE_GITHUB
$UPDATE_PP_GITEA
"
read
-r
-a
PW_UPDATE_ALL_LIST
<<<
"
$UPDATE_ETERFUND
$UPDATE_GITHUB
$UPDATE_PP_GITEA
"
UPDATE_MIN
=
${
PW_UPDATE_ALL_LIST
[0]
}
UPDATE_MIN
=
${
PW_UPDATE_ALL_LIST
[0]
}
for
i
in
"
${
!PW_UPDATE_ALL_LIST[@]
}
"
;
do
for
i
in
"
${
!PW_UPDATE_ALL_LIST[@]
}
"
;
do
...
@@ -2765,7 +2827,7 @@ pw_create_gui_png () {
...
@@ -2765,7 +2827,7 @@ pw_create_gui_png () {
if
[[
"
$PW_PRODUCTNAME
"
=
~
(
Launcher|RU
)
]]
if
[[
"
$PW_PRODUCTNAME
"
=
~
(
Launcher|RU
)
]]
then
then
PW_PRODUCTNAME
=
"
${
PW_PRODUCTNAME
//(Launcher|RU)/
}
"
PW_PRODUCTNAME
=
$(
echo
"
$PW_PRODUCTNAME
"
|
sed
-r
"s/(Launcher|RU)//g"
)
fi
fi
if
[[
-n
"
$PW_PRODUCTNAME
"
]]
\
if
[[
-n
"
$PW_PRODUCTNAME
"
]]
\
...
@@ -2777,7 +2839,7 @@ pw_create_gui_png () {
...
@@ -2777,7 +2839,7 @@ pw_create_gui_png () {
fi
fi
fi
fi
P
ORTPROTON_NAME
=
"
${
PORTPROTON_NAME
//(\
`
|
\"
|
\'
|
\!
)
/
}
"
P
W_PRODUCTNAME
=
$(
echo
"
$PW_PRODUCTNAME
"
|
sed
-r
"s/(
\`
|
\"
|'|
\!
)//g"
)
export
PORTPROTON_NAME
export
PORTPROTON_NAME
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
fi
fi
...
@@ -2821,8 +2883,8 @@ pw_find_exe () {
...
@@ -2821,8 +2883,8 @@ pw_find_exe () {
--button
=
"
${
translations
[CANCEL]
}
!
$PW_GUI_ICON_PATH
/
$BUTTON_SIZE
.png"
:1
\
--button
=
"
${
translations
[CANCEL]
}
!
$PW_GUI_ICON_PATH
/
$BUTTON_SIZE
.png"
:1
\
--button
=
"
${
translations
[OK]
}
!
$PW_GUI_ICON_PATH
/
$BUTTON_SIZE
.png"
:0 2>/dev/null
)
"
--button
=
"
${
translations
[OK]
}
!
$PW_GUI_ICON_PATH
/
$BUTTON_SIZE
.png"
:0 2>/dev/null
)
"
YAD_STATUS
=
"
$?
"
YAD_STATUS
=
"
$?
"
IFS
=
"
$orig_IFS
"
IFS
=
"
$orig_IFS
"
if
[[
"
$YAD_STATUS
"
==
"1"
||
"
$YAD_STATUS
"
==
"252"
]]
;
then
if
[[
"
$YAD_STATUS
"
==
"1"
||
"
$YAD_STATUS
"
==
"252"
]]
;
then
print_info
"Restarting..."
print_info
"Restarting..."
restart_pp
restart_pp
...
@@ -4499,7 +4561,7 @@ gui_proton_downloader () {
...
@@ -4499,7 +4561,7 @@ gui_proton_downloader () {
pw_start_progress_bar_block
"
${
translations
[Check new version WINE...]
}
"
pw_start_progress_bar_block
"
${
translations
[Check new version WINE...]
}
"
# PROTON_GE
# PROTON_GE
read
-r
-d
''
-a
PROTON_GE_GIT
<
<<
"
$(
curl
-s
"https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases"
|
grep
"browser_download_url.*
\.
tar
\.
gz"
|
cut
-d
\"
-f
4
)
"
read
-r
-d
''
-a
PROTON_GE_GIT <
<
(
curl
-s
"https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases"
|
grep
"browser_download_url.*
\.
tar
\.
gz"
|
cut
-d
\"
-f
4
)
if
[[
-n
"
${
PROTON_GE_GIT
[0]
}
"
]]
;
then
if
[[
-n
"
${
PROTON_GE_GIT
[0]
}
"
]]
;
then
for
PGEGIT
in
"
${
PROTON_GE_GIT
[@]
}
"
;
do
for
PGEGIT
in
"
${
PROTON_GE_GIT
[@]
}
"
;
do
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.gz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_proton_ge_git"
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.gz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_proton_ge_git"
...
@@ -4508,7 +4570,7 @@ gui_proton_downloader () {
...
@@ -4508,7 +4570,7 @@ gui_proton_downloader () {
fi
fi
# WINE_KRON4EK
# WINE_KRON4EK
read
-r
-d
''
-a
WINE_KRON4EK
<
<<
"
$(
curl
-s
"https://api.github.com/repos/Kron4ek/Wine-Builds/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4
)
"
read
-r
-d
''
-a
WINE_KRON4EK <
<
(
curl
-s
"https://api.github.com/repos/Kron4ek/Wine-Builds/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4
)
if
[[
-n
"
${
WINE_KRON4EK
[0]
}
"
]]
;
then
if
[[
-n
"
${
WINE_KRON4EK
[0]
}
"
]]
;
then
for
PGEGIT
in
"
${
WINE_KRON4EK
[@]
}
"
;
do
for
PGEGIT
in
"
${
WINE_KRON4EK
[@]
}
"
;
do
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_wine_kron4ek_git"
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_wine_kron4ek_git"
...
@@ -4517,7 +4579,7 @@ gui_proton_downloader () {
...
@@ -4517,7 +4579,7 @@ gui_proton_downloader () {
fi
fi
# WINE_GE_CUSTOM
# WINE_GE_CUSTOM
read
-r
-d
''
-a
WINE_GE_CUSTOM
<
<<
"
$(
curl
-s
"https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4
)
"
read
-r
-d
''
-a
WINE_GE_CUSTOM <
<
(
curl
-s
"https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4
)
if
[[
-n
"
${
WINE_GE_CUSTOM
[0]
}
"
]]
;
then
if
[[
-n
"
${
WINE_GE_CUSTOM
[0]
}
"
]]
;
then
for
PGEGIT
in
"
${
WINE_GE_CUSTOM
[@]
}
"
;
do
for
PGEGIT
in
"
${
WINE_GE_CUSTOM
[@]
}
"
;
do
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_wine_ge_custom_git"
echo
"
${
PGEGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_wine_ge_custom_git"
...
@@ -4526,7 +4588,7 @@ gui_proton_downloader () {
...
@@ -4526,7 +4588,7 @@ gui_proton_downloader () {
fi
fi
# PROTON_LG
# PROTON_LG
read
-r
-d
''
-a
PROTON_PW_GIT
<
<<
"
$(
curl
-s
"https://api.github.com/repos/Castro-Fidel/wine_builds/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4 |
sort
-r
)
"
read
-r
-d
''
-a
PROTON_PW_GIT <
<
(
curl
-s
"https://api.github.com/repos/Castro-Fidel/wine_builds/releases"
|
grep
"browser_download_url.*
\.
tar
\.
xz"
|
cut
-d
\"
-f
4 |
sort
-r
)
if
[[
-n
"
${
PROTON_PW_GIT
[0]
}
"
]]
;
then
if
[[
-n
"
${
PROTON_PW_GIT
[0]
}
"
]]
;
then
for
PPWGIT
in
"
${
PROTON_PW_GIT
[@]
}
"
;
do
for
PPWGIT
in
"
${
PROTON_PW_GIT
[@]
}
"
;
do
echo
"
${
PPWGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_proton_pw_git"
echo
"
${
PPWGIT
}
"
|
awk
-F
/
'{print $NF}'
|
sed
's/.tar.xz//'
>>
"
${
PW_TMPFS_PATH
}
/tmp_proton_pw_git"
...
@@ -4891,7 +4953,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
...
@@ -4891,7 +4953,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
;;
;;
esac
esac
IFS='
'
read -r -a output_yad_edit_db <"${PW_TMPFS_PATH}/tmp_output_yad_edit_db"
read -r -a output_yad_edit_db <"${PW_TMPFS_PATH}/tmp_output_yad_edit_db"
bool_from_yad="0"
bool_from_yad="0"
for boole_to_int in "${PW_EDIT_DB_LIST[@]}" ; do
for boole_to_int in "${PW_EDIT_DB_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_edit_db[$bool_from_yad]}"
export "${boole_to_int}"="${output_yad_edit_db[$bool_from_yad]}"
...
@@ -4945,8 +5007,8 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
...
@@ -4945,8 +5007,8 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate.]
gui_vkbasalt () {
gui_vkbasalt () {
KEY_FX_GUI=$RANDOM
KEY_FX_GUI=$RANDOM
FILE_VKBASALT_CONF="${PORT_WINE_PATH}/data/vkBasalt.conf"
FILE_VKBASALT_CONF="${PORT_WINE_PATH}/data/vkBasalt.conf"
read -r -d '' -a LIST_FX <
<< "$(grep -E '
.fx
$|
.fxh
$' "$FILE_VKBASALT_CONF" | awk '
{
print
$1
}
')"
read -r -d '' -a LIST_FX <
<(grep -E '
.fx
$|
.fxh
$' "$FILE_VKBASALT_CONF" | awk '
{
print
$1
}
')
IFS='
' read -r -a GET_FX_IN_FILE <<< "$(echo "$PW_VKBASALT_EFFECTS" | sed -e s/"cas:"// -e s/":"/" "/g)"
read -r -a GET_FX_IN_FILE < <(echo "$PW_VKBASALT_EFFECTS" | sed -e s/"cas:"// -e s/":"/" "/g)
PW_3DFX_INFO=${translations[Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)]}
PW_3DFX_INFO=${translations[Simulation of an old 3dfx graphics accelerator (adds horizontal stripes)]}
PW_AdaptiveSharpen_INFO=${translations[Sharpness increase, can be used with CAS]}
PW_AdaptiveSharpen_INFO=${translations[Sharpness increase, can be used with CAS]}
...
@@ -5289,7 +5351,7 @@ gui_mangohud () {
...
@@ -5289,7 +5351,7 @@ gui_mangohud () {
fi
fi
if [[ "${GUI_MH_RESULT}" =~ "fps_only" ]] ; then
if [[ "${GUI_MH_RESULT}" =~ "fps_only" ]] ; then
local
GUI_MH_RESULT="fps_only"
GUI_MH_RESULT="fps_only"
print_info "In the MangoHud config fps_only is detected all settings are reseted"
print_info "In the MangoHud config fps_only is detected all settings are reseted"
fi
fi
...
@@ -5450,7 +5512,7 @@ gui_dgvoodoo2 () {
...
@@ -5450,7 +5512,7 @@ gui_dgvoodoo2 () {
;;
;;
esac
esac
IFS='
'
read -r -a output_yad_dgv2 <"${PW_TMPFS_PATH}/tmp_yad_dgv2_set"
read -r -a output_yad_dgv2 <"${PW_TMPFS_PATH}/tmp_yad_dgv2_set"
bool_from_yad=0
bool_from_yad=0
for boole_to_int in "${PW_DGV2_LIST[@]}" ; do
for boole_to_int in "${PW_DGV2_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_dgv2[$bool_from_yad]}"
export "${boole_to_int}"="${output_yad_dgv2[$bool_from_yad]}"
...
@@ -5618,7 +5680,7 @@ gui_gamescope () {
...
@@ -5618,7 +5680,7 @@ gui_gamescope () {
;;
;;
esac
esac
IFS='
'
read -r -a output_yad_gs <"${PW_TMPFS_PATH}/tmp_yad_gs_set"
read -r -a output_yad_gs <"${PW_TMPFS_PATH}/tmp_yad_gs_set"
bool_from_yad="0"
bool_from_yad="0"
for boole_to_int in "${PW_GS_LIST[@]}" ; do
for boole_to_int in "${PW_GS_LIST[@]}" ; do
export "${boole_to_int}"="${output_yad_gs[$bool_from_yad]}"
export "${boole_to_int}"="${output_yad_gs[$bool_from_yad]}"
...
@@ -5955,7 +6017,7 @@ portwine_output_yad_shortcut () {
...
@@ -5955,7 +6017,7 @@ portwine_output_yad_shortcut () {
if
[[
-f
"
${
SLUF
}
"
]]
;
then
if
[[
-f
"
${
SLUF
}
"
]]
;
then
SLUFUB
=
false
SLUFUB
=
false
STUID64
=
""
STUID64
=
""
while
IFS
=
read
-r
line
;
do
while
read
-r
line
;
do
if
[[
"
${
line
}
"
=
~ ^[[:space:]]
*
\"
([
0-9]+
)
\"
$
]]
;
then
if
[[
"
${
line
}
"
=
~ ^[[:space:]]
*
\"
([
0-9]+
)
\"
$
]]
;
then
STUIDCUR
=
"
${
BASH_REMATCH
[1]
}
"
STUIDCUR
=
"
${
BASH_REMATCH
[1]
}
"
SLUFUB
=
true
SLUFUB
=
true
...
@@ -6034,16 +6096,15 @@ pw_auto_create_shortcut () {
...
@@ -6034,16 +6096,15 @@ pw_auto_create_shortcut () {
fi
fi
unset
LINKS
unset
LINKS
for
link_file
in
"
${
PORT_WINE_PATH
}
"
/data/prefixes/
*
/drive_c/users/
*
/Desktop/
*
.lnk
for
link_file
in
"
${
PORT_WINE_PATH
}
"
/data/prefixes/
*
/drive_c/users/
*
/Desktop/
*
.lnk
;
do
do
link_file
=
$(
readlink
-f
"
$link_file
"
)
link_file
=
$(
readlink
-f
"
${
link_file
}
"
)
LINKS+
=(
"
${
link_file
// /#@_@#
}
"
)
IFS
=
' '
read
-r
-a
LINKS
<<<
"
${
LINKS
[*]
}
${
link_file
// /@_@
}
"
done
done
[[
-z
"
${
LINKS
[0]
}
"
]]
&&
return
0
[[
-z
"
${
LINKS
[0]
}
"
]]
&&
return
0
IFS
=
' '
read
-r
-a
SORTED_LINKS
<<<
"
$(
echo
"
${
LINKS
[@]
}
"
|
tr
' '
'\n'
|
sort
-u
|
tr
'\n'
' '
)
"
read
-r
-a
SORTED_LINKS < <
(
echo
"
${
LINKS
[@]
}
"
|
tr
' '
'\n'
|
sort
-u
|
tr
'\n'
' '
)
for
link_file
in
"
${
SORTED_LINKS
[@]//
@_@
/
}
"
;
do
for
link_file
in
"
${
SORTED_LINKS
[@]//
#@_@#
/
}
"
;
do
if
command
-v
exiftool &>/dev/null
;
then
if
command
-v
exiftool &>/dev/null
;
then
if
timeout
3 exiftool
"
$link_file
"
&>
"
${
PW_TMPFS_PATH
}
/exiftool.tmp"
;
then
if
timeout
3 exiftool
"
$link_file
"
&>
"
${
PW_TMPFS_PATH
}
/exiftool.tmp"
;
then
prefix_name
=
$(
echo
"
$link_file
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
prefix_name
=
$(
echo
"
$link_file
"
|
awk
-F
"/prefixes/"
'{print $2}'
|
awk
-F
"/"
'{print $1}'
)
...
@@ -6137,22 +6198,22 @@ portwine_change_shortcut () {
...
@@ -6137,22 +6198,22 @@ portwine_change_shortcut () {
portwine_search_shortcut
()
{
portwine_search_shortcut
()
{
unset
PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP
unset
PW_DELETE_SHORTCUT_MENU PW_DELETE_SHORTCUT_DESKTOP
PW_DELETE_MENU
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/.local/share/applications"
/
*
.desktop 2>/dev/null
)
"
PW_DELETE_MENU
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/.local/share/applications"
/
*
.desktop 2>/dev/null
)
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_MENU
<<<
"
${
PW_DELETE_SHORTCUT_MENU
[*]
}
${
PW_DELETE_MENU
// /@_@
}
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_MENU
<<<
"
${
PW_DELETE_SHORTCUT_MENU
[*]
}
${
PW_DELETE_MENU
// /#@_@#
}
"
PW_DELETE_PP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
PORT_WINE_PATH
}
"
/
*
.desktop 2>/dev/null
)
"
PW_DELETE_PP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
PORT_WINE_PATH
}
"
/
*
.desktop 2>/dev/null
)
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_MENU
<<<
"
${
PW_DELETE_SHORTCUT_MENU
[*]
}
${
PW_DELETE_PP
// /@_@
}
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_MENU
<<<
"
${
PW_DELETE_SHORTCUT_MENU
[*]
}
${
PW_DELETE_PP
// /#@_@#
}
"
if
[[
-d
"
${
HOME
}
/Desktop"
]]
;
then
if
[[
-d
"
${
HOME
}
/Desktop"
]]
;
then
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/Desktop"
/
*
.desktop 2>/dev/null
)
"
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/Desktop"
/
*
.desktop 2>/dev/null
)
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /@_@
}
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /#@_@#
}
"
fi
fi
if
[[
-d
"
${
HOME
}
/Рабочий стол"
]]
;
then
if
[[
-d
"
${
HOME
}
/Рабочий стол"
]]
;
then
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/Рабочий стол"
/
*
.desktop 2>/dev/null
)
"
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
${
HOME
}
/Рабочий стол"
/
*
.desktop 2>/dev/null
)
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /@_@
}
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /#@_@#
}
"
fi
fi
if
[[
$(
xdg-user-dir DESKTOP
)
]]
;
then
if
[[
$(
xdg-user-dir DESKTOP
)
]]
;
then
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
$(
xdg-user-dir DESKTOP
)
"
/
*
.desktop 2>/dev/null
)
"
PW_DELETE_DESKTOP
=
"
$(
grep
-il
"
${
portwine_exe
}
"
"
$(
xdg-user-dir DESKTOP
)
"
/
*
.desktop 2>/dev/null
)
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /@_@
}
"
read
-r
-d
''
-a
PW_DELETE_SHORTCUT_DESKTOP
<<<
"
${
PW_DELETE_SHORTCUT_DESKTOP
[*]
}
${
PW_DELETE_DESKTOP
// /#@_@#
}
"
fi
fi
}
}
...
@@ -6163,7 +6224,7 @@ portwine_delete_shortcut () {
...
@@ -6163,7 +6224,7 @@ portwine_delete_shortcut () {
unset
PORTWINE_CHANGE_SHORTCUT
unset
PORTWINE_CHANGE_SHORTCUT
for
delete_shortcut
in
"
${
PW_DELETE_SHORTCUT_MENU
[@]
}
"
"
${
PW_DELETE_SHORTCUT_DESKTOP
[@]
}
"
;
do
for
delete_shortcut
in
"
${
PW_DELETE_SHORTCUT_MENU
[@]
}
"
"
${
PW_DELETE_SHORTCUT_DESKTOP
[@]
}
"
;
do
rm
-f
"
${
delete_shortcut
//
@_@
/
}
"
rm
-f
"
${
delete_shortcut
//
#@_@#
/
}
"
done
done
}
}
...
@@ -6799,7 +6860,7 @@ See the License for details.]}" 2>/dev/null &
...
@@ -6799,7 +6860,7 @@ See the License for details.]}" 2>/dev/null &
Developer assistants and testers
:]
}
Developer assistants and testers
:]
}
$(
credits_devel
)
"
2>/dev/null &
$(
credits_devel
)
"
2>/dev/null &
"
${
pw_yad
}
"
--plug
=
"
${
KEY_CREDITS
}
"
--tabnum
=
3
--text-info
--scroll
<
<<
"
$
(
eval_translations
"MIT License
"
${
pw_yad
}
"
--plug
=
"
${
KEY_CREDITS
}
"
--tabnum
=
3
--text-info
--scroll
<
<
(
eval_translations
"MIT License
Copyright ©
\$
%DATE% Castro-Fidel (linux-gaming.ru)
Copyright ©
\$
%DATE% Castro-Fidel (linux-gaming.ru)
...
@@ -6819,7 +6880,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
...
@@ -6819,7 +6880,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE."
"DATE=
$(
date
+%Y
)
"
)
"
2>/dev/null &
SOFTWARE."
"DATE=
$(
date
+%Y
)
"
)
2>/dev/null &
"
${
pw_yad
}
"
--plug
=
"
${
KEY_CREDITS
}
"
--tabnum
=
4
\
"
${
pw_yad
}
"
--plug
=
"
${
KEY_CREDITS
}
"
--tabnum
=
4
\
--text-info
--show-uri
--scroll
\
--text-info
--show-uri
--scroll
\
...
...
data_from_portwine/scripts/start.sh
View file @
83e7db8a
...
@@ -40,7 +40,7 @@ source "$PORT_SCRIPTS_PATH/functions_helper"
...
@@ -40,7 +40,7 @@ source "$PORT_SCRIPTS_PATH/functions_helper"
export
PW_START_PID
=
"
$$
"
export
PW_START_PID
=
"
$$
"
export
NO_AT_BRIDGE
=
"1"
export
NO_AT_BRIDGE
=
"1"
export
GDK_BACKEND
=
"x11"
export
GDK_BACKEND
=
"x11"
IFS
=
' '
read
-r
-a
pw_full_command_line
<<<
"
$0
$*
"
read
-r
-a
pw_full_command_line
<<<
"
$0
$*
"
export
pw_full_command_line
export
pw_full_command_line
export
orig_IFS
=
"
$IFS
"
export
orig_IFS
=
"
$IFS
"
...
@@ -358,7 +358,7 @@ EOF
...
@@ -358,7 +358,7 @@ EOF
else
else
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
"
/pp_pfx_unpack.sh
try_remove_file
"
${
PORT_WINE_TMP_PATH
}
"
/pp_pfx_unpack.sh
if
[[
-f
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
/.create_shortcut"
]]
;
then
if
[[
-f
"
${
PORT_WINE_PATH
}
/data/prefixes/
${
PW_PREFIX_NAME
}
/.create_shortcut"
]]
;
then
while
IFS
=
read
-r
line
while
read
-r
line
do
do
export
portwine_exe
=
"
$PORT_WINE_PATH
/data/prefixes/
$PW_PREFIX_NAME
/
$line
"
export
portwine_exe
=
"
$PORT_WINE_PATH
/data/prefixes/
$PW_PREFIX_NAME
/
$line
"
portwine_create_shortcut
portwine_create_shortcut
...
@@ -614,7 +614,7 @@ else
...
@@ -614,7 +614,7 @@ else
desktop_file_new
=
"
${
desktop_file
//
"
$PORT_WINE_PATH
/"
/
}
"
desktop_file_new
=
"
${
desktop_file
//
"
$PORT_WINE_PATH
/"
/
}
"
if
[[
$desktop_file_new
=
~ .desktop
$
]]
;
then
if
[[
$desktop_file_new
=
~ .desktop
$
]]
;
then
if
[[
!
$desktop_file_new
=
~
(
PortProton|readme
)
]]
;
then
if
[[
!
$desktop_file_new
=
~
(
PortProton|readme
)
]]
;
then
while
IFS
=
read
-r
line1
;
do
while
read
-r
line1
;
do
if
[[
$line1
=
~ ^Exec
=
]]
;
then
if
[[
$line1
=
~ ^Exec
=
]]
;
then
if
check_flatpak
;
then
if
check_flatpak
;
then
PW_NAME_D_ICON[
"
$AMOUNT_GENERATE_BUTTONS
"
]=
${
line1
//Exec=flatpak run ru.linux_gaming.PortProton /
}
PW_NAME_D_ICON[
"
$AMOUNT_GENERATE_BUTTONS
"
]=
${
line1
//Exec=flatpak run ru.linux_gaming.PortProton /
}
...
@@ -633,7 +633,7 @@ else
...
@@ -633,7 +633,7 @@ else
PW_NAME_D_ICON[
"
$AMOUNT_GENERATE_BUTTONS
"
]=
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]//Exec=env \
"
$PORT_SCRIPTS_PATH
\/
start.sh
\"
/}
PW_NAME_D_ICON[
"
$AMOUNT_GENERATE_BUTTONS
"
]=
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]//Exec=env \
"
$PORT_SCRIPTS_PATH
\/
start.sh
\"
/}
sed -i "
s
|Exec=env \
"
$PORT_SCRIPTS_PATH
/start.sh
\"
|Exec=flatpak run ru.linux_gaming.PortProton|"
"
$desktop_file
"
sed -i "
s
|Exec=env \
"
$PORT_SCRIPTS_PATH
/start.sh
\"
|Exec=flatpak run ru.linux_gaming.PortProton|"
"
$desktop_file
"
fi
fi
while
IFS=
' '
read -r -a line2 ; do
while read -r -a line2 ; do
if [[ \
"
${
line2
[0]//#@_@#/
}
\"
== "
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]
}
" ]] ; then
if [[ \
"
${
line2
[0]//#@_@#/
}
\"
== "
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]
}
" ]] ; then
PW_GAME_TIME["
$AMOUNT_GENERATE_BUTTONS
"]=
${
line2
[2]
}
PW_GAME_TIME["
$AMOUNT_GENERATE_BUTTONS
"]=
${
line2
[2]
}
break
break
...
@@ -643,9 +643,9 @@ else
...
@@ -643,9 +643,9 @@ else
done < "
$PORT_WINE_TMP_PATH
/statistics
"
done < "
$PORT_WINE_TMP_PATH
/statistics
"
if [[
$SORT_WITH_TIME
== enabled ]] && [[
${
line2
[3]
}
== NEW_DESKTOP ]] ; then
if [[
$SORT_WITH_TIME
== enabled ]] && [[
${
line2
[3]
}
== NEW_DESKTOP ]] ; then
sed -i "
s
/
${
line2
[1]
}
${
line2
[2]
}
NEW_DESKTOP/
${
line2
[1]
}
${
line2
[2]
}
OLD_DESKTOP/
" "
$PORT_WINE_TMP_PATH
/statistics
"
sed -i "
s
/
${
line2
[1]
}
${
line2
[2]
}
NEW_DESKTOP/
${
line2
[1]
}
${
line2
[2]
}
OLD_DESKTOP/
" "
$PORT_WINE_TMP_PATH
/statistics
"
IFS=' ' read -r -a PW_AMOUNT_NEW_DESKTOP <<< "
${
PW_AMOUNT_NEW_DESKTOP
[*]
}
$AMOUNT_GENERATE_BUTTONS
"
PW_AMOUNT_NEW_DESKTOP+=("
$AMOUNT_GENERATE_BUTTONS
")
else
else
IFS=' ' read -r -a PW_AMOUNT_OLD_DESKTOP <<< "
${
PW_AMOUNT_OLD_DESKTOP
[*]
}
$AMOUNT_GENERATE_BUTTONS
"
PW_AMOUNT_OLD_DESKTOP+=("
$AMOUNT_GENERATE_BUTTONS
")
fi
fi
(( AMOUNT_GENERATE_BUTTONS++ ))
(( AMOUNT_GENERATE_BUTTONS++ ))
fi
fi
...
@@ -758,7 +758,7 @@ else
...
@@ -758,7 +758,7 @@ else
# AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже)
# AI_TOP_GAMES используется для сортировки автоинсталлов (работает на эмуляторы тоже)
AI_AMOUNT_GAMES
=
"0"
&&
AI_AMOUNT_EMULS
=
"0"
&&
AI_AMOUNT_ARRAY
=
"0"
AI_AMOUNT_GAMES
=
"0"
&&
AI_AMOUNT_EMULS
=
"0"
&&
AI_AMOUNT_ARRAY
=
"0"
for
ai_file
in
"
$PORT_SCRIPTS_PATH
"
/pw_autoinstall/
*
;
do
for
ai_file
in
"
$PORT_SCRIPTS_PATH
"
/pw_autoinstall/
*
;
do
while
IFS
=
read
-r
line
;
do
while
read
-r
line
;
do
[[
$line
=
~
"##########"
]]
&&
break
[[
$line
=
~
"##########"
]]
&&
break
[[
$line
=
~
"# type: "
]]
&&
AI_TYPE[
"
$AI_AMOUNT_ARRAY
"
]=
"
${
line
//# type
:
/
}
"
[[
$line
=
~
"# type: "
]]
&&
AI_TYPE[
"
$AI_AMOUNT_ARRAY
"
]=
"
${
line
//# type
:
/
}
"
[[
$line
=
~
"# name: "
]]
&&
AI_NAME[
"
$AI_AMOUNT_ARRAY
"
]=
"
${
line
//# name
:
/
}
"
[[
$line
=
~
"# name: "
]]
&&
AI_NAME[
"
$AI_AMOUNT_ARRAY
"
]=
"
${
line
//# name
:
/
}
"
...
@@ -771,14 +771,14 @@ else
...
@@ -771,14 +771,14 @@ else
done
<
"
$ai_file
"
done
<
"
$ai_file
"
AI_FILE
=
"
${
ai_file
//
"
$PORT_SCRIPTS_PATH
/pw_autoinstall/"
/
}
"
AI_FILE
=
"
${
ai_file
//
"
$PORT_SCRIPTS_PATH
/pw_autoinstall/"
/
}
"
AI_FILE_CHECK
=
"
$AI_FILE
=
$AI_AMOUNT_ARRAY
"
AI_FILE_CHECK
=
"
$AI_FILE
=
$AI_AMOUNT_ARRAY
"
IFS
=
' '
read
-r
-a
AI_FILE_ARRAY
<<<
"
${
AI_FILE_ARRAY
[*]
}
$AI_FILE
"
AI_FILE_ARRAY+
=(
"
$AI_FILE
"
)
if
[[
$AI_TOP_GAMES
=
~
${
AI_FILE_CHECK
//=*/
}
]]
;
then
if
[[
$AI_TOP_GAMES
=
~
${
AI_FILE_CHECK
//=*/
}
]]
;
then
IFS
=
' '
read
-r
-a
AI_TRUE_FILE
<<<
"
${
AI_TRUE_FILE
[*]
}
$AI_FILE_CHECK
"
AI_TRUE_FILE+
=(
"
$AI_FILE_CHECK
"
)
else
else
if
[[
${
AI_NAME
[
"
$AI_AMOUNT_ARRAY
"
]
}
=
~
\(
ENG
\)
]]
;
then
if
[[
${
AI_NAME
[
"
$AI_AMOUNT_ARRAY
"
]
}
=
~
\(
ENG
\)
]]
;
then
IFS
=
' '
read
-r
-a
AI_FILE_ENG
<<<
"
${
AI_FILE_ENG
[*]
}
$AI_AMOUNT_ARRAY
"
AI_FILE_ENG+
=(
"
$AI_AMOUNT_ARRAY
"
)
else
else
IFS
=
' '
read
-r
-a
AI_FILE_UNSORTED
<<<
"
${
AI_FILE_UNSORTED
[*]
}
$AI_AMOUNT_ARRAY
"
AI_FILE_UNSORTED+
=(
"
$AI_AMOUNT_ARRAY
"
)
fi
fi
fi
fi
((
AI_AMOUNT_ARRAY++
))
((
AI_AMOUNT_ARRAY++
))
...
@@ -786,8 +786,9 @@ else
...
@@ -786,8 +786,9 @@ else
for
ai_sort
in
$AI_TOP_GAMES
;
do
for
ai_sort
in
$AI_TOP_GAMES
;
do
if
[[
${
AI_TRUE_FILE
[*]
}
=
~
$ai_sort
]]
;
then
if
[[
${
AI_TRUE_FILE
[*]
}
=
~
$ai_sort
]]
;
then
AI_TRUE_FILE_NEW
=(
${
AI_TRUE_FILE
[@]//
$ai_sort
=/
}
)
AI_TRUE_FILE_NEW
=(
"
${
AI_TRUE_FILE
[@]//
$ai_sort
=/
}
"
)
AI_FILE_SORTED+
=(
${
AI_TRUE_FILE_NEW
[@]//*=*/
}
)
AI_TRUE_FILE_NEW
=(
"
${
AI_TRUE_FILE_NEW
[*]//*=*/
}
"
)
AI_FILE_SORTED+
=(
"
${
AI_TRUE_FILE_NEW
[*]// /
}
"
)
fi
fi
done
done
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment