71 lines
3.1 KiB
Bash
71 lines
3.1 KiB
Bash
#!/bin/bash
|
|
|
|
version=v2.1.1
|
|
|
|
echo -e "==============\n"
|
|
echo " · More info: run "\""scrcpy --help"\"" or visit https://github.com/Genymobile/scrcpy"
|
|
echo " · The Android device requires at least API 21 (Android 5.0)."
|
|
echo " · Make sure you enabled adb debugging on your device(s)."
|
|
echo " · On some devices, you also need to enable an additional option to control it using keyboard and mouse."
|
|
echo " · If you have issues, try to run the app a couple of times through Terminal."
|
|
|
|
sudo rm -rf ~/scrcpy /usr/local/share/scrcpy ~/.local/share/applications/scrcpy.desktop
|
|
|
|
install_packages adb android-sdk-platform-tools-common ffmpeg libsdl2-2.0-0 gcc git pkg-config meson ninja-build libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libusb-1.0-0 libusb-1.0-0-dev || exit 1
|
|
|
|
hash -r
|
|
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
|
|
if [ $(version $(meson --version)) -lt $(version "0.48") ]; then
|
|
status "Apt meson version is too old to build Scrcpy. Installing up to date meson from pip"
|
|
install_packages python3 python3-pip || exit 1
|
|
hash -r
|
|
sudo -H python3 -m pip install meson || error "Could not install updated meson"
|
|
hash -r
|
|
fi
|
|
|
|
#Add user to plugdev group
|
|
status -n "Addung user '$USER' to the 'plugdev' group..."
|
|
sudo usermod -aG plugdev "$USER" || error "Failed to add user '$USER' to the 'plugdev' group!"
|
|
status_green Done
|
|
|
|
cd /tmp
|
|
git_clone https://github.com/Genymobile/scrcpy -b ${version} || error "Failed to download repo!"
|
|
cd scrcpy
|
|
|
|
# fixme: upstream v2.0 release does not build. upstream still has not fixed with a new release after a month
|
|
wget https://github.com/Genymobile/scrcpy/commit/6b769675fa68e60c9765022e43c4d7b1e329353a.patch
|
|
git apply 6b769675fa68e60c9765022e43c4d7b1e329353a.patch
|
|
|
|
status "Downloading prebuilt scrcpy-server that gets pushed to the android device"
|
|
wget https://github.com/Genymobile/scrcpy/releases/download/${version}/scrcpy-server-${version} -O scrcpy-server || error "Failed to download scrcpy-server prebuilt!"
|
|
|
|
status "Compiling scrcpy-client"
|
|
rm -rf build
|
|
meson build --buildtype=release --strip -Db_lto=true -Dprebuilt_server=scrcpy-server || error "Could not generate build options"
|
|
cd build || error "Could not move to build directory"
|
|
ninja || error "Error while building scrcpy client"
|
|
status "Installing scrcpy-client"
|
|
sudo ninja install || error "Could not install scrcpy"
|
|
|
|
#clean up
|
|
status -n "Cleaning up..."
|
|
cd
|
|
rm -rf /tmp/scrcpy
|
|
status_green "Done"
|
|
|
|
#menu entry
|
|
sudo mkdir -p /usr/local/share/applications
|
|
status -n "Making menu entry..."
|
|
cat << "EOF" | sudo tee /usr/local/share/applications/scrcpy.desktop >/dev/null
|
|
[Desktop Entry]
|
|
Name=Scrcpy
|
|
Exec=bash -c "errors="\""$(scrcpy --turn-screen-off --stay-awake --power-off-on-close 2>&1)"\"" || yad --text-info --center --width=500 --height=300 --font-name=12 --button=Close --text="\""Scrcpy failed to launch. Errors below."\"" <<<"\""$errors"\"""
|
|
Icon=/usr/local/share/icons/hicolor/256x256/apps/scrcpy.png
|
|
Type=Application
|
|
Comment=Display and control of Android devices connected on USB
|
|
Categories=ConsoleOnly;Utility;System;
|
|
EOF
|
|
status_green Done
|
|
|
|
sudo rm -f /usr/local/share/applications/scrcpy-console.desktop
|