Files
Linux_post_install/apps/media/scrcpy.sh
T
2026-07-28 10:28:11 -04:00

54 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
source "$(dirname "$0")/../../lib/common.sh"
RELEASE_URL="https://api.github.com/repos/Genymobile/scrcpy/releases/latest"
install_scrcpy() {
command -v scrcpy &>/dev/null && { log "scrcpy already installed"; return 0; }
spawn "Fetching latest scrcpy release info" bash -c "
curl -fsSL '$RELEASE_URL' -o /tmp/scrcpy-release.json
"
local tag asset_url
tag=$(python3 -c "import json; print(json.load(open('/tmp/scrcpy-release.json'))['tag_name'])")
asset_url=$(python3 -c "
import json
r = json.load(open('/tmp/scrcpy-release.json'))
for a in r['assets']:
if a['name'].startswith('scrcpy-linux-x86_64') and a['name'].endswith('.tar.gz'):
print(a['browser_download_url'])
break
")
version="${tag#v}"
spawn "Downloading scrcpy $version" bash -c "
install_dir=/usr/local/lib/scrcpy-$version
curl -fsSL '$asset_url' -o /tmp/scrcpy.tar.gz
sudo rm -rf \$install_dir /usr/local/lib/scrcpy
sudo mkdir -p \$install_dir
sudo tar xzf /tmp/scrcpy.tar.gz -C \$install_dir --strip-components=1
sudo ln -sf \$install_dir/scrcpy /usr/local/bin/scrcpy
rm -f /tmp/scrcpy.tar.gz /tmp/scrcpy-release.json
"
spawn "Adding desktop entry" bash -c "
sudo tee /usr/share/applications/scrcpy.desktop >/dev/null <<-EOF
[Desktop Entry]
Name=scrcpy
Comment=Display and control Android devices
Exec=/usr/local/bin/scrcpy
Icon=/usr/local/lib/scrcpy-$version/scrcpy.png
Terminal=false
Type=Application
Categories=Utility;
StartupNotify=false
EOF
"
log "scrcpy $version installed (adb included in the bundle)"
}
install_scrcpy