27 Commits
v1.14 ... v1.17

Author SHA1 Message Date
26f1377506 Fix helper directory paths with spaces 2022-02-09 16:22:02 -05:00
b71f601547 Bump version 2022-02-05 12:27:47 -05:00
717a83a512 Improve EAC workaround 2022-02-05 12:27:05 -05:00
ae25785a41 Bump version 2022-02-04 23:27:07 -05:00
2f45058e58 Update launcher to v1.5.5 2022-02-04 23:21:40 -05:00
33b8643d47 Update README.md 2022-02-01 16:33:17 -05:00
faa047546b Update README.md 2022-01-21 18:20:30 -05:00
5ef3a95a2a Consistency in systemd drop-in filenames 2022-01-21 18:11:32 -05:00
37e487d296 Use systemd drop-in for setting filelimit 2022-01-21 17:43:58 -05:00
ab9155b9b8 Clarify that DXVK manager is for Lutris 2022-01-21 17:20:44 -05:00
7b7347dd64 Clarify error message 2022-01-19 02:20:17 -05:00
9a2c064a06 Update README.md 2022-01-14 19:22:04 -05:00
6ef58adc12 Update README.md 2022-01-14 19:21:36 -05:00
3b3abbe8ea Update README.md 2022-01-14 19:21:17 -05:00
da1fc66571 Update README.md 2022-01-10 13:50:37 -05:00
bc5d5c4a9b Update README.md 2022-01-10 13:49:48 -05:00
deb84dd757 Merge pull request #28 from ananace/fix-white-launcher
Add libglesv2 override to fix white launcher window
2022-01-10 13:42:54 -05:00
fc70cdc687 Update README.md 2022-01-10 12:57:39 -05:00
21444076de Add libglesv2 override to fix white launcher
Would also work with launch arguments e.g. --use-gl=osmesa - but that
doesn't work when the launcher auto-updates, since it'll relaunch
without the launch arguments specified in Lutris
2022-01-08 12:18:14 +01:00
4b32177e97 Clickable wiki URL what an idea 2022-01-07 15:55:56 -05:00
b4762d4724 Add comments 2022-01-07 14:30:38 -05:00
37c94af2ed Bump version 2022-01-07 14:26:24 -05:00
6d56599e2f Add comment 2022-01-07 14:23:43 -05:00
9909221dff Remove bc dependency 2022-01-07 14:22:59 -05:00
a328b465ef Add display wiki option in troubleshooting menu 2022-01-06 21:08:01 -05:00
8e28327e0f added /usr/share/lug-helper path for lutris json for easier packaging 2022-01-06 15:10:10 +01:00
156a0884d4 added /usr/share/lug-helper path for lutris json for easier packaging 2022-01-06 15:05:24 +01:00
3 changed files with 76 additions and 49 deletions

View File

@ -1,4 +1,4 @@
# LUG-Helper # LUG Helper
**Star Citizen's Linux Users Group Helper Script** **Star Citizen's Linux Users Group Helper Script**
https://robertsspaceindustries.com/orgs/LUG https://robertsspaceindustries.com/orgs/LUG
@ -8,7 +8,7 @@ _**This script is designed to help you manage and optimize Star Citizen on Linux
Zenity menus are used for a GUI experience with a fallback to terminal-based menus where Zenity is unavailable. Zenity menus are used for a GUI experience with a fallback to terminal-based menus where Zenity is unavailable.
Command line arguments are available for quickly launching functions from the terminal. Command line arguments are available for quickly launching functions from the terminal.
Configuration is saved in *$XDG_CONFIG_HOME/starcitizen-lug/*. Configuration is saved in *$XDG_CONFIG_HOME/starcitizen-lug/*
Keybinds are backed up to *$XDG_CONFIG_HOME/starcitizen-lug/keybinds/* Keybinds are backed up to *$XDG_CONFIG_HOME/starcitizen-lug/keybinds/*
## Options: ## Options:
@ -23,10 +23,13 @@ Keybinds are backed up to *$XDG_CONFIG_HOME/starcitizen-lug/keybinds/*
`Install Star Citizen` `Install Star Citizen`
- Launches Lutris and uses the bundled json to install Star Citizen - Launches Lutris and uses the bundled json to install Star Citizen
`Deploy Easy Anti-Cheat Workaround`
- Applies the workaround to /etc/hosts and deletes the necessary EAC files
`Manage Lutris Runners` `Manage Lutris Runners`
- Quickly install and delete Lutris wine runners - Quickly install and delete Lutris wine runners
`Manage DXVK Versions` `Manage Lutris DXVK Versions`
- Quickly install and delete DXVK versions for Lutris - Quickly install and delete DXVK versions for Lutris
`Maintenance and Troubleshooting` `Maintenance and Troubleshooting`
@ -62,7 +65,6 @@ Keybinds are backed up to *$XDG_CONFIG_HOME/starcitizen-lug/keybinds/*
From Source: From Source:
1. Download it! 1. Download it!
2. Run it! 2. Run it!
3. If you want, move *lug-logo.png* to */usr/share/pixmaps/*
Arch Linux: https://aur.archlinux.org/packages/lug-helper/ Arch Linux: https://aur.archlinux.org/packages/lug-helper/
@ -72,4 +74,5 @@ Arch Linux: https://aur.archlinux.org/packages/lug-helper/
- https://github.com/gort818 - https://github.com/gort818
- https://github.com/victort - https://github.com/victort
- https://github.com/Wrzlprnft - https://github.com/Wrzlprnft
- https://github.com/ananace
- Runner Downloader inspired by https://github.com/richardtatum/sc-runner-updater - Runner Downloader inspired by https://github.com/richardtatum/sc-runner-updater

View File

@ -72,6 +72,8 @@ if [ ! -x "$(command -v mktemp)" ] || [ ! -x "$(command -v sort)" ] || [ ! -x "$
exit 1 exit 1
fi fi
######## Config ############################################################
wine_conf="winedir.conf" wine_conf="winedir.conf"
game_conf="gamedir.conf" game_conf="gamedir.conf"
@ -83,7 +85,7 @@ data_dir="${XDG_DATA_HOME:-$HOME/.local/share}"
conf_subdir="starcitizen-lug" conf_subdir="starcitizen-lug"
# Helper directory # Helper directory
helper_dir="$(realpath "$0" | xargs dirname)" helper_dir="$(realpath "$0" | xargs -0 dirname)"
# Temporary directory # Temporary directory
tmp_dir="$(mktemp -d --suffix=".lughelper")" tmp_dir="$(mktemp -d --suffix=".lughelper")"
@ -139,7 +141,7 @@ max_download_items=20
# used to dynamically determine the height of menus # used to dynamically determine the height of menus
menu_option_height="25" menu_option_height="25"
############################################################################ ######## Bundled Files #####################################################
# Use logo installed by a packaged version of this script if available # Use logo installed by a packaged version of this script if available
# Otherwise, default to the logo in the same directory # Otherwise, default to the logo in the same directory
@ -151,16 +153,23 @@ else
lug_logo="info" lug_logo="info"
fi fi
# Lutris install script # Use Lutris install script installed by a packaged version of this script if available
install_script="$helper_dir/lug-lutris-install.json" # Otherwise, default to the json in the same directory
if [ -f "/usr/share/lug-helper/lug-lutris-install.json" ]; then
install_script="/usr/share/lug-helper/lug-lutris-install.json"
else
install_script="$helper_dir/lug-lutris-install.json"
fi
######## Links #############################################################
# LUG Wiki
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.14" current_version="v1.17"
# LUG Wiki
lug_wiki="https://github.com/starcitizen-lug/information-howtos/wiki"
############################################################################ ############################################################################
############################################################################ ############################################################################
@ -451,7 +460,7 @@ getdirs() {
message warning "An unexpected error has occurred. The Helper is unable to proceed." message warning "An unexpected error has occurred. The Helper is unable to proceed."
return 1 return 1
elif [ "$(basename "$game_path")" != "$sc_base_dir" ]; then elif [ "$(basename "$game_path")" != "$sc_base_dir" ]; then
message warning "You must select the Star Citizen base game directory.\n\nFor Example: prefix/drive_c/Program Files/Roberts Space Industries/StarCitizen" message warning "You must select the base game directory named '$sc_base_dir'\n\nie. [prefix]/drive_c/Program Files/Roberts Space Industries/StarCitizen"
else else
# All good or cancel # All good or cancel
break break
@ -632,8 +641,8 @@ mapcount_once() {
mapcount_set() { mapcount_set() {
if [ -d "/etc/sysctl.d" ]; then if [ -d "/etc/sysctl.d" ]; then
# Newer versions of sysctl # Newer versions of sysctl
preflight_actions+=('printf "\n# Added by LUG-Helper:\nvm.max_map_count = 16777216\n" >> /etc/sysctl.d/20-max_map_count.conf && sysctl --system') preflight_actions+=('printf "\n# Added by LUG-Helper:\nvm.max_map_count = 16777216\n" > /etc/sysctl.d/20-starcitizen-max_map_count.conf && sysctl --system')
preflight_results+=("The vm.max_map_count configuration has been appended to:\n/etc/sysctl.d/20-max_map_count.conf") preflight_results+=("The vm.max_map_count configuration has been appended to:\n/etc/sysctl.d/20-starcitizen-max_map_count.conf")
else else
# Older versions of sysctl # Older versions of sysctl
preflight_actions+=('printf "\n# Added by LUG-Helper:\nvm.max_map_count = 16777216" >> /etc/sysctl.conf && sysctl -p') preflight_actions+=('printf "\n# Added by LUG-Helper:\nvm.max_map_count = 16777216" >> /etc/sysctl.conf && sysctl -p')
@ -668,7 +677,7 @@ mapcount_check() {
# Add info for manually changing the setting # Add info for manually changing the setting
if [ -d "/etc/sysctl.d" ]; then if [ -d "/etc/sysctl.d" ]; then
# Newer versions of sysctl # Newer versions of sysctl
preflight_manual+=("To change vm.max_map_count permanently, add the following line to\n'/etc/sysctl.d/20-max_map_count.conf' and reload with 'sudo sysctl --system':\n vm.max_map_count = 16777216\n\nOr, to change vm.max_map_count temporarily until next boot, run:\n sudo sysctl -w vm.max_map_count=16777216") preflight_manual+=("To change vm.max_map_count permanently, add the following line to\n'/etc/sysctl.d/20-starcitizen-max_map_count.conf' and reload with 'sudo sysctl --system'\n vm.max_map_count = 16777216\n\nOr, to change vm.max_map_count temporarily until next boot, run:\n sudo sysctl -w vm.max_map_count=16777216")
else else
# Older versions of sysctl # Older versions of sysctl
preflight_manual+=("To change vm.max_map_count permanently, add the following line to\n'/etc/sysctl.conf' and reload with 'sudo sysctl -p':\n vm.max_map_count = 16777216\n\nOr, to change vm.max_map_count temporarily until next boot, run:\n sudo sysctl -w vm.max_map_count=16777216") preflight_manual+=("To change vm.max_map_count permanently, add the following line to\n'/etc/sysctl.conf' and reload with 'sudo sysctl -p':\n vm.max_map_count = 16777216\n\nOr, to change vm.max_map_count temporarily until next boot, run:\n sudo sysctl -w vm.max_map_count=16777216")
@ -692,8 +701,8 @@ filelimit_set() {
if [ -f "/etc/systemd/system.conf" ]; then if [ -f "/etc/systemd/system.conf" ]; then
# Using systemd # Using systemd
# Append to the file # Append to the file
preflight_actions+=('printf "\n# Added by LUG-Helper:\nDefaultLimitNOFILE=524288\n" >> /etc/systemd/system.conf && systemctl daemon-reexec') preflight_actions+=('mkdir -p /etc/systemd/system.conf.d && printf "[Manager]\n# Added by LUG-Helper:\nDefaultLimitNOFILE=524288\n" > /etc/systemd/system.conf.d/20-starcitizen-filelimit.conf && systemctl daemon-reexec')
preflight_results+=("The open files limit configuration has been appended to:\n/etc/systemd/system.conf") preflight_results+=("The open files limit configuration has been added to:\n/etc/systemd/system.conf.d/20-starcitizen-filelimit.conf")
elif [ -f "/etc/security/limits.conf" ]; then elif [ -f "/etc/security/limits.conf" ]; then
# Using limits.conf # Using limits.conf
# Insert before the last line in the file # Insert before the last line in the file
@ -725,7 +734,7 @@ filelimit_check() {
# Add info for manually changing the settings # Add info for manually changing the settings
if [ -f "/etc/systemd/system.conf" ]; then if [ -f "/etc/systemd/system.conf" ]; then
# Using systemd # Using systemd
preflight_manual+=("To change your open file descriptors limit, add the following line to\n'/etc/systemd/system.conf':\n DefaultLimitNOFILE=524288") preflight_manual+=("To change your open file descriptors limit, add the following to\n'/etc/systemd/system.conf.d/20-starcitizen-filelimit.conf':\n\n[Manager]\nDefaultLimitNOFILE=524288")
elif [ -f "/etc/security/limits.conf" ]; then elif [ -f "/etc/security/limits.conf" ]; then
# Using limits.conf # Using limits.conf
preflight_manual+=("To change your open file descriptors limit, add the following line to\n'/etc/security/limits.conf':\n * hard nofile 524288") preflight_manual+=("To change your open file descriptors limit, add the following line to\n'/etc/security/limits.conf':\n * hard nofile 524288")
@ -1143,11 +1152,13 @@ download_select_install() {
esac esac
# For runners, check GlibC version against runner requirements # 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" ]; then
required_glibc="2.33" required_glibc="2.33"
system_glibc="$(ldd --version | awk '/ldd/{print $NF}')" system_glibc="$(ldd --version | awk '/ldd/{print $NF}')"
if [ "$(bc <<< "$required_glibc > $system_glibc")" = "1" ]; then # Sort the versions and check if the installed glibc is smaller
if [ "$required_glibc" != "$system_glibc" ] &&
[ "$system_glibc" = "$(printf "$system_glibc\n$required_glibc" | sort -V | head -n1)" ]; then
message warning "Your glibc version is incompatible with the selected runner.\n\nSystem glibc: v$system_glibc\nMinimum required glibc: v$required_glibc" message warning "Your glibc version is incompatible with the selected runner.\n\nSystem glibc: v$system_glibc\nMinimum required glibc: v$required_glibc"
return 1 return 1
fi fi
@ -1345,7 +1356,7 @@ dxvk_manage() {
download_dir="$dxvk_dir" download_dir="$dxvk_dir"
# Configure the text displayed in the menus # Configure the text displayed in the menus
download_menu_heading="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 improve game performance"
download_menu_height="140" download_menu_height="140"
@ -1380,9 +1391,9 @@ eac_workaround() {
eac_dir="$wine_prefix/drive_c/users/$USER/AppData/Roaming/EasyAntiCheat" eac_dir="$wine_prefix/drive_c/users/$USER/AppData/Roaming/EasyAntiCheat"
eac_hosts="127.0.0.1 modules-cdn.eac-prod.on.epicgames.com" eac_hosts="127.0.0.1 modules-cdn.eac-prod.on.epicgames.com"
# Check if EAC is installed # Check if EAC workaround is already applied
if [ ! -d "$eac_dir" ]; then if grep "$eac_hosts" /etc/hosts; then
message info "Easy Anti-Cheat does not appear to be installed yet.\nThere is nothing to do!" message info "The Easy Anti-Cheat workaround has already been applied.\nYou're all set!"
return 1 return 1
fi fi
@ -1406,8 +1417,11 @@ eac_workaround() {
sudo sh -c "echo $eac_hosts '#Star Citizen EAC workaround' >> /etc/hosts" sudo sh -c "echo $eac_hosts '#Star Citizen EAC workaround' >> /etc/hosts"
fi fi
# Delete the EAC directory if it exists
if [ -d "$eac_dir" ]; then
debug_print continue "Deleting $eac_dir..." debug_print continue "Deleting $eac_dir..."
rm -r "$eac_dir" rm -r "$eac_dir"
fi
message info "Easy Anti-Cheat workaround has been deployed!" message info "Easy Anti-Cheat workaround has been deployed!"
fi fi
@ -1432,6 +1446,12 @@ install_game() {
fi fi
} }
# Display the LUG Wiki
display_wiki() {
# Display a message containing the URL
message info "See the Wiki for our Quick-Start Guide, Manual Installation instructions,\nPerformance Tuning, and Common Issues and Solutions:\n\n$lug_wiki"
}
# Delete the shaders directory # Delete the shaders directory
rm_shaders() { rm_shaders() {
# Get/Set directory paths # Get/Set directory paths
@ -1495,13 +1515,14 @@ maintenance_menu() {
shaders_msg="Delete my shaders folder only (Do this after each game update)" shaders_msg="Delete my shaders folder only (Do this after each game update)"
vidcache_msg="Delete my DXVK cache" vidcache_msg="Delete my DXVK cache"
dirs_msg="Display Helper and Star Citizen directories" dirs_msg="Display Helper and Star Citizen directories"
wiki_msg="Show the LUG Wiki"
reset_msg="Reset Helper configs" reset_msg="Reset Helper configs"
quit_msg="Return to the main menu" quit_msg="Return to the main menu"
# Set the options to be displayed in the menu # Set the options to be displayed in the menu
menu_options=("$version_msg" "$sanitize_msg" "$shaders_msg" "$vidcache_msg" "$dirs_msg" "$reset_msg" "$quit_msg") menu_options=("$version_msg" "$sanitize_msg" "$shaders_msg" "$vidcache_msg" "$dirs_msg" "$wiki_msg" "$reset_msg" "$quit_msg")
# Set the corresponding functions to be called for each of the options # Set the corresponding functions to be called for each of the options
menu_actions=("set_version" "sanitize" "rm_shaders" "rm_dxvkcache" "display_dirs" "reset_helper" "menu_loop_done") menu_actions=("set_version" "sanitize" "rm_shaders" "rm_dxvkcache" "display_dirs" "display_wiki" "reset_helper" "menu_loop_done")
# Calculate the total height the menu should be # Calculate the total height the menu should be
menu_height="$(($menu_option_height * ${#menu_options[@]} + $menu_text_height))" menu_height="$(($menu_option_height * ${#menu_options[@]} + $menu_text_height))"
@ -1580,20 +1601,6 @@ fi
# Set defaults # Set defaults
live_or_ptu="$live_dir" live_or_ptu="$live_dir"
# Check if a newer verison of the script is available
latest_version="$(get_latest_release "$repo")"
if [ "$latest_version" != "$current_version" ] &&
[ "$current_version" = "$(printf "$current_version\n$latest_version" | sort -V | head -n1)" ]; then
if [ "$use_zenity" -eq 1 ]; then
releases_url_formatted="<a href='$releases_url'>$releases_url</a>"
else
releases_url_formatted="$releases_url"
fi
message info "The latest version of the LUG Helper is $latest_version\nYou are using $current_version\n\nYou can download new releases here:\n$releases_url_formatted"
fi
# If invoked with command line arguments, process them and exit # If invoked with command line arguments, process them and exit
if [ "$#" -gt 0 ]; then if [ "$#" -gt 0 ]; then
while [ "$#" -gt 0 ] while [ "$#" -gt 0 ]
@ -1692,6 +1699,22 @@ Usage: lug-helper <options>
fi fi
fi fi
# Format some URLs for Zenity
if [ "$use_zenity" -eq 1 ]; then
releases_url="<a href='$releases_url'>$releases_url</a>"
lug_wiki="<a href='$lug_wiki'>$lug_wiki</a>"
fi
# Check if a newer verison of the script is available
latest_version="$(get_latest_release "$repo")"
# Sort the versions and check if the installed Helper is smaller
if [ "$latest_version" != "$current_version" ] &&
[ "$current_version" = "$(printf "$current_version\n$latest_version" | sort -V | head -n1)" ]; then
message info "The latest version of the LUG Helper is $latest_version\nYou are using $current_version\n\nYou can download new releases here:\n$releases_url"
fi
# Loop the main menu until the user selects quit # Loop the main menu until the user selects quit
while true; do while true; do
# Configure the menu # Configure the menu
@ -1704,7 +1727,7 @@ while true; do
install_msg="Install Star Citizen" install_msg="Install Star Citizen"
eac_msg="Deploy Easy Anti-Cheat Workaround" eac_msg="Deploy Easy Anti-Cheat Workaround"
runners_msg="Manage Lutris Runners" runners_msg="Manage Lutris Runners"
dxvk_msg="Manage DXVK Versions" dxvk_msg="Manage Lutris DXVK Versions"
maintenance_msg="Maintenance and Troubleshooting" maintenance_msg="Maintenance and Troubleshooting"
randomizer_msg="Get a random Penguin's Star Citizen referral code" randomizer_msg="Get a random Penguin's Star Citizen referral code"
quit_msg="Quit" quit_msg="Quit"

View File

@ -30,7 +30,7 @@
"script": { "script": {
"files": [ "files": [
{ {
"client": "https://install.robertsspaceindustries.com/star-citizen/RSI-Setup-1.5.4.exe" "client": "https://install.robertsspaceindustries.com/star-citizen/RSI-Setup-1.5.5.exe"
} }
], ],
"game": { "game": {
@ -80,11 +80,12 @@
"dxvk": true, "dxvk": true,
"esync": true, "esync": true,
"overrides": { "overrides": {
"nvapi,nvapi64": "disabled" "nvapi,nvapi64": "disabled",
}, "libglesv2": "disabled"
}
} }
}, },
"content": "files:\n- client: https://install.robertsspaceindustries.com/star-citizen/RSI-Setup-1.5.4.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" "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"
} }
] ]
} }