mirror of
https://github.com/the-sane/lug-helper.git
synced 2025-07-01 09:01:00 +00:00
Compare commits
24 Commits
v1.18
...
1ae94e9b50
Author | SHA1 | Date | |
---|---|---|---|
1ae94e9b50 | |||
747c799a8b | |||
ba907c44bf | |||
e7a3b30564 | |||
38e646578a | |||
d0dc44dcd9 | |||
9986f1fe8c | |||
bc11c184d2 | |||
02a79aa859 | |||
2eabf019a6 | |||
bdb71475a8 | |||
c627666705 | |||
65ac8ae4cd | |||
b4d9598fe5 | |||
dd81f24be3 | |||
f99fe9b996 | |||
dffa971dc1 | |||
fe1733542d | |||
d6d28f1481 | |||
eb48d00396 | |||
f072378617 | |||
d6376ff9fa | |||
28051a135a | |||
44b1332782 |
@ -67,6 +67,9 @@ From Source:
|
||||
2. Extract it!
|
||||
3. Run it!
|
||||
|
||||
Dependencies: bash, coreurtils, curl, polkit (those should be installed by default on most distributions)
|
||||
Optional Dependencies: zenity (for GUI), zstd (to extract some runners)
|
||||
|
||||
Arch Linux: https://aur.archlinux.org/packages/lug-helper/
|
||||
|
||||
## Contributors:
|
||||
|
@ -65,6 +65,12 @@ if [ ! -x "$(command -v curl)" ]; then
|
||||
notify-send "lug-helper" "The required package 'curl' was not found on this system.\n" --icon=dialog-warning
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "$(command -v zstd)" ]; then
|
||||
# Print to stderr and also try warning the user through notify-send
|
||||
printf "lug-helper.sh: The package 'zstd' was not found on this system. It is required for extracting some runner packages.\n" 1>&2
|
||||
notify-send "lug-helper" "The package 'zstd' was not found on this system. It is required for extracting some runner packages.\n" --icon=dialog-warning
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "$(command -v mktemp)" ] || [ ! -x "$(command -v sort)" ] || [ ! -x "$(command -v basename)" ] || [ ! -x "$(command -v realpath)" ] || [ ! -x "$(command -v dirname)" ]; then
|
||||
# Print to stderr and also try warning the user through notify-send
|
||||
printf "lug-helper.sh: One or more required packages were not found on this system.\nPlease check that the following coreutils packages are installed:\n- mktemp\n- sort\n- basename\n- realpath\n- dirname\n" 1>&2
|
||||
@ -102,6 +108,8 @@ install_path="drive_c/Program Files/Roberts Space Industries/$sc_base_dir"
|
||||
live_dir="LIVE"
|
||||
ptu_dir="PTU"
|
||||
|
||||
# AppData directory
|
||||
appdata_path="drive_c/users/$USER/AppData/Local/Star Citizen"
|
||||
# Remaining directory paths are set at the end of the getdirs() function
|
||||
|
||||
######## Runners ###########################################################
|
||||
@ -115,9 +123,9 @@ runners_dir="$data_dir/lutris/runners/wine"
|
||||
# ie. "RawFox" "https://api.github.com/repos/rawfoxDE/raw-wine/releases"
|
||||
runner_sources=(
|
||||
"RawFox" "https://api.github.com/repos/starcitizen-lug/raw-wine/releases"
|
||||
"Molotov/Snatella" "https://api.github.com/repos/snatella/wine-runner-sc/releases"
|
||||
"/dev/null" "https://api.github.com/repos/gort818/wine-sc-lug/releases"
|
||||
"GloriousEggroll" "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases"
|
||||
"TKG" "https://api.github.com/repos/Frogging-Family/wine-tkg-git/releases"
|
||||
)
|
||||
|
||||
######## DXVK ##############################################################
|
||||
@ -132,6 +140,7 @@ dxvk_dir="$data_dir/lutris/runtime/dxvk"
|
||||
dxvk_sources=(
|
||||
"Sporif Async" "https://api.github.com/repos/Sporif/dxvk-async/releases"
|
||||
"/dev/null" "https://api.github.com/repos/gort818/dxvk/releases"
|
||||
"gnusenpai" "https://api.github.com/repos/gnusenpai/dxvk/releases"
|
||||
)
|
||||
|
||||
# Set a maximum number of versions to display from each download url
|
||||
@ -169,7 +178,7 @@ lug_wiki="https://github.com/starcitizen-lug/information-howtos/wiki"
|
||||
# Github repo and script version info
|
||||
repo="starcitizen-lug/lug-helper"
|
||||
releases_url="https://github.com/$repo/releases"
|
||||
current_version="v1.18"
|
||||
current_version="v1.21"
|
||||
|
||||
############################################################################
|
||||
############################################################################
|
||||
@ -344,9 +353,9 @@ menu() {
|
||||
zen_options+=("${menu_options[i]}")
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# Display the zenity radio button menu
|
||||
choice="$(zenity --list --radiolist --width="480" --height="$menu_height" --text="$menu_text_zenity" --title="Star Citizen LUG Helper" --hide-header --cancel-label "$cancel_label" --window-icon=$lug_logo --column="" --column="Option" "${zen_options[@]}" 2>/dev/null)"
|
||||
choice="$(zenity --list --radiolist --width="480" --height="$menu_height" --text="$menu_text_zenity" --title="Star Citizen LUG Helper" --hide-header --cancel-label "$cancel_label" --window-icon="$lug_logo" --column="" --column="Option" "${zen_options[@]}" 2>/dev/null)"
|
||||
|
||||
# Loop through the options array to match the chosen option
|
||||
matched="false"
|
||||
@ -524,7 +533,7 @@ getdirs() {
|
||||
# The location within the USER directory to which the game exports keybinds
|
||||
keybinds_dir="$user_dir/Controls/Mappings"
|
||||
# Shaders directory
|
||||
shaders_dir="$user_dir/shaders"
|
||||
shaders_dir="$wine_prefix/$appdata_path/shaders"
|
||||
# dxvk cache file
|
||||
dxvk_cache="$game_path/$live_or_ptu/StarCitizen.dxvk-cache"
|
||||
# Where to store backed up keybinds
|
||||
@ -1030,6 +1039,9 @@ download_install() {
|
||||
*.tar.xz)
|
||||
download_name="$(basename "$download_file" .tar.xz)"
|
||||
;;
|
||||
*.tar.zst)
|
||||
download_name="$(basename "$download_file" .tar.zst)"
|
||||
;;
|
||||
*)
|
||||
debug_print exit "Unknown archive filetype in download_install function. Aborting."
|
||||
;;
|
||||
@ -1181,7 +1193,7 @@ download_select_install() {
|
||||
esac
|
||||
|
||||
# For runners, check GlibC version against runner requirements
|
||||
if [ "$download_type" = "runner" ] && [ "$contributor_name" = "/dev/null" ]; then
|
||||
if [ "$download_type" = "runner" ] && ( [ "$contributor_name" = "/dev/null" ] || [ "$contributor_name" = "TKG" ] ); then
|
||||
required_glibc="2.33"
|
||||
system_glibc="$(ldd --version | awk '/ldd/{print $NF}')"
|
||||
|
||||
@ -1231,21 +1243,27 @@ download_select_install() {
|
||||
;;
|
||||
*.tar.xz)
|
||||
download_name="$(basename "${download_versions[i]}" .tar.xz)"
|
||||
;;
|
||||
;;
|
||||
*.tar.zst)
|
||||
download_name="$(basename "${download_versions[i]}" .tar.zst)"
|
||||
;;
|
||||
*)
|
||||
debug_print exit "Unknown archive filetype in download_select_install function. Aborting."
|
||||
download_name="skip"
|
||||
debug_print continue "Unknown archive filetype in download_select_install function. Offending String: ${download_versions[i]}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Add the file names to the menu
|
||||
if [ -d "$download_dir/$download_name" ]; then
|
||||
if [[ "$download_name" = "skip" ]] || [[ "${download_versions[i]}" = "proton"* ]] ; then # filter out other file types or proton-downloads (needed for TKG)
|
||||
continue
|
||||
elif [ -d "$download_dir/$download_name" ]; then
|
||||
menu_options+=("$download_name [installed]")
|
||||
else
|
||||
menu_options+=("$download_name")
|
||||
fi
|
||||
menu_actions+=("download_install $i")
|
||||
done
|
||||
|
||||
|
||||
# Complete the menu by adding the option to go back to the previous menu
|
||||
menu_options+=("$goback")
|
||||
menu_actions+=(":") # no-op
|
||||
@ -1430,7 +1448,11 @@ eac_workaround() {
|
||||
|
||||
# Check if EAC workaround is already applied
|
||||
if grep "$eac_hosts" /etc/hosts; then
|
||||
message info "The Easy Anti-Cheat workaround has already been applied.\nYou're all set!"
|
||||
if grep "^$eac_hosts" /etc/hosts; then
|
||||
message info "The Easy Anti-Cheat workaround has already been applied.\nYou're all set!"
|
||||
else
|
||||
message info "The Easy Anti-Cheat workaround has already been applied, but is commented out.\nNo changes have been made, please edit /etc/hosts manually!"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
@ -1497,19 +1519,26 @@ rm_shaders() {
|
||||
# User cancelled and wants to return to the main menu, or error
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Create an array containing all directories in the appdata_path
|
||||
for appdata_list in "$wine_prefix/$appdata_path"/*; do
|
||||
if [ -d "$appdata_list" ]; then
|
||||
appdata_items+=("$appdata_list")
|
||||
fi
|
||||
done
|
||||
|
||||
# Sanity check
|
||||
if [ ! -d "$shaders_dir" ]; then
|
||||
message warning "Shaders directory not found. There is nothing to delete!\n\n$shaders_dir"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Delete the shader directory
|
||||
if message question "The following directory will be deleted:\n\n$shaders_dir\n\nDo you want to proceed?"; then
|
||||
debug_print continue "Deleting $shaders_dir..."
|
||||
rm -r "$shaders_dir"
|
||||
message info "Your shaders have been deleted!"
|
||||
fi
|
||||
# Delete shaders directory in every directory beginning with "sc-alpha"
|
||||
for (( i=0; i<"${#appdata_items[@]}"; i++ )); do
|
||||
if [[ "${appdata_items[i]}" = "$wine_prefix/$appdata_path"/sc-alpha* ]] && [[ -d "${appdata_items[i]}"/shaders ]]; then # check if the item in the array begins with sc-alpha
|
||||
if message question "The following directory will be deleted:\n\n${appdata_items[i]}/shaders\n\nDo you want to proceed?"; then
|
||||
debug_print continue "Deleting ${appdata_items[i]}/shaders..."
|
||||
rm -r "${appdata_items[i]}/shaders"
|
||||
message info "Your shaders have been deleted!"
|
||||
fi
|
||||
elif [ $i = $(( "${#appdata_items[@]}" - 1 )) ]; then # display message when end of array is reached and no shaders or sc-alpha directories were found
|
||||
message info "No more shader directories found"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Delete DXVK cache
|
||||
@ -1575,7 +1604,7 @@ maintenance_menu() {
|
||||
# Get a random Penguin's Star Citizen referral code
|
||||
referral_randomizer() {
|
||||
# Populate the referral codes array
|
||||
referral_codes=("STAR-4TZD-6KMM" "STAR-4XM2-VM99" "STAR-2NPY-FCR2" "STAR-T9Z9-7W6P" "STAR-VLBF-W2QR" "STAR-BYR6-YHMF" "STAR-3X2H-VZMX" "STAR-BRWN-FB9T" "STAR-FG6Y-N4Q4" "STAR-VLD6-VZRG" "STAR-T9KF-LV77" "STAR-4XHB-R7RF" "STAR-9NVF-MRN7" "STAR-3Q4W-9TC3" "STAR-3SBK-7QTT" "STAR-XFBT-9TTK" "STAR-F3H9-YPHN" "STAR-BYK6-RCCL" "STAR-XCKH-W6T7" "STAR-H292-39WK" "STAR-ZRT5-PJB7" "STAR-GMBP-SH9Y" "STAR-PLWB-LMFY" "STAR-TNZN-H4ZT" "STAR-T5G5-L2GJ" "STAR-6TPV-7QH2" "STAR-THHD-TV3Y" "STAR-7ZFS-PK2L" "STAR-SRQN-43TB" "STAR-9TDG-D4H9" "STAR-BPH3-THJC" "STAR-HL3M-R5KC" "STAR-GBS5-LTVB" "STAR-CJ3Y-KZZ4" "STAR-5GRM-7HBY" "STAR-G2GX-Y2QJ" "STAR-YWY3-H4XX" "STAR-6VGM-PTKC" "STAR-T6MZ-QFHX" "STAR-T2K6-LXFW" "STAR-XN25-9CJJ" "STAR-47V3-4QGB" "STAR-YD4Z-TQZV" "STAR-XLN7-9XNJ" "STAR-N62T-2R39" "STAR-3S3D-9HXQ" "STAR-TRZF-NMCV" "STAR-TLLJ-SMG4" "STAR-MFT6-Q44H" "STAR-TZX2-TPWF")
|
||||
referral_codes=("STAR-4TZD-6KMM" "STAR-4XM2-VM99" "STAR-2NPY-FCR2" "STAR-T9Z9-7W6P" "STAR-VLBF-W2QR" "STAR-BYR6-YHMF" "STAR-3X2H-VZMX" "STAR-BRWN-FB9T" "STAR-FG6Y-N4Q4" "STAR-VLD6-VZRG" "STAR-T9KF-LV77" "STAR-4XHB-R7RF" "STAR-9NVF-MRN7" "STAR-3Q4W-9TC3" "STAR-3SBK-7QTT" "STAR-XFBT-9TTK" "STAR-F3H9-YPHN" "STAR-BYK6-RCCL" "STAR-XCKH-W6T7" "STAR-H292-39WK" "STAR-ZRT5-PJB7" "STAR-GMBP-SH9Y" "STAR-PLWB-LMFY" "STAR-TNZN-H4ZT" "STAR-T5G5-L2GJ" "STAR-6TPV-7QH2" "STAR-THHD-TV3Y" "STAR-7ZFS-PK2L" "STAR-SRQN-43TB" "STAR-9TDG-D4H9" "STAR-BPH3-THJC" "STAR-HL3M-R5KC" "STAR-GBS5-LTVB" "STAR-CJ3Y-KZZ4" "STAR-5GRM-7HBY" "STAR-G2GX-Y2QJ" "STAR-YWY3-H4XX" "STAR-6VGM-PTKC" "STAR-T6MZ-QFHX" "STAR-T2K6-LXFW" "STAR-XN25-9CJJ" "STAR-47V3-4QGB" "STAR-YD4Z-TQZV" "STAR-XLN7-9XNJ" "STAR-N62T-2R39" "STAR-3S3D-9HXQ" "STAR-TRZF-NMCV" "STAR-TLLJ-SMG4" "STAR-MFT6-Q44H" "STAR-TZX2-TPWF" "STAR-WCHN-4ZMX")
|
||||
# Pick a random array element. Scale a floating point number for
|
||||
# a more random distribution than simply calling RANDOM
|
||||
random_code="${referral_codes[$(awk '{srand($2); print int(rand()*$1)}' <<< "${#referral_codes[@]} $RANDOM")]}"
|
||||
|
Reference in New Issue
Block a user