initial commit
This commit is contained in:
Executable
+199
@@ -0,0 +1,199 @@
|
||||
#!/bin/bash
|
||||
# Uninstallation script for ASUS Zenbook Duo Linux dual-screen management.
|
||||
# Reverses everything installed by setup-gnome.sh/setup-kde.sh/setup-niri.sh
|
||||
# and (optionally) the UI app.
|
||||
|
||||
echo "Uninstalling Zenbook Duo Linux..."
|
||||
|
||||
# ============================================================================
|
||||
# ARGUMENT PARSING
|
||||
# ============================================================================
|
||||
|
||||
# Defaults: remove UI + user config for a clean reinstall.
|
||||
KEEP_UI=false
|
||||
KEEP_CONFIG=false
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--keep-ui)
|
||||
KEEP_UI=true
|
||||
shift
|
||||
;;
|
||||
--keep-config)
|
||||
KEEP_CONFIG=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Usage: ./uninstall.sh [--keep-ui] [--keep-config]"
|
||||
echo ""
|
||||
echo " --keep-ui Keep the Zenbook Duo Control UI package installed"
|
||||
echo " --keep-config Keep user config files (e.g. ~/.config/zenbook-duo)"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument: $1"
|
||||
echo "Run with --help for usage."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# ============================================================================
|
||||
# USER CONTEXT
|
||||
# ============================================================================
|
||||
|
||||
TARGET_USER="${USER}"
|
||||
if [ "${EUID}" = "0" ]; then
|
||||
if [ -n "${SUDO_USER:-}" ] && [ "${SUDO_USER}" != "root" ]; then
|
||||
TARGET_USER="${SUDO_USER}"
|
||||
else
|
||||
echo "ERROR: uninstall.sh must be run from a real user session."
|
||||
echo "Run: ./uninstall.sh"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
TARGET_UID="$(id -u "${TARGET_USER}" 2>/dev/null || true)"
|
||||
TARGET_HOME="$(getent passwd "${TARGET_USER}" 2>/dev/null | cut -d: -f6)"
|
||||
if [ -z "${TARGET_UID}" ] || [ -z "${TARGET_HOME}" ]; then
|
||||
echo "ERROR: failed to resolve TARGET_USER=${TARGET_USER}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function run_user_systemctl() {
|
||||
if [ "${TARGET_USER}" = "${USER}" ] && [ "${EUID}" != "0" ]; then
|
||||
XDG_RUNTIME_DIR="/run/user/${TARGET_UID}" \
|
||||
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${TARGET_UID}/bus" \
|
||||
systemctl --user "$@"
|
||||
return
|
||||
fi
|
||||
sudo -u "${TARGET_USER}" \
|
||||
XDG_RUNTIME_DIR="/run/user/${TARGET_UID}" \
|
||||
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${TARGET_UID}/bus" \
|
||||
systemctl --user "$@"
|
||||
}
|
||||
|
||||
function run_user_systemctl_best_effort() {
|
||||
run_user_systemctl "$@" >/dev/null 2>&1 || true
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# STOP RUNNING UI (BEST-EFFORT)
|
||||
# ============================================================================
|
||||
|
||||
# Close the UI if it's running so we can safely update/remove binaries.
|
||||
pkill -f zenbook-duo-control 2>/dev/null || true
|
||||
|
||||
# ============================================================================
|
||||
# SYSTEMD SERVICES
|
||||
# ============================================================================
|
||||
|
||||
# Stop running services
|
||||
sudo systemctl stop zenbook-duo.service 2>/dev/null
|
||||
sudo systemctl stop zenbook-duo-rust-daemon.service 2>/dev/null
|
||||
sudo systemctl stop zenbook-duo-rust-lifecycle.service 2>/dev/null
|
||||
run_user_systemctl_best_effort stop zenbook-duo-user.service
|
||||
run_user_systemctl_best_effort stop zenbook-duo-session-agent.service
|
||||
|
||||
# Disable services
|
||||
sudo systemctl disable zenbook-duo.service 2>/dev/null
|
||||
sudo systemctl disable zenbook-duo-rust-daemon.service 2>/dev/null
|
||||
sudo systemctl disable zenbook-duo-rust-lifecycle.service 2>/dev/null
|
||||
run_user_systemctl_best_effort disable zenbook-duo-user.service
|
||||
run_user_systemctl_best_effort disable zenbook-duo-session-agent.service
|
||||
sudo systemctl --global disable zenbook-duo-user.service 2>/dev/null
|
||||
|
||||
# Remove service files and sleep hook
|
||||
sudo rm -f /etc/systemd/system/zenbook-duo.service
|
||||
sudo rm -f /etc/systemd/system/zenbook-duo-rust-daemon.service
|
||||
sudo rm -f /etc/systemd/system/zenbook-duo-rust-lifecycle.service
|
||||
sudo rm -f /etc/systemd/user/zenbook-duo-user.service
|
||||
sudo rm -f /etc/systemd/user/zenbook-duo-session-agent.service
|
||||
sudo rm -f /usr/lib/systemd/system-sleep/duo
|
||||
sudo rm -f /usr/lib/systemd/system-sleep/zenbook-duo-rust-lifecycle
|
||||
|
||||
# Reload systemd
|
||||
sudo systemctl daemon-reload
|
||||
run_user_systemctl_best_effort daemon-reload
|
||||
|
||||
# ============================================================================
|
||||
# UDEV & HWDB RULES
|
||||
# ============================================================================
|
||||
|
||||
sudo rm -f /etc/udev/rules.d/90-zenbook-duo-keyboard.rules
|
||||
sudo rm -f /etc/udev/hwdb.d/90-zenbook-duo-keyboard.hwdb
|
||||
sudo systemd-hwdb update
|
||||
sudo udevadm trigger
|
||||
|
||||
# ============================================================================
|
||||
# SUDOERS ENTRIES
|
||||
# ============================================================================
|
||||
|
||||
# Remove sudoers lines added by the setup scripts.
|
||||
if sudo grep -q "/sys/class/backlight/.*/brightness" /etc/sudoers; then
|
||||
sudo sed -i '\|/sys/class/backlight/.*/brightness|d' /etc/sudoers
|
||||
fi
|
||||
if sudo grep -q "card1-eDP-2-backlight/brightness" /etc/sudoers; then
|
||||
sudo sed -i '\|card1-eDP-2-backlight/brightness|d' /etc/sudoers
|
||||
fi
|
||||
if sudo grep -q "intel_backlight/brightness" /etc/sudoers; then
|
||||
sudo sed -i '\|intel_backlight/brightness|d' /etc/sudoers
|
||||
fi
|
||||
|
||||
sudo rm -f /etc/sudoers.d/zenbook-duo
|
||||
|
||||
# ============================================================================
|
||||
# INSTALLED SCRIPT & RUNTIME FILES
|
||||
# ============================================================================
|
||||
|
||||
sudo rm -f /usr/local/bin/duo
|
||||
sudo rm -rf /usr/local/libexec/zenbook-duo
|
||||
sudo rm -rf /var/lib/zenbook-duo
|
||||
rm -rf /tmp/duo
|
||||
# Newer versions use a per-user directory (/tmp/duo-$UID). Remove only for target user.
|
||||
rm -rf "/tmp/duo-${TARGET_UID}"
|
||||
|
||||
# ============================================================================
|
||||
# UI APP (RPM/DEB) + DESKTOP ENTRIES
|
||||
# ============================================================================
|
||||
|
||||
if [ "$KEEP_UI" = false ]; then
|
||||
# Remove the package if installed.
|
||||
if command -v dnf >/dev/null 2>&1; then
|
||||
sudo dnf remove -y zenbook-duo-control 2>/dev/null || true
|
||||
elif command -v apt >/dev/null 2>&1; then
|
||||
sudo apt remove -y zenbook-duo-control 2>/dev/null || true
|
||||
sudo apt autoremove -y 2>/dev/null || true
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
sudo pacman -Rns --noconfirm zenbook-duo-control 2>/dev/null || true
|
||||
elif command -v rpm >/dev/null 2>&1; then
|
||||
sudo rpm -e zenbook-duo-control 2>/dev/null || true
|
||||
elif command -v dpkg >/dev/null 2>&1; then
|
||||
sudo dpkg -r zenbook-duo-control 2>/dev/null || true
|
||||
fi
|
||||
|
||||
sudo rm -f /usr/local/bin/zenbook-duo-control
|
||||
sudo rm -f /usr/share/applications/zenbook-duo-control.desktop
|
||||
sudo rm -f /usr/share/pixmaps/zenbook-duo-control.png
|
||||
|
||||
# Remove any legacy user-local desktop entry created by older install-ui.sh versions.
|
||||
rm -f "$TARGET_HOME/.local/share/applications/zenbook-duo-control.desktop" 2>/dev/null || true
|
||||
update-desktop-database "$TARGET_HOME/.local/share/applications" 2>/dev/null || true
|
||||
update-desktop-database /usr/share/applications 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# USER CONFIG (UI SETTINGS)
|
||||
# ============================================================================
|
||||
|
||||
if [ "$KEEP_CONFIG" = false ]; then
|
||||
rm -rf "$TARGET_HOME/.config/zenbook-duo" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# FINISH
|
||||
# ============================================================================
|
||||
|
||||
echo "Uninstall complete."
|
||||
echo "Note: Your user was not removed from the 'input' group."
|
||||
echo "To remove manually: sudo gpasswd -d \$USER input"
|
||||
Reference in New Issue
Block a user