Files
a13labs.infra/ansible/files/game_station/bin/system/steam-short-session-tracker
T

77 lines
2.7 KiB
Bash
Raw Normal View History

#!/bin/bash
short_session_tracker_file="/tmp/steamos-short-session-tracker"
short_session_start_file="/tmp/steamos-short-session-start"
short_session_duration=60
short_session_count_before_reset=3
do_repair() {
# This should really be part of the steam launcher as `steam --repair` or similar, but we presently only have
# `steam --reset` which is too heavy of a hammer.
echo >&2 "steam-short-session-tracker: Re-bootstrapping steam from OS copy."
# at this point, might as well make sure we won't relaunch on a sideloaded build
rm -f -- "$HOME/devkit-game/devkit-steam"
mkdir -p ~/.local/share/Steam
# remove some caches and stateful things known to cause Steam to fail to start if corrupt
rm -rf --one-file-system ~/.local/share/Steam/config/widevine
# cleanup the steam config dir, i.e. ~/.steam. We should try to preserve registry.vdf if possible
steam_config_dir="$HOME/.steam"
steam_config_backup_dir="$HOME/dot-steam.bak.$(date +%s)"
registry_vdf="$steam_config_dir/registry.vdf"
registry_backup_vdf="$steam_config_backup_dir/.steam/registry.vdf"
mv "$steam_config_dir" "$steam_config_backup_dir"
mkdir -p "$steam_config_dir"
cp -f "$registry_backup_vdf" "$registry_vdf" || true
# restore clean copy of binaries from RO partition
tar xf /usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz -C ~/.local/share/Steam
# rearm
rm "$short_session_tracker_file"
}
handle_started() {
short_session_count=$(< "$short_session_tracker_file" wc -l)
touch $short_session_start_file
if [[ "$short_session_count" -ge "$short_session_count_before_reset" ]]; then
echo >&2 "steam-short-session-tracker: Steam failed to start $short_session_count_before_reset times within $short_session_duration seconds"
if [ -f "$HOME/.config/inhibit-short-session-tracker" ]; then
echo >&2 "steam-short-session-tracker: Auto-repair disabled by config. Remove ~/.config/inhibit-short-session-tracker to re-enable"
return
fi
do_repair
fi
}
handle_stopped() {
seconds_since_started=$(($(date +%s) - $(date +%s -r "$short_session_start_file")))
if [[ "seconds_since_started" -lt "$short_session_duration" ]]; then
echo "frog" >> "$short_session_tracker_file"
else
rm "$short_session_tracker_file"
fi
}
case "$1" in
--track-started)
echo "steam-short-session-tracker: Tracking Steam start (unimplemented)"
# handle_started
;;
--track-stopped)
echo "steam-short-session-tracker: Tracking Steam stop (unimplemented)"
# handle_stopped
;;
--repair-now)
echo "steam-short-session-tracker: Performing immediate repair (unimplemented)"
# do_repair
;;
*)
echo "Usage: $0 --track-started | --track-stopped | --repair-now"
exit 1
;;
esac
exit 0