diff options
| author | tranch <tranch.xiao@gmail.com> | 2026-09-13 19:18:04 +0800 |
|---|---|---|
| committer | tranch <tranch.xiao@gmail.com> | 2026-09-13 19:18:04 +0800 |
| commit | 796c6c8a70c92d4675df7c2ec2d25ecda139d723 (patch) | |
| tree | 06c6d3e7788d7b2ad5ddd0565e2651c0c8d9d151 /system_files/usr | |
| parent | ab070aec5f1d760a2539e14cb19da61593bded15 (diff) | |
| parent | d734f2c746632772b794143762f2fcea78e62011 (diff) | |
| download | AeroCore-OS-796c6c8a70c92d4675df7c2ec2d25ecda139d723.tar.gz AeroCore-OS-796c6c8a70c92d4675df7c2ec2d25ecda139d723.zip | |
Merge testing into main for 44.x stable release44.20260913
Diffstat (limited to 'system_files/usr')
6 files changed, 215 insertions, 0 deletions
diff --git a/system_files/usr/libexec/aerocore-desktop-branding b/system_files/usr/libexec/aerocore-desktop-branding new file mode 100755 index 0000000..84902eb --- /dev/null +++ b/system_files/usr/libexec/aerocore-desktop-branding @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# Called from Bazzite's user-level setup. The setup's version files provide +# the once-per-image-version guard; this helper only touches the current user. +plasma_config="${HOME}/.config/plasma-org.kde.plasma.desktop-appletsrc" + +if [[ -f "${plasma_config}" ]] && grep -Fxq 'icon=distributor-logo-steamdeck' "${plasma_config}"; then + updated_config="$(mktemp "${plasma_config}.XXXXXX")" + trap 'rm -f -- "${updated_config}"' EXIT + sed 's/^icon=distributor-logo-steamdeck$/icon=aerocore-logo/' \ + "${plasma_config}" > "${updated_config}" + mv -- "${updated_config}" "${plasma_config}" + trap - EXIT +fi diff --git a/system_files/usr/libexec/aerocore-desktop-branding-privileged b/system_files/usr/libexec/aerocore-desktop-branding-privileged new file mode 100755 index 0000000..318a64a --- /dev/null +++ b/system_files/usr/libexec/aerocore-desktop-branding-privileged @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -euo pipefail + +about_source=/usr/share/aerocore/desktop-branding/kcm-about-distrorc +about_target=/etc/xdg/kcm-about-distrorc + +# Only replace the known upstream default. Administrator changes win. +if [[ -f "${about_source}" ]] && + { [[ ! -f "${about_target}" ]] || grep -Fxq 'Name=Bazzite' "${about_target}"; }; then + install -Dm0644 "${about_source}" "${about_target}" +fi diff --git a/system_files/usr/share/aerocore/desktop-branding/kcm-about-distrorc b/system_files/usr/share/aerocore/desktop-branding/kcm-about-distrorc new file mode 100644 index 0000000..ed2c831 --- /dev/null +++ b/system_files/usr/share/aerocore/desktop-branding/kcm-about-distrorc @@ -0,0 +1,5 @@ +[General] +LogoPath=/usr/share/pixmaps/system-logo-white.png +Name=AeroCore OS +Website=https://os.aerocore.com.cn +Variant=Handheld & HTPC Edition diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js new file mode 100644 index 0000000..76ec66d --- /dev/null +++ b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js @@ -0,0 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +applet.currentConfigGroup = ["General"] +applet.writeConfig("icon", "aerocore-logo") +applet.reloadConfig() diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js new file mode 100644 index 0000000..76ec66d --- /dev/null +++ b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.kickoff.js @@ -0,0 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +applet.currentConfigGroup = ["General"] +applet.writeConfig("icon", "aerocore-logo") +applet.reloadConfig() 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 new file mode 100644 index 0000000..c8212eb --- /dev/null +++ b/system_files/usr/share/ublue-os/just/92-aerocore-decky-mirror.just @@ -0,0 +1,172 @@ +# vim: set ft=make : + +# Install and configure Decky Loader from the AeroCore mirror. Options: status | install | install-prerelease | uninstall +[group("gaming")] +setup-decky-mirror ACTION="": + #!/usr/bin/bash + set -euo pipefail + + if [[ $(id -u) -eq 0 ]]; then + echo >&2 "ERROR: Do not run this with sudo" + exit 1 + fi + + 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" + DECKY_PLUGIN_MIRROR_HOST="${AEROCORE_DECKY_PLUGIN_MIRROR_HOST:-plugins.decky.mirror.aerocore.com.cn}" + DECKY_PLUGIN_STORE_URL="https://${DECKY_PLUGIN_MIRROR_HOST}/plugins" + + get_status_token() { + local decky_service="/etc/systemd/system/plugin_loader.service" + if [[ ! -f /etc/systemd/system/multi-user.target.wants/plugin_loader.service ]]; then + echo "uninstall" + elif [[ -r "$decky_service" ]] && grep -q 'Environment=LOG_LEVEL=DEBUG' "$decky_service"; then + echo "install-prerelease" + elif [[ -r "$decky_service" ]]; then + echo "install" + else + return 1 + fi + } + + DECKY_STATE="${b}${red}Not Installed${n}" + case "$(get_status_token)" in + install) + DECKY_STATE="${b}${green}Installed${n}" + ;; + install-prerelease) + DECKY_STATE="${b}${yellow}Installed (Prerelease)${n}" + ;; + uninstall) + DECKY_STATE="${b}${red}Not Installed${n}" + ;; + esac + + setup_home_deck_compat() { + export HOME + 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." + run_as_root ln -sf "$HOME" /home/deck + fi + } + + configure_plugin_store() { + echo "Configuring Decky plugin store: ${DECKY_PLUGIN_STORE_URL}" + local settings_file="$HOME/homebrew/settings/loader.json" + local settings_dir="$(dirname "$settings_file")" + local temporary_file + mkdir -p "$settings_dir" + temporary_file="$(mktemp "${settings_dir}/.loader.XXXXXX")" + if [[ -f "$settings_file" ]]; then + jq --arg store_url "$DECKY_PLUGIN_STORE_URL" '.store = 2 | ."store-url" = $store_url' "$settings_file" > "$temporary_file" + else + jq -n --arg store_url "$DECKY_PLUGIN_STORE_URL" '{store: 2, "store-url": $store_url}' > "$temporary_file" + fi + chmod --reference="$settings_file" "$temporary_file" 2>/dev/null || chmod 0644 "$temporary_file" + mv -f "$temporary_file" "$settings_file" + } + + install_release() { + setup_home_deck_compat + 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" + run_as_root systemctl stop plugin_loader.service 2>/dev/null || true + configure_plugin_store + run_as_root systemctl start plugin_loader.service 2>/dev/null || true + } + + install_prerelease() { + setup_home_deck_compat + 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" + run_as_root systemctl stop plugin_loader.service 2>/dev/null || true + configure_plugin_store + run_as_root systemctl start plugin_loader.service 2>/dev/null || true + } + + uninstall() { + echo "Uninstalling Decky Loader..." + if [[ "$HAS_GRAPHICAL_SESSION" -eq 1 ]]; then + curl -L "${DECKY_INSTALLER_BASE}/uninstall.sh" | + sed -e 's|sudo|sudo -A |g' \ + -e 's|sudo -A rm "${HOMEBREW_FOLDER}/services/PluginLoader"|sudo -A rm -rf "${HOMEBREW_FOLDER}/services/PluginLoader"|' \ + -e 's|sudo -A rm "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging"|sudo -A rm -f "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging"|' \ + -e 's|sudo -A rm "${USER_DIR}/.var/app/com.valvesoftware.Steam/data/Steam/.cef-enable-remote-debugging"|sudo -A rm -f "${USER_DIR}/.var/app/com.valvesoftware.Steam/data/Steam/.cef-enable-remote-debugging"|' | sh + else + curl -L "${DECKY_INSTALLER_BASE}/uninstall.sh" | + sed -e 's|sudo rm "${HOMEBREW_FOLDER}/services/PluginLoader"|sudo rm -rf "${HOMEBREW_FOLDER}/services/PluginLoader"|' \ + -e 's|sudo rm "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging"|sudo rm -f "${USER_DIR}/.steam/steam/.cef-enable-remote-debugging"|' \ + -e 's|sudo rm "${USER_DIR}/.var/app/com.valvesoftware.Steam/data/Steam/.cef-enable-remote-debugging"|sudo rm -f "${USER_DIR}/.var/app/com.valvesoftware.Steam/data/Steam/.cef-enable-remote-debugging"|' | sh + fi + echo "Decky Loader has been uninstalled." + } + + OPTION="{{ ACTION }}" + if [[ "$OPTION" == "help" ]]; then + echo "Usage: ujust setup-decky-mirror <option>" + echo " <option>: Specify the quick option to skip the prompt" + echo " Use 'status' to print the current portal token" + echo " Use 'install' to select Install Decky from the AeroCore mirror" + echo " Use 'install-prerelease' to select Install Decky Prerelease from the AeroCore mirror" + echo " Use 'uninstall' to uninstall Decky Loader using the AeroCore mirror" + exit 0 + elif [[ "$OPTION" == "status" ]]; then + 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")" + case "$OPTION" in + "Install Decky from AeroCore Mirror") + install_release + ;; + "Install Decky Prerelease from AeroCore Mirror") + install_prerelease + ;; + "Uninstall Decky") + uninstall + ;; + *) + echo "No changes were made." + ;; + esac + elif [[ "$OPTION" == "install" ]]; then + install_release + exit 0 + elif [[ "$OPTION" == "install-prerelease" || "$OPTION" == "prerelease" ]]; then + install_prerelease + exit 0 + elif [[ "$OPTION" == "uninstall" ]]; then + uninstall + exit 0 + fi |
