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
cb8f27e6
Commit
cb8f27e6
authored
Jan 19, 2025
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resize_png can now create multiple icons at once
parent
d91580f1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
95 additions
and
42 deletions
+95
-42
functions_helper
data_from_portwine/scripts/functions_helper
+76
-27
start.sh
data_from_portwine/scripts/start.sh
+19
-15
No files found.
data_from_portwine/scripts/functions_helper
View file @
cb8f27e6
...
@@ -975,10 +975,25 @@ debug_timer () {
...
@@ -975,10 +975,25 @@ debug_timer () {
fi
fi
}
}
fix_icon_name_png
()
{
if
[[
$1
=
~
[
\!\%\$\&\<
]
]]
;
then
local
ICON_NAME_OLD
=
$1
local
ICON_NAME_NEW
=
$ICON_NAME_OLD
local
ICON_NAME_REGEX
=(
\!
%
\$
\&
\<
)
for
i
in
"
${
ICON_NAME_REGEX
[@]
}
"
;
do
ICON_NAME_NEW
=
"
${
ICON_NAME_NEW
//
$i
/
}
"
done
sed
-i
"s|Icon=
$ICON_NAME_OLD
|Icon=
$ICON_NAME_NEW
|"
"
$2
"
return
0
else
return
1
fi
}
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
# Параллельное создание базы по времени после завершения приложения
# Параллельное создание базы по времени после завершения приложения
search_desktop_file
()
{
search_desktop_file
()
{
local
desktop_file desktop_file_new line1 line2 FILE_SHA256SUM_ARRAY EXEC_DESKTOP BROKEN_LINE FILE_SHA256SUM_FOUND FILE_SHA256SUM_NOT_FOUND
local
desktop_file desktop_file_new line1 line2 FILE_SHA256SUM_ARRAY EXEC_DESKTOP
ICON_NAME
BROKEN_LINE FILE_SHA256SUM_FOUND FILE_SHA256SUM_NOT_FOUND
if
[[
-z
$FILE_SHA256SUM
]]
;
then
if
[[
-z
$FILE_SHA256SUM
]]
;
then
read
-r
-a
FILE_SHA256SUM_ARRAY < <
(
sha256sum
"
$portwine_exe
"
)
read
-r
-a
FILE_SHA256SUM_ARRAY < <
(
sha256sum
"
$portwine_exe
"
)
FILE_SHA256SUM
=
${
FILE_SHA256SUM_ARRAY
[0]
}
FILE_SHA256SUM
=
${
FILE_SHA256SUM_ARRAY
[0]
}
...
@@ -996,7 +1011,9 @@ search_desktop_file () {
...
@@ -996,7 +1011,9 @@ search_desktop_file () {
EXEC_DESKTOP
=
${
line1
//Exec=env \
"
$PORT_SCRIPTS_PATH
\/
start.sh
\"
/}
EXEC_DESKTOP
=
${
line1
//Exec=env \
"
$PORT_SCRIPTS_PATH
\/
start.sh
\"
/}
fi
fi
fi
fi
[[
$line1
=~ ^Icon= ]] && ICON_NAME=
${
line1
//Icon=/
}
done < "
$desktop_file
"
done < "
$desktop_file
"
fix_icon_name_png "
$ICON_NAME
" "
$desktop_file
"
if [[
$portwine_exe
== "
${
EXEC_DESKTOP
//\
"/}"
]] ; then
if [[
$portwine_exe
== "
${
EXEC_DESKTOP
//\
"/}"
]] ; then
DESKTOP_CORRECT_FILE=
"
$desktop_file
"
DESKTOP_CORRECT_FILE=
"
$desktop_file
"
break
break
...
@@ -2982,9 +2999,15 @@ pw_create_gui_png () {
...
@@ -2982,9 +2999,15 @@ pw_create_gui_png () {
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
edit_db_from_gui PORTPROTON_NAME FILE_DESCRIPTION
fi
fi
resize_png
"
$portwine_exe
"
"
${
PORTPROTON_NAME
}
"
"128"
resize_png
"
$portwine_exe
"
"
${
PORTPROTON_NAME
}
"
"
48"
"
128"
PORTPROTON_NAME_PNG
=
"
${
PORTPROTON_NAME
// /_
}
"
PORTPROTON_NAME_PNG
=
"
${
PORTPROTON_NAME
// /_
}
"
if
[[
$PORTPROTON_NAME_PNG
=
~
[
\!\%\$\&\<
]
]]
;
then
local
ICON_NAME_REGEX
=(
\!
%
\$
\&
\<
)
for
i
in
"
${
ICON_NAME_REGEX
[@]
}
"
;
do
PORTPROTON_NAME_PNG
=
"
${
PORTPROTON_NAME_PNG
//
$i
/
}
"
done
fi
if
[[
-z
"
${
PW_ICON_FOR_YAD
}
"
]]
;
then
if
[[
-z
"
${
PW_ICON_FOR_YAD
}
"
]]
;
then
if
[[
-n
"
$(
file
"
${
PORT_WINE_PATH
}
/data/img/
${
PORTPROTON_NAME_PNG
}
.png"
|
grep
"
${
PW_RESIZE_TO
}
x
${
PW_RESIZE_TO
}
"
)
"
]]
;
then
if
[[
-n
"
$(
file
"
${
PORT_WINE_PATH
}
/data/img/
${
PORTPROTON_NAME_PNG
}
.png"
|
grep
"
${
PW_RESIZE_TO
}
x
${
PW_RESIZE_TO
}
"
)
"
]]
;
then
export
PW_ICON_FOR_YAD
=
"
${
PORT_WINE_PATH
}
/data/img/
${
PORTPROTON_NAME_PNG
}
.png"
export
PW_ICON_FOR_YAD
=
"
${
PORT_WINE_PATH
}
/data/img/
${
PORTPROTON_NAME_PNG
}
.png"
...
@@ -6074,35 +6097,49 @@ resize_png () {
...
@@ -6074,35 +6097,49 @@ resize_png () {
print_error "no argument specified for resize_png"
print_error "no argument specified for resize_png"
return 1
return 1
else
else
local RESIZE_FILE
="$1"
local RESIZE_FILE
RESIZE_NAME_PNG resize_to resize_to_helper
local RESIZE_NAME_PNG="${2// /_}
"
RESIZE_FILE="$1
"
local RESIZE_TO="$3
"
RESIZE_NAME_PNG="${2// /_}
"
fi
fi
if [[ -f "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}.png" ]] \
for resize_to in "${@:3}" ; do
|| [[ ! -f "${RESIZE_FILE}" ]] \
if [[ $resize_to == 128 ]]
|| [[ ! ${RESIZE_FILE,,} =~ .exe$ ]]
then resize_to_helper=""
then
else resize_to_helper="_$resize_to"
return 0
fi
fi
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
if check_flatpak ; then
if [[ $RESIZE_NAME_PNG =~ [\!\%\$\&\<] ]] ; then
if ! timeout 3 \
local ICON_NAME_REGEX=(\! % \$ \& \<)
exe-thumbnailer --force-resize -s "$RESIZE_TO" "$(readlink -f "${RESIZE_FILE}")" "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}.png" \
for i in "${ICON_NAME_REGEX[@]}" ; do
&& [[ "$ALPINE_FP" != "1" ]]
RESIZE_NAME_PNG="${RESIZE_NAME_PNG//$i/}"
done
fi
if [[ -f "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}${resize_to_helper}.png" ]] \
|| [[ ! -f "${RESIZE_FILE}" ]] \
|| [[ ! ${RESIZE_FILE,,} =~ .exe$ ]]
then
then
print_error "exe-thumbnailer - broken!"
return 0
fi
fi
else
print_warning "use portable exe-thumbnailer"
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" \
"${PW_WINELIB}/runtime/files/bin/python3.9" \
if check_flatpak ; then
"${PW_PLUGINS_PATH}/portable/bin/exe-thumbnailer" --force-resize -s "$RESIZE_TO" "$(readlink -f "${RESIZE_FILE}")" "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}.png"
if ! timeout 3 \
fi
exe-thumbnailer --force-resize -s "$resize_to" "$(readlink -f "${RESIZE_FILE}")" "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}${resize_to_helper}.png" \
return 0
&& [[ "$ALPINE_FP" != "1" ]]
then
print_error "exe-thumbnailer - broken!"
fi
else
print_warning "use portable exe-thumbnailer"
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" --force-resize -s "$resize_to" "$(readlink -f "${RESIZE_FILE}")" "${PORT_WINE_PATH}/data/img/${RESIZE_NAME_PNG}${resize_to_helper}.png"
fi
done
}
}
# GUI CREATE SHORTCUT
# GUI CREATE SHORTCUT
...
@@ -6122,6 +6159,12 @@ portwine_create_shortcut () {
...
@@ -6122,6 +6159,12 @@ portwine_create_shortcut () {
export name_desktop="$PW_NAME_DESKTOP_PROXY"
export name_desktop="$PW_NAME_DESKTOP_PROXY"
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
if [[ $name_desktop_png =~ [\!\%\$\&\<] ]] ; then
local ICON_NAME_REGEX=(\! % \$ \& \<)
for i in "${ICON_NAME_REGEX[@]}" ; do
name_desktop_png="${name_desktop_png//$i/}"
done
fi
OUTPUT=$("${pw_yad}" --title="${translations[Choices]}" --form \
OUTPUT=$("${pw_yad}" --title="${translations[Choices]}" --form \
--gui-type="settings-shortcut" \
--gui-type="settings-shortcut" \
...
@@ -6287,7 +6330,7 @@ pw_auto_create_shortcut () {
...
@@ -6287,7 +6330,7 @@ pw_auto_create_shortcut () {
print_info "Created link for: $link_name"
print_info "Created link for: $link_name"
PORTPROTON_NAME="$link_name"
PORTPROTON_NAME="$link_name"
export portwine_exe="$exe_path"
export portwine_exe="$exe_path"
resize_png "$portwine_exe" "${PORTPROTON_NAME}" "128"
resize_png "$portwine_exe" "${PORTPROTON_NAME}" "
48" "
128"
export PW_NO_RESTART_PPDB=1
export PW_NO_RESTART_PPDB=1
portwine_create_shortcut
portwine_create_shortcut
fi
fi
...
@@ -6327,6 +6370,12 @@ portwine_change_shortcut () {
...
@@ -6327,6 +6370,12 @@ portwine_change_shortcut () {
pw_create_gui_png
pw_create_gui_png
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
[[ -z "${name_desktop_png}" ]] && name_desktop_png="${PORTPROTON_NAME// /_}"
if [[ $name_desktop_png =~ [\!\%\$\&\<] ]] ; then
local ICON_NAME_REGEX=(\! % \$ \& \<)
for i in "${ICON_NAME_REGEX[@]}" ; do
name_desktop_png="${name_desktop_png//$i/}"
done
fi
OUTPUT=$("${pw_yad}" --title="${translations[Choices]}" --form \
OUTPUT=$("${pw_yad}" --title="${translations[Choices]}" --form \
--gui-type="settings-shortcut" \
--gui-type="settings-shortcut" \
...
...
data_from_portwine/scripts/start.sh
View file @
cb8f27e6
...
@@ -645,6 +645,12 @@ else
...
@@ -645,6 +645,12 @@ else
fi
fi
[[
$line1
=~ ^Icon= ]] && PW_ICON_PATH["
$AMOUNT_GENERATE_BUTTONS
"]=
${
line1
//Icon=/
}
[[
$line1
=~ ^Icon= ]] && PW_ICON_PATH["
$AMOUNT_GENERATE_BUTTONS
"]=
${
line1
//Icon=/
}
done < "
$desktop_file
"
done < "
$desktop_file
"
if fix_icon_name_png "
${
PW_ICON_PATH
[
"
$AMOUNT_GENERATE_BUTTONS
"
]
}
" "
$desktop_file
" ; then
ICON_NAME_REGEX=(
\!
%
\$
\&
\<
)
for i in "
${
ICON_NAME_REGEX
[@]
}
" ; do
PW_ICON_PATH["
$AMOUNT_GENERATE_BUTTONS
"]="
${
PW_ICON_PATH
[
"
$AMOUNT_GENERATE_BUTTONS
"
]//
$i
/
}
"
done
fi
PW_ALL_DF["
$AMOUNT_GENERATE_BUTTONS
"]="
$desktop_file_new
"
PW_ALL_DF["
$AMOUNT_GENERATE_BUTTONS
"]="
$desktop_file_new
"
# Для конвертации существующих .desktop файлов flatpak в натив и наоборот
# Для конвертации существующих .desktop файлов flatpak в натив и наоборот
if [[
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]
}
=~ ^"
Exec
=flatpak run ru.linux_gaming.PortProton
" ]] ; then
if [[
${
PW_NAME_D_ICON
[
"
$AMOUNT_GENERATE_BUTTONS
"
]
}
=~ ^"
Exec
=flatpak run ru.linux_gaming.PortProton
" ]] ; then
...
@@ -702,20 +708,6 @@ else
...
@@ -702,20 +708,6 @@ else
for dp in
"
${
PW_AMOUNT_NEW_DESKTOP
[@]
}
"
"
${
PW_AMOUNT_OLD_DESKTOP
[@]
}
"
; do
for dp in
"
${
PW_AMOUNT_NEW_DESKTOP
[@]
}
"
"
${
PW_AMOUNT_OLD_DESKTOP
[@]
}
"
; do
PW_DESKTOP_FILES=
"
${
PW_ALL_DF
[
$dp
]
}
"
PW_DESKTOP_FILES=
"
${
PW_ALL_DF
[
$dp
]
}
"
PW_DESKTOP_FILES_SHOW=
"
$PW_DESKTOP_FILES
"
PW_DESKTOP_FILES_SHOW=
"
$PW_DESKTOP_FILES
"
PW_ICON_PATH[dp]=
${
PW_ICON_PATH
[dp]%.png
}
PW_NAME_D_ICON_NEW=
"
${
PW_NAME_D_ICON
[dp]//\
"/}"
PW_NAME_D_ICON_128=
"
${
PW_ICON_PATH
[dp]
}
"
resize_png
"
$PW_NAME_D_ICON_NEW
"
"
${
PW_NAME_D_ICON_128
//
"
${
PORT_WINE_PATH
}
/data/img/"
/
}
"
"128"
if [[
$PW_DESKTOP_FILES
=~ [\!\%\
$\
&\<] ||
${
PW_ICON_PATH
[dp]
}
=~ [\!\%\
$\
&\<] ]] ; then
PW_DESKTOP_FILES_SHOW_REGEX=(\! % \
$
\& \<)
for i in
"
${
PW_DESKTOP_FILES_SHOW_REGEX
[@]
}
"
; do
PW_DESKTOP_FILES_SHOW=
"
${
PW_DESKTOP_FILES_SHOW
//
$i
/
}
"
PW_ICON_PATH[dp]=
"
${
PW_ICON_PATH
[dp]//
$i
/
}
"
done
fi
PW_NAME_D_ICON_48=
"
${
PW_ICON_PATH
[dp]
}
_48"
resize_png
"
$PW_NAME_D_ICON_NEW
"
"
${
PW_NAME_D_ICON_48
//
"
${
PORT_WINE_PATH
}
/data/img/"
/
}
"
"48"
if [[
$PW_DESKTOP_FILES
=~ [\(\)\!\
$\
%\&\
`
\'\"\>\<\\\|\;
]
]]
;
then
if [[
$PW_DESKTOP_FILES
=~ [\(\)\!\
$\
%\&\
`
\'\"\>\<\\\|\;
]
]]
;
then
PW_DESKTOP_FILES_REGEX
=(
\(
\)
\!
\$
%
\&
\`
\'
\"
\>
\<
\\
\|
\;
)
PW_DESKTOP_FILES_REGEX
=(
\(
\)
\!
\$
%
\&
\`
\'
\"
\>
\<
\\
\|
\;
)
...
@@ -726,7 +718,19 @@ else
...
@@ -726,7 +718,19 @@ else
done
done
fi
fi
PW_GENERATE_BUTTONS+
=
"--field=
$(
print_wrapped
"
${
PW_DESKTOP_FILES_SHOW
//
".desktop"
/
""
}
"
"25"
"..."
)
!
${
PW_NAME_D_ICON_48
}
.png!:FBTNR%@bash -c
\"
button_click --desktop "
${
PW_DESKTOP_FILES
// /#@_@#
}
"
\"
%"
if
[[
$PW_DESKTOP_FILES_SHOW
=
~
[
\!\%\$\&\<
]
]]
;
then
PW_DESKTOP_FILES_SHOW_REGEX
=(
\!
%
\$
\&
\<
)
for
i
in
"
${
PW_DESKTOP_FILES_SHOW_REGEX
[@]
}
"
;
do
PW_DESKTOP_FILES_SHOW
=
"
${
PW_DESKTOP_FILES_SHOW
//
$i
/
}
"
done
fi
PW_ICON_PATH[dp]
=
${
PW_ICON_PATH
[dp]%.png
}
PW_NAME_D_ICON_NEW
=
"
${
PW_NAME_D_ICON
[dp]//\
"/}"
resize_png
"
$PW_NAME_D_ICON_NEW
"
"
${
PW_ICON_PATH
[dp]//
"
${
PORT_WINE_PATH
}
/data/img/"
/
}
"
"48"
"128"
PW_GENERATE_BUTTONS+=
"--field=
$(
print_wrapped
"
${
PW_DESKTOP_FILES_SHOW
//
".desktop"
/
""
}
"
"25"
"..."
)
!
${
PW_ICON_PATH
[dp]
}
_48.png!:FBTNR%@bash -c
\"
button_click --desktop "
${
PW_DESKTOP_FILES
// /#@_@#
}
"
\"
%"
done
done
if [[
$AMOUNT_GENERATE_BUTTONS
== 1 ]] ; then
if [[
$AMOUNT_GENERATE_BUTTONS
== 1 ]] ; then
...
...
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