#!/usr/bin/env bash set -euo pipefail repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" data_home="${XDG_DATA_HOME:-$HOME/.local/share}" config_home="${XDG_CONFIG_HOME:-$HOME/.config}" install_root="${data_home}/deckless" backup_root="${install_root}/backups/original" bin_dir="${HOME}/.local/bin" app_dir="${data_home}/applications" config_dir="${config_home}/deckless" autostart_dir="${config_home}/autostart" require_command() { if ! command -v "$1" >/dev/null 2>&1; then printf 'Missing required command: %s\n' "$1" >&2 exit 1 fi } backup_once() { local target="$1" local relative="$2" [[ -e "$target" || -L "$target" ]] || return 0 [[ -e "${backup_root}/${relative}" || -L "${backup_root}/${relative}" ]] && return 0 mkdir -p "$(dirname "${backup_root}/${relative}")" cp -a "$target" "${backup_root}/${relative}" } write_launcher() { local target="$1" local exec_target="$2" cat >"$target" <"${app_dir}/steam.desktop" <"${app_dir}/steam-bigpicture.desktop" <"${autostart_dir}/deckless-i3-bigpicture-bridge.desktop" </dev/null 2>&1 || return 0 [[ -n "${DISPLAY:-}" ]] || return 0 if i3-msg -t get_version >/dev/null 2>&1; then if ! pgrep -u "$USER" -fx "$bridge_cmd" >/dev/null 2>&1; then i3-msg "exec --no-startup-id ${bridge_cmd}" >/dev/null 2>&1 || true fi fi } require_command bash require_command jq if [[ ! -x /usr/bin/steam ]]; then printf 'Expected the official Steam client at /usr/bin/steam\n' >&2 exit 1 fi mkdir -p \ "${install_root}/bin" \ "${backup_root}/bin" \ "${backup_root}/applications" \ "${backup_root}/autostart" \ "$bin_dir" \ "$app_dir" \ "$config_dir" \ "$autostart_dir" backup_once "${bin_dir}/steam" "bin/steam" backup_once "${bin_dir}/steam-bigpicture" "bin/steam-bigpicture" backup_once "${app_dir}/steam.desktop" "applications/steam.desktop" backup_once "${app_dir}/steam-bigpicture.desktop" "applications/steam-bigpicture.desktop" backup_once "${autostart_dir}/deckless-i3-bigpicture-bridge.desktop" "autostart/deckless-i3-bigpicture-bridge.desktop" install -Dm755 "${repo_root}/bin/deckless-steam" "${install_root}/bin/deckless-steam" install -Dm755 "${repo_root}/bin/deckless-bigpicture" "${install_root}/bin/deckless-bigpicture" install -Dm755 "${repo_root}/bin/deckless-i3-bigpicture-bridge" "${install_root}/bin/deckless-i3-bigpicture-bridge" install -Dm644 "${repo_root}/config/proxy-env.example.sh" "${config_dir}/proxy-env.example.sh" install -Dm644 "${repo_root}/config/deckless.env.example" "${config_dir}/deckless.env.example" write_launcher "${bin_dir}/steam" "${install_root}/bin/deckless-steam" write_launcher "${bin_dir}/steam-bigpicture" "${install_root}/bin/deckless-bigpicture" write_steam_desktop write_bigpicture_desktop write_i3_autostart maybe_start_i3_bridge cat <