summaryrefslogtreecommitdiff
path: root/raveos-center/adat/actions/discord.sh
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-center/adat/actions/discord.sh')
-rwxr-xr-xraveos-center/adat/actions/discord.sh249
1 files changed, 249 insertions, 0 deletions
diff --git a/raveos-center/adat/actions/discord.sh b/raveos-center/adat/actions/discord.sh
new file mode 100755
index 0000000..9b626b3
--- /dev/null
+++ b/raveos-center/adat/actions/discord.sh
@@ -0,0 +1,249 @@
+#!/bin/bash
+# Discord + Vencord telepítő script
+# Környezeti változók: INSTALL_USER, INSTALL_HOME, REPO_CONFIGS_URL
+
+set -e
+
+USER="$INSTALL_USER"
+HOME="$INSTALL_HOME"
+REPO_URL="${REPO_CONFIGS_URL:-https://git.rp1.hu/Nippy/Raveos-App-beta/raw/branch/main/raveos-app-installer-beta/configs/}"
+ACTION="${1:-install}"
+TARGET_UID="${TARGET_UID:-$(id -u "$USER" 2>/dev/null || true)}"
+TARGET_XDG_RUNTIME_DIR="${TARGET_XDG_RUNTIME_DIR:-/run/user/$TARGET_UID}"
+CONFIG_OVERRIDE_DIR="${RAVEOS_CONFIG_OVERRIDE_DIR:-/etc/raveos-beta/configs}"
+CONFIG_PACKAGE_DIR="${RAVEOS_CONFIG_PACKAGE_DIR:-/usr/share/raveos-app-installer-beta/configs}"
+
+run_as_user() {
+ runuser -u "$USER" -- env \
+ HOME="$HOME" \
+ XDG_RUNTIME_DIR="$TARGET_XDG_RUNTIME_DIR" \
+ "$@"
+}
+
+resolve_local_config() {
+ local name="$1"
+ local candidate
+ for candidate in \
+ "$CONFIG_OVERRIDE_DIR/$name" \
+ "$CONFIG_PACKAGE_DIR/$name"
+ do
+ if [[ -f "$candidate" ]]; then
+ printf '%s\n' "$candidate"
+ return 0
+ fi
+ done
+ return 1
+}
+
+remove_installed_packages() {
+ local installed=()
+ local pkg
+ for pkg in "$@"; do
+ if pacman -Qq "$pkg" >/dev/null 2>&1; then
+ installed+=("$pkg")
+ fi
+ done
+ if ((${#installed[@]})); then
+ pacman -Rnsu --noconfirm "${installed[@]}"
+ fi
+}
+
+find_discord_dirs() {
+ local d
+ for d in "$HOME"/.config/discord/app-*/resources/app.asar; do
+ [[ -e "$d" ]] && printf '%s\n' "$(dirname "$(dirname "$d")")"
+ done
+ for d in "$HOME/.local/share/discord" "$HOME/.local/share/Discord" /usr/lib/discord /opt/discord; do
+ [[ -e "$d/resources/app.asar" ]] && printf '%s\n' "$d"
+ done
+}
+
+if [[ "$ACTION" == "remove" ]]; then
+ echo "Removing Discord + Vencord for $USER..."
+ while IFS= read -r dir; do
+ [[ -n "$dir" ]] || continue
+ run_as_user /usr/local/bin/VencordInstallerCli-linux -uninstall -location "$dir" </dev/null 2>/dev/null || true
+ run_as_user /usr/local/bin/VencordInstallerCli-linux -uninstall-openasar -location "$dir" </dev/null 2>/dev/null || true
+ done < <(find_discord_dirs)
+ remove_installed_packages discord
+ run_as_user env DBUS_SESSION_BUS_ADDRESS="unix:path=$TARGET_XDG_RUNTIME_DIR/bus" \
+ systemctl --user disable --now vencord-patch.path 2>/dev/null || true
+ rm -f "$HOME/.config/systemd/user/vencord-patch.path" \
+ "$HOME/.config/systemd/user/vencord-patch.service" \
+ "$HOME/.config/systemd/user/default.target.wants/vencord-patch.path"
+ rm -f /etc/pacman.d/hooks/vencord-reinstall.hook
+ rm -f /usr/local/bin/vencord-reinstall.sh
+ rm -f /usr/local/bin/vencord-patch
+ rm -f /usr/local/bin/VencordInstallerCli-linux
+ rm -rf "$HOME/.config/Vencord"
+ echo "Discord + Vencord removal complete!"
+ exit 0
+fi
+
+echo "Installing Discord + Vencord for $USER..."
+
+# Discord telepítése
+pacman -S --noconfirm --needed discord
+
+# Secure temp directory
+TMPDIR=$(mktemp -d)
+chmod 755 "$TMPDIR"
+trap 'rm -rf "$TMPDIR"' EXIT
+
+# Vencord Installer letöltése (fix verzió + SHA256 ellenőrzés)
+echo "Downloading Vencord Installer..."
+VENCORD_VERSION="1.4.2"
+VENCORD_SHA256="52642c8521a866ad241c10337144a4f513672c54b9c86a8169954785054c815d"
+VENCORD_URL="https://github.com/Vencord/Installer/releases/download/v${VENCORD_VERSION}/VencordInstallerCli-linux"
+wget -q -O "$TMPDIR/VencordInstallerCli-linux" "$VENCORD_URL"
+echo "${VENCORD_SHA256} $TMPDIR/VencordInstallerCli-linux" | sha256sum -c - >/dev/null || {
+ echo "ERROR: Vencord installer checksum mismatch (version ${VENCORD_VERSION})"
+ exit 1
+}
+
+# Verify it's an ELF binary (not a malicious script)
+FILE_TYPE=$(file -b "$TMPDIR/VencordInstallerCli-linux")
+if [[ "$FILE_TYPE" != ELF* ]]; then
+ echo "ERROR: Downloaded file is not a valid ELF binary: $FILE_TYPE"
+ exit 1
+fi
+
+chmod +x "$TMPDIR/VencordInstallerCli-linux"
+
+# Vencord installer másolása a rendszerbe
+cp "$TMPDIR/VencordInstallerCli-linux" /usr/local/bin/VencordInstallerCli-linux
+chmod +x /usr/local/bin/VencordInstallerCli-linux
+
+# Vencord telepítése. Az új Discord bootstrap a user home-ba telepíti az
+# app-<verzió> mappákat (~/.config/discord/app-*/resources/app.asar), ezért
+# ezeket user-ként, explicit -location-nel patcheljük. Régi rendszer-szintű
+# telepítés (/usr/lib/discord) esetén is működik.
+cat > /usr/local/bin/vencord-patch << 'PATCH'
+#!/bin/bash
+for _ in $(seq 1 60); do
+ hianyzik=0
+ for d in "$HOME"/.config/discord/app-*/; do
+ [ -d "$d" ] || continue
+ [ -e "${d}resources/app.asar" ] || hianyzik=1
+ done
+ [ "$hianyzik" = 0 ] && break
+ sleep 5
+done
+for asar in "$HOME"/.config/discord/app-*/resources/app.asar "$HOME"/.local/share/discord/resources/app.asar "$HOME"/.local/share/Discord/resources/app.asar /usr/lib/discord/resources/app.asar /opt/discord/resources/app.asar; do
+ [ -f "$asar" ] || continue
+ res=$(dirname "$asar")
+ [ -e "$res/_app.asar" ] && continue
+ [ -w "$res" ] || continue
+ dir=$(dirname "$res")
+ echo "Vencord patch: $dir"
+ /usr/local/bin/VencordInstallerCli-linux -install -location "$dir" </dev/null || true
+ /usr/local/bin/VencordInstallerCli-linux -install-openasar -location "$dir" </dev/null || true
+done
+PATCH
+chmod 755 /usr/local/bin/vencord-patch
+
+UNIT_DIR="$HOME/.config/systemd/user"
+run_as_user mkdir -p "$UNIT_DIR/default.target.wants"
+cat > "$UNIT_DIR/vencord-patch.service" << 'UNIT'
+[Unit]
+Description=Vencord patch az uj Discord verziokra
+StartLimitIntervalSec=0
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/vencord-patch
+UNIT
+cat > "$UNIT_DIR/vencord-patch.path" << 'UNIT'
+[Unit]
+Description=Uj Discord verzio figyelese a Vencordhoz
+
+[Path]
+PathChanged=%h/.config/discord
+MakeDirectory=yes
+
+[Install]
+WantedBy=default.target
+UNIT
+ln -sf ../vencord-patch.path "$UNIT_DIR/default.target.wants/vencord-patch.path"
+chown -R "$USER:$USER" "$HOME/.config/systemd"
+run_as_user env DBUS_SESSION_BUS_ADDRESS="unix:path=$TARGET_XDG_RUNTIME_DIR/bus" \
+ systemctl --user daemon-reload 2>/dev/null || true
+run_as_user env DBUS_SESSION_BUS_ADDRESS="unix:path=$TARGET_XDG_RUNTIME_DIR/bus" \
+ systemctl --user start vencord-patch.path 2>/dev/null || true
+
+echo "Installing Vencord..."
+if [[ -n "$(find_discord_dirs)" ]]; then
+ run_as_user /usr/local/bin/vencord-patch
+else
+ echo "A Discord az elso inditaskor tolti le magat, a Vencord ezutan automatikusan felkerul."
+fi
+
+# Pacman hook: Discord update után Vencord újratelepítés
+mkdir -p /etc/pacman.d/hooks
+cat > /etc/pacman.d/hooks/vencord-reinstall.hook << 'HOOK'
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = Package
+Target = discord
+
+[Action]
+Description = Reinstalling Vencord after Discord update...
+When = PostTransaction
+Exec = /usr/local/bin/vencord-reinstall.sh
+HOOK
+
+# Reinstall script - user neve bele van égetve telepítéskor
+cat > /usr/local/bin/vencord-reinstall.sh << SCRIPT
+#!/bin/bash
+runuser -u "$USER" -- env HOME="$HOME" /usr/local/bin/vencord-patch || true
+SCRIPT
+chmod +x /usr/local/bin/vencord-reinstall.sh
+
+# Vencord config könyvtár létrehozása és RaveOS téma letöltése
+run_as_user mkdir -p "$HOME/.config/Vencord/themes"
+echo "Downloading RaveOS Vencord theme..."
+if local_cfg="$(resolve_local_config RaveOS-Vencord.theme.css)"; then
+ cp "$local_cfg" "$HOME/.config/Vencord/themes/RaveOS-Vencord.theme.css"
+else
+ wget -q -O "$HOME/.config/Vencord/themes/RaveOS-Vencord.theme.css" \
+ "${REPO_URL}RaveOS-Vencord.theme.css" || true
+fi
+if local_cfg="$(resolve_local_config raveos-discord-bg.jpeg)"; then
+ cp "$local_cfg" "$HOME/.config/Vencord/themes/raveos-discord-bg.jpeg"
+else
+ wget -q -O "$HOME/.config/Vencord/themes/raveos-discord-bg.jpeg" \
+ "${REPO_URL}raveos-discord-bg.jpeg" || true
+fi
+
+# Vencord settings: téma engedélyezés + quickCss bekapcsolás
+run_as_user mkdir -p "$HOME/.config/Vencord/settings"
+VENCORD_SETTINGS="$HOME/.config/Vencord/settings/settings.json"
+if [ ! -f "$VENCORD_SETTINGS" ]; then
+ cat > "$VENCORD_SETTINGS" << 'SETTINGS'
+{
+ "autoUpdate": true,
+ "autoUpdateNotification": true,
+ "useQuickCss": true,
+ "enabledThemes": [
+ "RaveOS-Vencord.theme.css"
+ ]
+}
+SETTINGS
+else
+ python3 -c "
+import json
+with open('$VENCORD_SETTINGS', 'r') as f:
+ s = json.load(f)
+themes = s.get('enabledThemes', [])
+if 'RaveOS-Vencord.theme.css' not in themes:
+ themes.append('RaveOS-Vencord.theme.css')
+ s['enabledThemes'] = themes
+ with open('$VENCORD_SETTINGS', 'w') as f:
+ json.dump(s, f, indent=4)
+" || true
+fi
+chown -R "$USER:$USER" "$HOME/.config/Vencord"
+
+echo "Discord + Vencord installation complete!"
+echo "Ha a Vencord az elso inditaskor meg nem latszik, inditsd ujra a Discordot."