# shellcheck shell=bash shopt -s nullglob STEAM="$HOME/.local/share/Steam/steamapps/common" GAMES="$HOME/Games" EXCLUDE=( "Proton - Experimental" "Proton Hotfix" "SteamLinuxRuntime" "SteamLinuxRuntime_soldier" "SteamLinuxRuntime_sniper" "Steamworks Shared" "Steam.dll" ) is_excluded() { local dir=$1 for exclude in "${EXCLUDE[@]}"; do if [[ "$dir" == "$exclude" ]]; then return 0 fi done return 1 } for game in "$STEAM"/*/; do name="$(basename "$game")" if is_excluded "$name"; then echo "Excluding $name from symlink creation." continue fi if [[ -L "$GAMES/$name" ]]; then continue fi if [[ -d "$GAMES/$name" || -f "$GAMES/$name" ]]; then >&2 echo "Error: $name is already a regular directory or file." continue fi echo "Creating symlink for $name..." ln -srf "$game" "$GAMES/$name" done for link in "$GAMES"/*; do target="$(readlink -f "$link" || echo "")" if [[ ! "$target" == "$STEAM/"* ]]; then continue fi name="$(basename "$target")" if [[ -e "$target" ]] && ! is_excluded "$name"; then continue fi echo "Removing symlink $link..." rm "$link" done