17 Commits
v1.17 ... V1.20

3 changed files with 83 additions and 25 deletions

View File

@ -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/

View File

@ -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 ###########################################################
@ -132,6 +134,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 +172,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.20"
############################################################################ ############################################################################
############################################################################ ############################################################################
@ -344,9 +347,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 +527,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 +778,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 +801,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 +915,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 +923,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 +1033,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,7 +1237,10 @@ 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." debug_print exit "Unknown archive filetype in download_select_install function. Aborting."
;; ;;
@ -1334,9 +1372,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 +1399,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 +1407,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 +1506,30 @@ 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* ]; then # check if the item in the array begins with sc-alpha
return 0 if [ -d "${appdata_items[i]}/shaders" ]; then # check if there is a shaders subfolder
fi 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..."
# Delete the shader directory rm -r "${appdata_items[i]}/shaders"
if message question "The following directory will be deleted:\n\n$shaders_dir\n\nDo you want to proceed?"; then message info "Your shaders have been deleted!"
debug_print continue "Deleting $shaders_dir..." fi
rm -r "$shaders_dir" elif [ $i = $(( "${#appdata_items[@]}" - 1 )) ]; then # display message when end of array is reached and no shaders directories were found
message info "Your shaders have been deleted!" message info "No more shader directories found"
fi 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 # Delete DXVK cache

View File

@ -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"
} }
] ]
} }