SudoNano commited on
Commit
b777984
1 Parent(s): 4f1f162

add StartWine script

Browse files
Files changed (1) hide show
  1. StartWine_v403 +354 -0
StartWine_v403 ADDED
@@ -0,0 +1,354 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ ################################################################################
3
+
4
+ export SW_GIT_VER="403"
5
+ export UTILS_GIT_VER="2.5"
6
+ export RUNTIME_GIT_VER="0.4"
7
+
8
+ [ ! -d "$HOME/.config" ] && \
9
+ mkdir -p "$HOME/.config"
10
+
11
+ if [ -f "$HOME/.config/swrc" ]; then
12
+ export START_WINE_PATH="$(cat "$HOME/.config/swrc")"
13
+ else
14
+ export START_WINE_PATH="$HOME/.local/share/StartWine"
15
+ fi
16
+
17
+ export SW_RUNTIME="${START_WINE_PATH}/data/runtime/sw_runtime"
18
+
19
+ if [ -d "${START_WINE_PATH}" ]; then
20
+ export DIRECTORY_EXIST="true"
21
+ else
22
+ export DIRECTORY_EXIST="false"
23
+ fi
24
+
25
+ [ ! -d "${START_WINE_PATH}/data/tmp" ] && \
26
+ mkdir -p "${START_WINE_PATH}/data/tmp"
27
+
28
+ [ -f "${START_WINE_PATH}/data/tools/utils/version" ] && \
29
+ export UTILS_VER="$(cat "${START_WINE_PATH}/data/tools/utils/version" | tr -d "[:alpha:][:punct:]")"
30
+
31
+ [ -f "${START_WINE_PATH}/data/runtime/version" ] && \
32
+ export RUNTIME_VER="$(cat "${START_WINE_PATH}/data/runtime/version" | tr -d "[:alpha:][:punct:]")"
33
+
34
+ [ -f "${START_WINE_PATH}/data/scripts/version" ] && \
35
+ export SCRIPT_VER="$(cat "${START_WINE_PATH}/data/scripts/version")"
36
+
37
+ export UTILS_FORMAT_VER="$(echo "${UTILS_GIT_VER}" | tr -d "[:alpha:][:punct:]")"
38
+ export RUNTIME_FORMAT_VER="$(echo "${RUNTIME_GIT_VER}" | tr -d "[:alpha:][:punct:]")"
39
+
40
+ try_download () {
41
+
42
+ export RED='\033[1;91m'
43
+ export BLUE='\033[1;94m'
44
+ export GREEN='\033[1;92m'
45
+ export RESETCOLOR='\033[1;00m'
46
+
47
+ [ ! -n "$(tty | grep -v 'not a' | grep -Eo 'tty|pts')" ] && \
48
+ export NOT_TERM=1 || export NOT_TERM=0
49
+
50
+ is_exist () {
51
+
52
+ command -v "$@" &>/dev/null
53
+
54
+ }
55
+
56
+ yn_case () {
57
+
58
+ while true ; do
59
+ read -p "$(echo -e "${RED}$1 ${GREEN}(y/n) ${BLUE}> $RESETCOLOR")" yn
60
+ case $yn in
61
+ [Yy] ) return 0 ;;
62
+ [Nn] ) return 1 ;;
63
+ esac
64
+ done
65
+
66
+ }
67
+
68
+ error_msg () {
69
+
70
+ echo -e "${RED}[ ERROR ][$(date +"%Y.%m.%d %T")]: $@ $RESETCOLOR"
71
+ if [ "$NOT_TERM" == 1 ]; then
72
+ notify-send -a 'StartWine Error' "$@" 2>/dev/null &
73
+ fi
74
+
75
+ }
76
+
77
+ rm_fail_dl () {
78
+
79
+ [ -f "$FILEDIR/$FILENAME" ] && \
80
+ rm -rf "$FILEDIR/$FILENAME" \
81
+ "$FILEDIR/$FILENAME"*.aria2
82
+
83
+ }
84
+
85
+ dl_ret () {
86
+
87
+ if [ "$1" != 0 ]; then
88
+ rm_fail_dl
89
+ dl_repeat && try_download "$URL" "$FILEDIR/$FILENAME" || return 1
90
+ else
91
+ return 0
92
+ fi
93
+
94
+ }
95
+
96
+ dl_repeat () {
97
+
98
+ DL_REP_TITLE="Download interrupted!"
99
+ DL_REP_TEXT="Failed to download : $FILENAME \nWould you like to repeat it?"
100
+
101
+ if [ "$NOT_TERM" != 1 ]; then
102
+ yn_case "$DL_REP_TEXT" || return 1
103
+ elif is_exist yad ; then
104
+ yad --image="dialog-error" --button="CANCEL:1" --center \
105
+ --button="REPEAT:0" --title="$DL_REP_TITLE" \
106
+ --text="$DL_REP_TEXT" --on-top --fixed
107
+ elif is_exist zenity ; then
108
+ zenity --question --title="$DL_REP_TITLE" --no-wrap --text="$DL_REP_TEXT"
109
+ else
110
+ return 1
111
+ fi
112
+
113
+ }
114
+
115
+ if [ -n "$1" ]; then
116
+ URL="$1"
117
+
118
+ if [ -n "$2" ]; then
119
+ FILEDIR="$(dirname "$2")"
120
+ FILENAME="$(basename "$2")"
121
+ else
122
+ FILEDIR="."
123
+ FILENAME="$(basename "$1")"
124
+ fi
125
+
126
+ [ ! -d "$FILEDIR" ] && \
127
+ mkdir -p "$FILEDIR"
128
+
129
+ if [ "$NOT_TERM" == 1 ] && (is_exist yad||is_exist zenity) ; then
130
+ set -o pipefail
131
+
132
+ dl_progress () {
133
+
134
+ [[ "$URL" =~ '&key=' ]] && local URL="$(echo "$URL"|sed "s|\&key=.*||g")"
135
+ [[ "$URL" =~ '&' && ! "$URL" =~ '&' ]] && local URL="$(echo "$URL"|sed "s|\&|\&|g")"
136
+ if is_exist zenity ; then
137
+ zenity --progress --text="Connecting to $URL" --width=650 --height=40 \
138
+ --auto-close --no-cancel --title="Download: $FILENAME"
139
+ elif is_exist yad ; then
140
+ yad --progress --percentage=0 --title="StartWine" --text="Download:\t$FILENAME\n$URL" \
141
+ --auto-close --no-escape --selectable-labels --auto-kill \
142
+ --center --on-top --fixed --no-buttons --skip-taskbar
143
+ else
144
+ return 1
145
+ fi
146
+
147
+ }
148
+
149
+ if is_exist aria2c ; then
150
+ aria2c -x 13 -s 13 --allow-overwrite --summary-interval=1 -o \
151
+ "$FILENAME" -d "$FILEDIR" "$URL"|stdbuf -o0 grep 'ETA'|\
152
+ sed -u 's/(.*)/ &/;s/(//;s/)//;s/\[//;s/\]//;s/%//;s/ETA//;s/:/ /g'|\
153
+ stdbuf -o0 awk '{print$3"\n#Downloading at "$2,$6,$7,$8}'|\
154
+ dl_progress
155
+ elif is_exist wget ; then
156
+ wget --no-check-certificate --content-disposition -t 3 -T 5 \
157
+ -w 0.5 "$URL" -O "$FILEDIR/$FILENAME"|& tr '\r' '\n'|\
158
+ sed -u 's/.* \([0-9]\+%\)\ \+\([0-9,.]\+.\) \(.*\)/\1\n#Downloading at \1\, \2\/s, ETA \3/; s/^20[0-9][0-9].*/#Done./'|\
159
+ dl_progress
160
+ elif is_exist curl ; then
161
+ curl --progress-bar --insecure --fail -L "$1" -o \
162
+ "$FILEDIR/$FILENAME" |& tr '\r' '\n'|sed -ur 's/[# ]+/#/g;'|\
163
+ dl_progress
164
+ else
165
+ error_msg "Downloader not found!"
166
+ exit 1
167
+ fi
168
+
169
+ dl_ret "${PIPESTATUS[0]}" || return 1
170
+
171
+ else
172
+
173
+ if is_exist aria2c ; then
174
+ aria2c -x 13 -s 13 --allow-overwrite -d "$FILEDIR" -o "$FILENAME" "$URL"
175
+ elif is_exist wget ; then
176
+ wget -q --show-progress --no-check-certificate --content-disposition \
177
+ -t 3 -T 5 -w 0.5 "$URL" -O "$FILEDIR/$FILENAME"
178
+ elif is_exist curl ; then
179
+ curl --progress-bar --insecure --fail -L "$URL" -o "$FILEDIR/$FILENAME"
180
+ else
181
+ error_msg "Downloader not found!"
182
+ exit 1
183
+ fi
184
+
185
+ dl_ret "$?" || return 1
186
+
187
+ fi
188
+ else
189
+ error_msg "Specify download URL!"
190
+ return 1
191
+ fi
192
+
193
+ }
194
+
195
+ try_get_wine_ver () {
196
+
197
+ url_list=(
198
+ "https://api.github.com/repos/Kron4ek/Wine-Builds/releases"
199
+ "https://api.github.com/repos/RusNor/Wine-Steam-Proton/releases"
200
+ "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases"
201
+ "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases"
202
+ )
203
+
204
+ grep_url() { grep 'browser_download_url'|grep -iEo 'https.*download.*\.tar\.gz|https.*download.*\.tar\.xz|https.*download.*\.tar\.zst'|sed "s/.*-x86.tar.xz//g" ; }
205
+
206
+ export staging_ver=$(curl -s "${url_list[0]}"|grep_url|tr -d '"'|tr '\n' ' ')
207
+ export steam_proton_ver=$(curl -s "${url_list[1]}"|grep_url|tr -d '"'|tr '\n' ' ')
208
+ export proton_ge_ver=$(curl -s "${url_list[2]}"|grep_url|tr -d '"'|tr '\n' ' ')
209
+ export lutris_ge_ver=$(curl -s "${url_list[3]}"|grep_url|tr -d '"'|tr '\n' ' ')
210
+
211
+ for staging in $staging_ver ; do
212
+ [[ $staging == *"staging-amd64"* && $staging != *"rc1"* ]] && \
213
+ staging_list+="$staging "
214
+ [[ $staging == *"staging-tkg-amd64"* && $staging != *"rc1"* ]] && \
215
+ staging_tkg_list+="$staging "
216
+ done
217
+
218
+ for lutris_ge in $lutris_ge_ver ; do
219
+ [[ "$lutris_ge" != *"LoL"* && "$lutris_ge" != *"lol"* ]] && \
220
+ lutris_ge_list+="$lutris_ge "
221
+ done
222
+
223
+ echo "{" > "${START_WINE_PATH}/data/scripts/wine_version.json"
224
+ echo "\"wine_staging\": \"${staging_list[*]}\"," >> "${START_WINE_PATH}/data/scripts/wine_version.json"
225
+ echo "\"wine_steam_proton\": \"$steam_proton_ver\"," >> "${START_WINE_PATH}/data/scripts/wine_version.json"
226
+ echo "\"wine_proton_ge\": \"$proton_ge_ver\"," >> "${START_WINE_PATH}/data/scripts/wine_version.json"
227
+ echo "\"wine_staging_tkg\": \"${staging_tkg_list[*]}\"," >> "${START_WINE_PATH}/data/scripts/wine_version.json"
228
+ echo "\"wine_lutris_ge\": \"${lutris_ge_list[*]}\"" >> "${START_WINE_PATH}/data/scripts/wine_version.json"
229
+ echo "}" >> "${START_WINE_PATH}/data/scripts/wine_version.json"
230
+
231
+ }
232
+
233
+ if [[ "$UTILS_VER" -lt "$UTILS_FORMAT_VER" ]]; then
234
+ [ -d "${START_WINE_PATH}/data/tools/utils" ] && \
235
+ rm -rf "${START_WINE_PATH}/data/tools/utils"
236
+ fi
237
+
238
+ if [[ "$RUNTIME_VER" -lt "$RUNTIME_FORMAT_VER" ]]; then
239
+
240
+ export URL_RUNTIME_LIST=(
241
+ "https://huggingface.co/SudoNano/sw_repo/resolve/main/runtime/sw_runtime_v$RUNTIME_GIT_VER.iso?download=true"
242
+ "https://github.com/RusNor/sw_runtime/releases/download/sw_runtime_v$RUNTIME_GIT_VER/sw_runtime_v$RUNTIME_GIT_VER.iso"
243
+ )
244
+
245
+ [ ! -d "${START_WINE_PATH}/data/runtime" ] && \
246
+ mkdir -p "${START_WINE_PATH}/data/runtime"
247
+
248
+ [ -f "${SW_RUNTIME}" ] && \
249
+ rm -rf "${SW_RUNTIME}"
250
+
251
+ try_download "${URL_RUNTIME_LIST[0]}" "${SW_RUNTIME}" \
252
+ || try_download "${URL_RUNTIME_LIST[1]}" "${SW_RUNTIME}" &&
253
+ chmod +x "${SW_RUNTIME}"
254
+
255
+ [ -f "${SW_RUNTIME}" ] && \
256
+ echo "${RUNTIME_GIT_VER}" > "${START_WINE_PATH}/data/runtime/version"
257
+
258
+ fi
259
+
260
+ if [[ "$SCRIPT_VER" -lt "$SW_GIT_VER" ]]; then
261
+
262
+ if [ -x "$(command -v gsettings)" ]; then
263
+
264
+ [ ! -d "$HOME/.local/share/icons" ] && \
265
+ mkdir -p "$HOME/.local/share/icons"
266
+
267
+ export THEME_NAME=$(gsettings get org.gnome.desktop.interface icon-theme | sed -r "s/'//g" | sed -r "s/-.*//g")
268
+ COPY_THEMES="$(ls -d "/usr/share/icons/$THEME_NAME"*)"
269
+ for COPY_THEME in $COPY_THEMES ; do
270
+ [ ! -d "$HOME/.local/share/icons/$(basename $COPY_THEME)" ] && \
271
+ cp -rf "$COPY_THEME" "$HOME/.local/share/icons" && \
272
+ echo "$(basename $COPY_THEME) Copy completed successfully"
273
+ done
274
+ fi
275
+
276
+ [ -f "${START_WINE_PATH}/data/scripts/sw_menu.json" ] && \
277
+ cp -f "${START_WINE_PATH}/data/scripts/sw_menu.json" "${START_WINE_PATH}/data/tmp"
278
+
279
+ [ -d "${START_WINE_PATH}/data/scripts" ] && \
280
+ rm -rf "${START_WINE_PATH}/data/scripts"
281
+
282
+ [ -d "${START_WINE_PATH}/data/img/gui_icons" ] && \
283
+ rm -rf "${START_WINE_PATH}/data/img/gui_icons"
284
+
285
+ [ -d "${START_WINE_PATH}/data/img/sw_themes/sounds" ] && \
286
+ rm -rf "${START_WINE_PATH}/data/img/sw_themes/sounds"
287
+
288
+ [ -d "${START_WINE_PATH}/data/img/sw_themes/css/assets" ] && \
289
+ rm -rf "${START_WINE_PATH}/data/img/sw_themes/css/assets"
290
+
291
+ [ -d "${START_WINE_PATH}/data/img/sw_themes/css/dark" ] && \
292
+ rm -rf "${START_WINE_PATH}/data/img/sw_themes/css/dark"
293
+
294
+ [ -d "${START_WINE_PATH}/data/img/sw_themes/css/light" ] && \
295
+ rm -rf "${START_WINE_PATH}/data/img/sw_themes/css/light"
296
+
297
+ [ -f "${START_WINE_PATH}/data/img/sw_themes/css/default.css" ] && \
298
+ rm -rf "${START_WINE_PATH}/data/img/sw_themes/css/default.css"
299
+
300
+ [ -d "${START_WINE_PATH}/data/img/launcher_icons" ] && \
301
+ rm -rf "${START_WINE_PATH}/data/img/launcher_icons"
302
+
303
+ [ -f "$HOME/.local/share/applications/StartWine.desktop" ] && \
304
+ rm -rf "$HOME/.local/share/applications/StartWine.desktop"
305
+
306
+ [ -f "$HOME/.local/share/applications/StartWine-Run.desktop" ] && \
307
+ rm -rf "$HOME/.local/share/applications/StartWine-Run.desktop"
308
+
309
+ export START_WINE_EXTRACT="$(dirname "${START_WINE_PATH}")"
310
+
311
+ #export URL_VER="https://github.com/RusNor/StartWine-Launcher/releases/download/StartWine_v$SW_GIT_VER/StartWine_v$SW_GIT_VER.tar.xz"
312
+ export URL_VER="https://huggingface.co/SudoNano/sw_repo/resolve/main/StartWine_v$SW_GIT_VER.tar.xz?download=true"
313
+
314
+ try_download "${URL_VER}" "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz" &&
315
+ echo "Download complete succsessfully."
316
+
317
+ if [ -f "${SW_RUNTIME}" ]; then
318
+
319
+ "${SW_RUNTIME}" tar -xvf "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz" -C "${START_WINE_EXTRACT}"
320
+
321
+ [ -f "${START_WINE_PATH}/data/tmp/sw_menu.json" ] && \
322
+ cp -f "${START_WINE_PATH}/data/tmp/sw_menu.json" "${START_WINE_PATH}/data/scripts"
323
+
324
+ [ -f "${START_WINE_PATH}/data/tmp/sw_menu.json" ] && \
325
+ rm -rf "${START_WINE_PATH}/data/tmp/sw_menu.json"
326
+
327
+ [ -d "${START_WINE_PATH}/data/tmp/StartWine" ] && \
328
+ rm -rf "${START_WINE_PATH}/data/tmp/StartWine"
329
+
330
+ [ -f "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz" ] && \
331
+ rm -rf "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz"
332
+
333
+ try_get_wine_ver
334
+
335
+ if [ $DIRECTORY_EXIST == "true" ]; then
336
+ "${SW_RUNTIME}" "${START_WINE_PATH}/data/scripts/sw_start" "$@" ; exit 0
337
+ else
338
+ "${SW_RUNTIME}" "${START_WINE_PATH}/data/scripts/sw_start" --path "${START_WINE_PATH}" "$@" 2>/dev/null ; exit 0
339
+ fi
340
+ else
341
+ [ -d "${START_WINE_PATH}/data/tmp/StartWine" ] && \
342
+ rm -rf "${START_WINE_PATH}/data/tmp/StartWine"
343
+
344
+ [ -f "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz" ] && \
345
+ rm -rf "${START_WINE_PATH}/data/tmp/StartWine_v$SW_GIT_VER.tar.xz"
346
+
347
+ echo "ERROR: $SW_RUNTIME not exists!"
348
+ fi
349
+ else
350
+ "${SW_RUNTIME}" "${START_WINE_PATH}/data/scripts/sw_start" "$@" ; exit 0
351
+
352
+ fi
353
+
354
+ ##############################--Archive--#######################################