|
@@ -1,71 +1,70 @@
|
|
|
-#!/bin/bash
|
|
|
-
|
|
|
-LX_BASE=""
|
|
|
-LX_VERSION=""
|
|
|
-
|
|
|
-if [ -r "/etc/os-release" ]; then
|
|
|
- . "/etc/os-release"
|
|
|
- if [ "$ID" = "arch" ]; then
|
|
|
- LX_BASE="$ID"
|
|
|
- elif [ "$ID" = "ubuntu" ]; then
|
|
|
- LX_BASE="$ID"
|
|
|
- LX_VERSION=$VERSION_ID
|
|
|
- elif [ -n "$UBUNTU_CODENAME" ] ; then
|
|
|
- LX_BASE="ubuntu"
|
|
|
- LX_VERSION="$VERSION_ID"
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+# https://gist.github.com/davejamesmiller/1965569
|
|
|
+ask() {
|
|
|
+ local prompt default reply
|
|
|
+
|
|
|
+ if [ "${2:-}" = "Y" ]; then
|
|
|
+ prompt="Y/n"
|
|
|
+ default=Y
|
|
|
+ elif [ "${2:-}" = "N" ]; then
|
|
|
+ prompt="y/N"
|
|
|
+ default=N
|
|
|
else
|
|
|
- LX_BASE="$ID"
|
|
|
- LX_VERSION="$VERSION"
|
|
|
+ prompt="y/n"
|
|
|
+ default=
|
|
|
fi
|
|
|
-else
|
|
|
- echo "Could not identify your distro. Please open script and run commands manually."
|
|
|
- exit
|
|
|
-fi
|
|
|
|
|
|
-SUR_MODEL="$(dmidecode | grep "Product Name" -m 1 | xargs | sed -e 's/Product Name: //g')"
|
|
|
+ while true; do
|
|
|
+
|
|
|
+ # Ask the question (not using "read -p" as it uses stderr not stdout)
|
|
|
+ echo -n "$1 [$prompt]: "
|
|
|
+
|
|
|
+ # Read the answer (use /dev/tty in case stdin is redirected from somewhere else)
|
|
|
+ read reply </dev/tty
|
|
|
+
|
|
|
+ # Default?
|
|
|
+ if [ -z "$reply" ]; then
|
|
|
+ reply=$default
|
|
|
+ fi
|
|
|
|
|
|
-echo "Running $LX_BASE version $LX_VERSION on a $SUR_MODEL."
|
|
|
-read -rp "Press enter if this is correct, or CTRL-C to cancel." tmp; echo
|
|
|
-echo "Continuing setup..."
|
|
|
+ # Check if the reply is valid
|
|
|
+ case "$reply" in
|
|
|
+ Y*|y*) return 0 ;;
|
|
|
+ N*|n*) return 1 ;;
|
|
|
+ esac
|
|
|
+
|
|
|
+ done
|
|
|
+}
|
|
|
|
|
|
echo "==> Copying the config files under root to where they belong..."
|
|
|
-for dir in $(ls root/); do cp -Rbv "root/$dir/"* "/$dir/"; done
|
|
|
-echo
|
|
|
+for dir in $(ls root/); do
|
|
|
+ sudo cp -Rbv "root/$dir/"* "/$dir/"
|
|
|
+done
|
|
|
|
|
|
echo "==> Copying firmware files under root..."
|
|
|
-cp -rv firmware/* /lib/firmware/
|
|
|
-echo
|
|
|
+sudo cp -rv firmware/* /lib/firmware/
|
|
|
|
|
|
-echo "==> Making /lib/systemd/system-sleep/sleep executable..."
|
|
|
-chmod -v a+x /lib/systemd/system-sleep/sleep
|
|
|
+echo "==> Enabling power management for Surface Go touchscreen..."
|
|
|
+sudo systemctl enable -q surfacego-touchscreen
|
|
|
|
|
|
-printf "
|
|
|
-Suspend is recommended over hibernate. If you chose to use hibernate, please
|
|
|
-make sure you've setup your swap file per the instructions in the README.\n\n"
|
|
|
-read -rp "Do you want to replace suspend with hibernate? (type yes or no): " \
|
|
|
- usehibernate;echo
|
|
|
+echo
|
|
|
|
|
|
-if [ "$usehibernate" = "yes" ]; then
|
|
|
- if [ "$LX_BASE" = "ubuntu" ] && [ 1 -eq "$(echo "${LX_VERSION} >= 17.10" | bc)" ]; then
|
|
|
- echo "==> Using Hibernate instead of Suspend..."
|
|
|
- ln -vsfb /lib/systemd/system/hibernate.target /etc/systemd/system/suspend.target
|
|
|
- sudo ln -vsfb /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/systemd-suspend.service
|
|
|
- else
|
|
|
- echo "==> Using Hibernate instead of Suspend..."
|
|
|
- ln -vsfb /usr/lib/systemd/system/hibernate.target /etc/systemd/system/suspend.target
|
|
|
- sudo ln -vsfb /usr/lib/systemd/system/systemd-hibernate.service /etc/systemd/system/systemd-suspend.service
|
|
|
- fi
|
|
|
+echo "Setting your clock to local time can fix issues with Windows dualboot."
|
|
|
+if ask "Do you want to set your clock to local time instead of UTC?" N; then
|
|
|
+ echo "==> Setting clock to local time..."
|
|
|
+ sudo timedatectl set-local-rtc 1
|
|
|
+ sudo hwclock --systohc --localtime
|
|
|
else
|
|
|
- echo "==> Not touching Suspend"
|
|
|
+ echo "==> Not setting clock..."
|
|
|
fi
|
|
|
|
|
|
-printf "
|
|
|
-Patched libwacom packages are available to better support the pen. If you
|
|
|
-intend to use the pen, it's recommended that you install them!\n\n"
|
|
|
-read -rp "Do you want to install the patched libwacom packages? (type yes or no): " \
|
|
|
- uselibwacom;echo
|
|
|
+echo
|
|
|
+
|
|
|
+echo "Patched libwacom packages are available to better support the pen."
|
|
|
+echo "If you intend to use the pen, it's recommended that you install them!"
|
|
|
|
|
|
-if [ "$uselibwacom" = "yes" ]; then
|
|
|
+if ask "Do you want to install the patched libwacom?" Y; then
|
|
|
echo "==> Downloading latest libwacom-surface..."
|
|
|
|
|
|
urls=$(curl --silent "https://api.github.com/repos/linux-surface/libwacom-surface-deb/releases/latest" \
|
|
@@ -78,73 +77,15 @@ if [ "$uselibwacom" = "yes" ]; then
|
|
|
|
|
|
echo "==> Installing latest libwacom-surface..."
|
|
|
|
|
|
- dpkg -i tmp/*.deb
|
|
|
+ sudo dpkg -i tmp/*.deb
|
|
|
rm -rf tmp
|
|
|
else
|
|
|
echo "==> Not touching libwacom"
|
|
|
fi
|
|
|
|
|
|
-printf "
|
|
|
-This repo comes with example xorg and pulse audio configs. If you chose to
|
|
|
-keep them, be sure to rename them and uncomment out what you'd like to
|
|
|
-keep!\n\n"
|
|
|
-read -rp "Do you want to remove the example intel xorg config? (type yes or no): " \
|
|
|
- removexorg;echo
|
|
|
-
|
|
|
-if [ "$removexorg" = "yes" ]; then
|
|
|
- echo "==> Removing the example intel xorg config..."
|
|
|
- rm -v /etc/X11/xorg.conf.d/20-intel_example.conf
|
|
|
-else
|
|
|
- echo "==> Not touching example intel xorg config" \
|
|
|
- "(/etc/X11/xorg.conf.d/20-intel_example.conf)"
|
|
|
-fi
|
|
|
-
|
|
|
echo
|
|
|
-read -rp "Do you want to remove the example pulse audio config files? (type yes or no): "\
|
|
|
- removepulse;echo
|
|
|
-
|
|
|
-if [ "$removepulse" = "yes" ]; then
|
|
|
- echo "==> Removing the example pulse audio config files..."
|
|
|
- rm -v /etc/pulse/daemon_example.conf
|
|
|
- rm -v /etc/pulse/default_example.pa
|
|
|
-else
|
|
|
- echo "==> Not touching example pulse audio config files" \
|
|
|
- " (/etc/pulse/*_example.*)"
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "$SUR_MODEL" = "Surface Pro 3" ]; then
|
|
|
- echo "==> Remove unneeded udev rules for Surface Pro 3..."
|
|
|
- rm -v /etc/udev/rules.d/98-keyboardscovers.rules
|
|
|
-fi
|
|
|
-
|
|
|
-if [ "$SUR_MODEL" = "Surface Go" ]; then
|
|
|
- if [ ! -f "/etc/init.d/surfacego-touchscreen" ]; then
|
|
|
- echo "==> Patching power control for Surface Go touchscreen..."
|
|
|
- echo "echo \"on\" > /sys/devices/pci0000:00/0000:00:15.1/i2c_designware.1/power/control" \
|
|
|
- > /etc/init.d/surfacego-touchscreen
|
|
|
- chmod -v 755 /etc/init.d/surfacego-touchscreen
|
|
|
- update-rc.d surfacego-touchscreen defaults
|
|
|
- fi
|
|
|
-fi
|
|
|
-
|
|
|
-read -rp "
|
|
|
-Do you want to set your clock to local time instead of UTC? This fixes
|
|
|
-issues when dual booting with Windows. (type yes or no): " \
|
|
|
- uselocaltime;echo
|
|
|
-
|
|
|
-if [ "$uselocaltime" = "yes" ]; then
|
|
|
- echo "==> Setting clock to local time..."
|
|
|
- timedatectl set-local-rtc 1
|
|
|
- hwclock --systohc --localtime
|
|
|
-else
|
|
|
- echo "==> Not setting clock"
|
|
|
-fi
|
|
|
|
|
|
-read -rp "
|
|
|
-Do you want this script to download and install the latest kernel for you?
|
|
|
-(type yes or no): " autoinstallkernel;echo
|
|
|
-
|
|
|
-if [ "$autoinstallkernel" = "yes" ]; then
|
|
|
+if ask "Do you want to download and install the latest kernel?" Y; then
|
|
|
echo "==> Downloading latest kernel..."
|
|
|
|
|
|
urls=$(curl --silent "https://api.github.com/repos/linux-surface/linux-surface/releases/latest" \
|
|
@@ -158,11 +99,12 @@ if [ "$autoinstallkernel" = "yes" ]; then
|
|
|
echo
|
|
|
echo "==> Installing latest kernel..."
|
|
|
|
|
|
- dpkg -i tmp/*.deb
|
|
|
+ sudo dpkg -i tmp/*.deb
|
|
|
rm -rf tmp
|
|
|
else
|
|
|
echo "==> Not downloading latest kernel"
|
|
|
fi
|
|
|
|
|
|
echo
|
|
|
+
|
|
|
echo "All done! Please reboot."
|