mirror of
https://github.com/the-sane/lug-helper.git
synced 2025-07-01 13:50:35 +00:00
Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
c627666705 | |||
65ac8ae4cd | |||
b4d9598fe5 | |||
dd81f24be3 | |||
f99fe9b996 | |||
dffa971dc1 | |||
fe1733542d | |||
d6d28f1481 | |||
eb48d00396 | |||
f072378617 | |||
d6376ff9fa | |||
28051a135a | |||
44b1332782 | |||
10c5438189 | |||
57df0a8dd9 | |||
f67c76be2e | |||
d9d58702d1 | |||
3d6e4cc367 | |||
3932fd2754 | |||
314a1ff5ea |
@ -63,8 +63,9 @@ Keybinds are backed up to *$XDG_CONFIG_HOME/starcitizen-lug/keybinds/*
|
|||||||
## Installation:
|
## Installation:
|
||||||
|
|
||||||
From Source:
|
From Source:
|
||||||
1. Download it!
|
1. Download it! https://github.com/starcitizen-lug/lug-helper/releases
|
||||||
2. Run it!
|
2. Extract it!
|
||||||
|
3. Run it!
|
||||||
|
|
||||||
Arch Linux: https://aur.archlinux.org/packages/lug-helper/
|
Arch Linux: https://aur.archlinux.org/packages/lug-helper/
|
||||||
|
|
||||||
|
105
lug-helper.sh
105
lug-helper.sh
@ -102,6 +102,8 @@ install_path="drive_c/Program Files/Roberts Space Industries/$sc_base_dir"
|
|||||||
live_dir="LIVE"
|
live_dir="LIVE"
|
||||||
ptu_dir="PTU"
|
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
|
# Remaining directory paths are set at the end of the getdirs() function
|
||||||
|
|
||||||
######## Runners ###########################################################
|
######## Runners ###########################################################
|
||||||
@ -118,6 +120,7 @@ runner_sources=(
|
|||||||
"Molotov/Snatella" "https://api.github.com/repos/snatella/wine-runner-sc/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"
|
"/dev/null" "https://api.github.com/repos/gort818/wine-sc-lug/releases"
|
||||||
"GloriousEggroll" "https://api.github.com/repos/GloriousEggroll/wine-ge-custom/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 ##############################################################
|
######## DXVK ##############################################################
|
||||||
@ -132,6 +135,7 @@ dxvk_dir="$data_dir/lutris/runtime/dxvk"
|
|||||||
dxvk_sources=(
|
dxvk_sources=(
|
||||||
"Sporif Async" "https://api.github.com/repos/Sporif/dxvk-async/releases"
|
"Sporif Async" "https://api.github.com/repos/Sporif/dxvk-async/releases"
|
||||||
"/dev/null" "https://api.github.com/repos/gort818/dxvk/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
|
# Set a maximum number of versions to display from each download url
|
||||||
@ -169,7 +173,7 @@ lug_wiki="https://github.com/starcitizen-lug/information-howtos/wiki"
|
|||||||
# Github repo and script version info
|
# Github repo and script version info
|
||||||
repo="starcitizen-lug/lug-helper"
|
repo="starcitizen-lug/lug-helper"
|
||||||
releases_url="https://github.com/$repo/releases"
|
releases_url="https://github.com/$repo/releases"
|
||||||
current_version="v1.17"
|
current_version="v1.21"
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
############################################################################
|
############################################################################
|
||||||
@ -344,9 +348,9 @@ menu() {
|
|||||||
zen_options+=("${menu_options[i]}")
|
zen_options+=("${menu_options[i]}")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Display the zenity radio button menu
|
# 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
|
# Loop through the options array to match the chosen option
|
||||||
matched="false"
|
matched="false"
|
||||||
@ -524,7 +528,7 @@ getdirs() {
|
|||||||
# The location within the USER directory to which the game exports keybinds
|
# The location within the USER directory to which the game exports keybinds
|
||||||
keybinds_dir="$user_dir/Controls/Mappings"
|
keybinds_dir="$user_dir/Controls/Mappings"
|
||||||
# Shaders directory
|
# Shaders directory
|
||||||
shaders_dir="$user_dir/shaders"
|
shaders_dir="$wine_prefix/$appdata_path/shaders"
|
||||||
# dxvk cache file
|
# dxvk cache file
|
||||||
dxvk_cache="$game_path/$live_or_ptu/StarCitizen.dxvk-cache"
|
dxvk_cache="$game_path/$live_or_ptu/StarCitizen.dxvk-cache"
|
||||||
# Where to store backed up keybinds
|
# Where to store backed up keybinds
|
||||||
@ -775,6 +779,15 @@ avx_check() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check if swap is set up
|
||||||
|
swap_check() {
|
||||||
|
if cat /proc/swaps | grep -vq "Filename"; then
|
||||||
|
preflight_pass+=("You have swap space configured.")
|
||||||
|
else
|
||||||
|
preflight_fail+=("You don't appear to have swap space configured.\nWe recommend configuring an 8-16 GB swap file.")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Check that the system is optimized for Star Citizen
|
# Check that the system is optimized for Star Citizen
|
||||||
preflight_check() {
|
preflight_check() {
|
||||||
# Initialize variables
|
# Initialize variables
|
||||||
@ -789,6 +802,7 @@ preflight_check() {
|
|||||||
# Call the optimization functions to perform the checks
|
# Call the optimization functions to perform the checks
|
||||||
wine_check
|
wine_check
|
||||||
memory_check
|
memory_check
|
||||||
|
swap_check
|
||||||
avx_check
|
avx_check
|
||||||
mapcount_check
|
mapcount_check
|
||||||
filelimit_check
|
filelimit_check
|
||||||
@ -902,6 +916,7 @@ lutris_restart() {
|
|||||||
# Perform post-download actions, display messages or instructions
|
# Perform post-download actions, display messages or instructions
|
||||||
# Expects the variables message_heading, post_download_msg_text,
|
# Expects the variables message_heading, post_download_msg_text,
|
||||||
# post_download_msg_italics, and downloaded_item_name
|
# post_download_msg_italics, and downloaded_item_name
|
||||||
|
# Optional: post_download_msg_more_info and post_download_msg_link
|
||||||
post_download() {
|
post_download() {
|
||||||
# Check if lutris needs to be restarted after making changes
|
# Check if lutris needs to be restarted after making changes
|
||||||
lutris_restart
|
lutris_restart
|
||||||
@ -909,12 +924,30 @@ post_download() {
|
|||||||
if [ "$display_post_download_msg" = "true" ]; then
|
if [ "$display_post_download_msg" = "true" ]; then
|
||||||
message_heading="Download Complete"
|
message_heading="Download Complete"
|
||||||
|
|
||||||
|
# Format some variables for zenity
|
||||||
if [ "$use_zenity" -eq 1 ]; then
|
if [ "$use_zenity" -eq 1 ]; then
|
||||||
message_heading="<b>$message_heading</b>"
|
message_heading="<b>$message_heading</b>"
|
||||||
post_download_msg_italics="<i>$post_download_msg_italics</i>"
|
post_download_msg_italics="<i>$post_download_msg_italics</i>"
|
||||||
|
|
||||||
|
# If we have a link to provide, format it as well
|
||||||
|
if [ -n "$post_download_msg_link" ]; then
|
||||||
|
post_download_msg_link="<a href='$post_download_msg_link'>$post_download_msg_link</a>"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
message info "$message_heading\n\n$post_download_msg_text\n$post_download_msg_italics\n\n$downloaded_item_name"
|
|
||||||
|
# Add newlines to the optional variables if set
|
||||||
|
if [ -n "$post_download_msg_more_info" ]; then
|
||||||
|
post_download_msg_more_info="\n\n$post_download_msg_more_info"
|
||||||
|
fi
|
||||||
|
if [ -n "$post_download_msg_link" ]; then
|
||||||
|
post_download_msg_link="\n$post_download_msg_link"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display the info
|
||||||
|
message info "$message_heading\n\n$post_download_msg_text\n$post_download_msg_italics\n\n$downloaded_item_name$post_download_msg_more_info$post_download_msg_link"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Reset
|
||||||
display_post_download_msg="false"
|
display_post_download_msg="false"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1001,6 +1034,9 @@ download_install() {
|
|||||||
*.tar.xz)
|
*.tar.xz)
|
||||||
download_name="$(basename "$download_file" .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."
|
debug_print exit "Unknown archive filetype in download_install function. Aborting."
|
||||||
;;
|
;;
|
||||||
@ -1202,21 +1238,27 @@ download_select_install() {
|
|||||||
;;
|
;;
|
||||||
*.tar.xz)
|
*.tar.xz)
|
||||||
download_name="$(basename "${download_versions[i]}" .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
|
esac
|
||||||
|
|
||||||
# Add the file names to the menu
|
# 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]")
|
menu_options+=("$download_name [installed]")
|
||||||
else
|
else
|
||||||
menu_options+=("$download_name")
|
menu_options+=("$download_name")
|
||||||
fi
|
fi
|
||||||
menu_actions+=("download_install $i")
|
menu_actions+=("download_install $i")
|
||||||
done
|
done
|
||||||
|
|
||||||
# Complete the menu by adding the option to go back to the previous menu
|
# Complete the menu by adding the option to go back to the previous menu
|
||||||
menu_options+=("$goback")
|
menu_options+=("$goback")
|
||||||
menu_actions+=(":") # no-op
|
menu_actions+=(":") # no-op
|
||||||
@ -1334,9 +1376,13 @@ runner_manage() {
|
|||||||
# A header is automatically displayed that reads: Download Complete
|
# A header is automatically displayed that reads: Download Complete
|
||||||
# msg_text is displayed below the header
|
# msg_text is displayed below the header
|
||||||
# msg_italics is displayed below that in italics when zenity is in use
|
# msg_italics is displayed below that in italics when zenity is in use
|
||||||
# Lastly, the downloaded directory name is automatically displayed
|
# Then, the downloaded directory name is automatically displayed
|
||||||
|
# Optional variables post_download_msg_more_info and
|
||||||
|
# post_download_msg_link will be displayed if set
|
||||||
post_download_msg_text="Select the following runner in Lutris from the dropdown menu under:"
|
post_download_msg_text="Select the following runner in Lutris from the dropdown menu under:"
|
||||||
post_download_msg_italics="Configure->Runner Options->Wine version"
|
post_download_msg_italics="Configure->Runner Options->Wine version"
|
||||||
|
post_download_msg_more_info=""
|
||||||
|
post_download_msg_link=""
|
||||||
|
|
||||||
# Call the download_manage function with the above configuration
|
# Call the download_manage function with the above configuration
|
||||||
# The argument passed to the function is used for special handling
|
# The argument passed to the function is used for special handling
|
||||||
@ -1357,7 +1403,7 @@ dxvk_manage() {
|
|||||||
|
|
||||||
# Configure the text displayed in the menus
|
# Configure the text displayed in the menus
|
||||||
download_menu_heading="Lutris DXVK Versions"
|
download_menu_heading="Lutris DXVK Versions"
|
||||||
download_menu_description="The DXVK versions below may help improve game performance"
|
download_menu_description="The DXVK versions below may help reduce stuttering"
|
||||||
download_menu_height="140"
|
download_menu_height="140"
|
||||||
|
|
||||||
# Set the post download instructions
|
# Set the post download instructions
|
||||||
@ -1365,9 +1411,13 @@ dxvk_manage() {
|
|||||||
# A header is automatically displayed that reads: Download Complete
|
# A header is automatically displayed that reads: Download Complete
|
||||||
# msg_text is displayed below the header
|
# msg_text is displayed below the header
|
||||||
# msg_italics is displayed below that in italics when zenity is in use
|
# msg_italics is displayed below that in italics when zenity is in use
|
||||||
# Lastly, the downloaded directory name is automatically displayed
|
# Then, the downloaded directory name is automatically displayed
|
||||||
|
# Optional variables post_download_msg_more_info and
|
||||||
|
# post_download_msg_link will be displayed if set
|
||||||
post_download_msg_text="Type the following DXVK name into your Lutris settings under:"
|
post_download_msg_text="Type the following DXVK name into your Lutris settings under:"
|
||||||
post_download_msg_italics="Configure->Runner Options->DXVK version"
|
post_download_msg_italics="Configure->Runner Options->DXVK version"
|
||||||
|
post_download_msg_more_info="See our wiki for instructions on setting the DXVK_ASYNC environment variable in Lutris:"
|
||||||
|
post_download_msg_link="https://github.com/starcitizen-lug/information-howtos/wiki/Performance-Tuning#dxvk-async"
|
||||||
|
|
||||||
# Call the download_manage function with the above configuration
|
# Call the download_manage function with the above configuration
|
||||||
# The argument passed to the function is used for special handling
|
# The argument passed to the function is used for special handling
|
||||||
@ -1460,19 +1510,26 @@ rm_shaders() {
|
|||||||
# User cancelled and wants to return to the main menu, or error
|
# User cancelled and wants to return to the main menu, or error
|
||||||
return 0
|
return 0
|
||||||
fi
|
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
|
# Delete shaders directory in every directory beginning with "sc-alpha"
|
||||||
if [ ! -d "$shaders_dir" ]; then
|
for (( i=0; i<"${#appdata_items[@]}"; i++ )); do
|
||||||
message warning "Shaders directory not found. There is nothing to delete!\n\n$shaders_dir"
|
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
|
||||||
return 0
|
if message question "The following directory will be deleted:\n\n${appdata_items[i]}/shaders\n\nDo you want to proceed?"; then
|
||||||
fi
|
debug_print continue "Deleting ${appdata_items[i]}/shaders..."
|
||||||
|
rm -r "${appdata_items[i]}/shaders"
|
||||||
# Delete the shader directory
|
message info "Your shaders have been deleted!"
|
||||||
if message question "The following directory will be deleted:\n\n$shaders_dir\n\nDo you want to proceed?"; then
|
fi
|
||||||
debug_print continue "Deleting $shaders_dir..."
|
elif [ $i = $(( "${#appdata_items[@]}" - 1 )) ]; then # display message when end of array is reached and no shaders or sc-alpha directories were found
|
||||||
rm -r "$shaders_dir"
|
message info "No more shader directories found"
|
||||||
message info "Your shaders have been deleted!"
|
fi
|
||||||
fi
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Delete DXVK cache
|
# Delete DXVK cache
|
||||||
|
@ -81,11 +81,11 @@
|
|||||||
"esync": true,
|
"esync": true,
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"nvapi,nvapi64": "disabled",
|
"nvapi,nvapi64": "disabled",
|
||||||
"libglesv2": "disabled"
|
"libglesv2": "builtin"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"content": "files:\n- client: https://install.robertsspaceindustries.com/star-citizen/RSI-Setup-1.5.5.exe\ngame:\n arch: win64\n args: null\n exe: drive_c/Program Files/Roberts Space Industries/RSI Launcher/RSI Launcher.exe\n prefix: $GAMEDIR\ninstaller:\n- task:\n arch: win64\n description: Creating Wine prefix\n name: create_prefix\n prefix: $GAMEDIR\n- task:\n app: --force arial vcrun2019 win10\n arch: win64\n description: Installing dlls\n name: winetricks\n prefix: $GAMEDIR\n- task:\n arch: win64\n args: /S\n description: Installing client\n executable: client\n name: wineexec\n prefix: $GAMEDIR\nsystem:\n env:\n DXVK_HUD: '0'\n __GL_SHADER_DISK_CACHE: 1\n __GL_SHADER_DISK_CACHE_SIZE: '1073741824'\n __GL_THREADED_OPTIMIZATIONS: '1'\nwine:\n dxvk: true\n esync: true\n overrides:\n nvapi,nvapi64: disabled\n libglesv2: disabled\n"
|
"content": "files:\n- client: https://install.robertsspaceindustries.com/star-citizen/RSI-Setup-1.5.5.exe\ngame:\n arch: win64\n args: null\n exe: drive_c/Program Files/Roberts Space Industries/RSI Launcher/RSI Launcher.exe\n prefix: $GAMEDIR\ninstaller:\n- task:\n arch: win64\n description: Creating Wine prefix\n name: create_prefix\n prefix: $GAMEDIR\n- task:\n app: --force arial vcrun2019 win10\n arch: win64\n description: Installing dlls\n name: winetricks\n prefix: $GAMEDIR\n- task:\n arch: win64\n args: /S\n description: Installing client\n executable: client\n name: wineexec\n prefix: $GAMEDIR\nsystem:\n env:\n DXVK_HUD: '0'\n __GL_SHADER_DISK_CACHE: 1\n __GL_SHADER_DISK_CACHE_SIZE: '1073741824'\n __GL_THREADED_OPTIMIZATIONS: '1'\nwine:\n dxvk: true\n esync: true\n overrides:\n nvapi,nvapi64: disabled\n libglesv2: builtin\n"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user