summaryrefslogtreecommitdiff
path: root/system_files/usr
diff options
context:
space:
mode:
authortranch <tranch.xiao@gmail.com>2026-09-11 01:53:23 +0800
committertranch <tranch.xiao@gmail.com>2026-09-11 01:53:23 +0800
commit6f6f3c5f02f2c8d909c263166793dd4fb05e547c (patch)
tree3579685823d88d030ba4aa021a59b1db797bbf0f /system_files/usr
parentff102db146c813632f53a8f2d910763bcc19c4d1 (diff)
downloadAeroCore-OS-6f6f3c5f02f2c8d909c263166793dd4fb05e547c.tar.gz
AeroCore-OS-6f6f3c5f02f2c8d909c263166793dd4fb05e547c.zip
Support Decky mirror setup from TTY
Diffstat (limited to 'system_files/usr')
-rw-r--r--system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just46
1 files changed, 37 insertions, 9 deletions
diff --git a/system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just b/system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just
index b54bb94..bfba05b 100644
--- a/system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just
+++ b/system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just
@@ -13,6 +13,18 @@ setup-decky-mirror ACTION="":
source /usr/lib/ujust/ujust.sh
+ if [[ -n "${DISPLAY:-}${WAYLAND_DISPLAY:-}" ]]; then
+ SUDO_PREFIX=(sudo -A)
+ HAS_GRAPHICAL_SESSION=1
+ else
+ SUDO_PREFIX=(sudo)
+ HAS_GRAPHICAL_SESSION=0
+ fi
+
+ run_as_root() {
+ "${SUDO_PREFIX[@]}" "$@"
+ }
+
DECKY_MIRROR_HOST="${AEROCORE_DECKY_MIRROR_HOST:-decky.mirror.aerocore.com.cn}"
DECKY_INSTALLER_BASE="https://${DECKY_MIRROR_HOST}/SteamDeckHomebrew/decky-installer/releases/latest/download"
@@ -47,28 +59,40 @@ setup-decky-mirror ACTION="":
HOME="$(getent passwd "${SUDO_USER:-$USER}" | cut -d: -f6)"
if [[ ! -L "/home/deck" && ! -e "/home/deck" && "$HOME" != "/home/deck" ]]; then
echo "Making a /home/deck symlink to fix plugins that do not use environment variables."
- sudo -A ln -sf "$HOME" /home/deck
+ run_as_root ln -sf "$HOME" /home/deck
fi
}
install_release() {
setup_home_deck_compat
- curl -L "${DECKY_INSTALLER_BASE}/install_release.sh" |
- sed 's|sudo|sudo -A |g' | sh
- sudo -A chcon -R -t bin_t "$HOME/homebrew/services/PluginLoader"
+ if [[ "$HAS_GRAPHICAL_SESSION" -eq 1 ]]; then
+ curl -L "${DECKY_INSTALLER_BASE}/install_release.sh" |
+ sed 's|sudo|sudo -A |g' | sh
+ else
+ curl -L "${DECKY_INSTALLER_BASE}/install_release.sh" | sh
+ fi
+ run_as_root chcon -R -t bin_t "$HOME/homebrew/services/PluginLoader"
}
install_prerelease() {
setup_home_deck_compat
- curl -L "${DECKY_INSTALLER_BASE}/install_prerelease.sh" |
- sed 's|sudo|sudo -A |g' | sh
- sudo -A chcon -R -t bin_t "$HOME/homebrew/services/PluginLoader"
+ if [[ "$HAS_GRAPHICAL_SESSION" -eq 1 ]]; then
+ curl -L "${DECKY_INSTALLER_BASE}/install_prerelease.sh" |
+ sed 's|sudo|sudo -A |g' | sh
+ else
+ curl -L "${DECKY_INSTALLER_BASE}/install_prerelease.sh" | sh
+ fi
+ run_as_root chcon -R -t bin_t "$HOME/homebrew/services/PluginLoader"
}
uninstall() {
echo "Uninstalling Decky Loader..."
- curl -L "${DECKY_INSTALLER_BASE}/uninstall.sh" |
- sed 's|sudo|sudo -A |g' | sh
+ if [[ "$HAS_GRAPHICAL_SESSION" -eq 1 ]]; then
+ curl -L "${DECKY_INSTALLER_BASE}/uninstall.sh" |
+ sed 's|sudo|sudo -A |g' | sh
+ else
+ curl -L "${DECKY_INSTALLER_BASE}/uninstall.sh" | sh
+ fi
echo "Decky Loader has been uninstalled."
}
@@ -85,6 +109,10 @@ setup-decky-mirror ACTION="":
get_status_token
exit $?
elif [[ "$OPTION" == "" ]]; then
+ if [[ "$HAS_GRAPHICAL_SESSION" -eq 0 ]]; then
+ echo "No graphical session detected. Use 'ujust setup-decky-mirror install' from a TTY, or run this command in KDE/Steam Gaming Mode."
+ exit 2
+ fi
echo "${bold}Decky Loader setup and configuration${normal}"
echo "Decky is $DECKY_STATE"
OPTION="$(ugum choose "Install Decky from AeroCore Mirror" "Install Decky Prerelease from AeroCore Mirror" "Uninstall Decky" "Exit")"