diff options
Diffstat (limited to 'raveos-center/adat/actions')
| -rwxr-xr-x | raveos-center/adat/actions/discord.sh | 88 |
1 files changed, 67 insertions, 21 deletions
diff --git a/raveos-center/adat/actions/discord.sh b/raveos-center/adat/actions/discord.sh index cf728be..9b626b3 100755 --- a/raveos-center/adat/actions/discord.sh +++ b/raveos-center/adat/actions/discord.sh @@ -51,10 +51,10 @@ remove_installed_packages() { find_discord_dirs() { local d for d in "$HOME"/.config/discord/app-*/resources/app.asar; do - [[ -f "$d" ]] && printf '%s\n' "$(dirname "$(dirname "$d")")" + [[ -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 - [[ -f "$d/resources/app.asar" ]] && printf '%s\n' "$d" + [[ -e "$d/resources/app.asar" ]] && printf '%s\n' "$d" done } @@ -62,12 +62,18 @@ 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" 2>/dev/null || true - run_as_user /usr/local/bin/VencordInstallerCli-linux -uninstall-openasar -location "$dir" 2>/dev/null || true + 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!" @@ -112,19 +118,64 @@ chmod +x /usr/local/bin/VencordInstallerCli-linux # 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. -mapfile -t DISCORD_DIRS < <(find_discord_dirs) +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 ((${#DISCORD_DIRS[@]})); then - for dir in "${DISCORD_DIRS[@]}"; do - echo "Discord location: $dir" - run_as_user /usr/local/bin/VencordInstallerCli-linux -install -location "$dir" || true - run_as_user /usr/local/bin/VencordInstallerCli-linux -install-openasar -location "$dir" || true - done +if [[ -n "$(find_discord_dirs)" ]]; then + run_as_user /usr/local/bin/vencord-patch else - echo "Discord app dir not found (indítsd el egyszer a Discordot), user-mode auto-detect..." - run_as_user /usr/local/bin/VencordInstallerCli-linux -install || true - run_as_user /usr/local/bin/VencordInstallerCli-linux -install-openasar || true + 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 @@ -145,11 +196,7 @@ HOOK # Reinstall script - user neve bele van égetve telepítéskor cat > /usr/local/bin/vencord-reinstall.sh << SCRIPT #!/bin/bash -for dir in "$HOME"/.config/discord/app-*/; do - [ -f "\${dir}resources/app.asar" ] || continue - runuser -u "$USER" -- env HOME="$HOME" /usr/local/bin/VencordInstallerCli-linux -install -location "\${dir%/}" || true - runuser -u "$USER" -- env HOME="$HOME" /usr/local/bin/VencordInstallerCli-linux -install-openasar -location "\${dir%/}" || true -done +runuser -u "$USER" -- env HOME="$HOME" /usr/local/bin/vencord-patch || true SCRIPT chmod +x /usr/local/bin/vencord-reinstall.sh @@ -199,5 +246,4 @@ fi chown -R "$USER:$USER" "$HOME/.config/Vencord" echo "Discord + Vencord installation complete!" -echo "Note: Ha a Vencord nem lett azonnal alkalmazva, indítsd el a Discordot egyszer," -echo "majd a kovetkezo Discord frissitesnel automatikusan feltelepul." +echo "Ha a Vencord az elso inditaskor meg nem latszik, inditsd ujra a Discordot." |