diff options
| author | Nippy <nippy@Nippy-Mac-mini.local> | 2026-10-09 10:49:26 +0200 |
|---|---|---|
| committer | Nippy <nippy@Nippy-Mac-mini.local> | 2026-10-09 10:49:26 +0200 |
| commit | 91978706279a19a3ac96393630876f3e50cbc518 (patch) | |
| tree | 1355da60486a305aefeea4e55543bbf1008715b3 | |
| parent | 17a23f8a0cec5439d674d90c593497e4ceed2c68 (diff) | |
| download | RaveOS-PKGBUILD-91978706279a19a3ac96393630876f3e50cbc518.tar.gz RaveOS-PKGBUILD-91978706279a19a3ac96393630876f3e50cbc518.zip | |
fix
111 files changed, 1065 insertions, 686 deletions
diff --git a/.forgejo/workflows/build-gnome.yml b/.forgejo/workflows/build-gnome.yml index 4f1ac23..33c9989 100644 --- a/.forgejo/workflows/build-gnome.yml +++ b/.forgejo/workflows/build-gnome.yml @@ -9,8 +9,8 @@ on: workflow_dispatch: concurrency: - group: raveos-gnome50-build - cancel-in-progress: true + group: raveos-repo-publish + cancel-in-progress: false jobs: build: @@ -30,11 +30,12 @@ jobs: - name: Fetch core repo via rsync run: | set -euo pipefail - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rm -rf /tmp/raveos-core-repo mkdir -p /tmp/raveos-core-repo/x86_64 rsync -az -e "$RSYNC_SSH" \ - root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ || true + root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ + test -f /tmp/raveos-core-repo/x86_64/raveos-core-repo.db.tar.xz mkdir -p /tmp/builtpkgs - name: Import GPG signing key @@ -105,13 +106,17 @@ jobs: run: | set -euo pipefail export GNUPGHOME=/tmp/raveos-gnupg + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for pkg in /tmp/builtpkgs/*.pkg.tar.zst; do [ -f "$pkg" ] || continue gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor "$pkg" done + rm -f "$PASSFILE" - name: Update repo database and sync to VPS run: | @@ -124,9 +129,8 @@ jobs: CORE="/tmp/raveos-core-repo/x86_64" for pkg in $BUILT; do - PKGFILE=$(basename "$pkg") - PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') - rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true + PKGNAME=$(bsdtar -xOf "$pkg" .PKGINFO | awk -F' = ' '/^pkgname =/{print $2; exit}') + rm -f "$CORE/${PKGNAME}-"[0-9]*.pkg.tar.zst* 2>/dev/null || true rm -f "$CORE/${PKGNAME}.pkg.tar.zst"* 2>/dev/null || true cp -v "$pkg" "$CORE/" [ -f "$pkg.sig" ] && cp -v "$pkg.sig" "$CORE/" @@ -137,16 +141,20 @@ jobs: ALLPKGS=$(ls *.pkg.tar.zst) repo-add raveos-core-repo.db.tar.xz $ALLPKGS + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for f in raveos-core-repo.db.tar.xz raveos-core-repo.files.tar.xz; do gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor -o "$f.sig" "$f" done + rm -f "$PASSFILE" ln -sf raveos-core-repo.db.tar.xz.sig raveos-core-repo.db.sig ln -sf raveos-core-repo.files.tar.xz.sig raveos-core-repo.files.sig - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rsync -az --delete -e "$RSYNC_SSH" \ "$CORE/" root@10.66.66.1:/root/docker/repo/repo/x86_64/ diff --git a/.forgejo/workflows/build-hyprland.yml b/.forgejo/workflows/build-hyprland.yml index 625be43..f3dbf39 100644 --- a/.forgejo/workflows/build-hyprland.yml +++ b/.forgejo/workflows/build-hyprland.yml @@ -9,8 +9,8 @@ on: workflow_dispatch: concurrency: - group: raveos-hyprland-build - cancel-in-progress: true + group: raveos-repo-publish + cancel-in-progress: false jobs: build: @@ -33,11 +33,12 @@ jobs: - name: Fetch core repo via rsync run: | set -euo pipefail - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rm -rf /tmp/raveos-core-repo mkdir -p /tmp/raveos-core-repo/x86_64 rsync -az -e "$RSYNC_SSH" \ - root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ || true + root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ + test -f /tmp/raveos-core-repo/x86_64/raveos-core-repo.db.tar.xz mkdir -p /tmp/builtpkgs - name: Import GPG signing key @@ -74,15 +75,6 @@ jobs: dir="hyprland-raveos/$pkg" [ -d "$dir" ] || continue - PKGVER=$(grep '^pkgver=' "$dir/PKGBUILD" | head -1 | cut -d= -f2 | tr -d "'\"") - PKGREL=$(grep '^pkgrel=' "$dir/PKGBUILD" | head -1 | cut -d= -f2 | tr -d "'\"") - - echo "=== Checking $pkg (${PKGVER}-${PKGREL}) ===" - if ls "$CORE"/${pkg}-${PKGVER}-${PKGREL}-*.pkg.tar.zst 2>/dev/null | grep -q .; then - echo "$pkg already built -> skipping" - continue - fi - echo "=== Building $pkg ===" cd "$dir" rm -f *.pkg.tar.zst || true @@ -100,13 +92,17 @@ jobs: run: | set -euo pipefail export GNUPGHOME=/tmp/raveos-gnupg + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for pkg in /tmp/builtpkgs/*.pkg.tar.zst; do [ -f "$pkg" ] || continue gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor "$pkg" done + rm -f "$PASSFILE" - name: Update repo database and sync to VPS run: | @@ -119,9 +115,8 @@ jobs: CORE="/tmp/raveos-core-repo/x86_64" for pkg in $BUILT; do - PKGFILE=$(basename "$pkg") - PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') - rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true + PKGNAME=$(bsdtar -xOf "$pkg" .PKGINFO | awk -F' = ' '/^pkgname =/{print $2; exit}') + rm -f "$CORE/${PKGNAME}-"[0-9]*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" [ -f "$pkg.sig" ] && cp -v "$pkg.sig" "$CORE/" done @@ -131,16 +126,20 @@ jobs: ALLPKGS=$(ls *.pkg.tar.zst) repo-add raveos-core-repo.db.tar.xz $ALLPKGS + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for f in raveos-core-repo.db.tar.xz raveos-core-repo.files.tar.xz; do gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor -o "$f.sig" "$f" done + rm -f "$PASSFILE" ln -sf raveos-core-repo.db.tar.xz.sig raveos-core-repo.db.sig ln -sf raveos-core-repo.files.tar.xz.sig raveos-core-repo.files.sig - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rsync -az --delete -e "$RSYNC_SSH" \ "$CORE/" root@10.66.66.1:/root/docker/repo/repo/x86_64/ diff --git a/.forgejo/workflows/build-kernel.yml b/.forgejo/workflows/build-kernel.yml index cac3432..bfcc8a0 100644 --- a/.forgejo/workflows/build-kernel.yml +++ b/.forgejo/workflows/build-kernel.yml @@ -9,8 +9,8 @@ on: workflow_dispatch: concurrency: - group: raveos-kernel-build - cancel-in-progress: true + group: raveos-repo-publish + cancel-in-progress: false jobs: build: @@ -33,11 +33,12 @@ jobs: - name: Fetch core repo via rsync run: | set -euo pipefail - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rm -rf /tmp/raveos-core-repo mkdir -p /tmp/raveos-core-repo/x86_64 rsync -az -e "$RSYNC_SSH" \ - root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ || true + root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ + test -f /tmp/raveos-core-repo/x86_64/raveos-core-repo.db.tar.xz mkdir -p /tmp/builtpkgs - name: Import GPG signing key @@ -48,26 +49,7 @@ jobs: mkdir -m 700 "$GNUPGHOME" echo "${{ secrets.GPG_PRIVATE_KEY }}" | base64 -d | gpg --batch --import - - name: Check if already built - id: check - run: | - set -euo pipefail - CORE="/tmp/raveos-core-repo/x86_64" - PKGVER=$(grep '^pkgver=' linux-raveos/PKGBUILD | cut -d= -f2) - PKGREL=$(grep '^pkgrel=' linux-raveos/PKGBUILD | cut -d= -f2) - FULLVER="${PKGVER}-${PKGREL}" - echo "PKGVER=$PKGVER" >> $GITHUB_OUTPUT - echo "PKGREL=$PKGREL" >> $GITHUB_OUTPUT - if ls "$CORE"/linux-cachyos-${PKGVER}-${PKGREL}-*.pkg.tar.zst 2>/dev/null | grep -q .; then - echo "SKIP=yes" >> $GITHUB_OUTPUT - echo "linux-cachyos ${FULLVER} mar bent van -> skip" - else - echo "SKIP=no" >> $GITHUB_OUTPUT - echo "linux-cachyos ${FULLVER} build indul..." - fi - - name: Build linux-raveos - if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail cd linux-raveos @@ -77,20 +59,22 @@ jobs: cp -v *.pkg.tar.zst /tmp/builtpkgs/ - name: Sign built packages - if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail export GNUPGHOME=/tmp/raveos-gnupg + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for pkg in /tmp/builtpkgs/*.pkg.tar.zst; do [ -f "$pkg" ] || continue gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor "$pkg" done + rm -f "$PASSFILE" - name: Update repo database and sync to VPS - if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail BUILT=$(ls /tmp/builtpkgs/*.pkg.tar.zst 2>/dev/null || true) @@ -101,9 +85,8 @@ jobs: CORE="/tmp/raveos-core-repo/x86_64" for pkg in $BUILT; do - PKGFILE=$(basename "$pkg") - PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') - rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true + PKGNAME=$(bsdtar -xOf "$pkg" .PKGINFO | awk -F' = ' '/^pkgname =/{print $2; exit}') + rm -f "$CORE/${PKGNAME}-"[0-9]*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" [ -f "$pkg.sig" ] && cp -v "$pkg.sig" "$CORE/" done @@ -113,20 +96,24 @@ jobs: ALLPKGS=$(ls *.pkg.tar.zst) repo-add raveos-core-repo.db.tar.xz $ALLPKGS + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for f in raveos-core-repo.db.tar.xz raveos-core-repo.files.tar.xz; do gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor -o "$f.sig" "$f" done + rm -f "$PASSFILE" ln -sf raveos-core-repo.db.tar.xz.sig raveos-core-repo.db.sig ln -sf raveos-core-repo.files.tar.xz.sig raveos-core-repo.files.sig - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rsync -az --delete -e "$RSYNC_SSH" \ "$CORE/" root@10.66.66.1:/root/docker/repo/repo/x86_64/ - echo "::notice title=Kernel published::linux-raveos ${{ steps.check.outputs.PKGVER }}-${{ steps.check.outputs.PKGREL }}" + echo "::notice title=Kernel published::linux-raveos published" - name: Cleanup if: always() diff --git a/.forgejo/workflows/build-theme-send-core-repo.yml b/.forgejo/workflows/build-theme-send-core-repo.yml index 8fa3d5b..928e071 100644 --- a/.forgejo/workflows/build-theme-send-core-repo.yml +++ b/.forgejo/workflows/build-theme-send-core-repo.yml @@ -6,8 +6,8 @@ on: workflow_dispatch: concurrency: - group: raveos-theme-module-build-publish - cancel-in-progress: true + group: raveos-repo-publish + cancel-in-progress: false jobs: build: @@ -28,7 +28,7 @@ jobs: - name: Sync core repo from VPS (rsync pull) run: | set -euo pipefail - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rm -rf /tmp/raveos-core-repo mkdir -p /tmp/raveos-core-repo/x86_64 rsync -az -e "$RSYNC_SSH" \ @@ -141,9 +141,6 @@ jobs: rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-sddm-theme-*.pkg.tar.zst /tmp/builtpkgs/ - # Azonnal telepitjuk is, mert meg nincs publikalva egy repoban sem - # (a "Publish" lepes csak a legvegen fut) - a tobbi DE-tema csomag - # makepkg -s hivasa igy fogja tudni feloldani a fuggoseget. sudo pacman -U --noconfirm build/raveos-sddm-theme-*.pkg.tar.zst - name: Build raveos-plasma-theme @@ -356,43 +353,38 @@ jobs: echo "No packages built -> nem masolunk uj fajlt, de a db-t mindig ujraepitjuk (onjavito)" else for pkg in $BUILT; do - PKGFILE=$(basename "$pkg") - PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') + PKGNAME=$(bsdtar -xOf "$pkg" .PKGINFO | awk -F' = ' '/^pkgname =/{print $2; exit}') if [[ ! "$PKGNAME" =~ ^[a-zA-Z0-9_+-]+$ ]]; then echo "HIBA: Ervenytelen csomagnev: $PKGNAME -> skip" continue fi - rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true + rm -f "$CORE/${PKGNAME}-"[0-9]*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" [ -f "$pkg.sig" ] && cp -v "$pkg.sig" "$CORE/" done fi - # Adatbazis ujraepitese HELYBEN (nincs tobbe kulon repo-add job/repo) - # .xz celzunk (nem .gz), es minden CORE-beli csomagot atadunk a repo-add-nak. - # A repo-add sajat "--sign"-ja gpg-agentre tamaszkodik jelszo nelkul -- ha - # az agent cache hideg (pl. amikor nem epult uj csomag, igy a "Sign built - # packages" lepes se futott le), a signeles nesztelenul elhasal (repo-add - # csak warningot ir, a regi .sig marad, ami mar nem illik az uj tartalomhoz). - # Ezert kulon, expliciten alairjuk a db/files fajlokat a jelszo megadasaval. export GNUPGHOME=/tmp/raveos-gnupg cd "$CORE" ALLPKGS=$(ls *.pkg.tar.zst) repo-add raveos-core-repo.db.tar.xz $ALLPKGS + PASSFILE=$(mktemp) + chmod 600 "$PASSFILE" + printf '%s' "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" > "$PASSFILE" for f in raveos-core-repo.db.tar.xz raveos-core-repo.files.tar.xz; do gpg --batch --yes --pinentry-mode loopback \ - --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ + --passphrase-file "$PASSFILE" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor -o "$f.sig" "$f" done + rm -f "$PASSFILE" ln -sf raveos-core-repo.db.tar.xz.sig raveos-core-repo.db.sig ln -sf raveos-core-repo.files.tar.xz.sig raveos-core-repo.files.sig rm -f raveos-core-repo.db.tar.gz* raveos-core-repo.files.tar.gz* 2>/dev/null || true - # Vissza-szinkron a VPS-re (torli, ami helyben mar nincs, pl. regi verziok) - RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" + RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=accept-new -o BatchMode=yes" rsync -az --delete -e "$RSYNC_SSH" \ "$CORE/" root@10.66.66.1:/root/docker/repo/repo/x86_64/ @@ -427,9 +419,6 @@ jobs: cd "$REPO/x86_64" - # 1) regi verziojú csomag-assetek torlese verzio-prefix alapjan - # (a fajlnevek tartalmazzak a pkgver-pkgrel-t, ezert egy verziofrissites - # uj fajlnevet ad - enelkul a regi verziok orokre felhalmozodnanak) for f in *.pkg.tar.zst; do [ -f "$f" ] || continue pkgname=$(echo "$f" | sed -E 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') @@ -448,11 +437,9 @@ jobs: done <<< "$existing_assets" done - # friss asset-lista a torlesek utan existing_assets=$(curl -sf -H "Authorization: Bearer ${TOKEN}" \ "${API}/releases/${release_id}" | jq -r '.assets[] | "\(.id)\t\(.name)"') - # 2) minden aktualis fajl feltoltese (azonos nevu regi peldany cserevel) for f in *; do [ -f "$f" ] || continue asset_id=$(echo "$existing_assets" | awk -F'\t' -v n="$f" '$2==n {print $1}') diff --git a/.forgejo/workflows/hyprland-update-check.yml b/.forgejo/workflows/hyprland-update-check.yml index f6afab7..deaa003 100644 --- a/.forgejo/workflows/hyprland-update-check.yml +++ b/.forgejo/workflows/hyprland-update-check.yml @@ -5,6 +5,10 @@ on: - cron: '0 6 * * 1,4' workflow_dispatch: +concurrency: + group: hyprland-update-check + cancel-in-progress: false + jobs: check-update: runs-on: iso-builder @@ -72,13 +76,9 @@ jobs: if [ "$LOCAL_VER" != "$UPSTREAM_VER" ]; then echo "Update available for $pkg: $LOCAL_VER -> $UPSTREAM_VER" - - # Frissites letoltese es pkgrel beallitasa - echo "$UPSTREAM_PKGBUILD" > "$dir/PKGBUILD" - sed -i 's/^pkgrel=[0-9]*/pkgrel=10/' "$dir/PKGBUILD" - if [ "$pkg" = "hyprpolkitagent" ] || [ "$pkg" = "hyprland-qt-support" ]; then - sed -i 's/^pkgrel=10/pkgrel=20/' "$dir/PKGBUILD" - fi + + sed -i "s/^pkgver=.*/pkgver=${UPSTREAM_VER}/" "$dir/PKGBUILD" + (cd "$dir" && updpkgsums) UPDATED_PKGS+=("$pkg") SUMMARY="${SUMMARY}\n- **${pkg}**: \`${LOCAL_VER}\` -> \`${UPSTREAM_VER}-10\`" @@ -98,6 +98,9 @@ jobs: - name: Create branch and open single Pull Request if: steps.prcheck.outputs.EXISTS == 'no' && steps.check.outputs.HAS_UPDATES == 'yes' + env: + COUNT: ${{ steps.check.outputs.COUNT }} + SUMMARY: ${{ steps.check.outputs.SUMMARY }} run: | set -euo pipefail DATE=$(date +%Y%m%d-%H%M) @@ -108,19 +111,18 @@ jobs: git checkout -b "$BRANCH" git add hyprland-raveos/ - git commit -m "update: hyprland stack (${{ steps.check.outputs.COUNT }} packages)" + git commit -m "update: hyprland stack (${COUNT} packages)" - git remote set-url origin "https://bot:${{ secrets.FORGEJO_TOKEN }}@git.rp1.hu/RaveOS/RaveOS-PKGBUILD.git" git push origin "$BRANCH" - PR_BODY="Automata Hyprland stack frissítés (${{ steps.check.outputs.COUNT }} csomag):\n${{ steps.check.outputs.SUMMARY }}\n\nA csomagok a merge után az \`iso-builder\` runneren sorrendben fordulnak le, GPG aláírással kerülnek a RaveOS repóba." + PR_BODY="$(printf 'Automata Hyprland stack frissítés (%s csomag):\n%s\n\nA csomagok a merge után az \`iso-builder\` runneren sorrendben fordulnak le, GPG aláírással kerülnek a RaveOS repóba.' "$COUNT" "$SUMMARY")" curl -fsSL -X POST \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ -H "Content-Type: application/json" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls" \ -d "$(jq -n \ - --arg title "Hyprland stack frissítés (${{ steps.check.outputs.COUNT }} csomag)" \ + --arg title "Hyprland stack frissítés (${COUNT} csomag)" \ --arg head "$BRANCH" \ --arg base "main" \ --arg body "$PR_BODY" \ diff --git a/.forgejo/workflows/kernel-update-check.yml b/.forgejo/workflows/kernel-update-check.yml index 1eb42c6..5e7e16d 100644 --- a/.forgejo/workflows/kernel-update-check.yml +++ b/.forgejo/workflows/kernel-update-check.yml @@ -5,6 +5,10 @@ on: - cron: '0 6 1,15 * *' workflow_dispatch: +concurrency: + group: kernel-update-check + cancel-in-progress: false + jobs: check-update: runs-on: iso-builder @@ -29,6 +33,11 @@ jobs: echo "HIBA: Nem sikerult a CachyOS verziot lekerdezni" exit 1 fi + for v in "$MAJOR" "$MINOR" "$TAGREL"; do + case "$v" in + *[!0-9]*) echo "HIBA: Ervenytelen verzio: $v"; exit 1 ;; + esac + done echo "MAJOR=$MAJOR" >> $GITHUB_OUTPUT echo "MINOR=$MINOR" >> $GITHUB_OUTPUT echo "TAGREL=$TAGREL" >> $GITHUB_OUTPUT @@ -50,10 +59,17 @@ jobs: - name: Frissites szukseges? id: needsupdate + env: + NEW_MAJOR: ${{ steps.check.outputs.MAJOR }} + NEW_MINOR: ${{ steps.check.outputs.MINOR }} + NEW_TAGREL: ${{ steps.check.outputs.TAGREL }} + CUR_MAJOR: ${{ steps.current.outputs.MAJOR }} + CUR_MINOR: ${{ steps.current.outputs.MINOR }} + CUR_TAGREL: ${{ steps.current.outputs.TAGREL }} run: | set -euo pipefail - NEW="${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" - CUR="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}" + NEW="${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL}" + CUR="${CUR_MAJOR}.${CUR_MINOR}-${CUR_TAGREL}" if [ "$NEW" != "$CUR" ]; then echo "UPDATE=yes" >> $GITHUB_OUTPUT echo "Frissites: $CUR -> $NEW" @@ -65,9 +81,13 @@ jobs: - name: PR mar letezik? id: prcheck if: steps.needsupdate.outputs.UPDATE == 'yes' + env: + NEW_MAJOR: ${{ steps.check.outputs.MAJOR }} + NEW_MINOR: ${{ steps.check.outputs.MINOR }} + NEW_TAGREL: ${{ steps.check.outputs.TAGREL }} run: | set -euo pipefail - BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" + BRANCH="update/kernel-${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL}" OPEN_PRS=$(curl -fsSL \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open&limit=50") @@ -83,23 +103,20 @@ jobs: - name: PKGBUILD frissitese es PR nyitasa if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no' + env: + NEW_MAJOR: ${{ steps.check.outputs.MAJOR }} + NEW_MINOR: ${{ steps.check.outputs.MINOR }} + NEW_TAGREL: ${{ steps.check.outputs.TAGREL }} + OLD_PKGVER: ${{ steps.current.outputs.PKGVER }} + OLD_MAJOR: ${{ steps.current.outputs.MAJOR }} + OLD_MINOR: ${{ steps.current.outputs.MINOR }} + OLD_TAGREL: ${{ steps.current.outputs.TAGREL }} run: | set -euo pipefail - NEW_MAJOR="${{ steps.check.outputs.MAJOR }}" - NEW_MINOR="${{ steps.check.outputs.MINOR }}" - NEW_TAGREL="${{ steps.check.outputs.TAGREL }}" - OLD_PKGVER="${{ steps.current.outputs.PKGVER }}" - CUR="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}" - - # pkgver = kernel verzio (pl. 7.0.11) - # pkgrel logika: - # - uj major.minor (pl. 7.0.10 -> 7.0.11 vagy 8.0.x) -> reset 10-re - # - csak _tagrel valtozik (ugyanaz a kernel, uj stable tag) -> +1 + CUR="${OLD_MAJOR}.${OLD_MINOR}-${OLD_TAGREL}" NEW_PKGVER="${NEW_MAJOR}.${NEW_MINOR}" - OLD_MAJOR="${{ steps.current.outputs.MAJOR }}" - OLD_MINOR="${{ steps.current.outputs.MINOR }}" OLD_PKGREL=$(grep '^pkgrel=' linux-raveos/PKGBUILD | cut -d= -f2) if [ "${OLD_MAJOR}.${OLD_MINOR}" != "${NEW_MAJOR}.${NEW_MINOR}" ]; then @@ -122,7 +139,6 @@ jobs: sed -i "s/^pkgver=.*/pkgver=${NEW_PKGVER}/" linux-raveos/PKGBUILD sed -i "s/^pkgrel=.*/pkgrel=${NEW_PKGREL}/" linux-raveos/PKGBUILD - # Uj CachyOS config letoltese + RaveOS javitasok visszarakasa curl -fsSL --retry 3 \ "https://raw.githubusercontent.com/CachyOS/linux-cachyos/master/linux-cachyos/config" \ -o linux-raveos/config @@ -134,7 +150,6 @@ jobs: git add linux-raveos/PKGBUILD linux-raveos/config git commit -m "update: linux-cachyos ${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL} (pkgver=${NEW_PKGVER}-${NEW_PKGREL})" - git remote set-url origin "https://bot:${{ secrets.FORGEJO_TOKEN }}@git.rp1.hu/RaveOS/RaveOS-PKGBUILD.git" git push origin "$BRANCH" curl -fsSL -X POST \ diff --git a/hyprland-raveos/dms-shell/PKGBUILD b/hyprland-raveos/dms-shell/PKGBUILD index 89cc547..d5f8f1c 100644 --- a/hyprland-raveos/dms-shell/PKGBUILD +++ b/hyprland-raveos/dms-shell/PKGBUILD @@ -5,7 +5,7 @@ _pkg1=DankMaterialShell _pkg2=dank-qml-common pkgname=($pkgbase $pkgbase-hyprland $pkgbase-niri) pkgver=1.6.0 -pkgrel=10 +pkgrel=11 pkgdesc='A Quickshell-based desktop shell with Material 3 design principles' arch=(x86_64 aarch64) url="https://github.com/AvengeMedia/$_pkg1" @@ -28,7 +28,7 @@ makedepends=(git replaces=($pkgname-bin) source=("git+$url.git#tag=v$pkgver" "git+${url/$_pkg1/$_pkg2}") -sha256sums=('51186d2a9af990b4640c6b0d9298ba54a1fe16becd14c527243980438eae844a' +sha256sums=('SKIP' 'SKIP') prepare() { @@ -65,8 +65,8 @@ build() { package_dms-shell() { cd "$_pkg1" depends+=(dms-shell-compositor) - optdepneds+=('dms-shell-hyprland: Hyprland specific dependencies') - optdepneds+=('dms-shell-niri: Niri specific dependencies') + optdepends+=('dms-shell-hyprland: Hyprland specific dependencies') + optdepends+=('dms-shell-niri: Niri specific dependencies') make DESTDIR="$pkgdir" PREFIX="/usr" SYSTEMD_USER_DIR="$pkgdir/usr/lib/systemd/user" install install -Dm0644 -t "$pkgdir/usr/share/doc/$pkgname/" README.md cp -r "docs/"* "$pkgdir/usr/share/doc/$pkgname/" diff --git a/linux-raveos/PKGBUILD b/linux-raveos/PKGBUILD index ff68d0e..fb3202b 100644 --- a/linux-raveos/PKGBUILD +++ b/linux-raveos/PKGBUILD @@ -341,11 +341,9 @@ prepare() { echo "Selecting '$_hugepage' TRANSPARENT_HUGEPAGE config..." - ### RaveOS specific: ZRAM builtin (not module) for early boot availability echo "RaveOS: Setting ZRAM as builtin..." scripts/config -e ZRAM - ### RaveOS specific: NTSYNC builtin for Proton/Wine (no modprobe needed) echo "RaveOS: Setting NTSYNC as builtin for Proton/Wine..." scripts/config -e NTSYNC diff --git a/raveos-app-installer/PKGBUILD b/raveos-app-installer/PKGBUILD index 4f36f0f..9371335 100644 --- a/raveos-app-installer/PKGBUILD +++ b/raveos-app-installer/PKGBUILD @@ -1,14 +1,8 @@ # Maintainer: nippy <nippy@tuta.io> -# -# raveos-app-installer -# --------------------- -# Egyetlen fájlos, letisztult PyQt6 alkalmazástelepítő (v3 architektúra): -# USER-ként fut (nem root), saját beépített jelszó-dialógus SUDO_ASKPASS-szal, -# NINCS pkexec/root-launcher. Váltja a régi, strukturált (src/) v2 architektúrát. pkgname=raveos-app-installer pkgver=3.1 -pkgrel=17 +pkgrel=18 pkgdesc="RaveOS graphical application installer" arch=('any') url="https://git.rp1.hu/RaveOS/raveos-app-installer" @@ -17,6 +11,9 @@ depends=('python' 'python-pyqt6' 'pacman' 'sudo') optdepends=( 'yay: AUR csomag támogatás' 'flatpak: flatpak alkalmazás támogatás' + 'sbsigntools: Secure Boot aláírás' + 'efitools: Secure Boot kulcs telepítés' + 'zstd: Secure Boot modul-aláírás' ) source=() sha256sums=() @@ -43,6 +40,16 @@ package() { install -Dm644 "${startdir}/raveos-app-installer.png" \ "${pkgdir}/usr/share/icons/hicolor/512x512/apps/raveos-app-installer.png" + install -Dm755 "${startdir}/raveos-secureboot-setup" \ + "${pkgdir}/usr/bin/raveos-secureboot-setup" + + install -d -m 755 "${pkgdir}/usr/share/raveos" + cp -r --no-preserve=ownership "${startdir}/secureboot" \ + "${pkgdir}/usr/share/raveos/" + find "${pkgdir}/usr/share/raveos/secureboot" -type d -exec chmod 755 {} + + find "${pkgdir}/usr/share/raveos/secureboot" -type f -exec chmod 644 {} + + chmod 755 "${pkgdir}/usr/share/raveos/secureboot/installed/"*.sh + cp -r --no-preserve=ownership "${startdir}/data" \ "${pkgdir}/usr/lib/raveos-app-installer/" find "${pkgdir}/usr/lib/raveos-app-installer/data" -type d -exec chmod 755 {} + diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/000003.log b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/000003.log deleted file mode 100644 index e69de29..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/000003.log +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/CURRENT b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOCK b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOCK deleted file mode 100644 index e69de29..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOCK +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG deleted file mode 100644 index 9003b5b..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2026/08/10-16:39:11.004 4839 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/GCM Store/Encryption/MANIFEST-000001 -2026/08/10-16:39:11.004 4839 Recovering log #3 -2026/08/10-16:39:11.004 4839 Reusing old log /home/nippy/.config/BraveSoftware/Brave-Origin/Default/GCM Store/Encryption/000003.log diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG.old b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG.old deleted file mode 100644 index 70faec8..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/LOG.old +++ /dev/null @@ -1,2 +0,0 @@ -2026/08/10-16:34:19.532 3c24 Creating DB /home/nippy/.config/BraveSoftware/Brave-Origin/Default/GCM Store/Encryption since it was missing. -2026/08/10-16:34:19.547 3c24 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/GCM Store/Encryption/MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/MANIFEST-000001 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/MANIFEST-000001 Binary files differdeleted file mode 100644 index 18e5cab..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/GCM Store/Encryption/MANIFEST-000001 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000004.log b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000004.log Binary files differdeleted file mode 100644 index 85386dc..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000004.log +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000005.ldb b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000005.ldb Binary files differdeleted file mode 100644 index c0a88d6..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/000005.ldb +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/CURRENT b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOCK b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOCK deleted file mode 100644 index e69de29..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOCK +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG deleted file mode 100644 index fb6f1ba..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG +++ /dev/null @@ -1,6 +0,0 @@ -2026/08/10-16:39:08.930 5 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Local Storage/leveldb/MANIFEST-000001 -2026/08/10-16:39:08.933 5 Recovering log #3 -2026/08/10-16:39:08.933 5 Reusing old log /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Local Storage/leveldb/000003.log -2026/08/10-16:43:17.304 5 Level-0 table #5: started -2026/08/10-16:43:17.311 5 Level-0 table #5: 14577 bytes OK -2026/08/10-16:43:17.319 5 Delete type=0 #3 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG.old b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG.old deleted file mode 100644 index b6dd490..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/LOG.old +++ /dev/null @@ -1,2 +0,0 @@ -2026/08/10-16:34:17.347 5 Creating DB /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Local Storage/leveldb since it was missing. -2026/08/10-16:34:17.368 5 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Local Storage/leveldb/MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/MANIFEST-000001 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/MANIFEST-000001 Binary files differdeleted file mode 100644 index 3ee7649..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Local Storage/leveldb/MANIFEST-000001 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846059845116 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846059845116 Binary files differdeleted file mode 100644 index dec2925..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846059845116 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846351425167 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846351425167 Binary files differdeleted file mode 100644 index d6b6802..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Session_13430846351425167 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Tabs_13430846351524548 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Tabs_13430846351524548 Binary files differdeleted file mode 100644 index 9338aab..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sessions/Tabs_13430846351524548 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/000003.log b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/000003.log Binary files differdeleted file mode 100644 index 4a8e04e..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/000003.log +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/CURRENT b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/CURRENT deleted file mode 100755 index 7ed683d..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOCK b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOCK deleted file mode 100755 index e69de29..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOCK +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG deleted file mode 100644 index 5955bbb..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2026/08/10-16:39:08.921 4825 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Sync Data/LevelDB/MANIFEST-000001 -2026/08/10-16:39:08.921 4825 Recovering log #3 -2026/08/10-16:39:08.922 4825 Reusing old log /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Sync Data/LevelDB/000003.log diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG.old b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG.old deleted file mode 100644 index 2a0eaa5..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/10-16:34:17.339 3c10 Reusing MANIFEST /home/nippy/.config/BraveSoftware/Brave-Origin/Default/Sync Data/LevelDB/MANIFEST-000001 diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/MANIFEST-000001 b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/MANIFEST-000001 Binary files differdeleted file mode 100755 index 18e5cab..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default/Sync Data/LevelDB/MANIFEST-000001 +++ /dev/null diff --git a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Local State b/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Local State deleted file mode 100644 index 6221116..0000000 --- a/raveos-app-installer/data/configs/com.brave.Browser/config/BraveSoftware/Brave-Browser/Local State +++ /dev/null @@ -1 +0,0 @@ -{"autofill":{"ablation_seed":"AZXVsIGW7us="},"brave":{"ad_block":{"checked_all_default_regions":true},"brave_search_conversion":{"already_churned":true},"core_metrics":{"pages_loaded":[{"day":1786312800.0,"value":2.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"enable_search_suggestions_by_default":true,"migrated_adblock_social_media_blocking_settings":true,"misc_metrics":{"brave_search_query_counts":{"any_navigation":true},"brave_search_report_frame_start_time":"13430846057347621","combined_search_study_frame_start_time":"13430846057347632","combined_search_study_search_made":true,"failed_https_upgrade_metric_added_time":"13426552800000000","last_doh_fallback":0,"media_session_active_process_time":"450000000","media_session_frame_start_time":"13430846057232046","media_session_playing_time":"0","menu_dismiss_storage":[{"day":1786312800.0,"value":2.0}],"menu_group_actions":{"browser_views":4.0},"menu_shown_storage":[{"day":1786312800.0,"value":6.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}],"nav_source_counts":{"top_sites_favorites":1,"total":2},"nav_source_report_frame_start_time":"13430846057347627","total_dns_requests":[{"day":1786312800.0,"value":32.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}],"uptime_frame_start_time_v2":"13430846057427398","uptime_sum":"414342363","weekly_uptime_storage":[{"day":1786312800.0,"value":408.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"new_tab_page":{"customize_p3a_usage":0,"p3a_new_tabs_created":[{"day":1786312800.0,"value":9.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"onboarding":{"last_shields_icon_highlighted_time":"13430846567528190"},"origin":{"free_tier_accepted":true,"policies_were_enforced":true,"purchase_validated":true},"p3a":{"notice_acknowledged":true},"referral":{"initialization":true,"promo_code":"BRV001"},"search":{"backup_results":{"last_view_height":921,"last_view_width":1608},"last_switch_report":"13430846922639013"},"sidebar":{"target_user_for_sidebar_enabled_test":false}},"brave_shields":{"p3a_usage":0},"breadcrumbs":{"enabled":false,"enabled_time":"13430846057297325"},"browser":{"first_run_finished":true,"whats_new":{"enabled_order":[]}},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"last_log_time":"13430846057341258"}},"network_time":{"network_time_mapping":{"local":1.786372749129309e+12,"network":1.78637275e+12,"ticks":1760881923.0,"uncertainty":1223261.0}},"optimization_guide":{"model_execution":{"last_usage_by_feature":{}},"model_store_metadata":{},"on_device":{"last_version":"151.1.93.135","model_crash_count":0}},"os_crypt":{"portal":{"prev_desktop":"GNOME","prev_init_success":true}},"p3a":{"activation_dates":{},"custom_attributes":{"media_session_usage":"0","search_default":"other"}},"performance_intervention":{"last_daily_sample":"13430846057426803"},"policy":{"last_statistics_update":"13430846057296519"},"profile":{"info_cache":{"Default":{"active_time":1786372457.423897,"ai_subscription_tier":0,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-14737629,"default_avatar_stroke_color":-526345,"enterprise_label":"","force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"Personal","profile_color_seed":-4078337,"profile_highlight_color":-14737629,"serp_metrics":{"brave_search_engine":[{"day":1782086400.0,"value":1.0}],"google_search_engine":[],"other_search_engine":[]},"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13430846057298079","profiles_order":["Default"]},"session_id_generator_last_value":"744144003","signin":{"active_accounts_last_emitted":"13430846057231733"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13430846057293858","max_tabs_per_window":2,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":2,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1782154367"},"updateclientdata":{"apps":{"adcocjohghhfpidemphmcmlmhnfgikei":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.469","pf":"53c03b89-69c8-4e01-a7c7-3e2d264931b6","pv":"1.0.475"},"afalakplffnnnlkncjhbmahjfjhmlkal":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.1468","pf":"0b6666c5-d270-441f-9da0-502be3538c5a","pv":"1.0.1503"},"aoojcmojmmcbpfgoecoadbdpnagfchel":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.23","pf":"26e5e602-358c-4152-8cc2-c19180622adb","pv":"1.0.24"},"bfpgedeaaibpoidldhjcknekahbikncb":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.16863","pf":"a55c4105-9171-4c4d-9ffb-dd77a5ecad08","pv":"1.0.16874"},"cdbbhgbmjhfnhnmgeddbliobbofkgdhe":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.19761","pf":"3b563fca-6ed0-4214-955e-2cde31e60990","pv":"1.0.19908"},"cemdlagocoimleflkfkjoihojfainiho":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"045b2476-4387-4d4a-a4a7-a927f432cdd7","pv":"1.0.119"},"dkpggglmbjhgjhachikgmohmecomjndo":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"11f5d842-511c-4b29-b3a7-c745e12eca8c","pv":"1.0.0"},"efniojlnjndmcbiieegkicadnoecjjef":{"cohort":"1:18ql:","cohortname":"Auto Stage3","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"529f8cdb-e88a-4c05-a107-7b32c7ede605","pv":"1738"},"ggkkehgbnfjpeggfpleeakpidbkibbmn":{"cohort":"1:ut9/1a0f:","cohortname":"M108 and Above","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"a966c7a8-01ad-4d44-b2bc-499dd8d0379e","pv":"2026.8.10.62"},"giekcmmlnklenlaomppkphknjmnnpneh":{"cohort":"1:j5l:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"68e29660-4e5c-476a-9df2-4ab5609a6837","pv":"7"},"gkboaolpopklhgplhaaiboijnklogmbc":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.92","pf":"637e0dec-18ab-4c68-8b8e-673923451f03","pv":"1.0.95"},"hfnkpimlhhgieaddgfemjhofmfblmnib":{"cohort":"1:287f:","cohortname":"Auto full","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"08755607-b47c-4507-b276-7e0d20b4c6d1","pv":"10706"},"iodkpdagapdfkphljnddpjlldadblomo":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.20458","pf":"4b5131c9-5159-4342-85b8-9cac7d2cb47b","pv":"1.0.21487"},"jamhcnnkihinmdlkakkaopbjbbcngflc":{"cohort":"1:wvr:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"83349149-1b15-47a7-98cc-423150c9f434","pv":"120.0.6050.0"},"jflookgnkcckhobaglndicnbbgbonegd":{"cohort":"1:s7x:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"7f7dbae9-cedd-47ef-8436-09b0b1043ab0","pv":"3091"},"jmfhneobcdckobmonkfjkbknnjjnegoh":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"96e0b450-03c8-4c9d-9794-8f30e89125ed","pv":"1.0.0"},"khaoiebndkojlmppeemjhbpbandiljpe":{"cohort":"1:cux:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"1f6c2599-ba72-4da7-ac54-c3d124fc5abd","pv":"145.0.7584.0"},"kihnoaefogbkmblfimmibknnmkllbhlf":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.6038","pf":"3a6c7af8-9f85-4261-9931-2a6017fc3677","pv":"1.0.7064"},"laoigpblnllgcgjnjnllmfolckpjlhki":{"cohort":"1:10zr:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.7.1652906823","pf":"486a20ef-2770-47a7-8e84-d3885356fd6b","pv":"1.1.0.3"},"mfddibmblmbccpadfndgakiopmmhebop":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.146","pf":"ecb74f41-79cb-4d47-b13f-7266767415ff","pv":"1.0.151"},"nlpaeekllejnmhoonlpcefpfnpbajbpe":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.474","pf":"fdf405e3-c653-4583-8419-ddcebe0c86ef","pv":"1.0.523"},"obedbbhbpmojnkanicioggnmelmoomoc":{"cohort":"1:s6f:3cr3@0.025","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"ae14957e-6c26-4a07-979c-56bab97c3079","pv":"20251024.824731831.14"},"ojhpjlocmbogdgmfpkhlaaeamibhnphh":{"cohort":"1:w0x:","cohortname":"All users","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"04c2193a-f501-4e3a-8820-33ce4ce897bd","pv":"3"}}},"user_experience_metrics":{"consent_restructure_feature_state":false,"limited_entropy_randomization_source":"FE1EA34EA9F364323DD20A35BACD50D5","low_entropy_source3":7377,"pseudo_low_entropy_source":4436,"reporting_enabled":false,"session_id":2,"stability":{"browser_last_live_timestamp":"13430847055374029","exited_cleanly":true,"stats_buildtime":"1786293927","stats_version":"151.1.93.135-64-devel"}},"variations_compressed_seed":"safe_seed_content","variations_country":"hu","variations_crash_streak":0,"variations_failed_to_fetch_seed_streak":0,"variations_geo_level1":"","variations_last_fetch_time":"13430846349237474","variations_permanent_consistency_country":["151.1.93.135","hu"],"variations_safe_compressed_seed":"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","variations_safe_seed_date":"13430846058000000","variations_safe_seed_fetch_time":"13430846349237474","variations_safe_seed_locale":"hu","variations_safe_seed_milestone":151,"variations_safe_seed_permanent_consistency_country":"hu","variations_safe_seed_session_consistency_country":"hu","variations_safe_seed_signature":"MEQCH06dZwKnrjD5NL4zslyMi59lH20U7fqZSfZJH2VPfOwCIQCG/LHBShHWAfuJsuTlUbaiyJabmlDZE+AeUtyI3q/k3Q==","variations_seed_date":"13430846350000000","variations_seed_milestone":151,"variations_seed_serial_number":"23d76df102c70f19dab8794bc52a53af","variations_seed_signature":"MEQCH06dZwKnrjD5NL4zslyMi59lH20U7fqZSfZJH2VPfOwCIQCG/LHBShHWAfuJsuTlUbaiyJabmlDZE+AeUtyI3q/k3Q==","variations_sticky_studies":"","was":{"restarted":false}}
\ No newline at end of file diff --git a/raveos-app-installer/raveos-app-installer.py b/raveos-app-installer/raveos-app-installer.py index d5a9149..d696a58 100644 --- a/raveos-app-installer/raveos-app-installer.py +++ b/raveos-app-installer/raveos-app-installer.py @@ -31,15 +31,11 @@ import subprocess import sys from pathlib import Path -# ───────────────────────────────────────────────────────────────────────────── -# Konstansok / útvonalak -# ───────────────────────────────────────────────────────────────────────────── APP_NAME = "RaveOS App Installer" APP_ID = "raveos-app-installer" # Wayland app_id (Hyprland window rule-okhoz) APP_VERSION = "3.1" -# app-list.json keresési sorrend: a script mellett -> /usr/share -> ~/.config _SCRIPT_DIR = Path(__file__).resolve().parent APP_LIST_CANDIDATES = [ _SCRIPT_DIR / "app-list.json", @@ -47,9 +43,6 @@ APP_LIST_CANDIDATES = [ Path.home() / ".config" / "raveos" / "app-list.json", ] -# ───────────────────────────────────────────────────────────────────────────── -# Téma (a welcome app stílusa) -# ───────────────────────────────────────────────────────────────────────────── C = { "bg": "#232427", @@ -68,7 +61,6 @@ C = { "danger_hi": "#c56458", } -# Per-type kis badge színek (visszafogottak) TYPE_LABEL = { "pacman": "pacman", "aur": "AUR", @@ -79,9 +71,6 @@ TYPE_LABEL = { } -# ───────────────────────────────────────────────────────────────────────────── -# Nyelv (hu/en) - session-szintű, alapértelmezett hu, a welcome app mintájára -# ───────────────────────────────────────────────────────────────────────────── _current_lang = "hu" @@ -90,6 +79,30 @@ T = { "header_backup": {"hu": " · MENTÉS / VISSZAÁLLÍTÁS", "en": " · BACKUP / RESTORE"}, "nav_backup": {"hu": "Mentés / Visszaállítás", "en": "Backup / Restore"}, "nav_back": {"hu": "← Vissza", "en": "← Back"}, + "nav_sb": {"hu": "Secure Boot", "en": "Secure Boot"}, + "header_sb": {"hu": " · SECURE BOOT", "en": " · SECURE BOOT"}, + "sb_desc": {"hu": "A telepített rendszer aláírása és a kulcsok telepítése a firmware-be.\nWindows dual-boot mellett is biztonságos (Microsoft kulcsok megőrizve).", "en": "Sign the installed system and enroll the keys into the firmware.\nSafe with dual-boot Windows (Microsoft keys preserved)."}, + "sb_lbl_sb": {"hu": "Secure Boot", "en": "Secure Boot"}, + "sb_lbl_setup": {"hu": "Setup Mode", "en": "Setup Mode"}, + "sb_lbl_keys": {"hu": "Gépkulcs", "en": "Machine key"}, + "sb_lbl_signed": {"hu": "Aláírások", "en": "Signatures"}, + "sb_val_on": {"hu": "bekapcsolva", "en": "enabled"}, + "sb_val_off": {"hu": "kikapcsolva", "en": "disabled"}, + "sb_val_yes": {"hu": "igen", "en": "yes"}, + "sb_val_no": {"hu": "nem", "en": "no"}, + "sb_val_ok": {"hu": "rendben", "en": "ok"}, + "sb_val_missing": {"hu": "hiányzik", "en": "missing"}, + "sb_btn_refresh": {"hu": "Állapot frissítése", "en": "Refresh status"}, + "sb_btn_setup": {"hu": "Secure Boot beállítása", "en": "Set up Secure Boot"}, + "sb_btn_resign": {"hu": "Újra-aláírás", "en": "Re-sign"}, + "sb_pending": {"hu": "Újraindítás szükséges a befejezéshez!", "en": "Reboot required to finish!"}, + "sb_bl_warn": {"hu": "BitLocker: ha Windows-on be van kapcsolva, előbb indítsd el a Windowst és futtasd: manage-bde -protectors -disable C: -rebootcount 2 — vagy legyen kéznél a helyreállítási kulcs.", "en": "BitLocker: if enabled on Windows, boot Windows first and run: manage-bde -protectors -disable C: -rebootcount 2 — or have the recovery key ready."}, + "sb_done_title": {"hu": "Secure Boot beállítva", "en": "Secure Boot configured"}, + "sb_done_msg": {"hu": "Az aláírások és a kulcsok készen vannak.\n\nA BIOS-ban állítsd: Secure Boot → Enabled, majd indítsd újra a gépet.", "en": "Signatures and keys are ready.\n\nIn the BIOS set: Secure Boot → Enabled, then reboot."}, + "sb_reboot_title": {"hu": "Újraindítás szükséges", "en": "Reboot required"}, + "sb_reboot_msg": {"hu": "A BIOS-ban töröld a Secure Boot kulcsokat (Clear Secure Boot keys → Setup Mode).\nMentés után indítsd újra a gépet — a beállítás boot után automatikusan befejeződik.\n\nÚjraindítsam most?", "en": "In the BIOS clear the Secure Boot keys (Clear Secure Boot keys → Setup Mode).\nSave and reboot — the setup finishes automatically after boot.\n\nReboot now?"}, + "sb_err_title": {"hu": "Secure Boot hiba", "en": "Secure Boot error"}, + "sb_err_msg": {"hu": "A művelet nem sikerült — a részletek a naplóban láthatók.", "en": "The operation failed — details are in the log."}, "tab_all": {"hu": "Összes", "en": "All"}, "tab_installed": {"hu": "Telepített", "en": "Installed"}, "search_placeholder": {"hu": "Keresés…", "en": "Search…"}, @@ -296,9 +309,6 @@ def build_qss() -> str: """ -# ───────────────────────────────────────────────────────────────────────────── -# Adat: katalógus betöltés + telepítettség detektálás -# ───────────────────────────────────────────────────────────────────────────── def load_catalog() -> list: """app-list.json beolvasása az első létező útvonalról.""" @@ -368,9 +378,6 @@ def is_installed(app: dict, idx: dict) -> bool: return False -# ───────────────────────────────────────────────────────────────────────────── -# Parancs-építés (telepítés / eltávolítás), batch-elve backendenként -# ───────────────────────────────────────────────────────────────────────────── def _root_prefix(gui: bool) -> list: """GUI -> sudo -S (jelszó stdin-ről), terminál -> sudo, ha már root -> semmi.""" @@ -419,8 +426,6 @@ def plan_commands(apps: list, install: bool, gui: bool) -> list: if aur: if install: - # --answer* nelkul a yay a PKGBUILD-diff/edit prompt-nal orokre - # varakozik (nincs csatolt terminal a stream_command-hoz) steps.append((f"AUR: {', '.join(aur)}", ["yay", "-S", "--needed", "--noconfirm", "--answerclean", "None", "--answerdiff", "None", @@ -447,10 +452,6 @@ def plan_commands(apps: list, install: bool, gui: bool) -> list: steps.append((f"flatpak uninstall: {fid}", ["flatpak", "uninstall", "--user", "-y", fid])) - # Config seedelés: pacman/aur/flatpak-user tipusu appoknal a config_dir/ - # config_dest mezok alapjan bemasoljuk az elore elkeszitett configot a - # user home-jaba, telepites utan. (script tipusnal ezt a sajat bash - # script intezi, azoknal nem kell ez a lepes.) if install: _home = os.path.expanduser("~") for a in apps: @@ -471,10 +472,6 @@ def plan_commands(apps: list, install: bool, gui: bool) -> list: f"cp {cp_flag} {shlex.quote(str(src))}/. {shlex.quote(dest)}/ && " f"rm -f {shlex.quote(dest)}/Singleton*"])) - # Config seedelés (több-utas változat): olyan appoknal, ahol tobb kulon - # forras/cel par van (pl. PhotoGIMP: GIMP config + .desktop + ikonok - # kulon-kulon helyre), a "config_mappings" listat hasznaljuk a fenti - # egyszeru config_dir/config_dest helyett. if install: _home = os.path.expanduser("~") for a in apps: @@ -496,7 +493,6 @@ def plan_commands(apps: list, install: bool, gui: bool) -> list: f"cp {cp_flag} {shlex.quote(str(src))}/. {shlex.quote(dest)}/ && " f"rm -f {shlex.quote(dest)}/Singleton*"])) - # Script env: a szkript tudja ki a tényleges user (sudo után root fut) _caller = os.environ.get("USER") or os.environ.get("LOGNAME") or "" _caller_home = os.path.expanduser("~") _caller_uid = str(os.getuid()) @@ -547,9 +543,6 @@ def stream_command(label: str, cmd: list, emit, password: str = "") -> bool: return ok -# ───────────────────────────────────────────────────────────────────────────── -# GUI rész (csak ha van PyQt6 / display) -# ───────────────────────────────────────────────────────────────────────────── BACKUP_LIST_CANDIDATES = [ _SCRIPT_DIR / "data/backup/backup-paths.json", @@ -578,7 +571,6 @@ def run_gui() -> int: from PyQt6.QtCore import Qt, QThread, pyqtSignal from PyQt6.QtGui import QFont, QFontDatabase - # ── display font helper (Bebas Neue, fallbackkel) ──────────────────────── def display_font(size: int, weight=QFont.Weight.Normal) -> QFont: for fam in ("Bebas Neue", "Oswald", "Anton"): if fam in QFontDatabase.families(): @@ -591,7 +583,6 @@ def run_gui() -> int: f.setLetterSpacing(QFont.SpacingType.PercentageSpacing, 102) return f - # ── háttér worker ──────────────────────────────────────────────────────── class Worker(QThread): log = pyqtSignal(str) progress = pyqtSignal(int) # 0..100 @@ -613,7 +604,6 @@ def run_gui() -> int: self.progress.emit(int((i + 1) / total * 100)) self.done.emit(ok, total) - # ── egy app sor widget ─────────────────────────────────────────────────── class Row(QFrame): def __init__(self, app, installed): super().__init__() @@ -652,7 +642,6 @@ def run_gui() -> int: f"color:{C['accent_hi'] if installed else C['text_mut']}; font-size:12px;") lay.addWidget(status) - # sorra kattintás is váltja a checkboxot (message tipusnal dialogot mutat) self.setCursor(Qt.CursorShape.PointingHandCursor) def mousePressEvent(self, e): @@ -664,7 +653,34 @@ def run_gui() -> int: self.cb.toggle() super().mousePressEvent(e) - # ── backup worker ──────────────────────────────────────────────────────── + class SbWorker(QThread): + log = pyqtSignal(str) + done = pyqtSignal(int) + + def __init__(self, mode, password): + super().__init__() + self.mode = mode + self.password = password + + def run(self): + cmd = ["sudo", "-S", "-p", "", "raveos-secureboot-setup", self.mode] + self.log.emit(f"$ {' '.join(cmd)}") + try: + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + stdin=subprocess.PIPE, text=True, bufsize=1) + if self.password: + proc.stdin.write(self.password + "\n") + proc.stdin.flush() + proc.stdin.close() + except OSError as exc: + self.log.emit(f"[HIBA] {exc}") + self.done.emit(1) + return + for line in proc.stdout: + self.log.emit(line.rstrip("\n")) + proc.wait() + self.done.emit(proc.returncode) + class BackupWorker(QThread): log = pyqtSignal(str) progress = pyqtSignal(int) @@ -792,7 +808,6 @@ def run_gui() -> int: except Exception as exc: self.done.emit(False, str(exc)) - # ── fő ablak ───────────────────────────────────────────────────────────── class Main(QMainWindow): def __init__(self, catalog): super().__init__() @@ -801,6 +816,7 @@ def run_gui() -> int: self.idx = installed_index() self.rows = [] self.worker = None + self.sb_worker = None self.backup_worker = None self.backup_checkboxes = {} # item_id -> (QCheckBox, abs_path, label, requires_root) self._sudo_pw = "" @@ -815,7 +831,6 @@ def run_gui() -> int: outer.setContentsMargins(0, 0, 0, 0) outer.setSpacing(0) - # ── Header ─────────────────────────────────────────────────────── header = QFrame() header.setObjectName("Header") hl = QHBoxLayout(header) @@ -852,6 +867,11 @@ def run_gui() -> int: self._style_lang_btns() hl.addSpacing(12) + self.btn_sb = QPushButton(tr("nav_sb")) + self.btn_sb.clicked.connect(self._go_sb) + hl.addWidget(self.btn_sb) + hl.addSpacing(8) + self.btn_nav = QPushButton(tr("nav_backup")) self.btn_nav.clicked.connect(self._go_backup) hl.addWidget(self.btn_nav) @@ -861,11 +881,9 @@ def run_gui() -> int: hl.addWidget(ver) outer.addWidget(header) - # ── Stack ───────────────────────────────────────────────────────── self.stack = QStackedWidget() outer.addWidget(self.stack, 1) - # ── Oldal 0: Apps ───────────────────────────────────────────────── apps_page = QWidget() bl = QVBoxLayout(apps_page) bl.setContentsMargins(20, 16, 20, 16) @@ -935,7 +953,6 @@ def run_gui() -> int: self.stack.addWidget(apps_page) - # ── Oldal 1: Backup / Restore ───────────────────────────────────── bk_page = QWidget() bbl = QVBoxLayout(bk_page) bbl.setContentsMargins(20, 16, 20, 16) @@ -987,10 +1004,75 @@ def run_gui() -> int: self.stack.addWidget(bk_page) + sb_page = QWidget() + sbl = QVBoxLayout(sb_page) + sbl.setContentsMargins(20, 16, 20, 16) + sbl.setSpacing(12) + + self.sb_desc = QLabel(tr("sb_desc")) + self.sb_desc.setWordWrap(True) + self.sb_desc.setStyleSheet(f"color:{C['text_dim']};") + sbl.addWidget(self.sb_desc) + + self.sb_lbls = {} + self.sb_vals = {} + srow1 = QHBoxLayout() + srow1.setSpacing(8) + srow2 = QHBoxLayout() + srow2.setSpacing(8) + for i, key in enumerate(("sb_lbl_sb", "sb_lbl_setup", "sb_lbl_keys", "sb_lbl_signed")): + lbl = QLabel(tr(key)) + lbl.setStyleSheet(f"color:{C['text_dim']};") + val = QLabel("-") + val.setStyleSheet(f"color:{C['text']}; font-weight:600;") + self.sb_lbls[key] = lbl + self.sb_vals[key] = val + box = QHBoxLayout() + box.setSpacing(6) + box.addWidget(lbl) + box.addWidget(val) + (srow1 if i < 2 else srow2).addLayout(box) + (srow1 if i < 2 else srow2).addSpacing(24) + srow1.addStretch(1) + srow2.addStretch(1) + sbl.addLayout(srow1) + sbl.addLayout(srow2) + + self.sb_warn = QLabel(tr("sb_bl_warn")) + self.sb_warn.setWordWrap(True) + self.sb_warn.setStyleSheet("color:#d0a24c;") + sbl.addWidget(self.sb_warn) + + self.sb_pending = QLabel(tr("sb_pending")) + self.sb_pending.setStyleSheet("color:#d0a24c; font-weight:700;") + self.sb_pending.hide() + sbl.addWidget(self.sb_pending) + + sb_row = QHBoxLayout() + sb_row.setSpacing(8) + self.btn_sb_refresh = QPushButton(tr("sb_btn_refresh")) + self.btn_sb_refresh.clicked.connect(self._sb_refresh) + self.btn_sb_setup = QPushButton(tr("sb_btn_setup")) + self.btn_sb_setup.setObjectName("Primary") + self.btn_sb_setup.clicked.connect(self._sb_setup) + self.btn_sb_resign = QPushButton(tr("sb_btn_resign")) + self.btn_sb_resign.clicked.connect(self._sb_resign) + sb_row.addWidget(self.btn_sb_refresh) + sb_row.addWidget(self.btn_sb_setup) + sb_row.addWidget(self.btn_sb_resign) + sb_row.addStretch(1) + sbl.addLayout(sb_row) + + self.sb_log = QPlainTextEdit() + self.sb_log.setObjectName("Log") + self.sb_log.setReadOnly(True) + sbl.addWidget(self.sb_log, 1) + + self.stack.addWidget(sb_page) + self.build_rows() self.apply_filter() - # ── nyelv ───────────────────────────────────────────────────────────── def _style_lang_btns(self): active = ( f"QPushButton {{ background: {C['accent']}; color: #15240f;" @@ -1016,9 +1098,23 @@ def run_gui() -> int: self._retranslate_all() def _retranslate_all(self): - on_backup = self.stack.currentIndex() == 1 - self.header_sep.setText(tr("header_backup") if on_backup else tr("header_installer")) - self.btn_nav.setText(tr("nav_back") if on_backup else tr("nav_backup")) + idx = self.stack.currentIndex() + if idx == 1: + self.header_sep.setText(tr("header_backup")) + elif idx == 2: + self.header_sep.setText(tr("header_sb")) + else: + self.header_sep.setText(tr("header_installer")) + self.btn_nav.setText(tr("nav_back") if idx != 0 else tr("nav_backup")) + self.btn_sb.setText(tr("nav_sb")) + self.sb_desc.setText(tr("sb_desc")) + for key, lbl in self.sb_lbls.items(): + lbl.setText(tr(key)) + self.sb_warn.setText(tr("sb_bl_warn")) + self.sb_pending.setText(tr("sb_pending")) + self.btn_sb_refresh.setText(tr("sb_btn_refresh")) + self.btn_sb_setup.setText(tr("sb_btn_setup")) + self.btn_sb_resign.setText(tr("sb_btn_resign")) self.tab_all.setText(tr("tab_all")) self.tab_inst.setText(tr("tab_installed")) self.search.setPlaceholderText(tr("search_placeholder")) @@ -1042,7 +1138,6 @@ def run_gui() -> int: self.scroll.verticalScrollBar().setValue(keep_scroll) self.build_backup_items() - # ── backup lista építés (nyelvváltáskor is újraépül) ──────────────────── def build_backup_items(self): prev_checked = {iid: cb.isChecked() for iid, (cb, _, _, _) in self.backup_checkboxes.items()} while self.bk_vl.count(): @@ -1098,13 +1193,11 @@ def run_gui() -> int: self.bk_vl.addWidget(brow) self.bk_vl.addStretch(1) - # ── frissítés ───────────────────────────────────────────────────────── def _refresh_and_filter(self): self.idx = installed_index() self.build_rows() self.apply_filter() - # ── navigáció ───────────────────────────────────────────────────────── def _go_backup(self): self.stack.setCurrentIndex(1) self.header_sep.setText(tr("header_backup")) @@ -1119,7 +1212,99 @@ def run_gui() -> int: self.btn_nav.clicked.disconnect() self.btn_nav.clicked.connect(self._go_backup) - # ── lista építés ────────────────────────────────────────────────────── + def _go_sb(self): + self.stack.setCurrentIndex(2) + self.header_sep.setText(tr("header_sb")) + self.btn_nav.setText(tr("nav_back")) + self.btn_nav.clicked.disconnect() + self.btn_nav.clicked.connect(self._go_apps) + self._sb_refresh() + + def _sb_refresh(self): + self.sb_log.clear() + import time + out = "" + cached = self._sudo_pw if (self._sudo_pw and (time.time() - self._sudo_pw_ts) < 300) else "" + try: + for cmd in (["raveos-secureboot-setup", "--status"], + ["sudo", "-n", "raveos-secureboot-setup", "--status"]): + res = subprocess.run(cmd, capture_output=True, text=True, timeout=15) + out = res.stdout + if out.strip(): + break + if not out.strip() and cached: + res = subprocess.run(["sudo", "-S", "-p", "", "raveos-secureboot-setup", "--status"], + input=cached + "\n", capture_output=True, text=True, timeout=15) + out = res.stdout + except (OSError, subprocess.TimeoutExpired) as exc: + self.sb_log.appendPlainText(f"[HIBA] {exc}") + return + data = {} + for line in out.splitlines(): + if "=" in line and not line.startswith("["): + k, _, val = line.partition("=") + data[k.strip()] = val.strip() + elif line.strip(): + self.sb_log.appendPlainText(line) + if not data: + if not out.strip(): + self.sb_log.appendPlainText("[raveos-sb] Az allapot nem olvashato.") + return + on = lambda x: tr("sb_val_on") if x == "1" else tr("sb_val_off") + yes = lambda x: tr("sb_val_yes") if x == "1" else tr("sb_val_no") + ok = lambda x: tr("sb_val_ok") if x == "1" else tr("sb_val_missing") + self.sb_vals["sb_lbl_sb"].setText(on(data.get("secureboot", "?"))) + self.sb_vals["sb_lbl_setup"].setText(yes(data.get("setupmode", "?"))) + self.sb_vals["sb_lbl_keys"].setText(ok(data.get("keys", "0"))) + self.sb_vals["sb_lbl_signed"].setText(ok(data.get("signed", "0"))) + self.sb_pending.setVisible(data.get("pending") == "1") + + def _sb_run(self, mode): + if self.sb_worker and self.sb_worker.isRunning(): + return + import time + if os.geteuid() != 0: + if self._sudo_pw and (time.time() - self._sudo_pw_ts) < 300: + password = self._sudo_pw + else: + password = self._ask_password() + if not password: + return + self._sudo_pw = password + self._sudo_pw_ts = time.time() + else: + password = "" + self.sb_log.clear() + self.btn_sb_setup.setEnabled(False) + self.btn_sb_resign.setEnabled(False) + self.btn_sb_refresh.setEnabled(False) + self.sb_worker = SbWorker(mode, password) + self.sb_worker.log.connect(self.sb_log.appendPlainText) + self.sb_worker.done.connect(self._sb_finished) + self.sb_worker.start() + + def _sb_setup(self): + self._sb_run("--setup") + + def _sb_resign(self): + self._sb_run("--resign") + + def _sb_finished(self, rc): + self.btn_sb_setup.setEnabled(True) + self.btn_sb_resign.setEnabled(True) + self.btn_sb_refresh.setEnabled(True) + self._sb_refresh() + if rc == 0: + QMessageBox.information(self, tr("sb_done_title"), tr("sb_done_msg")) + elif rc == 10: + answer = QMessageBox.question( + self, tr("sb_reboot_title"), tr("sb_reboot_msg"), + QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) + if answer == QMessageBox.StandardButton.Yes: + subprocess.Popen(["systemctl", "reboot"]) + else: + QMessageBox.critical(self, tr("sb_err_title"), tr("sb_err_msg")) + def build_rows(self): for r in self.rows: r.setParent(None) @@ -1154,7 +1339,6 @@ def run_gui() -> int: return [r.app for r in self.rows if r.cb.isChecked() and r.isVisible() and not r.is_message] - # ── app akció ───────────────────────────────────────────────────────── def _ask_password(self) -> str: """Jelszó dialog - egyszer fut az akció elején. Üres string = megszakítva.""" err_msg = "" @@ -1221,7 +1405,6 @@ def run_gui() -> int: return pw err_msg = tr("dlg_pw_wrong_err") except Exception: - # Ha az ellenőrzés nem sikerül, elfogadjuk és hagyjuk a parancsot hibázni return pw def run_action(self, install: bool): @@ -1236,7 +1419,6 @@ def run_gui() -> int: self.log.appendPlainText(tr("log_nothing_to_do")) return - # Jelszó - 5 percen belül megjegyzett jelszót újra felhasználjuk import time if os.geteuid() != 0: if self._sudo_pw and (time.time() - self._sudo_pw_ts) < 300: @@ -1281,7 +1463,6 @@ def run_gui() -> int: self.search.setEnabled(not busy) self.cat.setEnabled(not busy) - # ── backup akciók ───────────────────────────────────────────────────── def _bk_browse(self): path, _ = QFileDialog.getSaveFileName( self, tr("filedialog_caption"), str(Path.home()), "Tar archive (*.tar.gz)") @@ -1365,7 +1546,6 @@ def run_gui() -> int: self.bk_log.appendPlainText(f"\n{tr('bk_result_ok') if ok else tr('bk_result_err')}: {msg}") self._bk_set_busy(False) - # ── alkalmazás bootstrap ───────────────────────────────────────────────── if shutil.which("hyprctl"): subprocess.run( ["hyprctl", "keyword", "windowrulev2", @@ -1390,9 +1570,6 @@ def run_gui() -> int: return app.exec() -# ───────────────────────────────────────────────────────────────────────────── -# CLI rész -# ───────────────────────────────────────────────────────────────────────────── def _resolve(names, catalog): by = {a["name"].lower(): a for a in catalog} @@ -1425,9 +1602,6 @@ def cli_action(names, catalog, install: bool): print("Nincs végrehajtható lépés.") return 1 - # sudo -S jelszo nelkul a stdin pipe nyitva marad iras/EOF nelkul, - # es a folyamat orokre lefagy - a GUI-nak van jelszo dialogja, a - # CLI-nek eddig nem volt. password = "" if os.geteuid() != 0 and any( len(cmd) >= 2 and cmd[0] == "sudo" and cmd[1] == "-S" for _, cmd in steps @@ -1457,7 +1631,6 @@ def main(): cli_mode = args.list or args.installed or args.install or args.remove if not cli_mode: - # GUI-t user-ként indítsd (Wayland) - root GUI ne! if os.geteuid() == 0: print("Figyelem: a GUI-t NE rootként indítsd. " "Futtasd sima userként, a jogot pkexec kéri majd.") diff --git a/raveos-app-installer/raveos-secureboot-setup b/raveos-app-installer/raveos-secureboot-setup new file mode 100644 index 0000000..a02b046 --- /dev/null +++ b/raveos-app-installer/raveos-secureboot-setup @@ -0,0 +1,313 @@ +#!/bin/bash +set -u + +GLOBAL_GUID="8be4df61-93ca-11d2-aa0d-00e098032b8c" +DB_GUID="d719b2cb-3d3a-4596-a3bc-dad00e67656f" + +SB_DIR=/usr/share/raveos/secureboot +MS="$SB_DIR/ms" +MACHINE_DIR=/etc/raveos/secureboot +STATE=/var/lib/raveos-sb +RESUME_UNIT=raveos-sb-resume.service +WORK="" + +log() { echo "[raveos-sb] $*"; } + +cleanup() { [ -n "$WORK" ] && rm -rf "$WORK"; } +trap cleanup EXIT + +efi_var() { + od -An -t u1 /sys/firmware/efi/efivars/"$1"-* 2>/dev/null | awk '{print $5}' +} + +status_cmd() { + if [ ! -d /sys/firmware/efi/efivars ]; then + log "Nem UEFI rendszer - Secure Boot nem elerheto." + return 1 + fi + local sb sm keys tools signed + sb=$(efi_var SecureBoot) + sm=$(efi_var SetupMode) + keys=0 + [ -f "$MACHINE_DIR/machine.pem" ] && keys=1 + tools=0 + command -v sbsign >/dev/null 2>&1 && tools=1 + signed=0 + if [ "$keys" = "1" ] && command -v sbverify >/dev/null 2>&1; then + signed=1 + for f in /boot/EFI/systemd/systemd-bootx64.efi /boot/EFI/BOOT/BOOTX64.EFI /boot/vmlinuz-*; do + [ -f "$f" ] || continue + sbverify --cert "$MACHINE_DIR/machine.pem" "$f" >/dev/null 2>&1 || signed=0 + done + fi + echo "uefi=1" + echo "secureboot=${sb:-?}" + echo "setupmode=${sm:-?}" + echo "keys=$keys" + echo "tools=$tools" + echo "signed=$signed" + if [ -f "$STATE/pending" ]; then echo "pending=1"; else echo "pending=0"; fi + log "SecureBoot=${sb:-?} SetupMode=${sm:-?} gepkulcs=$keys alairasok=$signed" +} + +deps_cmd() { + local need=() + local p + for p in sbsigntools efitools openssl zstd; do + pacman -Qq "$p" >/dev/null 2>&1 || need+=("$p") + done + if [ "${#need[@]}" -gt 0 ]; then + log "Hianyzo eszkozok telepitese: ${need[*]}" + pacman -S --noconfirm "${need[@]}" || return 1 + fi +} + +keygen_cmd() { + if [ -f "$MACHINE_DIR/machine.key" ]; then + log "A gepkulcs mar letezik." + return 0 + fi + install -d -m 711 "$MACHINE_DIR" + openssl req -newkey rsa:2048 -nodes -keyout "$MACHINE_DIR/machine.key" -x509 -days 3650 \ + -out "$MACHINE_DIR/machine.pem" \ + -subj "/O=RaveOS/CN=RaveOS Machine Key" \ + -addext "basicConstraints=critical,CA:TRUE" \ + -addext "keyUsage=critical,digitalSignature,keyCertSign,cRLSign" \ + -addext "extendedKeyUsage=codeSigning" 2>/dev/null || { + log "HIBA: gepkulcs generalas sikertelen" + return 1 + } + chmod 600 "$MACHINE_DIR/machine.key" + chmod 644 "$MACHINE_DIR/machine.pem" + log "Gepkulcs generalva: CN=RaveOS Machine Key" +} + +signfile_path() { + local c + for c in /usr/lib/modules/*/build/scripts/sign-file /usr/src/linux/scripts/sign-file; do + [ -x "$c" ] && { echo "$c"; return 0; } + done + return 1 +} + +sign_one() { + local key="$1" cert="$2" f="$3" + sbverify --cert "$cert" "$f" >/dev/null 2>&1 && return 0 + if sbsign --key "$key" --cert "$cert" --output "$f.signed" "$f" 2>/dev/null; then + mv "$f.signed" "$f" + log "alairva: $f" + return 0 + fi + log "FIGYELEM: nem sikerult alairni: $f" + return 1 +} + +sign_cmd() { + command -v sbsign >/dev/null 2>&1 || { log "HIBA: sbsign nem elerheto"; return 1; } + local key="$MACHINE_DIR/machine.key" cert="$MACHINE_DIR/machine.pem" + local n=0 f signfile t + for f in /boot/EFI/systemd/systemd-bootx64.efi /boot/EFI/BOOT/BOOTX64.EFI /boot/vmlinuz-* /boot/memtest86+/memtest.efi; do + [ -f "$f" ] || continue + sign_one "$key" "$cert" "$f" && n=$((n + 1)) + done + signfile=$(signfile_path) || signfile="" + if [ -n "$signfile" ]; then + install -m 755 "$signfile" /usr/local/bin/raveos-sign-file + local d sub m + for d in /usr/lib/modules/*/; do + for sub in extramodules updates/dkms extras; do + [ -d "${d}${sub}" ] || continue + while IFS= read -r -d '' m; do + if modinfo -F signer "$m" 2>/dev/null | grep -q "RaveOS Machine Key"; then + continue + fi + case "$m" in + *.ko) + /usr/local/bin/raveos-sign-file sha512 "$key" "$cert" "$m" >/dev/null 2>&1 && n=$((n + 1)) + ;; + *.ko.zst) + t=$(mktemp -d) + if zstd -q -d -c "$m" > "$t/m.ko" 2>/dev/null && + /usr/local/bin/raveos-sign-file sha512 "$key" "$cert" "$t/m.ko" >/dev/null 2>&1 && + zstd -q -f -o "$m" "$t/m.ko" 2>/dev/null; then + n=$((n + 1)) + fi + rm -rf "$t" + ;; + esac + done < <(find "${d}${sub}" -type f \( -name '*.ko' -o -name '*.ko.zst' \) -print0 2>/dev/null) + done + done + else + log "FIGYELEM: sign-file nem talalhato (kernel-headers nelkul a modulok kimaradnak)" + fi + log "Alairt elemek: $n" +} + +hook_cmd() { + install -d -m 755 /usr/local/bin /etc/pacman.d/hooks + install -m 755 "$SB_DIR/installed/raveos-sb-sign-local.sh" /usr/local/bin/raveos-sb-sign-local.sh + install -m 644 "$SB_DIR/installed/zz-raveos-sb-sign.hook" /etc/pacman.d/hooks/zz-raveos-sb-sign.hook + log "Pacman hook + helyi alairo telepitve." +} + +verify_cmd() { + local cert="$MACHINE_DIR/machine.pem" bad=0 f + for f in /boot/EFI/systemd/systemd-bootx64.efi /boot/EFI/BOOT/BOOTX64.EFI /boot/vmlinuz-*; do + [ -f "$f" ] || continue + sbverify --cert "$cert" "$f" >/dev/null 2>&1 || { bad=1; log "NINCS alairva: $f"; } + done + [ "$bad" = "0" ] && log "Alairas-ellenorzes: rendben." + if command -v efi-readvar >/dev/null 2>&1; then + log "Firmware db tartalom:" + efi-readvar -v db 2>/dev/null | grep -E "CN *=|O *=" | head -14 + fi +} + +cert_to_esl() { + cert-to-efi-sig-list "$1" "$2" 2>/dev/null || return 1 + local sz + sz=$(stat -c %s "$2" 2>/dev/null || echo 0) + [ "$sz" -gt 100 ] +} + +build_db_esl() { + local out="$1" f + cert_to_esl "$SB_DIR/db.pem" "$WORK/raveos-db.esl" || return 1 + cert_to_esl "$MACHINE_DIR/machine.pem" "$WORK/machine.esl" || return 1 + cat "$WORK/raveos-db.esl" > "$out" + for f in "$MS/MicCorUEFCA2011_2011-06-27.pem" "$MS/MicWinProPCA2011_2011-10-19.pem" \ + "$MS/microsoft uefi ca 2023.pem" "$MS/windows uefi ca 2023.pem" \ + "$MS/microsoft option rom uefi ca 2023.pem"; do + [ -f "$f" ] || continue + cert_to_esl "$f" "$WORK/ms-extra.esl" && cat "$WORK/ms-extra.esl" >> "$out" + done + cat "$WORK/machine.esl" >> "$out" +} + +build_kek_esl() { + local out="$1" f + cert_to_esl "$SB_DIR/KEK.pem" "$WORK/raveos-kek.esl" || return 1 + cat "$WORK/raveos-kek.esl" > "$out" + for f in "$MS/MicCorKEKCA2011_2011-06-24.pem" "$MS/microsoft corporation kek 2k ca 2023.pem"; do + [ -f "$f" ] || continue + cert_to_esl "$f" "$WORK/ms-extra.esl" && cat "$WORK/ms-extra.esl" >> "$out" + done +} + +clear_var() { + local name="$1" guid="$2" f + f="/sys/firmware/efi/efivars/${name}-${guid}" + [ -e "$f" ] || return 0 + chattr -i "$f" 2>/dev/null || true + rm -f "$f" 2>/dev/null || log "FIGYELEM: ${name} regi valtozo torlese nem sikerult" +} + +enroll_cmd() { + local sm t + sm=$(efi_var SetupMode) + if [ "${sm:-0}" != "1" ]; then + log "A firmware nincs Setup Mode-ban." + return 10 + fi + for t in cert-to-efi-sig-list efi-updatevar; do + command -v "$t" >/dev/null 2>&1 || { log "HIBA: $t nem elerheto (efitools)"; return 1; } + done + [ -f "$SB_DIR/PK.auth" ] || { log "HIBA: hianyzik a PK.auth"; return 1; } + + WORK=$(mktemp -d) + build_db_esl "$WORK/db.esl" || { log "HIBA: db ESL epites"; return 1; } + build_kek_esl "$WORK/KEK.esl" || { log "HIBA: KEK ESL epites"; return 1; } + + log "Meglevo PK/KEK/db valtozok torlese..." + clear_var PK "$GLOBAL_GUID" + clear_var KEK "$GLOBAL_GUID" + clear_var db "$DB_GUID" + + log "db irasa (RaveOS + Microsoft + gepkulcs)..." + efi-updatevar -e -f "$WORK/db.esl" db || { log "HIBA: db iras"; return 1; } + + log "KEK irasa (RaveOS + Microsoft)..." + efi-updatevar -e -f "$WORK/KEK.esl" KEK || { log "HIBA: KEK iras"; return 1; } + + log "PK irasa (elore alairt PK.auth)..." + efi-updatevar -f "$SB_DIR/PK.auth" PK || { log "HIBA: PK iras"; return 1; } + + log "Kulcsok telepitve a firmware-be." +} + +setup_cmd() { + status_cmd || return 1 + log "FIGYELEM (BitLocker): ha a Windowson BitLocker van, elotte inditsd el a Windowst es futtasd:" + log " manage-bde -protectors -disable C: -rebootcount 2" + log " vagy legyen keznel a 48 jegyu helyreallitasi kulcs." + deps_cmd || return 1 + keygen_cmd || return 1 + sign_cmd || return 1 + hook_cmd || return 1 + install -d -m 755 "$STATE" + local rc + enroll_cmd + rc=$? + if [ "$rc" = "0" ]; then + verify_cmd + rm -f "$STATE/pending" + log "KESZ. A BIOS-ban allitsd: Secure Boot -> Enabled, majd ujrainditas." + return 0 + fi + if [ "$rc" = "10" ]; then + install -m 644 "$SB_DIR/installed/raveos-sb-resume.service" /etc/systemd/system/"$RESUME_UNIT" + systemctl daemon-reload + systemctl enable "$RESUME_UNIT" >/dev/null 2>&1 + touch "$STATE/pending" + log "A BIOS-ban: Secure Boot -> Key Management -> Clear Secure Boot keys (Setup Mode)," + log "ments, majd inditsd ujra a gepet. Boot utan a folyamat magatol befejezodik." + return 10 + fi + return "$rc" +} + +resume_cmd() { + [ -f "$STATE/pending" ] || exit 0 + if enroll_cmd; then + verify_cmd + rm -f "$STATE/pending" + date -Is > "$STATE/done" + systemctl disable "$RESUME_UNIT" >/dev/null 2>&1 + log "Secure Boot beallitas befejezve. A BIOS-ban: Secure Boot -> Enabled." + exit 0 + fi + exit 1 +} + +need_root() { + if [ "$(id -u)" != "0" ]; then + echo "[raveos-sb] Root jogosultsag szukseges." >&2 + exit 1 + fi +} + +case "${1:-}" in + --status) + status_cmd + ;; + --verify) + verify_cmd + ;; + --setup) + need_root + setup_cmd + ;; + --resume) + need_root + resume_cmd + ;; + --resign) + need_root + keygen_cmd && sign_cmd && verify_cmd + ;; + *) + echo "hasznalat: raveos-secureboot-setup --status|--setup|--resume|--resign|--verify" >&2 + exit 2 + ;; +esac diff --git a/raveos-app-installer/secureboot/KEK.pem b/raveos-app-installer/secureboot/KEK.pem new file mode 100644 index 0000000..5a49691 --- /dev/null +++ b/raveos-app-installer/secureboot/KEK.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDVzCCAj+gAwIBAgIUcKsPl6DDusNNC3vQNBhvFjw+vIwwDQYJKoZIhvcNAQEL +BQAwMzEPMA0GA1UECgwGUmF2ZU9TMSAwHgYDVQQDDBdSYXZlT1MgS2V5IEV4Y2hh +bmdlIEtleTAeFw0yNjEwMDIyMTU5MTNaFw0zNjA5MjkyMTU5MTNaMDMxDzANBgNV +BAoMBlJhdmVPUzEgMB4GA1UEAwwXUmF2ZU9TIEtleSBFeGNoYW5nZSBLZXkwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrz7sOnYkci8zut/0BmGbdftPk +3cSBn3/rOaY4RMgQ8gsntAQRRnOp1NHsu87/9u0qk+n4qgqX/EZBRYZozfEI3Xu5 +4h0LbZwsOFItaellUEw+Jfviz1ZCGj6cPRqtS/rZNMd2/6qdFc+hnz4FjRHX6cYM +WWuYBhUgjSbGncsh0qWg0BLVzwniD9rO/NQ7nCP2ZNnkllG9HRffIFzJjmP1/DfN +jXorb4egi7EFPFFgddB4wM6DeXd8GhosJD1ilW2W2Ww8Xu/R9IXTSOefG3sZLZKf +jaj7kmYNmkRrr0aQ2pSwC4lDsba7Yob6zsuDMyPjbSiPqTzZ12RXV7UdKN47AgMB +AAGjYzBhMB0GA1UdDgQWBBTVBDvn/UGvO9uqzh6Yb7Lw59LvhzAfBgNVHSMEGDAW +gBTVBDvn/UGvO9uqzh6Yb7Lw59LvhzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEAFhnk0GsalDm66gp+yrWTiP/9vVny +RD3RdryYxTcpPAjRAmmAdgPGE6IxX5cfkgYw+OdvBmDJah4p9Z945NF3Emjm3xlY +2RmDI4IGeBTBKKt03cx69fdvUyuQAqx9mBoGywolUk3mWi8LK2YLU0NPuKCuduw1 +UFw5NEkwJg9Awo0YKTZHxMrHkftXY5CAUi6H0VeYJlpMiaRPInEYIYJuMVEWFaL4 +wsFC6pTHwYsMH9yrijzcMQ2PSZeZi8jGPCG4LifVzv/VwHxgwvK9Byy5yVvFvVCT +h2A0T27Qxf23Xbu/wh/rgaM/cSg8gsFidqyTEyeCEDYyxSIk1lzsuT+zrw== +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/PK.auth b/raveos-app-installer/secureboot/PK.auth Binary files differnew file mode 100644 index 0000000..b546b2c --- /dev/null +++ b/raveos-app-installer/secureboot/PK.auth diff --git a/raveos-app-installer/secureboot/PK.pem b/raveos-app-installer/secureboot/PK.pem new file mode 100644 index 0000000..558c178 --- /dev/null +++ b/raveos-app-installer/secureboot/PK.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDTzCCAjegAwIBAgIUTwsILq1KfHS0nLE9ylandBBWErcwDQYJKoZIhvcNAQEL +BQAwLzEPMA0GA1UECgwGUmF2ZU9TMRwwGgYDVQQDDBNSYXZlT1MgUGxhdGZvcm0g +S2V5MB4XDTI2MTAwMjIxNTkxM1oXDTM2MDkyOTIxNTkxM1owLzEPMA0GA1UECgwG +UmF2ZU9TMRwwGgYDVQQDDBNSYXZlT1MgUGxhdGZvcm0gS2V5MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0BfhuL/qkkT2w52O+lDV1UebAJvWT1six9MJ +pbxbO8NVhvQnwSK2mixYhvfOQVctW7ww7pN6eFk3e/j3IyWUHDhUZbwA4/4d6TpM +MJQoLkfNN/Xa5+eNKWGFaOQOQ+qDAPy9rNYvqHPCS8f9pEOsLFW7vhlTsmtr3qeX +E2rLXPVdQmLuzsKTvHbKWbI4ofxqBU44TAU0FVXAaC5OWDSwYuRwr0WZgFXxnn2e +G4qA7/Uix8esq6eLR+mYDK63w2iMnraHmXiCcK5W+2jDflkns87EeKRJpWAqleUI +L3LDotB/TzjM59Nx5QFAGho42qMS46ea8oluAXZTs+lWSFdd3wIDAQABo2MwYTAd +BgNVHQ4EFgQUtFZf8lEVkLs+PQe3U3LFwExzuTkwHwYDVR0jBBgwFoAUtFZf8lEV +kLs+PQe3U3LFwExzuTkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw +DQYJKoZIhvcNAQELBQADggEBAA6zG2QTdZUsgKrhLMabO5exce7yGuhsFB0uRe2F +ooa6RfswSRe4QNUdnAcLNsqSNMRAJ4Pboz7bi2zp4QPkZh92EADG/UWUXQJEzl25 +s8QsIJAr88Qf1fXG07kz0JBBh1A7MzoSaNZ4JLdoovAFkZuG7pHIT4VxnqpzYS2c +0w2EqPtqubTzPqt6wZ191QtPp1Jif6WL95VapGVpqGzQKo6msirdNcGrIX0JR7Lm +CrmIkh5HogWYzY3YYmEbjbM5uK0019NZg5vAmLCy6P6SHq5+feUd1ae02EfW0FTa +udszl9fXtWlmoioffvRvpZ7VBXXPnXv7Ca6nDxgEVAjNYgg= +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/db.pem b/raveos-app-installer/secureboot/db.pem new file mode 100644 index 0000000..c9ed693 --- /dev/null +++ b/raveos-app-installer/secureboot/db.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYjCCAkqgAwIBAgIUapoezG6LBdbRhKoNniRol3q6Ui4wDQYJKoZIhvcNAQEL +BQAwLjEPMA0GA1UECgwGUmF2ZU9TMRswGQYDVQQDDBJSYXZlT1MgU2VjdXJlIEJv +b3QwHhcNMjYxMDAyMjE1OTEzWhcNMzYwOTI5MjE1OTEzWjAuMQ8wDQYDVQQKDAZS +YXZlT1MxGzAZBgNVBAMMElJhdmVPUyBTZWN1cmUgQm9vdDCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAJjE+etmu0Ev7chkgiih4D2AZ02+W9xzp+t8dEBC +P1Sw4xXXG56jBvPzDC48F4u4GZLu/DSDMfpXqg6AvVVaXRXE48E2hIRMCshoLjId +xkl+cGFQ2KvGo+hFItftq8IV1hU0zqtKfxa+eygklim1bjhB6jBsm9bjstbQ/fl3 +j2vPw1yTmpwgx6NgfFLtrXeZ1KGKIAo/kImiqStPyh5cWH72CSG6ppYYiaW5sx+j +f0IqHsyllX/Hoii4NXjAmmTeRXk0c8Mj8B8RZBAx9V3m144j5+z2jRbvYElWxmwU +k1m6VA9x3UZXZxiJ9BwwaL+8TK9UNS8QhOZ+BF5rQjbaeScCAwEAAaN4MHYwHQYD +VR0OBBYEFI/b7ftnyYNFrGMT/WFuwopejtdYMB8GA1UdIwQYMBaAFI/b7ftnyYNF +rGMT/WFuwopejtdYMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMBMG +A1UdJQQMMAoGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4IBAQATWkIFkjetX/eQ +Mas/kADYYOeOcTZ/N4ha56aDYicEs2g+jUGSzUBvELhBLLM0TVIn/Qrej175sBox +icwtQJuIUJdZauF8tf217JT+NFRjwAaW7DGdQpeMTLSP5ijhD1XoX8Yp0/00bJiK +/ZjP1CWCgYlJYJyKmU8a0cPPvTWMaL8e8mT/yHvzVrBfUyJrZh9wWJmnym43Rt8X +IuMkuORXy32873J3KOYhVZLZ+o//LDfpAzohDagZaFM5oiXKG24P/mbSAN6HQuki +Q5qh4lr5P4afJPdjiA41sT8Tz/xhRlAGF06KfUXcWKX5qA8+HSb5lo0EapEWEQWC +KPLgKAk1 +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/installed/raveos-sb-resume.service b/raveos-app-installer/secureboot/installed/raveos-sb-resume.service new file mode 100644 index 0000000..d6005b6 --- /dev/null +++ b/raveos-app-installer/secureboot/installed/raveos-sb-resume.service @@ -0,0 +1,7 @@ +[Unit] +Description=RaveOS Secure Boot beallitas befejezese +[Service] +Type=oneshot +ExecStart=/usr/bin/raveos-secureboot-setup --resume +[Install] +WantedBy=multi-user.target diff --git a/raveos-app-installer/secureboot/installed/raveos-sb-sign-local.sh b/raveos-app-installer/secureboot/installed/raveos-sb-sign-local.sh new file mode 100755 index 0000000..af20118 --- /dev/null +++ b/raveos-app-installer/secureboot/installed/raveos-sb-sign-local.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -u + +KEY=/etc/raveos/secureboot/machine.key +CERT=/etc/raveos/secureboot/machine.pem +SIGNFILE=/usr/local/bin/raveos-sign-file +[[ -f "$KEY" && -f "$CERT" ]] || exit 0 +command -v sbsign >/dev/null 2>&1 || exit 0 + +signed=0 + +for f in /boot/vmlinuz-* /boot/memtest86+/memtest.efi /boot/EFI/systemd/systemd-bootx64.efi /boot/EFI/BOOT/BOOTX64.EFI; do + [[ -f "$f" ]] || continue + case "$f" in *.signed) continue ;; esac + if sbverify --cert "$CERT" "$f" >/dev/null 2>&1; then + continue + fi + if sbsign --key "$KEY" --cert "$CERT" --output "${f}.signed" "$f" 2>/dev/null; then + mv "${f}.signed" "$f" + signed=$((signed + 1)) + fi +done + +if [[ -x "$SIGNFILE" ]]; then + for d in /usr/lib/modules/*/; do + for sub in extramodules updates/dkms extras; do + [[ -d "${d}${sub}" ]] || continue + while IFS= read -r -d '' f; do + modinfo -F signer "$f" 2>/dev/null | grep -q "RaveOS Machine Key" && continue + case "$f" in + *.ko) + "$SIGNFILE" sha512 "$KEY" "$CERT" "$f" >/dev/null 2>&1 && signed=$((signed + 1)) + ;; + *.ko.zst) + tmp="$(mktemp -d)" + if zstd -q -d -c "$f" > "$tmp/m.ko" 2>/dev/null && + "$SIGNFILE" sha512 "$KEY" "$CERT" "$tmp/m.ko" >/dev/null 2>&1 && + zstd -q -f -o "$f" "$tmp/m.ko" 2>/dev/null; then + signed=$((signed + 1)) + fi + rm -rf "$tmp" + ;; + esac + done < <(find "${d}${sub}" -type f \( -name '*.ko' -o -name '*.ko.zst' \) -print0 2>/dev/null) + done + done +fi + +[ "$signed" -gt 0 ] && echo "[raveos-sb] $signed fajl ujraalairva" +exit 0 diff --git a/raveos-app-installer/secureboot/installed/zz-raveos-sb-sign.hook b/raveos-app-installer/secureboot/installed/zz-raveos-sb-sign.hook new file mode 100644 index 0000000..cf64ee2 --- /dev/null +++ b/raveos-app-installer/secureboot/installed/zz-raveos-sb-sign.hook @@ -0,0 +1,17 @@ +[Trigger] +Operation = Install +Operation = Upgrade +Type = Package +Target = linux-cachyos +Target = linux +Target = nvidia +Target = nvidia-dkms +Target = nvidia-open +Target = nvidia-open-dkms +Target = systemd +Target = dkms + +[Action] +Description = RaveOS Secure Boot: bootlanc + out-of-tree modulok ujraalairasa... +When = PostTransaction +Exec = /usr/local/bin/raveos-sb-sign-local.sh diff --git a/raveos-app-installer/secureboot/ms/MicCorKEKCA2011_2011-06-24.pem b/raveos-app-installer/secureboot/ms/MicCorKEKCA2011_2011-06-24.pem new file mode 100644 index 0000000..37c814a --- /dev/null +++ b/raveos-app-installer/secureboot/ms/MicCorKEKCA2011_2011-06-24.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF6DCCA9CgAwIBAgIKYQrRiAAAAAAAAzANBgkqhkiG9w0BAQsFADCBkTELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE7MDkGA1UEAxMyTWljcm9z +b2Z0IENvcnBvcmF0aW9uIFRoaXJkIFBhcnR5IE1hcmtldHBsYWNlIFJvb3QwHhcN +MTEwNjI0MjA0MTI5WhcNMjYwNjI0MjA1MTI5WjCBgDELMAkGA1UEBhMCVVMxEzAR +BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p +Y3Jvc29mdCBDb3Jwb3JhdGlvbjEqMCgGA1UEAxMhTWljcm9zb2Z0IENvcnBvcmF0 +aW9uIEtFSyBDQSAyMDExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +xOi1ir+tVyawJsPq5/tXekQCXQcN2krldCrmsA/sbevsf7njWmMyfBEXTw7jC6c4 +FZOOxvXghLGamyzn9beR1gnh4sAEqKwwHN9I8wZQmmSnUX/IhU+PIIbO/i/hn/+C +wO3pzc70U2piOgtDueIl/f4F+dTEFKsR4iOJjXC3pB1N7K7lnPoWwtfBy9ToxC/l +me4kiwPsjfKL6sNK+0MREgt+tUeSbNzmBInr9TME6xABKnHl+YMTPP8lCS9odkb/ +uk++3K1xKliq+w7SeT3km2U7zCkqn/xyWaLrrpLv9jUTgMYC7ORfzJ12ze9jksGv +eUCEeYd/41Ko6J17B2mPFQIDAQABo4IBTzCCAUswEAYJKwYBBAGCNxUBBAMCAQAw +HQYDVR0OBBYEFGL8Q82gPqTLZxLSW9lVrHvMtopfMBkGCSsGAQQBgjcUAgQMHgoA +UwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQY +MBaAFEVmUkPhflgRv9ZOniNVCDs6ImqoMFwGA1UdHwRVMFMwUaBPoE2GS2h0dHA6 +Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvclRoaVBh +ck1hclJvb18yMDEwLTEwLTA1LmNybDBgBggrBgEFBQcBAQRUMFIwUAYIKwYBBQUH +MAKGRGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29yVGhp +UGFyTWFyUm9vXzIwMTAtMTAtMDUuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQDUhIj1 +FJQYAsoqPPsqkhwM16DR8ehSZqjuorV1epAAqi2kdlrqebe5N2pRexBk9uFk8gJn +vveoG3i9us6IWGQM1lfIGaNfBdbbxtBpzkhLMrfrXdIw9cD1uLp4B6Mr/pvbNFaE +7ILKrkElcJxr6f6QD9eWH+XnlB+yKgyNS/8oKRB799d8pdF2uQXIee0PkJKcwv7f +b35sD3vUwUXdNFGWOQ/lXlbYGAWW9AemQrOgd/0IGfJxVsyfhiOkh8um/Vh+1Gln +FZF+gfJ/E+UNi4o8h4Tr4869Q+WtLYSTjmorWnxE+lKqgcgtHLvgUt8AEfiaPcFg +sOEztaOI0WUZChrnrHykwYKHTjixLw3FFIdv/Y0uvDm25+bD4OTNJ4TvlELvKYuQ +RkE7gRtn2PlDWWXLDbz9AJJP9HU7p6kk/FBBQHngLU8Kaid2blLtlml7rw/3hwXQ +RcKtUxSBH/swBKo3NmHaSmkbNNho7dYCz2yUDNPPbCJ5rbHwvAOiRmCpxAfCIYLx +/fLoeTJgv9ispSIUS8rB2EvrfT9XNbLmT3W0sGADIlOukXkd1ptBHxWGVHCy3g01 +D3ywNHK6l2A78HnrorIcXaIWuIfF6Rv2tZclbzif45H6inmYw2kOt6McIAWX+MoU +rgDXxPPAFBB1azSgG7WZYPNcsMVXTjbSMoS/ng== +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/MicCorUEFCA2011_2011-06-27.pem b/raveos-app-installer/secureboot/ms/MicCorUEFCA2011_2011-06-27.pem new file mode 100644 index 0000000..d7c29ef --- /dev/null +++ b/raveos-app-installer/secureboot/ms/MicCorUEFCA2011_2011-06-27.pem @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGEDCCA/igAwIBAgIKYQjTxAAAAAAABDANBgkqhkiG9w0BAQsFADCBkTELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE7MDkGA1UEAxMyTWljcm9z +b2Z0IENvcnBvcmF0aW9uIFRoaXJkIFBhcnR5IE1hcmtldHBsYWNlIFJvb3QwHhcN +MTEwNjI3MjEyMjQ1WhcNMjYwNjI3MjEzMjQ1WjCBgTELMAkGA1UEBhMCVVMxEzAR +BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p +Y3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IENvcnBvcmF0 +aW9uIFVFRkkgQ0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKUIbEzHRQlqSwykwId/BnUMQwFUZOAWfwftkn0LsnO/DArGSkVhoMUWLZbT9Sug ++01Jm0GAkDy5VP3mvNGdxKQYin9BilxZg2gyu4xHye5xvCFPmop8/0Q/jY8ysiZI +rnW17slMHkoZfuSCmh14d00MsL32D9MW07z6K6VROF31+7rbeALb/+wKG5bVg7gZ +E+m2wHtAe+EfKCfJ+u9WXhzmfpR+wPBEsnk55dqyYotNvzhw4mgkFMkzpAg31Vhp +XtN87cEEUwjnTrAqh2MIYW9jFVnqsit51wxhZ4pb/V6th3+6hmdPcVgSIgQiIs6L +71RxAM5QNVh2lQjuarGiAdUCAwEAAaOCAXYwggFyMBIGCSsGAQQBgjcVAQQFAgMB +AAEwIwYJKwYBBAGCNxUCBBYEFPjBa7d/d1NK8yU3HU6hJnsPIHCAMB0GA1UdDgQW +BBQTrb9DCb2CcJyM1U8xbtUimIob1DAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMA +QTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRFZlJD +4X5YEb/WTp4jVQg7OiJqqDBcBgNVHR8EVTBTMFGgT6BNhktodHRwOi8vY3JsLm1p +Y3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb3JUaGlQYXJNYXJSb29f +MjAxMC0xMC0wNS5jcmwwYAYIKwYBBQUHAQEEVDBSMFAGCCsGAQUFBzAChkRodHRw +Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvclRoaVBhck1hclJv +b18yMDEwLTEwLTA1LmNydDANBgkqhkiG9w0BAQsFAAOCAgEANQhC/zDMzvd2DK0Q +aFg1KUYydid87xJBJ0IbSqptgThIWRNV8+lYNKYWC4KqXa2C2oCDQQaPtB3yA7nz +Gl0b8VCQ+bNVhEIoHCC9sq5RFMXArJeVIRyQ2w/8d56Vc5GIyr29UrkFUA3fV56g +Ye0N5W0l2UAPF0DIzqNKwk2vmhIdCFSPvce8uSs9SSsfMvxqIWlPm8h+QjT8NgYX +i48gQMCzmiV1J83JA6P2XdHnNlR6uVC10xLRB7+7dN/cHo+A1e0Y9C8UFmsv3maM +sCPlx4TY7erBM4KtVksYLfFolQfNz/By8K673YaFmCwhTDMr8A9K8GiHtZJVMnWh +aoJqPKMlEaTtrdcErsvYQFmghNGVTGKRIhp0HYw9Rw5EpuSwmzQ1sfq2U6gsgeyk +BXHInbi66BtEZuRHVA6OVn+znxaYsobQaD6QI7UvXo9QhY3GjYJfQaH0Lg3gmdJs +deS2abUhhvoH0fbiTdHarSx3Ux4lMjfHbFJylYaw8TVhahn1sjuBUFamMi3+oon5 +QoYnGFWhgspam/gwmFQUpkeWJS/IJuRBlBpcAj/lluOFWzw+P7tHFnJV4iUisdl7 +5wMGKqP3HpBGwwAN1hmJ4w41J2IDcRWm79AnoKBZN2D4OJS44Hhw+LpMhoeU9uCu +AkXuZcK2o35pFnUHkpv1prxZg1g= +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/MicWinProPCA2011_2011-10-19.pem b/raveos-app-installer/secureboot/ms/MicWinProPCA2011_2011-10-19.pem new file mode 100644 index 0000000..0390d2a --- /dev/null +++ b/raveos-app-installer/secureboot/ms/MicWinProPCA2011_2011-10-19.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF1zCCA7+gAwIBAgIKYQd2VgAAAAAACDANBgkqhkiG9w0BAQsFADCBiDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9z +b2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTExMDE5MTg0 +MTQyWhcNMjYxMDE5MTg1MTQyWjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +b3Jwb3JhdGlvbjEuMCwGA1UEAxMlTWljcm9zb2Z0IFdpbmRvd3MgUHJvZHVjdGlv +biBQQ0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN0Mu6Lk +Lgnj58X3lmm8ACG9aTMz760Ey1SA7gaDu8UghNn30ovzOLCrpK0tfGJ5Bf/jSj8E +NSBw48Tna+CcwDZ16Yox3Y1w5dw3tXRGlihbh2AjLL/cR6Vn91EnnnLrB6bJuR47 +UzV85dPsJ7mHHP65ySMJb6hGkcFuljxB08ujP10Cak3saR8lKFw2//1DFQqU4Bm0 +z9/CEuLCWyfuJ3gwi1sqCWsiiVNgFizAaB1TuuxJ851hjIVoCXNEXX2iVCvdefcV +zzVdbBwrXM68nCOLb261Jtk2E8NP1ieuuTI7QZIs4cfNd+iqVE73XAsEh2W0Qxio +suBtGXfsWiT6SAMCAwEAAaOCAUMwggE/MBAGCSsGAQQBgjcVAQQDAgEAMB0GA1Ud +DgQWBBSpKQI5jhbEl3jNkPmeT5rhfFWvUzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi +AEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV +9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js +Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAx +MC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v +d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2 +LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAFPx8cVGlecJusu85Prw8Ug9uKz8Q +E3P+qGjQSKY0TYqWBSbuMUaQYXnW/zguRWv0wOUouNodj4rbCdcax0wKNmZqjOwb +1wSQqBgXpJu54kAyNnbEwVrGv+QEwOoW06zDaO9irN1UbFAwWKbrfP6Up06O9Ox8 +hnNXwlIhczRa86OKVsgE2gcJ7fiL4870fo6u8PYLigj7P8kdcn9TuOu+Y+DjPTFl +sIHl8qzNFqSfPaixm8JC0JCEX1Qd/4nquh1HkG+wc05Bn0CfX+WhKrIRkXOKISjw +zt5zOV8+q1xg7N8DEKjTCen09paFtn9RiGZHGY2isBI9gSpoBXe7kUxie7bBB8e6 +eoc0Aw5LYnqZ6cr8zko3yS2kV3wc/j3cuA9a+tbEswKFAjrqs9lu5GkhN96B0fZ1 +GQVn05NXXikbOcjuLeHN5EVzW9DSznqrFhmCRljQXp2Bs2evbDXyvOU/JOI1ogp1 +BvYYVpnUeCzRBRvr0IgBnaoQ8QXfun4sY7cGmyMhxPl4bOJYFwY2K5ESA8yk2fIt +uvmUnUDtGEXxzopcaz6rA9NwGCoKauBfR9HVYwoy8q/XNh8qcFrlQlkIcUtXun6D +gfAhPPQcwcW5kJMOiEWThumxIJm+mMvFlaRdYtagYwggvXUQd30980W5n5efy1eA +bzOpBM93pGIcWX4= +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/microsoft corporation kek 2k ca 2023.pem b/raveos-app-installer/secureboot/ms/microsoft corporation kek 2k ca 2023.pem new file mode 100644 index 0000000..771d8ad --- /dev/null +++ b/raveos-app-installer/secureboot/ms/microsoft corporation kek 2k ca 2023.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFsjCCA5qgAwIBAgITMwAAABMUFrhhbYKCSwAAAAAAEzANBgkqhkiG9w0BAQsF +ADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MSswKQYDVQQDEyJNaWNyb3NvZnQgUlNBIERldmljZXMgUm9vdCBDQSAyMDIxMB4X +DTIzMDMwMjIwMjEzNVoXDTM4MDMwMjIwMzEzNVowXDELMAkGA1UEBhMCVVMxHjAc +BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UEAxMkTWljcm9zb2Z0 +IENvcnBvcmF0aW9uIEtFSyAySyBDQSAyMDIzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA416Ii3MswwrE6fXOgS3xD/EmNTfRSVNxsVuTUq/hFd/eizm9 +r0xldVPl2goymC8zJrYrvpSZn+zawo4FNJITD2O/dKJyqCl+nzIhKQhZxHfEKpJM +h7YDN+ua4sPJtEghw2GU6hdRsecU4iRjLtXyxqXyol4facZRDacp+1IKm+OI6Gj/ +u/qSaa/EFv9d5V/g3+xmVQthwqw7IG7ftA3rK8jQwjROgpY57vExhQQ979Z2+8PK +wdWMLwsQKJtImrAQFKTZlOVoW81u53rsvKBJuKlT2E0vsnvI2ryy5/yrcBB3lUVJ +/a3SPxfLZpryfTbdCiziwIchLZPbCJbS6FxU4QIDAQABo4IBbTCCAWkwDgYDVR0P +AQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTgq3K8lj7/uGab +fRBaQz5cQlSHXzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8E +BTADAQH/MB8GA1UdIwQYMBaAFIREhgYAmD8sqrPFifOsLsnmnQkDMGUGA1UdHwRe +MFwwWqBYoFaGVGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01p +Y3Jvc29mdCUyMFJTQSUyMERldmljZXMlMjBSb290JTIwQ0ElMjAyMDIxLmNybDBy +BggrBgEFBQcBAQRmMGQwYgYIKwYBBQUHMAKGVmh0dHA6Ly93d3cubWljcm9zb2Z0 +LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwUlNBJTIwRGV2aWNlcyUyMFJv +b3QlMjBDQSUyMDIwMjEuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCFAgYS+meuTzmp +uDTcXSp4GXs47pyCjxviPD0yCl6/WAbnb/iNGKgbhPWbyq2LCEQOJo0s2F9uIyUH ++ltMJi52MUMubujIMcFK0vICt6bxdeSW7QbiypV4RKgzdtQrTde83Ic7q00prZaJ +t9XCj6tGw12z/e2lnvV2tyuF/5ihn2scmz737g4Xo/02L+HNKJgcQJkmygONpjXq +0gqnixauIQEAHicPtw6yQjFWLub4juoMNPBO33AwaQTRz9OcZEZvzCHNy+8FMrsI +ptifRThdTtKckonpc+R6CDUeT6bCums+tx9UNEn6tHrL2qAfWYErKvaIJrD6bPLr +wdiuQeFv/L8T6G4U5+fHA4tAmRA4Bm1wvQHI3o1WHTgPTyOoJUDeuygtQ6+kvCCD +tQb5BSGfO7l5DXBrU8B1whsQE7Pkbwmoz9G3DnFct8mP5RzwE1XZk7muXT/KC7BZ +akVKw+HjJ3gNFoH8WC2xQboYDc/w76sIHk/4/Mb9S90d7zAlUDmj3/4/ufrrlpfQ +zfkEJvsNSBkI2OGTwVDHbm3Y0GuOlXJkUMntVYluwUuiBtQytaltZQF68VJXGAUw +XLgoZhG3evBxToZhYHptVsdbCT6i79QOnpLTH5n2nbEdeHhr/+gqBK94Zz7wKgun +4F0B6YeZNTCQ7ddFa5zM5qLk5hen3Q== +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/microsoft option rom uefi ca 2023.pem b/raveos-app-installer/secureboot/ms/microsoft option rom uefi ca 2023.pem new file mode 100644 index 0000000..139ca44 --- /dev/null +++ b/raveos-app-installer/secureboot/ms/microsoft option rom uefi ca 2023.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFrzCCA5egAwIBAgITMwAAABez7E2PAeJwBQAAAAAAFzANBgkqhkiG9w0BAQsF +ADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MSswKQYDVQQDEyJNaWNyb3NvZnQgUlNBIERldmljZXMgUm9vdCBDQSAyMDIxMB4X +DTIzMTAyNjE5MDIyMFoXDTM4MTAyNjE5MTIyMFowWTELMAkGA1UEBhMCVVMxHjAc +BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEqMCgGA1UEAxMhTWljcm9zb2Z0 +IE9wdGlvbiBST00gVUVGSSBDQSAyMDIzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA0wv+ic3Ntu7c5RqN3MohGg8iLwu1MoQ1wL5vcJNVtEfMSQPC/s+6 +MmVktzW9BDtEZC+g8t3hXbrnvTmavctL4YOqG+hvTkyRUkOlxFBVaPXarEiinOw1 +pwRWaBnisWLUkvSFPzShFWeHIW4fydg1Mrg9y1jKKUNUSn6LVXsjejq2nUMHBGua +a/TwIP/6pt+inknoVcV1iESspEE6A3y76ZPkbPHteSbHizL3WUklMQBnGAxn+0DF +XXY9CYfCLYxfK1oeAQ8zr2UIkE/8ZFuco1zWUxtRAZ+Yz8RTxbHfs2hvRUvIRYXI +Hbie0XdxoNWid4fsZy65hwZG3UFDQGpfLwIDAQABo4IBbTCCAWkwDgYDVR0PAQH/ +BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRRT7+Tf6RvtXvwevi+ +2Es7hksXETAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFIREhgYAmD8sqrPFifOsLsnmnQkDMGUGA1UdHwReMFww +WqBYoFaGVGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jv +c29mdCUyMFJTQSUyMERldmljZXMlMjBSb290JTIwQ0ElMjAyMDIxLmNybDByBggr +BgEFBQcBAQRmMGQwYgYIKwYBBQUHMAKGVmh0dHA6Ly93d3cubWljcm9zb2Z0LmNv +bS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwUlNBJTIwRGV2aWNlcyUyMFJvb3Ql +MjBDQSUyMDIwMjEuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBKS4D8cbGH3QaLJBDR +dvgQ5GU0obuBCH1w1BUk+ZA7SG9uTiP+hVPsopkfieQ0vtCYr/H4LfNH0bUyZJ7e +csAXfoEgesFfkfVOOqZ7adnQ1vD6gGPFwERn04snYcHl3FGZbiPJKRj+Nb1FIawP ++WDiD9FfcA+SK1hOz6xkLwlz7VAIyOGFc0AsMam0tiNLwBk7/RX408t0VM3au30E +hZ9wFXX5t/RhS/7kn0UO9YLpxfN4u6pq4fe7hZIrr0u1J06aySlvDsjSZGObXRQG +zHh/5BLdluOcBELsF/qSIafe9WmPILJk8z8Vo1GvJ2+3YlevdBfsq7HuqFDvr4OC +q2EEeT9JjEBWwDyv+ypaGR6q5i5nJCGsM/DXSosKJDAQplI+Hcj8kZyHG/qG4Z5r +5QlhdaijOV/in2wOhSHmvXal6kWDaB4vNr/gaIpCzh+4jeFg5pOK7rpKrbNJTO6j +A8mnooZxnIEBZ2kP3oBV1sDecoXARmDwzmAqiAiNnDDrqYtA82ElCeHhgjIEpSn4 +WewmtsjXI/AL02xjatov0tOlJZqaXqX9AqXsopCBaD49RY58BbIu6pkBRf0JMJQm +10os/n2CRDNDVctaQ9KSkv5OR8ZJPzUbIZxq2oL8ZDf7J+r0MN9l7ND8UAE4auzc +Ufb17psmzO5t/i9WDjroOCKOqg== +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/microsoft uefi ca 2023.pem b/raveos-app-installer/secureboot/ms/microsoft uefi ca 2023.pem new file mode 100644 index 0000000..5c7ad84 --- /dev/null +++ b/raveos-app-installer/secureboot/ms/microsoft uefi ca 2023.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgITMwAAABY2vzaJnxV1zAAAAAAAFjANBgkqhkiG9w0BAQsF +ADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MSswKQYDVQQDEyJNaWNyb3NvZnQgUlNBIERldmljZXMgUm9vdCBDQSAyMDIxMB4X +DTIzMDYxMzE5MjE0N1oXDTM4MDYxMzE5MzE0N1owTjELMAkGA1UEBhMCVVMxHjAc +BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEfMB0GA1UEAxMWTWljcm9zb2Z0 +IFVFRkkgQ0EgMjAyMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL0i +Kq7vGjGFE3hRp5v9/HjRY7gam2P1EgbbS0E1am+r9WoEzJfPu9QICRphOg3ms6BG +/wmt3oAk3BKA8l/ZFu3iQp3NL01hAmGKHEsdGGI5hpdxrT5/XXETS+kqAMG+1bcA +n15lsiwa/3Tt6oPSOYkzNXN9oKL6QORmUFiq/IfoXCCDNOyr4gvFXz7/SCsRkSbv +GG5XxZ8Yc5nv4Wp0K7svf1COHdo9drYE5cwuEMeDG4Oj5KUTE3FuM3ijqDzsSCZe +x8ZeDYeaqsxVNIGtnZD15pZjpugHIBfIkx7SrqTcrn1Zv4heYgyuW/IpQFYdJkDe +haatVtHPVUd2X5w52wMCAwEAAaOCAW0wggFpMA4GA1UdDwEB/wQEAwIBhjAQBgkr +BgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUgaprMkTJNbzg1mKK85gnQh4ySX0wGQYJ +KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSERIYGAJg/LKqzxYnzrC7J5p0JAzBlBgNVHR8EXjBcMFqgWKBWhlRodHRw +Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBSU0El +MjBEZXZpY2VzJTIwUm9vdCUyMENBJTIwMjAyMS5jcmwwcgYIKwYBBQUHAQEEZjBk +MGIGCCsGAQUFBzAChlZodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Nl +cnRzL01pY3Jvc29mdCUyMFJTQSUyMERldmljZXMlMjBSb290JTIwQ0ElMjAyMDIx +LmNydDANBgkqhkiG9w0BAQsFAAOCAgEAB2ATKlOHEg8a81oUlRfl2NeVVJuLDt2R +pe3HXUdQk0W3lYhfFxlBY3a1grCoxZ2ZFTaJSb4Swmb7gwywgc7lpKvCoJrr9Qc8 +/iH4mtwZIQyeJCzRXKIWCkvr7EicsVt02wFkwuOAaqsazXcbajmat7pwRP9nlMWB +BvDLgQSTJyGZvYeIFJwicQ4LL1y+uJBUfMAevCubo1YXS5fn438TNPqwNGub9rIt +99h72CDTXKeVTE8q+eceaK/8bI/Ihj2fyNHvTRrI0fb9LXzj6EHB6ifB+44lhlqJ +phC+zuOPpXvEGqDodZD9IbDBo8UWI148zi/+jJi/CFz2ucWyPLbMyOx/0nd0y+3z +lsmLjRwqiQ+jj73OKoVGmiOij0LAmdbqhR9hGb4WNbd1oJWAZQaH1As1yMSqDs6i +CmNgyksrXCcEgq8+WIN6WthnPxBT9QwW9yZLioC5xR+g3tjTYUQURaf1q5qIF/23 +lFQCi+S3U6E+jZ5QgqgA4HiUG76zxDAfsg7b8EaQweZX/nzBcLIcS2TZEAMbNPtm +z4JunkCoETfyZYshCa88k2I987yD3T9VkBXSMa8R5/jKoILhuc+zV5PHVTesf0G/ +H5Y88yaU+djSVSSKirZB8OAWwCOSjHEKTGoNGVX3OpySIZah1fgKjJ2/yevKiEL8 +S7Tv/ycwIWE= +-----END CERTIFICATE----- diff --git a/raveos-app-installer/secureboot/ms/windows uefi ca 2023.pem b/raveos-app-installer/secureboot/ms/windows uefi ca 2023.pem new file mode 100644 index 0000000..9ba1c75 --- /dev/null +++ b/raveos-app-installer/secureboot/ms/windows uefi ca 2023.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFqjCCA5KgAwIBAgITMwAAABqIi5gAViKEwQAAAAAAGjANBgkqhkiG9w0BAQsF +ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT +B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE +AxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcN +MjMwNjEzMTg1ODI5WhcNMzUwNjEzMTkwODI5WjBMMQswCQYDVQQGEwJVUzEeMBwG +A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR0wGwYDVQQDExRXaW5kb3dzIFVF +RkkgQ0EgMjAyMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALyyNdFU +ebSPzIEqbrMS1pOXMHw4XL95khkKDy0K/r/gqNgyP9Krb2+BwU0XaUXPhYAno3yz +Mcylp035Q9BaL9cYG9JYlgU5o5W3vN15waDPj+JTHismYqgcrjYeT6HfuRO6DCW7 +JGVnAaodQRC3NsFrLrVsENNOltCfKqHx7aEVC4KVxf9jihO1kjQeMV5hEa5dzPEQ +5kx5yXKyNIqCVi2rD3zAT5OOWXVBhqwJEAnyUWVQtfUhsyY5jarEkbPcrGQjBs01 +Xw1CSZxPDc6Ag4JZ/t9LROFAyD1jts+0Qg05XNJCEAwIwnTrHNxuvAqsmLvM+h48 +p4MWxdsC2tmW32sCAwEAAaOCAUYwggFCMA4GA1UdDwEB/wQEAwIBhjAQBgkrBgEE +AYI3FQEEAwIBADAdBgNVHQ4EFgQUrvxfu74FXY+NqlhUc0mUF6taUnIwGQYJKwYB +BAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAW +gBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v +Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRf +MjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw +Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEw +LTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAn8m2/27hnDtV9v6LOd1hBG/Q +rWPNF3ZKqEOJjfjG8oxekOHkaKUV7LjTYAxAVx/7XjVyYd6XMWx5oPUWrksc7QEM +7/dXD0IwGGn4oaMul5K4vhv+K4ZeQkIRj45wTZCn/QFj8mS/m+J7CIHPSfI3F9/x ++XLTwx3DkEVN5oAGvf3lamnOs35OMVuEc6jocj8nNcl8IM4Am0/gTLQ2acv3NBER +dBJ6qIwugWymUK0Z+qhGRW+xZ3PDa+NA6CppjyQQ4SlujRaI7o5/ZpMCb1ueBIzM +gRytl1TxGC5+UpC8Ud4qDq5m6rxkbqCRZOQvEqi852u6xxubeRpkZvFDtNHDRiE4 +gXlM+vAxDdN5/3oSpR3Z3ayiD3GC95P/XKFhrmXyFIHteVqah+pge8uzT3U0yrqh +76L2ooBFoYsngc3Vdzg+yk7dKOpYusWgKd6GjIj8lSdR3avT0FsNd8dsj1XX1KIO +W+Q0RhQWHeMc1m2ZrUzscXMvq86ytCneVTBTOToyi/DqnIgSOwVoGb/Ph1IQ+9YT +YPNBZPQIV4HLnRGljvTlJ/WjOuzkPUq3zvmIDZ+9ym3SSrxYdo4yBJRu3fTPbUdt +wtdq3Idx6qS/72eXnLjHgDYqKlnJwAynRKBztYzPOFqu+LuGlfBErWZ6M+1x5EWH +g+WnzqJA0HLSSAD6+Ro= +-----END CERTIFICATE----- diff --git a/raveos-calamares-module/PKGBUILD b/raveos-calamares-module/PKGBUILD index 6a128e9..2b0aedd 100644 --- a/raveos-calamares-module/PKGBUILD +++ b/raveos-calamares-module/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveos-calamares-module pkgver=2.0.0 -pkgrel=34 +pkgrel=35 pkgdesc="RaveOS Calamares modules: Wi-Fi, Welcome, Desktop Selector, Users" arch=('x86_64') options=('!debug') @@ -9,7 +9,7 @@ url="https://git.rp1.hu/RaveOS" license=('GPL') makedepends=('cmake' 'qt6-tools' 'kcoreaddons' 'calamares' 'libxcrypt') -depends=('qt6-base' 'qt6-declarative' 'networkmanager' 'xorg-setxkbmap') +depends=('qt6-base' 'qt6-declarative' 'networkmanager' 'xorg-setxkbmap' 'calamares') source=() sha256sums=() diff --git a/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp index 2c2691f..b856a90 100644 --- a/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp +++ b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp @@ -114,7 +114,6 @@ void DesktopSelectViewStep::onLeave() if (!m_backend || m_backend->selectedIndex() < 0) return; - // Merge mandatory + selected desktop packages, deduplicated QStringList combined = m_mandatoryPackages + m_backend->selectedPackages(); QStringList unique; QSet<QString> seen; diff --git a/raveos-calamares-module/welcome/RaveWelcomeViewStep.cpp b/raveos-calamares-module/welcome/RaveWelcomeViewStep.cpp index 86ab549..c2d58c7 100644 --- a/raveos-calamares-module/welcome/RaveWelcomeViewStep.cpp +++ b/raveos-calamares-module/welcome/RaveWelcomeViewStep.cpp @@ -20,7 +20,6 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION(RaveWelcomeViewStepFactory, registerPlugin<RaveWelcomeViewStep>();) -// Widget that paints the background image scaled to fill (like Image.Stretch) class BgWidget : public QWidget { public: @@ -43,7 +42,6 @@ private: RaveWelcomeViewStep::RaveWelcomeViewStep(QObject* parent) : Calamares::ViewStep(parent) { - // Default languages if not set via config m_localeIds = { "de", "en", "en_GB", "hu" }; } @@ -98,7 +96,6 @@ void RaveWelcomeViewStep::buildWidget() auto* bg = new BgWidget(); bg->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - // Load welcome image from branding QString imgPath; if (Calamares::Branding::instance()) imgPath = Calamares::Branding::instance()->imagePath(Calamares::Branding::ProductWelcome); @@ -106,7 +103,6 @@ void RaveWelcomeViewStep::buildWidget() if (!imgPath.isEmpty()) bg->setPixmap(QPixmap(imgPath)); - // Bottom language bar auto* bar = new QFrame(); bar->setObjectName("ravewelcomeBar"); bar->setFixedHeight(58); @@ -116,11 +112,9 @@ void RaveWelcomeViewStep::buildWidget() m_langCombo->setFixedHeight(40); m_langCombo->setMinimumWidth(300); - // Populate language model auto* model = new Calamares::Locale::TranslationsModel(m_localeIds, m_langCombo); m_langCombo->setModel(model); - // Select current locale QLocale sys = QLocale::system(); QString sysName = sys.name(); m_currentLocaleIndex = 0; @@ -132,15 +126,12 @@ void RaveWelcomeViewStep::buildWidget() break; } } - // Default to "en" int enIdx = m_localeIds.indexOf("en"); if (enIdx >= 0 && m_currentLocaleIndex == 0 && m_localeIds[0] != "en") m_currentLocaleIndex = enIdx; m_langCombo->setCurrentIndex(m_currentLocaleIndex); - // Make the live keyboard layout match the initial language right away, - // so the WiFi password input is not stuck on the boot default (US). applyLiveKeyboardLayout(m_localeIds.value(m_currentLocaleIndex)); connect(m_langCombo, QOverload<int>::of(&QComboBox::activated), @@ -176,9 +167,6 @@ void RaveWelcomeViewStep::onLanguageChanged(int index) m_currentLocaleIndex = index; QString localeId = m_localeIds[index]; - // Store locale in GlobalStorage for the installed system. - // A localecfg a teljes localeConf-ot olvassa, ezért minden LC_* kulcsot - // beírunk, ne csak a LANG-ot. if (Calamares::JobQueue::instance()) { Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); @@ -199,18 +187,13 @@ void RaveWelcomeViewStep::onLanguageChanged(int index) localeConf.insert(QLatin1String(k), fullLocale); gs->insert("localeConf", localeConf); - // A 'locale' kulcs is kell (nyelv, kódolás nélkül), ha a standard - // locale modul mégis olvasná. gs->insert("locale", lang); } } - // Install new translator - this changes the entire Calamares UI language Calamares::Locale::Translation::Id tid { localeId }; Calamares::installTranslator(tid, brandingTranslationsPrefix()); - // Apply the matching live keyboard layout immediately, so the WiFi - // password input follows the selected language (before the keyboard page). applyLiveKeyboardLayout(localeId); } @@ -237,9 +220,6 @@ void RaveWelcomeViewStep::applyLiveKeyboardLayout(const QString& localeId) layout = QStringLiteral("gb"); } - // Best effort: apply the layout to the running X11 session so the WiFi - // password input matches the selected language immediately. A missing - // setxkbmap or non-X11 session must not break the installer. const QStringList args { QStringLiteral("-layout"), layout }; QProcess::startDetached(QStringLiteral("setxkbmap"), args); } diff --git a/raveos-calamares-module/wifi/NetworkManager.cpp b/raveos-calamares-module/wifi/NetworkManager.cpp index 8274e1a..cb88698 100644 --- a/raveos-calamares-module/wifi/NetworkManager.cpp +++ b/raveos-calamares-module/wifi/NetworkManager.cpp @@ -13,10 +13,8 @@ #include <QTextStream> #include <QDateTime> -// NetworkManager expects a{sa{sv}} type for connection settings typedef QMap<QString, QVariantMap> NMConnectionSettings; -// Log file path static const QString LOG_FILE = "/tmp/calamares-wifi.log"; static void wifiLog(const QString& message) @@ -24,7 +22,6 @@ static void wifiLog(const QString& message) QString timestamp = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz"); QString logLine = QString("[%1] %2\n").arg(timestamp, message); - // Write to file QFile file(LOG_FILE); if (file.open(QIODevice::Append | QIODevice::Text)) { @@ -33,17 +30,14 @@ static void wifiLog(const QString& message) file.close(); } - // Also print to debug output qDebug().noquote() << "[WiFi Module]" << message; } NetworkManager::NetworkManager(QObject* parent) : QObject(parent) { - // Register the custom DBus type qDBusRegisterMetaType<NMConnectionSettings>(); - // Clear log file on start QFile file(LOG_FILE); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { @@ -56,7 +50,6 @@ NetworkManager::NetworkManager(QObject* parent) scan(); updateConnectionState(); - // Periodic connection state update QTimer* timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &NetworkManager::updateConnectionState); timer->start(3000); @@ -88,7 +81,6 @@ void NetworkManager::updateConnectionState() bool newState = false; - // Method 1: Check PrimaryConnection QDBusObjectPath primary = nm.property("PrimaryConnection").value<QDBusObjectPath>(); @@ -97,7 +89,6 @@ void NetworkManager::updateConnectionState() newState = true; } - // Method 2: Check if any WiFi device is in activated state (100) if (!newState) { QDBusReply<QList<QDBusObjectPath>> devices = nm.call("GetDevices"); @@ -118,7 +109,6 @@ void NetworkManager::updateConnectionState() "DeviceType" ); - // DeviceType 2 = WiFi if (typeReply.isValid() && typeReply.value().toUInt() == 2) { QDBusReply<QVariant> stateReply = devProps.call( @@ -127,7 +117,6 @@ void NetworkManager::updateConnectionState() "State" ); - // State 100 = NM_DEVICE_STATE_ACTIVATED if (stateReply.isValid()) { uint state = stateReply.value().toUInt(); @@ -184,7 +173,6 @@ void NetworkManager::scan() bool foundWireless = false; for (const auto& dev : devices.value()) { - // Check DeviceType first - type 2 = WiFi QDBusInterface devProps( "org.freedesktop.NetworkManager", dev.path(), @@ -207,7 +195,6 @@ void NetworkManager::scan() foundWireless = true; wifiLog(QString("Found wireless device: %1").arg(dev.path())); - // Now use the Wireless interface for scanning QDBusInterface wirelessIf( "org.freedesktop.NetworkManager", dev.path(), @@ -215,7 +202,6 @@ void NetworkManager::scan() QDBusConnection::systemBus() ); - // Request a new scan - this is async QDBusMessage reply = wirelessIf.call("RequestScan", QVariantMap()); if (reply.type() == QDBusMessage::ErrorMessage) { wifiLog(QString("Scan request failed: %1").arg(reply.errorMessage())); @@ -228,7 +214,6 @@ void NetworkManager::scan() wifiLog("No wireless devices found!"); } - // Wait for scan to complete, then fetch results QTimer::singleShot(2000, this, &NetworkManager::fetchAccessPoints); } @@ -262,7 +247,6 @@ void NetworkManager::fetchAccessPoints() for (const auto& dev : devices.value()) { - // Check DeviceType first - type 2 = WiFi QDBusInterface devProps( "org.freedesktop.NetworkManager", dev.path(), @@ -308,7 +292,6 @@ void NetworkManager::fetchAccessPoints() QByteArray ssidRaw = apIf.property("Ssid").toByteArray(); QString ssid = QString::fromUtf8(ssidRaw); - // Get frequency to show 2.4G vs 5G uint frequency = apIf.property("Frequency").toUInt(); QString band = (frequency > 4000) ? "5GHz" : "2.4GHz"; @@ -319,7 +302,6 @@ void NetworkManager::fetchAccessPoints() } } - // Sort networks alphabetically m_networks.sort(Qt::CaseInsensitive); wifiLog(QString("Total networks found: %1").arg(m_networks.size())); @@ -343,7 +325,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) return; } - // Find the wireless device QDBusReply<QList<QDBusObjectPath>> devices = nm.call("GetDevices"); if (!devices.isValid()) { @@ -372,13 +353,11 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) "DeviceType" ); - // DeviceType 2 = WiFi if (typeReply.isValid() && typeReply.value().toUInt() == 2) { wirelessDevice = dev; wifiLog(QString("Using wireless device: %1").arg(dev.path())); - // Find the access point for this SSID QDBusInterface wirelessIf( "org.freedesktop.NetworkManager", dev.path(), @@ -402,7 +381,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) if (QString::fromUtf8(apSsid) == ssid) { accessPoint = ap; - // Get security flags from AP apFlags = apIf.property("Flags").toUInt(); apWpaFlags = apIf.property("WpaFlags").toUInt(); apRsnFlags = apIf.property("RsnFlags").toUInt(); @@ -423,25 +401,17 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) return; } - // Determine security type from AP flags - // NM_802_11_AP_SEC flags: - // 0x100 = KEY_MGMT_PSK (WPA/WPA2 Personal) - // 0x200 = KEY_MGMT_802_1X (WPA/WPA2 Enterprise) - // 0x400 = KEY_MGMT_SAE (WPA3) - // 0x800 = KEY_MGMT_OWE (Enhanced Open) bool apSupportsPsk = ((apWpaFlags & 0x100) != 0) || ((apRsnFlags & 0x100) != 0); bool apSupportsSae = (apRsnFlags & 0x400) != 0; // WPA3 bool apSupportsEnterprise = ((apWpaFlags & 0x200) != 0) || ((apRsnFlags & 0x200) != 0); bool apIsOpen = (apFlags == 0) && (apWpaFlags == 0) && (apRsnFlags == 0); - // Privacy flag (0x1) means network is secured (WEP or better) bool apHasPrivacy = (apFlags & 0x1) != 0; wifiLog(QString("Security detection: PSK=%1, SAE=%2, Enterprise=%3, Open=%4, Privacy=%5") .arg(apSupportsPsk).arg(apSupportsSae).arg(apSupportsEnterprise).arg(apIsOpen).arg(apHasPrivacy)); - // Build connection settings using proper NM types QVariantMap connection; connection["type"] = QString("802-11-wireless"); connection["id"] = ssid; @@ -451,7 +421,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) wifi["ssid"] = ssid.toUtf8(); wifi["mode"] = QString("infrastructure"); - // For hidden networks, we need to set hidden flag bool isHiddenNetwork = (accessPoint.path() == "/" || accessPoint.path().isEmpty()); if (isHiddenNetwork) { @@ -459,7 +428,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) wifiLog("Treating as hidden network"); } - // Build settings map NMConnectionSettings settings; settings["connection"] = connection; @@ -471,28 +439,21 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) ipv6["method"] = QString("auto"); settings["ipv6"] = ipv6; - // Determine and apply security settings based on AP capabilities if (!password.isEmpty() && (apSupportsPsk || apSupportsSae || isHiddenNetwork)) { - // Password provided and AP supports PSK or SAE (or it's hidden, assume PSK) QVariantMap wifiSecurity; if (apSupportsSae && !apSupportsPsk) { - // WPA3-only network wifiLog("Using WPA3-SAE security"); wifiSecurity["key-mgmt"] = QString("sae"); wifiSecurity["psk"] = password; - // PMF (Protected Management Frames) is MANDATORY for WPA3-SAE - // 0 = default, 1 = disable, 2 = optional, 3 = required wifiSecurity["pmf"] = 3; } else if (apSupportsPsk) { - // Check if this is WPA2/WPA3 transition mode (supports both PSK and SAE) if (apSupportsSae) { - // Transition mode: prefer WPA3-SAE if available wifiLog("Using WPA3-SAE (transition mode - both PSK and SAE available)"); wifiSecurity["key-mgmt"] = QString("sae"); wifiSecurity["psk"] = password; @@ -500,7 +461,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) } else { - // Pure WPA/WPA2-PSK network (most common) wifiLog("Using WPA-PSK security"); wifiSecurity["key-mgmt"] = QString("wpa-psk"); wifiSecurity["psk"] = password; @@ -508,7 +468,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) } else if (isHiddenNetwork) { - // Hidden network with password - assume WPA-PSK wifiLog("Hidden network with password, assuming WPA-PSK"); wifiSecurity["key-mgmt"] = QString("wpa-psk"); wifiSecurity["psk"] = password; @@ -520,34 +479,28 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) } else if (apSupportsEnterprise) { - // Enterprise networks require more complex configuration wifiLog("WARNING: Enterprise (802.1X) networks are not supported by this simple connector"); return; } else if (apIsOpen || (!apHasPrivacy && !apSupportsPsk && !apSupportsSae)) { - // Open network - no security settings needed wifiLog("Connecting to open network (no security)"); settings["802-11-wireless"] = wifi; } else if (!password.isEmpty() && !apSupportsPsk && !apSupportsSae) { - // Password provided but AP doesn't support PSK/SAE - // This is the error case from the log! wifiLog("WARNING: Password provided but AP does not support PSK/SAE authentication!"); wifiLog("Attempting to connect as open network..."); settings["802-11-wireless"] = wifi; } else { - // Fallback - no password, assume open wifiLog("No password provided, treating as open network"); settings["802-11-wireless"] = wifi; } wifiLog("Calling AddAndActivateConnection..."); - // Use AddAndActivateConnection with proper DBus argument QDBusMessage msg = QDBusMessage::createMethodCall( "org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager", @@ -555,7 +508,6 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) "AddAndActivateConnection" ); - // Serialize settings properly for DBus QDBusArgument settingsArg; settingsArg.beginMap(QMetaType::fromType<QString>(), QMetaType::fromType<QVariantMap>()); for (auto it = settings.constBegin(); it != settings.constEnd(); ++it) @@ -580,12 +532,10 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) else { wifiLog("Connection initiated successfully"); - // Save credentials for later use (to be saved to installed system) m_lastConnectedSsid = ssid; m_lastConnectedPassword = password; wifiLog(QString("Stored credentials - SSID: '%1', Password length: %2").arg(m_lastConnectedSsid).arg(m_lastConnectedPassword.length())); - // Determine and save security type if (apSupportsSae && !apSupportsPsk) { m_lastSecurityType = "sae"; @@ -604,10 +554,7 @@ void NetworkManager::connectTo(const QString& ssid, const QString& password) } wifiLog(QString("Stored security type: '%1'").arg(m_lastSecurityType)); - // Note: WiFi persistence to installed system is disabled - // Connection only works during installation - // Check connection state multiple times (WPA3-SAE can be slow) m_connectionCheckCount = 0; startConnectionCheck(); } @@ -626,7 +573,6 @@ void NetworkManager::startConnectionCheck() return; } - // Retry up to 10 times (every 1 second = 10 seconds total) if (m_connectionCheckCount < 10) { QTimer::singleShot(1000, this, &NetworkManager::startConnectionCheck); diff --git a/raveos-calamares-module/wifi/NetworkManager.h b/raveos-calamares-module/wifi/NetworkManager.h index ff9dbf2..dd58a9a 100644 --- a/raveos-calamares-module/wifi/NetworkManager.h +++ b/raveos-calamares-module/wifi/NetworkManager.h @@ -16,7 +16,6 @@ public: QStringList networks() const; bool isConnected() const; - // Get the last connected network credentials (for saving to installed system) QString lastConnectedSsid() const { return m_lastConnectedSsid; } QString lastConnectedPassword() const { return m_lastConnectedPassword; } QString lastSecurityType() const { return m_lastSecurityType; } // "wpa-psk" or "sae" @@ -40,7 +39,6 @@ private: QStringList m_networks; bool m_connected = false; - // Store credentials for saving to installed system QString m_lastConnectedSsid; QString m_lastConnectedPassword; QString m_lastSecurityType; // "wpa-psk", "sae", or "" (open) diff --git a/raveos-calamares-module/wifi/WifiViewStep.cpp b/raveos-calamares-module/wifi/WifiViewStep.cpp index 5b55078..350bd43 100644 --- a/raveos-calamares-module/wifi/WifiViewStep.cpp +++ b/raveos-calamares-module/wifi/WifiViewStep.cpp @@ -121,23 +121,18 @@ bool WifiViewStep::isAtEnd() const Calamares::JobList WifiViewStep::jobs() const { - // WiFi persistence disabled - connection only works during installation - // The WiFi module only provides network connectivity for the installer return Calamares::JobList(); } void WifiViewStep::onActivate() { - // Force update locale from GlobalStorage QString newLocale = getLocale(); m_locale = newLocale; - // Update QML context property if (m_quickWidget) { m_quickWidget->rootContext()->setContextProperty("systemLocale", m_locale); - // Force QML to re-read the locale by calling a method on root object QQuickItem* root = m_quickWidget->rootObject(); if (root) { @@ -145,13 +140,10 @@ void WifiViewStep::onActivate() } } - // Start network check timer m_networkCheckTimer->start(2000); - // Check initial network state m_lastNetworkState = hasActiveNetwork(); - // Auto-skip ONLY on first activation AND if there's network if (m_firstActivation && m_lastNetworkState) { m_firstActivation = false; @@ -159,13 +151,10 @@ void WifiViewStep::onActivate() return; } - // Mark as no longer first activation m_firstActivation = false; - // Normal activation - show WiFi setup m_networkManager->scan(); - // Emit initial state emit nextStatusChanged(m_lastNetworkState); } @@ -225,9 +214,7 @@ QString WifiViewStep::getLocale() const if (gs) { - // Check all possible locale keys that Calamares might use - // Key 1: "locale" (direct string) if (gs->contains("locale")) { QString loc = gs->value("locale").toString(); @@ -235,7 +222,6 @@ QString WifiViewStep::getLocale() const return loc; } - // Key 2: "lang" (some modules use this) if (gs->contains("lang")) { QString loc = gs->value("lang").toString(); @@ -243,7 +229,6 @@ QString WifiViewStep::getLocale() const return loc; } - // Key 3: "language" if (gs->contains("language")) { QString loc = gs->value("language").toString(); @@ -251,7 +236,6 @@ QString WifiViewStep::getLocale() const return loc; } - // Key 4: "localeConf" map with LANG key if (gs->contains("localeConf")) { QVariantMap localeConf = gs->value("localeConf").toMap(); @@ -263,7 +247,6 @@ QString WifiViewStep::getLocale() const } } - // Key 5: Check for region-based locale if (gs->contains("locationRegion")) { QString region = gs->value("locationRegion").toString(); @@ -273,12 +256,9 @@ QString WifiViewStep::getLocale() const } } - // Key 6: "localeIndex" - welcome module sometimes stores index - // We'd need to map this to actual locale } } - // Fallback to system locale return QLocale::system().name(); } diff --git a/raveos-calamares-theme/PKGBUILD b/raveos-calamares-theme/PKGBUILD index 3b6e7ab..86652d7 100644 --- a/raveos-calamares-theme/PKGBUILD +++ b/raveos-calamares-theme/PKGBUILD @@ -1,13 +1,13 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveos-calamares-theme pkgver=2.0.0 -pkgrel=68 +pkgrel=69 pkgdesc="RaveOS Calamares Theme" arch=('any') url="https://git.rp1.hu/RaveOS" license=('GPL') +makedepends=('qt6-tools') #depends=('calamares') -# No external sources; files are expected to be present alongside the PKGBUILD source=() sha256sums=() @@ -15,9 +15,8 @@ package() { # Create the destination directory inside the package environment install -d "${pkgdir}/etc" - # Copy the contents of the local 'etc' directory (next to PKGBUILD) to the package - # We use "${startdir}" to reference the directory containing the PKGBUILD cp -r "${startdir}/etc/." "${pkgdir}/etc/" + find "${pkgdir}" -name ".DS_Store" -delete install -Dm755 "${startdir}/etc/calamares/modules/calamares-microcode-fix.sh" \ "${pkgdir}/etc/calamares/modules/calamares-microcode-fix.sh" @@ -28,7 +27,6 @@ package() { install -Dm755 "${startdir}/etc/calamares/modules/raveos-chown-homes.sh" \ "${pkgdir}/etc/calamares/modules/raveos-chown-homes.sh" - # Branding fordítások: .ts -> .qm (lrelease) local lrelease_bin lrelease_bin="$(command -v lrelease6 || command -v lrelease || echo /usr/lib/qt6/bin/lrelease)" for ts in "${startdir}"/etc/calamares/branding/raveos/lang/calamares-raveos_*.ts; do diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/CURRENT b/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/LOCK b/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/LOCK deleted file mode 100644 index e69de29..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/LOCK +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/MANIFEST-000001 b/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/MANIFEST-000001 Binary files differdeleted file mode 100644 index 18e5cab..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/GCM Store/Encryption/MANIFEST-000001 +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/000005.ldb b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/000005.ldb Binary files differdeleted file mode 100644 index c0a88d6..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/000005.ldb +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/CURRENT b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/LOCK b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/LOCK deleted file mode 100644 index e69de29..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/LOCK +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/MANIFEST-000001 b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/MANIFEST-000001 Binary files differdeleted file mode 100644 index 3ee7649..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Local Storage/leveldb/MANIFEST-000001 +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/CURRENT b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/CURRENT deleted file mode 100755 index 7ed683d..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/LOCK b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/LOCK deleted file mode 100755 index e69de29..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/LOCK +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/MANIFEST-000001 b/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/MANIFEST-000001 Binary files differdeleted file mode 100755 index 18e5cab..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Default/Sync Data/LevelDB/MANIFEST-000001 +++ /dev/null diff --git a/raveos-calamares-theme/etc/calamares/brave-profile/Local State b/raveos-calamares-theme/etc/calamares/brave-profile/Local State deleted file mode 100644 index 6221116..0000000 --- a/raveos-calamares-theme/etc/calamares/brave-profile/Local State +++ /dev/null @@ -1 +0,0 @@ -{"autofill":{"ablation_seed":"AZXVsIGW7us="},"brave":{"ad_block":{"checked_all_default_regions":true},"brave_search_conversion":{"already_churned":true},"core_metrics":{"pages_loaded":[{"day":1786312800.0,"value":2.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"enable_search_suggestions_by_default":true,"migrated_adblock_social_media_blocking_settings":true,"misc_metrics":{"brave_search_query_counts":{"any_navigation":true},"brave_search_report_frame_start_time":"13430846057347621","combined_search_study_frame_start_time":"13430846057347632","combined_search_study_search_made":true,"failed_https_upgrade_metric_added_time":"13426552800000000","last_doh_fallback":0,"media_session_active_process_time":"450000000","media_session_frame_start_time":"13430846057232046","media_session_playing_time":"0","menu_dismiss_storage":[{"day":1786312800.0,"value":2.0}],"menu_group_actions":{"browser_views":4.0},"menu_shown_storage":[{"day":1786312800.0,"value":6.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}],"nav_source_counts":{"top_sites_favorites":1,"total":2},"nav_source_report_frame_start_time":"13430846057347627","total_dns_requests":[{"day":1786312800.0,"value":32.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}],"uptime_frame_start_time_v2":"13430846057427398","uptime_sum":"414342363","weekly_uptime_storage":[{"day":1786312800.0,"value":408.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"new_tab_page":{"customize_p3a_usage":0,"p3a_new_tabs_created":[{"day":1786312800.0,"value":9.0},{"day":1786226400.0,"value":0.0},{"day":1786140000.0,"value":0.0},{"day":1786053600.0,"value":0.0},{"day":1785967200.0,"value":0.0},{"day":1785880800.0,"value":0.0},{"day":1785794400.0,"value":0.0}]},"onboarding":{"last_shields_icon_highlighted_time":"13430846567528190"},"origin":{"free_tier_accepted":true,"policies_were_enforced":true,"purchase_validated":true},"p3a":{"notice_acknowledged":true},"referral":{"initialization":true,"promo_code":"BRV001"},"search":{"backup_results":{"last_view_height":921,"last_view_width":1608},"last_switch_report":"13430846922639013"},"sidebar":{"target_user_for_sidebar_enabled_test":false}},"brave_shields":{"p3a_usage":0},"breadcrumbs":{"enabled":false,"enabled_time":"13430846057297325"},"browser":{"first_run_finished":true,"whats_new":{"enabled_order":[]}},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"last_log_time":"13430846057341258"}},"network_time":{"network_time_mapping":{"local":1.786372749129309e+12,"network":1.78637275e+12,"ticks":1760881923.0,"uncertainty":1223261.0}},"optimization_guide":{"model_execution":{"last_usage_by_feature":{}},"model_store_metadata":{},"on_device":{"last_version":"151.1.93.135","model_crash_count":0}},"os_crypt":{"portal":{"prev_desktop":"GNOME","prev_init_success":true}},"p3a":{"activation_dates":{},"custom_attributes":{"media_session_usage":"0","search_default":"other"}},"performance_intervention":{"last_daily_sample":"13430846057426803"},"policy":{"last_statistics_update":"13430846057296519"},"profile":{"info_cache":{"Default":{"active_time":1786372457.423897,"ai_subscription_tier":0,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-14737629,"default_avatar_stroke_color":-526345,"enterprise_label":"","force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"Personal","profile_color_seed":-4078337,"profile_highlight_color":-14737629,"serp_metrics":{"brave_search_engine":[{"day":1782086400.0,"value":1.0}],"google_search_engine":[],"other_search_engine":[]},"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13430846057298079","profiles_order":["Default"]},"session_id_generator_last_value":"744144003","signin":{"active_accounts_last_emitted":"13430846057231733"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13430846057293858","max_tabs_per_window":2,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":2,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1782154367"},"updateclientdata":{"apps":{"adcocjohghhfpidemphmcmlmhnfgikei":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.469","pf":"53c03b89-69c8-4e01-a7c7-3e2d264931b6","pv":"1.0.475"},"afalakplffnnnlkncjhbmahjfjhmlkal":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.1468","pf":"0b6666c5-d270-441f-9da0-502be3538c5a","pv":"1.0.1503"},"aoojcmojmmcbpfgoecoadbdpnagfchel":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.23","pf":"26e5e602-358c-4152-8cc2-c19180622adb","pv":"1.0.24"},"bfpgedeaaibpoidldhjcknekahbikncb":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.16863","pf":"a55c4105-9171-4c4d-9ffb-dd77a5ecad08","pv":"1.0.16874"},"cdbbhgbmjhfnhnmgeddbliobbofkgdhe":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.19761","pf":"3b563fca-6ed0-4214-955e-2cde31e60990","pv":"1.0.19908"},"cemdlagocoimleflkfkjoihojfainiho":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"045b2476-4387-4d4a-a4a7-a927f432cdd7","pv":"1.0.119"},"dkpggglmbjhgjhachikgmohmecomjndo":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"11f5d842-511c-4b29-b3a7-c745e12eca8c","pv":"1.0.0"},"efniojlnjndmcbiieegkicadnoecjjef":{"cohort":"1:18ql:","cohortname":"Auto Stage3","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"529f8cdb-e88a-4c05-a107-7b32c7ede605","pv":"1738"},"ggkkehgbnfjpeggfpleeakpidbkibbmn":{"cohort":"1:ut9/1a0f:","cohortname":"M108 and Above","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"a966c7a8-01ad-4d44-b2bc-499dd8d0379e","pv":"2026.8.10.62"},"giekcmmlnklenlaomppkphknjmnnpneh":{"cohort":"1:j5l:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"68e29660-4e5c-476a-9df2-4ab5609a6837","pv":"7"},"gkboaolpopklhgplhaaiboijnklogmbc":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.92","pf":"637e0dec-18ab-4c68-8b8e-673923451f03","pv":"1.0.95"},"hfnkpimlhhgieaddgfemjhofmfblmnib":{"cohort":"1:287f:","cohortname":"Auto full","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"08755607-b47c-4507-b276-7e0d20b4c6d1","pv":"10706"},"iodkpdagapdfkphljnddpjlldadblomo":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.20458","pf":"4b5131c9-5159-4342-85b8-9cac7d2cb47b","pv":"1.0.21487"},"jamhcnnkihinmdlkakkaopbjbbcngflc":{"cohort":"1:wvr:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"83349149-1b15-47a7-98cc-423150c9f434","pv":"120.0.6050.0"},"jflookgnkcckhobaglndicnbbgbonegd":{"cohort":"1:s7x:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"7f7dbae9-cedd-47ef-8436-09b0b1043ab0","pv":"3091"},"jmfhneobcdckobmonkfjkbknnjjnegoh":{"dlrc":7161,"fp":"","installdate":7161,"max_pv":"0.0.0.0","pf":"96e0b450-03c8-4c9d-9794-8f30e89125ed","pv":"1.0.0"},"khaoiebndkojlmppeemjhbpbandiljpe":{"cohort":"1:cux:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"1f6c2599-ba72-4da7-ac54-c3d124fc5abd","pv":"145.0.7584.0"},"kihnoaefogbkmblfimmibknnmkllbhlf":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.6038","pf":"3a6c7af8-9f85-4261-9931-2a6017fc3677","pv":"1.0.7064"},"laoigpblnllgcgjnjnllmfolckpjlhki":{"cohort":"1:10zr:","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.7.1652906823","pf":"486a20ef-2770-47a7-8e84-d3885356fd6b","pv":"1.1.0.3"},"mfddibmblmbccpadfndgakiopmmhebop":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.146","pf":"ecb74f41-79cb-4d47-b13f-7266767415ff","pv":"1.0.151"},"nlpaeekllejnmhoonlpcefpfnpbajbpe":{"dlrc":7161,"fp":"","installdate":7112,"max_pv":"1.0.474","pf":"fdf405e3-c653-4583-8419-ddcebe0c86ef","pv":"1.0.523"},"obedbbhbpmojnkanicioggnmelmoomoc":{"cohort":"1:s6f:3cr3@0.025","cohortname":"Auto","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"ae14957e-6c26-4a07-979c-56bab97c3079","pv":"20251024.824731831.14"},"ojhpjlocmbogdgmfpkhlaaeamibhnphh":{"cohort":"1:w0x:","cohortname":"All users","dlrc":7161,"fp":"","installdate":7112,"max_pv":"0.0.0.0","pf":"04c2193a-f501-4e3a-8820-33ce4ce897bd","pv":"3"}}},"user_experience_metrics":{"consent_restructure_feature_state":false,"limited_entropy_randomization_source":"FE1EA34EA9F364323DD20A35BACD50D5","low_entropy_source3":7377,"pseudo_low_entropy_source":4436,"reporting_enabled":false,"session_id":2,"stability":{"browser_last_live_timestamp":"13430847055374029","exited_cleanly":true,"stats_buildtime":"1786293927","stats_version":"151.1.93.135-64-devel"}},"variations_compressed_seed":"safe_seed_content","variations_country":"hu","variations_crash_streak":0,"variations_failed_to_fetch_seed_streak":0,"variations_geo_level1":"","variations_last_fetch_time":"13430846349237474","variations_permanent_consistency_country":["151.1.93.135","hu"],"variations_safe_compressed_seed":"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","variations_safe_seed_date":"13430846058000000","variations_safe_seed_fetch_time":"13430846349237474","variations_safe_seed_locale":"hu","variations_safe_seed_milestone":151,"variations_safe_seed_permanent_consistency_country":"hu","variations_safe_seed_session_consistency_country":"hu","variations_safe_seed_signature":"MEQCH06dZwKnrjD5NL4zslyMi59lH20U7fqZSfZJH2VPfOwCIQCG/LHBShHWAfuJsuTlUbaiyJabmlDZE+AeUtyI3q/k3Q==","variations_seed_date":"13430846350000000","variations_seed_milestone":151,"variations_seed_serial_number":"23d76df102c70f19dab8794bc52a53af","variations_seed_signature":"MEQCH06dZwKnrjD5NL4zslyMi59lH20U7fqZSfZJH2VPfOwCIQCG/LHBShHWAfuJsuTlUbaiyJabmlDZE+AeUtyI3q/k3Q==","variations_sticky_studies":"","was":{"restarted":false}}
\ No newline at end of file diff --git a/raveos-calamares-theme/etc/calamares/modules/calamares-create-snapshots-subvol.sh b/raveos-calamares-theme/etc/calamares/modules/calamares-create-snapshots-subvol.sh index 092b7b9..73aa002 100644 --- a/raveos-calamares-theme/etc/calamares/modules/calamares-create-snapshots-subvol.sh +++ b/raveos-calamares-theme/etc/calamares/modules/calamares-create-snapshots-subvol.sh @@ -3,12 +3,6 @@ set -e echo ">>> [snapshots-subvol] Running INSIDE target system" -# Calamares' partition module ignores our btrfsSubvolumes config here and -# always creates its own hardcoded set (/home /root /srv /var/cache -# /var/log /var/tmp as separate subvolumes) -- there's no ".snapshots" -# subvolume among them, which grub-btrfs/Snapper need. Create it by hand -# as a proper top-level (subvolid=5) sibling of the other subvolumes, -# so snapshots of "/" don't recursively include the snapshot store itself. ROOT_DEV="$(findmnt -no SOURCE / | sed 's/\[.*\]//')" ROOT_FS="$(findmnt -no FSTYPE /)" diff --git a/raveos-calamares-theme/etc/calamares/modules/calamares-gpu-drivers.sh b/raveos-calamares-theme/etc/calamares/modules/calamares-gpu-drivers.sh index 22e59d7..462a289 100644 --- a/raveos-calamares-theme/etc/calamares/modules/calamares-gpu-drivers.sh +++ b/raveos-calamares-theme/etc/calamares/modules/calamares-gpu-drivers.sh @@ -19,7 +19,6 @@ if echo "$GPU_INFO" | grep -qi "Intel"; then install_pkgs mesa vulkan-intel intel-media-driver fi -# AMD if echo "$GPU_INFO" | grep -qi "AMD\|ATI"; then echo ">>> [gpu] Installing AMD stack..." install_pkgs mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader vulkan-tools mesa-utils diff --git a/raveos-calamares-theme/etc/calamares/modules/calamares-normalize-subvolumes.sh b/raveos-calamares-theme/etc/calamares/modules/calamares-normalize-subvolumes.sh index 83b42c4..8e68e50 100644 --- a/raveos-calamares-theme/etc/calamares/modules/calamares-normalize-subvolumes.sh +++ b/raveos-calamares-theme/etc/calamares/modules/calamares-normalize-subvolumes.sh @@ -11,12 +11,6 @@ if [ "$ROOT_FS" != "btrfs" ]; then exit 0 fi -# Calamares' partition module ignores our btrfsSubvolumes config entirely -# and always creates its own hardcoded set: @, @home, @root, @srv, @cache, -# @log, @tmp. We only want @, @home, @log, @pkg (just /var/cache/pacman/pkg, -# not all of /var/cache) and @snapshots (created separately). Drop the rest -# here, after everything else has already run, merging any content back -# into the parent (@) subvolume first. mkdir -p /mnt/topvol mount -o subvolid=5 "${ROOT_DEV}" /mnt/topvol @@ -40,8 +34,6 @@ for entry in "root:@root" "srv:@srv" "var/tmp:@tmp"; do if findmnt -no SOURCE "$path" >/dev/null 2>&1; then echo ">>> [subvol-normalize] Removing separate subvolume ${subvol} (${path})" unmount_retry "$path" - # $path is now a plain empty dir in @ again -- copy the old - # subvolume's content back into it before deleting the subvolume. if [ -d "/mnt/topvol/${subvol}" ] && ! findmnt -no SOURCE "$path" >/dev/null 2>&1; then cp -a "/mnt/topvol/${subvol}/." "$path/" 2>/dev/null || true btrfs subvolume delete "/mnt/topvol/${subvol}" || true @@ -50,9 +42,6 @@ for entry in "root:@root" "srv:@srv" "var/tmp:@tmp"; do sed -i "\#[[:space:]]${path}[[:space:]]#d" /etc/fstab done -# Narrow /var/cache: drop the whole-@cache subvolume (keep it as a plain -# directory), and create a dedicated @pkg subvolume just for pacman's -# package cache -- that's the only part of /var/cache archinstall separates. if findmnt -no SOURCE /var/cache >/dev/null 2>&1; then echo ">>> [subvol-normalize] Narrowing /var/cache -> only pacman/pkg as @pkg" unmount_retry /var/cache diff --git a/raveos-calamares-theme/etc/calamares/modules/netinstall-drivers.yaml b/raveos-calamares-theme/etc/calamares/modules/netinstall-drivers.yaml index a5613a5..4e325fb 100644 --- a/raveos-calamares-theme/etc/calamares/modules/netinstall-drivers.yaml +++ b/raveos-calamares-theme/etc/calamares/modules/netinstall-drivers.yaml @@ -8,7 +8,7 @@ - name: "NVIDIA Driver" selected: false expanded: false - exlusive: false + exclusive: false packages: - nvidia-open-dkms - nvidia-utils diff --git a/raveos-calamares-theme/etc/calamares/modules/raveos-chown-homes.sh b/raveos-calamares-theme/etc/calamares/modules/raveos-chown-homes.sh index f271c05..c61e0d6 100755 --- a/raveos-calamares-theme/etc/calamares/modules/raveos-chown-homes.sh +++ b/raveos-calamares-theme/etc/calamares/modules/raveos-chown-homes.sh @@ -1,6 +1,4 @@ #!/bin/bash -# RaveOS: célrendszer /home könyvtárainak rekurzív chown-ja a céluserhez. -# A Calamares shellprocess-final (dontChroot: true) hívja, $1 = ${ROOT}. set -euo pipefail ROOT="${1:-}" diff --git a/raveos-calamares-theme/etc/calamares/modules/raveos-copy-brave-profile.sh b/raveos-calamares-theme/etc/calamares/modules/raveos-copy-brave-profile.sh index 59a24d6..29e4253 100755 --- a/raveos-calamares-theme/etc/calamares/modules/raveos-copy-brave-profile.sh +++ b/raveos-calamares-theme/etc/calamares/modules/raveos-copy-brave-profile.sh @@ -1,6 +1,4 @@ #!/usr/bin/env bash -# RaveOS: Brave Origin profil másolása a céluser HOME-jába -# A Calamares shellprocess (dontChroot: true) hívja, $1 = ${ROOT}. set -euo pipefail ROOT="${1:-}" @@ -9,7 +7,6 @@ ROOT="${1:-}" SRC="/etc/calamares/brave-profile" [ -d "$SRC" ] || { echo "raveos-copy-brave-profile: forrás hiányzik ($SRC)"; exit 0; } -# Céluser + UID:GID a target /etc/passwd-ből (nem a live rendszerből) USERLINE=$(awk -F: '$3>=1000 && $3<60000 && $7 !~ /(nologin|false)/ {print; exit}' "$ROOT/etc/passwd") [ -n "$USERLINE" ] || { echo "raveos-copy-brave-profile: nincs céluser"; exit 0; } diff --git a/raveos-calamares-theme/etc/calamares/modules/shellprocess-before.conf b/raveos-calamares-theme/etc/calamares/modules/shellprocess-before.conf index 2bb1194..4a9c1da 100644 --- a/raveos-calamares-theme/etc/calamares/modules/shellprocess-before.conf +++ b/raveos-calamares-theme/etc/calamares/modules/shellprocess-before.conf @@ -3,4 +3,3 @@ timeout: 999 script: - "-/usr/bin/pacman -Sy --noconfirm chaotic-keyring" - - "-/usr/bin/pacman -Syu --noconfirm" diff --git a/raveos-calamares-theme/etc/calamares/modules/shellprocess-dkms.conf b/raveos-calamares-theme/etc/calamares/modules/shellprocess-dkms.conf index be6d235..c0cd6da 100644 --- a/raveos-calamares-theme/etc/calamares/modules/shellprocess-dkms.conf +++ b/raveos-calamares-theme/etc/calamares/modules/shellprocess-dkms.conf @@ -1,4 +1,3 @@ -# DKMS modules install dontChroot: false # run inside target chroot so DKMS builds against the installed kernel timeout: 3600 # Give it plenty of time (1 hour) for slow downloads diff --git a/raveos-calamares-theme/etc/calamares/modules/shellprocess-loader.conf b/raveos-calamares-theme/etc/calamares/modules/shellprocess-loader.conf index 62fd87d..a65c6ef 100644 --- a/raveos-calamares-theme/etc/calamares/modules/shellprocess-loader.conf +++ b/raveos-calamares-theme/etc/calamares/modules/shellprocess-loader.conf @@ -1,29 +1,17 @@ dontChroot: true timeout: 60 script: - # 1. Copy across RaveOS bootloader, loader.conf, remove the other entry - command: "cp -r /root/.loader.conf ${ROOT}/boot/loader/loader.conf || true" - command: "rm -r ${ROOT}/boot/loader/entries/*cachyos* || true" - # 2. Safety net: 95-raveos.install can silently produce a loader entry - # with no root= (findmnt returns empty depending on chroot context - # at kernel-install-hook time during pacstrap). Patch it here from - # the by-now-correct /etc/fstab. - command: "install -Dm755 /etc/calamares/modules/calamares-fix-bootentry.sh ${ROOT}/root/calamares-fix-bootentry.sh" - command: "arch-chroot ${ROOT} /bin/bash /root/calamares-fix-bootentry.sh" - command: "-rm ${ROOT}/root/calamares-fix-bootentry.sh" - # 3. Calamares' btrfsSubvolumes config is silently ignored -- it always - # creates its own hardcoded set (@, @home, @root, @srv, @cache, @log, - # @tmp). Drop the ones we don't want (@root, @srv, @tmp) and narrow - # @cache down to just /var/cache/pacman/pkg as @pkg. - command: "install -Dm755 /etc/calamares/modules/calamares-normalize-subvolumes.sh ${ROOT}/root/calamares-normalize-subvolumes.sh" - command: "arch-chroot ${ROOT} /bin/bash /root/calamares-normalize-subvolumes.sh" - command: "-rm ${ROOT}/root/calamares-normalize-subvolumes.sh" - # 4. Calamares' hardcoded btrfs subvolume layout has no .snapshots -- - # create it by hand (needed by grub-btrfs/Snapper). - command: "install -Dm755 /etc/calamares/modules/calamares-create-snapshots-subvol.sh ${ROOT}/root/calamares-create-snapshots-subvol.sh" - command: "arch-chroot ${ROOT} /bin/bash /root/calamares-create-snapshots-subvol.sh" - command: "-rm ${ROOT}/root/calamares-create-snapshots-subvol.sh" - # - command: "install -Dm755 /etc/calamares/modules/calamares-microcode-fix.sh ${ROOT}/root/calamares-microcode-fix.sh" diff --git a/raveos-calamares-theme/etc/calamares/modules/shellprocess-supporters.conf b/raveos-calamares-theme/etc/calamares/modules/shellprocess-supporters.conf index 2f6c6d8..6f5ac7e 100644 --- a/raveos-calamares-theme/etc/calamares/modules/shellprocess-supporters.conf +++ b/raveos-calamares-theme/etc/calamares/modules/shellprocess-supporters.conf @@ -2,8 +2,5 @@ dontChroot: true timeout: 20 script: - # RaveOS: fetch the fresh supporters list (if online). Validated steps: - # download -> check "var names" and "]" -> replace. On any error the - # packaged list stays (|| true). - command: "curl -fsSL --max-time 10 https://page.rp1.hu/supporters.js?t=$(date +%s) -o /tmp/raveos_supporters.js && grep -q 'var names' /tmp/raveos_supporters.js && grep -q ']' /tmp/raveos_supporters.js && cp /tmp/raveos_supporters.js /etc/calamares/branding/raveos/supporters.js || true" name: "Downloading supporters list..." diff --git a/raveos-cosmic-theme/PKGBUILD b/raveos-cosmic-theme/PKGBUILD index ac73ae7..3a18a59 100644 --- a/raveos-cosmic-theme/PKGBUILD +++ b/raveos-cosmic-theme/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-cosmic-theme pkgver=1.0.0 -pkgrel=5 +pkgrel=6 pkgdesc="RaveOS Cosmic theme payload and installer" arch=('any') url="https://raveos.local" diff --git a/raveos-cosmic-theme/raveos-cosmic-apply.sh b/raveos-cosmic-theme/raveos-cosmic-apply.sh index 23e18bf..02df340 100755 --- a/raveos-cosmic-theme/raveos-cosmic-apply.sh +++ b/raveos-cosmic-theme/raveos-cosmic-apply.sh @@ -63,14 +63,12 @@ XKB_EOF fi } -# Rendszerszintu hatterkep es fastfetch [[ -f "${PAYLOAD}/background" ]] && \ install -Dm644 "${PAYLOAD}/background" /usr/share/backgrounds/raveos/raveos-main-bg.jpeg [[ -f "${PAYLOAD}/profile.d/raveos-fastfetch.sh" ]] && \ install -Dm755 "${PAYLOAD}/profile.d/raveos-fastfetch.sh" /etc/profile.d/raveos-fastfetch.sh -# Skel beallitasa uj felhasznaloknak mkdir -p \ /etc/skel/.config/kitty \ /etc/skel/.config/fastfetch \ @@ -91,7 +89,6 @@ fi write_cosmic_xkb /etc/skel/.config/cosmic ensure_bashrc_hook /etc/skel/.bashrc -# Meglevo felhasznalok kimeletes frissitese while IFS=: read -r user _ uid gid _ home shell; do [[ "$uid" -ge 1000 ]] || continue [[ -d "$home" ]] || continue diff --git a/raveos-cosmic-theme/raveos-cosmic-first-login.sh b/raveos-cosmic-theme/raveos-cosmic-first-login.sh index 4964028..b2ee3bd 100755 --- a/raveos-cosmic-theme/raveos-cosmic-first-login.sh +++ b/raveos-cosmic-theme/raveos-cosmic-first-login.sh @@ -13,18 +13,15 @@ mkdir -p "${marker_dir}" sleep 2 -# Hivatalos RaveOS tema importalasa ha elerheto if command -v cosmic-settings >/dev/null 2>&1 && [[ -f "${theme_ron}" ]]; then cosmic-settings appearance import "${theme_ron}" >/dev/null 2>&1 || true fi -# Alapertelmezett konfig masolasa ha meg nem letezne if [[ -d "${cosmic_payload}" ]]; then mkdir -p "${HOME}/.config/cosmic" cp -rn "${cosmic_payload}/." "${HOME}/.config/cosmic/" 2>/dev/null || true fi -# Hatterkep beallitasa if [[ -f "${wallpaper}" ]]; then mkdir -p "${HOME}/.config/cosmic/com.system76.CosmicBackground/v1" if [[ ! -f "${HOME}/.config/cosmic/com.system76.CosmicBackground/v1/all" ]]; then @@ -43,7 +40,6 @@ BG_EOF fi fi -# Billentyuzet-kiosztas beallitasa if [[ ! -f "${HOME}/.config/cosmic/com.system76.CosmicComp/v1/xkb_config" ]]; then kb_layout="hu" kb_variant="" diff --git a/raveos-hyprland-theme/PKGBUILD b/raveos-hyprland-theme/PKGBUILD index 0eb6ea6..018c83b 100644 --- a/raveos-hyprland-theme/PKGBUILD +++ b/raveos-hyprland-theme/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-hyprland-theme pkgver=1.0.0 -pkgrel=11 +pkgrel=12 pkgdesc="RaveOS Hyprland theme payload and installer" arch=('any') url="https://raveos.local" @@ -40,14 +40,12 @@ SRCPKGDEST="${startdir}/build" LOGDEST="${startdir}/build" package() { - # Alapértelmezett háttérkép install -dm755 "${pkgdir}/usr/share/backgrounds/raveos" install -Dm644 "${startdir}/theme-data/background.jpg" \ "${pkgdir}/usr/share/backgrounds/raveos/raveos-main-bg.jpeg" install -Dm644 "${startdir}/theme-data/background.jpg" \ "${pkgdir}/usr/share/backgrounds/raveos/background.jpg" - # Rendszer szintű ikonok és GTK téma install -dm755 "${pkgdir}/usr/share/icons" install -dm755 "${pkgdir}/usr/share/themes" cp -r --no-preserve=ownership "${startdir}/theme-data/skel/.icons/Adwaitaru-olive" \ @@ -55,23 +53,18 @@ package() { cp -r --no-preserve=ownership "${startdir}/theme-data/skel/.themes/Yaru-olive-dark" \ "${pkgdir}/usr/share/themes/" - # SDDM profilképek könyvtára install -dm755 "${pkgdir}/usr/share/sddm/faces" - # Fastfetch profil script install -Dm755 "${startdir}/theme-data/profile.d/raveos-fastfetch.sh" \ "${pkgdir}/etc/profile.d/raveos-fastfetch.sh" - # Session init script első bejelentkezéshez install -Dm755 "${startdir}/raveos-session-init.sh" \ "${pkgdir}/etc/profile.d/raveos-session-init.sh" - # Theme payload install -dm755 "${pkgdir}/usr/share/raveos/hyprland-theme" cp -r --no-preserve=ownership "${startdir}/theme-data" \ "${pkgdir}/usr/share/raveos/hyprland-theme/" - # Auto-apply script és systemd service install -Dm755 "${startdir}/raveos-hyprland-apply.sh" \ "${pkgdir}/usr/lib/raveos-hyprland-theme/auto-apply.sh" diff --git a/raveos-hyprland-theme/raveos-hyprland-apply.sh b/raveos-hyprland-theme/raveos-hyprland-apply.sh index 6262fc9..a66ce0b 100644 --- a/raveos-hyprland-theme/raveos-hyprland-apply.sh +++ b/raveos-hyprland-theme/raveos-hyprland-apply.sh @@ -153,7 +153,6 @@ install_user_avatar() { fi } -# skel konfiguracio uj felhasznaloknak mkdir -p \ /etc/skel/.config/hypr \ /etc/skel/.config/dms \ @@ -219,7 +218,6 @@ install_gtk_bookmarks /etc/skel ensure_bashrc_hook /etc/skel/.bashrc echo "1" > /etc/skel/.config/raveos/hyprland-migrated -# Meglevo felhasznalok beallitasa while IFS=: read -r user _ uid gid _ home shell; do [[ "$uid" -ge 1000 ]] || continue [[ -d "$home" ]] || continue @@ -237,7 +235,6 @@ while IFS=: read -r user _ uid gid _ home shell; do "${home}/.local/state/DankMaterialShell" \ "${home}/.local/share/flatpak/overrides" - # Hyprland konfig if [[ ! -f "${home}/.config/hypr/hyprland.lua" && -d "${PAYLOAD}/hypr" ]]; then cp -rf "${PAYLOAD}/hypr/." "${home}/.config/hypr/" rm -f "${home}/.config/hypr/hyprland.conf" @@ -262,13 +259,11 @@ while IFS=: read -r user _ uid gid _ home shell; do install -Dm644 "${PAYLOAD}/hypr/config/windowrules.lua" "${home}/.config/hypr/config/windowrules.lua" fi - # hyprpaper konfig if [[ ! -f "${home}/.config/hypr/hyprpaper.conf" ]]; then printf 'preload = %s/.config/background.jpg\nwallpaper = ,%s/.config/background.jpg\nsplash = false\n' \ "$home" "$home" > "${home}/.config/hypr/hyprpaper.conf" fi - # DMS konfig if [[ -d "${PAYLOAD}/dms" ]]; then cp -rn "${PAYLOAD}/dms/." "${home}/.config/quickshell/pockets/DMS/" 2>/dev/null || true cp -rn "${PAYLOAD}/dms/." "${home}/.config/dms/" 2>/dev/null || true @@ -285,7 +280,6 @@ while IFS=: read -r user _ uid gid _ home shell; do done fi - # DMS session.json hatterkep if [[ ! -f "${home}/.local/state/DankMaterialShell/session.json" ]]; then cat > "${home}/.local/state/DankMaterialShell/session.json" <<-SEOF { @@ -294,27 +288,22 @@ while IFS=: read -r user _ uid gid _ home shell; do SEOF fi - # Hatterkep if [[ ! -f "${home}/.config/background.jpg" && -f "${PAYLOAD}/background.jpg" ]]; then install -Dm644 "${PAYLOAD}/background.jpg" "${home}/.config/background.jpg" fi - # SDDM es user avatar install_user_avatar "$user" "$home" "$uid" "$gid" - # Kitty if [[ ! -f "${home}/.config/kitty/kitty.conf" && -d "${PAYLOAD}/kitty" ]]; then cp -r "${PAYLOAD}/kitty/." "${home}/.config/kitty/" fi - # Fastfetch for f in config.jsonc config-kitty.jsonc raveos-logo.png raveos-logo.txt; do if [[ ! -f "${home}/.config/fastfetch/${f}" && -f "${PAYLOAD}/fastfetch/${f}" ]]; then install -Dm644 "${PAYLOAD}/fastfetch/${f}" "${home}/.config/fastfetch/${f}" fi done - # GTK, Thunar, nwg-look, xsettingsd, Kvantum for d in gtk-3.0 gtk-4.0 nwg-look Thunar xfce4 xsettingsd Kvantum; do if [[ ! -d "${home}/.config/${d}" && -d "${PAYLOAD}/${d}" ]]; then mkdir -p "${home}/.config/${d}" @@ -322,12 +311,10 @@ SEOF fi done - # RaveSwitch if [[ -f "${PAYLOAD}/raveswitch/config.ron" ]]; then install -Dm644 "${PAYLOAD}/raveswitch/config.ron" "${home}/.config/raveswitch/config.ron" fi - # Flatpak global override if [[ ! -f "${home}/.local/share/flatpak/overrides/global" && -f "${PAYLOAD}/skel/.local/share/flatpak/overrides/global" ]]; then install -Dm644 "${PAYLOAD}/skel/.local/share/flatpak/overrides/global" \ "${home}/.local/share/flatpak/overrides/global" @@ -338,18 +325,15 @@ SEOF ensure_bashrc_hook "${home}/.bashrc" echo "1" > "${home}/.config/raveos/hyprland-migrated" - # GTK tema beallitasa gsettings-szel ( runuser -u "$user" -- dbus-launch gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-olive-dark' 2>/dev/null runuser -u "$user" -- dbus-launch gsettings set org.gnome.desktop.interface icon-theme 'Adwaitaru-olive' 2>/dev/null ) || true - # matugen: wallpaper-alapu szinseme generalas ha elerheto if command -v matugen &>/dev/null && [[ -f "${home}/.config/background.jpg" ]]; then runuser -u "$user" -- matugen image "${home}/.config/background.jpg" 2>/dev/null || true fi - # Kizarolag az erintett konfiguraciok es konyvtarak jogosultsagait javitjuk chown "${uid}:${gid}" \ "${home}/.bashrc" \ "${home}/.face" \ diff --git a/raveos-hyprland-theme/raveos-session-init.sh b/raveos-hyprland-theme/raveos-session-init.sh index b0d0d6e..202a919 100644 --- a/raveos-hyprland-theme/raveos-session-init.sh +++ b/raveos-hyprland-theme/raveos-session-init.sh @@ -7,11 +7,9 @@ if [[ -f "${_raveos_init}" ]]; then return 0 2>/dev/null || exit 0 fi -# GTK tema gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-olive-dark' 2>/dev/null || true gsettings set org.gnome.desktop.interface icon-theme 'Adwaitaru-olive' 2>/dev/null || true -# DMS session.json: hatterkep beallitasa _session_file="${HOME}/.local/state/DankMaterialShell/session.json" _bg_file="${HOME}/.config/background.jpg" diff --git a/raveos-mirrorlist/PKGBUILD b/raveos-mirrorlist/PKGBUILD index 147545b..0413109 100644 --- a/raveos-mirrorlist/PKGBUILD +++ b/raveos-mirrorlist/PKGBUILD @@ -3,15 +3,10 @@ # raveos-mirrorlist # ------------------ # A raveos-core-repo elsodleges + tartalek (GitHub Releases) szerverlistaja. -# Telepiteskor/frissiteskor a .install script: -# - atallitja a meglevo [raveos-core-repo] szekciot Include=-ra (GitHub tartalek), -# - athelyezi a [raveos-core-repo] szekciot a [core] ELE (a pacman az ELSO -# repot valasztja azonos nevu csomagra, verziotol fuggetlenul), -# - torli a gnome csomagokat az IgnorePkg-bol (a repo-sorrend mar nyer). pkgname=raveos-mirrorlist pkgver=1.0.0 -pkgrel=5 +pkgrel=6 pkgdesc="RaveOS core-repo mirrorlist (elsodleges + GitHub tartalek szerver)" arch=('any') url="https://git.rp1.hu/RaveOS" diff --git a/raveos-mirrorlist/raveos-mirrorlist.install b/raveos-mirrorlist/raveos-mirrorlist.install index c44a35e..edf30b8 100644 --- a/raveos-mirrorlist/raveos-mirrorlist.install +++ b/raveos-mirrorlist/raveos-mirrorlist.install @@ -10,7 +10,6 @@ _patch_pacman_conf() { conf=/etc/pacman.conf [ -f "$conf" ] || return 0 - # 1) Regi, egysoros Server= allapot -> Include= (GitHub tartalek szerverrel). if grep -qF 'Server = https://page.rp1.hu/x86_64/' "$conf" \ && ! grep -qF 'Include = /etc/pacman.d/raveos-core-mirrorlist' "$conf"; then sed -i \ @@ -20,9 +19,6 @@ _patch_pacman_conf() { echo "raveos-mirrorlist: /etc/pacman.conf frissitve (raveos-core-repo -> Include mirrorlist, GitHub tartalek szerverrel)" fi - # 2) [raveos-core-repo] szekcio athelyezese a [core] ELE. - # A pacman az ELSO repot valasztja azonos nevu csomagra, verziotol - # fuggetlenul - ha a raveos repo hatul van, az official csomagok nyernek. core_line=$(grep -n '^\[core\]' "$conf" | head -n1 | cut -d: -f1) rav_line=$(grep -n '^\[raveos-core-repo\]' "$conf" | head -n1 | cut -d: -f1) if [ -n "$core_line" ] && [ -n "$rav_line" ] && [ "$rav_line" -gt "$core_line" ]; then @@ -51,8 +47,6 @@ _patch_pacman_conf() { fi fi - # 3) IgnorePkg: a gnome lista torlese (a repo-sorrend mar nyer; az IgnorePkg - # blokkolna a sajat frissiteseinket). A kernel pin meghagyva. if grep -q '^IgnorePkg' "$conf"; then sed -i 's/^IgnorePkg.*/IgnorePkg = linux-cachyos linux-cachyos-headers/' "$conf" fi diff --git a/raveos-plasma-theme/PKGBUILD b/raveos-plasma-theme/PKGBUILD index 54897c0..9d7b284 100644 --- a/raveos-plasma-theme/PKGBUILD +++ b/raveos-plasma-theme/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-plasma-theme pkgver=1.0.0 -pkgrel=8 +pkgrel=9 pkgdesc="RaveOS Plasma theme payload and installer" arch=('any') url="https://raveos.local" diff --git a/raveos-plasma-theme/raveos-plasma-apply.sh b/raveos-plasma-theme/raveos-plasma-apply.sh index d077fce..6d90ce6 100755 --- a/raveos-plasma-theme/raveos-plasma-apply.sh +++ b/raveos-plasma-theme/raveos-plasma-apply.sh @@ -132,7 +132,6 @@ api-enabled=true KWEOF } -# skel konfiguráció új felhasználóknak mkdir -p \ /etc/skel/.config/kitty \ /etc/skel/.config/fastfetch \ @@ -167,7 +166,6 @@ disable_kmix_autostart /etc/skel ensure_bashrc_hook /etc/skel/.bashrc echo "1" > /etc/skel/.config/raveos/plasma-migrated -# meglévő felhasználók frissítése while IFS=: read -r user _ uid gid _ home shell; do [[ "$uid" -ge 1000 ]] || continue [[ -d "$home" ]] || continue diff --git a/raveos-plymouth-theme/PKGBUILD b/raveos-plymouth-theme/PKGBUILD index 8190196..6c676fa 100644 --- a/raveos-plymouth-theme/PKGBUILD +++ b/raveos-plymouth-theme/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveos-plymouth-theme pkgver=1.0.0 -pkgrel=2 +pkgrel=3 pkgdesc="RaveOS Plymouth boot splash theme" arch=('any') url="https://git.rp1.hu/RaveOS" diff --git a/raveos-plymouth-theme/theme-data/raveos.script b/raveos-plymouth-theme/theme-data/raveos.script index d78622b..78463c3 100644 --- a/raveos-plymouth-theme/theme-data/raveos.script +++ b/raveos-plymouth-theme/theme-data/raveos.script @@ -1,4 +1,3 @@ -// RaveOS Plymouth boot splash script (installed system) Window.SetBackgroundTopColor(0.102, 0.106, 0.114); Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); @@ -6,7 +5,6 @@ Window.SetBackgroundBottomColor(0.075, 0.078, 0.086); screen_width = Window.GetWidth(); screen_height = Window.GetHeight(); -// --- logo: owl icon, centered --- owl_image = Image("raveos-owl.png"); owl_width = owl_image.GetWidth(); @@ -27,7 +25,6 @@ Plymouth.SetBootProgressFunction(fun(duration, progress) { }); -// --- password prompt (LUKS unlock) --- fun display_password_callback(prompt, bullets) { diff --git a/raveos-sddm-theme/PKGBUILD b/raveos-sddm-theme/PKGBUILD index cf0e32b..56004c1 100644 --- a/raveos-sddm-theme/PKGBUILD +++ b/raveos-sddm-theme/PKGBUILD @@ -1,18 +1,8 @@ # Maintainer: nippy <nippy@tuta.io> -# -# raveos-sddm-theme -# ------------------ -# Kozos RaveOS SDDM login-kepernyo tema (sddm-rave-theme). -# -# Korabban minden DE-tema csomag (cosmic/gnome/hyprland/plasma) sajat -# maga csomagolta ugyanezt a byte-azonos SDDM temat - ez a kulon csomag -# valtja ki mind a negyet, hogy csak egyszer kelljen karbantartani es -# ne legyen fajl-duplikacio/utkozes-veszely a csomagok kozott. A DE-tema -# csomagok erre a csomagra hivatkoznak depends-kent. pkgname=raveos-sddm-theme pkgver=1.0.0 -pkgrel=5 +pkgrel=6 pkgdesc="RaveOS kozos SDDM login tema (sddm-rave-theme)" arch=('any') url="https://raveos.local" @@ -23,7 +13,6 @@ install="${pkgname}.install" source=() sha256sums=() -# Build könyvtárak az src mellé, ne a makepkg alapértelmezettbe BUILDDIR="${startdir}/build" PKGDEST="${startdir}/build" SRCDEST="${startdir}/build" @@ -31,7 +20,6 @@ SRCPKGDEST="${startdir}/build" LOGDEST="${startdir}/build" package() { - # SDDM téma: rendszerszintű telepítés, SDDM innen olvassa install -dm755 "${pkgdir}/usr/share/sddm/themes/sddm-rave-theme" find "${startdir}/sddm-rave-theme" -type f | while read -r f; do rel="${f#${startdir}/sddm-rave-theme/}" @@ -40,10 +28,6 @@ package() { install -Dm644 "$f" "${pkgdir}/usr/share/sddm/themes/sddm-rave-theme/${rel}" done - # SDDM konfig forrás: NEM /etc-be telepítjük itt, hanem post_install/ - # post_upgrade hook-ból, mert ha az unowned fájl már létezik, a pacman - # ütközés-ellenőrzése ELŐBB fut mint a pre_upgrade() hook, és blokkolja - # a tranzakciót. install -Dm644 "${startdir}/sddm.conf" \ "${pkgdir}/usr/share/raveos-sddm-theme/sddm.conf" } diff --git a/raveos-sddm-theme/raveos-sddm-theme.install b/raveos-sddm-theme/raveos-sddm-theme.install index 36ebc3e..abc770f 100644 --- a/raveos-sddm-theme/raveos-sddm-theme.install +++ b/raveos-sddm-theme/raveos-sddm-theme.install @@ -2,10 +2,6 @@ _sddm_src="/usr/share/raveos-sddm-theme/sddm.conf" _sddm_dst="/etc/sddm.conf.d/raveos-theme.conf" pre_install() { - # Ha a fájl már létezik de pacman nem ownolta, töröljük - de ez csak - # pre_install esetén segít, pre_upgrade már késő (a pacman ütközés- - # ellenőrzése ELŐBB fut mint ez a hook). Ezért a konfig fájlt a post_* - # hook-ok telepítik, nem a package(). rm -f "$_sddm_dst" } diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml index 0caedbe..0d2e36e 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml @@ -7,7 +7,6 @@ Row { height: root.font.pointSize * 1.6 spacing: root.font.pointSize * 0.5 - // -1 = nincs akkumulátor / nem laptop property int batteryLevel: -1 property bool isCharging: false property bool isFull: false @@ -15,7 +14,6 @@ Row { visible: batteryLevel >= 0 - // Ismert akksi elérési utak property var tryPaths: [ "/sys/class/power_supply/BAT0/", "/sys/class/power_supply/BAT1/", @@ -24,7 +22,6 @@ Row { "/sys/class/power_supply/BATT/" ] - // Dinamikus akkumulátor kereső (pl. kontroller, UPS, egyéb külső akkuk észleléséhez) FolderListModel { id: powerSupplyScanner folder: "file:///sys/class/power_supply" @@ -45,7 +42,6 @@ Row { for (var i = 0; i < count; i++) { var name = get(i, "fileName") if (name && name !== "." && name !== "..") { - // Csak a tipikus laptop akkumulátor elnevezések (pl. BAT0, BAT1, BATT, battery) var isLaptopBat = /^bat/i.test(name) || /^battery/i.test(name) if (isLaptopBat) { var fullPath = "/sys/class/power_supply/" + name + "/" @@ -60,7 +56,6 @@ Row { } } - // ── Fájl olvasó ────────────────────────────────────────────────────────── function readFile(path, cb) { var xhr = new XMLHttpRequest() xhr.open("GET", "file://" + path, true) @@ -71,7 +66,6 @@ Row { xhr.send() } - // ── Akkumulátor keresés és frissítés ───────────────────────────────────── function detectBattery(idx) { if (idx >= tryPaths.length) { batteryLevel = -1; return } readFile(tryPaths[idx] + "capacity", function(cap) { @@ -90,7 +84,6 @@ Row { }) } - // ── Akkumulátor frissítés ──────────────────────────────────────────────── function refresh() { if (batteryPath !== "") { readFile(batteryPath + "capacity", function(cap) { @@ -118,7 +111,6 @@ Row { onTriggered: batteryIndicator.refresh() } - // ── Szín a töltési szint alapján ───────────────────────────────────────── function levelColor(lvl, charging) { if (charging) return "#4ade80" // zöld – tölt if (lvl > 60) return "#ffffff" // fehér – ok @@ -127,7 +119,6 @@ Row { return "#f87171" // piros – kritikus } - // ── UI ─────────────────────────────────────────────────────────────────── Canvas { id: batteryCanvas width: root.font.pointSize * 3.2 @@ -138,7 +129,6 @@ Row { var ctx = getContext("2d") ctx.clearRect(0, 0, width, height) - // Qt Canvas nem támogatja ctx.roundRect() – saját helper function rr(c, x, y, w, h, r) { r = Math.min(Math.max(r, 0), Math.min(w, h) / 2) c.beginPath() @@ -165,20 +155,17 @@ Row { var tx = bw // terminál x var ty = (height - th) / 2 - // Terminál (+ pólus) rr(ctx, tx, ty, tw, th, height * 0.15) ctx.fillStyle = col ctx.globalAlpha = 0.7 ctx.fill() ctx.globalAlpha = 1.0 - // Keret (akksi test) rr(ctx, bx, by, bw, bh, r) ctx.strokeStyle = col ctx.lineWidth = height * 0.09 ctx.stroke() - // Töltési szint kitöltés var padding = height * 0.18 var fillW = Math.max(0, (bw - padding * 2) * lvl / 100) if (fillW > 0) { @@ -191,7 +178,6 @@ Row { ctx.globalAlpha = 1.0 } - // Villám jel (töltés közben) if (charging && !full) { var cx = bw / 2 var cy = height / 2 @@ -210,7 +196,6 @@ Row { ctx.globalAlpha = 1.0 } - // Tele jel (checkbox-szerű pipával) if (full) { ctx.beginPath() ctx.moveTo(bw * 0.32, by + bh / 2) @@ -227,7 +212,6 @@ Row { } } - // Százalék szöveg Text { id: batteryText anchors.verticalCenter: parent.verticalCenter @@ -241,7 +225,6 @@ Row { font.family: root.font.family font.bold: batteryIndicator.batteryLevel <= 15 && !batteryIndicator.isCharging - // Pulzáló animáció kritikus töltésnél SequentialAnimation on opacity { running: batteryIndicator.batteryLevel <= 15 && !batteryIndicator.isCharging loops: Animation.Infinite @@ -250,7 +233,6 @@ Row { } } - // Szint változáskor újrafest onBatteryLevelChanged: batteryCanvas.requestPaint() onIsChargingChanged: batteryCanvas.requestPaint() onIsFullChanged: batteryCanvas.requestPaint() diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml b/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml index fd29314..61fed97 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml @@ -21,7 +21,6 @@ Column { Item { id: errorMessageField - // change also in selectSession height: root.font.pointSize * 2 width: parent.width anchors.horizontalCenter: parent.horizontalCenter @@ -67,7 +66,6 @@ Column { } } - // Profilkép Item { id: avatarField @@ -114,7 +112,6 @@ Column { if (!p || p === "") return var s = p.toString().trim() if (s === "") return - // Ignore generic silhouette icon installed in SDDM faces directory if (s === "/usr/share/sddm/faces/.face.icon" || s === "file:///usr/share/sddm/faces/.face.icon") return var url = (s.startsWith("file://") || s.startsWith("image://") || s.startsWith("qrc://") || s.startsWith("http")) ? s : ("file://" + s) if (list.indexOf(url) === -1) { @@ -122,12 +119,10 @@ Column { } } - // 1. Direct icon reported by SDDM (AccountsService or explicit face config) if (directIcon !== "") { addCandidate(directIcon) } - // 2. AccountsService system icons (standard across Linux - world-readable 644) if (uName !== "") { addCandidate("/var/lib/AccountsService/icons/" + uName) addCandidate("/var/lib/AccountsService/icons/" + uName + ".png") @@ -136,7 +131,6 @@ Column { addCandidate("/var/lib/AccountsService/icons/" + uName + ".svg") } - // 3. User's home directory faces if (home !== "") { addCandidate(home + "/.face") addCandidate(home + "/.face.icon") @@ -156,7 +150,6 @@ Column { addCandidate("/home/" + uName + "/.avatar") } - // 4. System SDDM faces directory if (uName !== "") { addCandidate("/usr/share/sddm/faces/" + uName + ".face.icon") addCandidate("/usr/share/sddm/faces/" + uName + ".png") @@ -168,7 +161,6 @@ Column { addCandidate("/var/lib/sddm/faces/" + uName) } - // 5. Configured theme avatar if (config.UserAvatar && config.UserAvatar !== "") { addCandidate(config.UserAvatar) } @@ -217,13 +209,11 @@ Column { function onDataChanged() { avatarField.updateAvatarSource() } } - // Avatar kör Item { anchors.centerIn: parent width: root.font.pointSize * 5.2 height: root.font.pointSize * 5.2 - // Avatar drop shadow Rectangle { anchors.fill: parent anchors.topMargin: root.font.pointSize * 0.15 @@ -238,7 +228,6 @@ Column { clip: true color: Qt.rgba(1, 1, 1, 0.15) - // The mask source Item { id: avatarMask anchors.fill: parent @@ -282,7 +271,6 @@ Column { opacity: 0.85 } - // Draw the border on top of everything! Rectangle { anchors.fill: parent radius: parent.width / 2 @@ -340,7 +328,6 @@ Column { } } - // Container button / click area Item { id: userSelectorButton anchors.centerIn: parent @@ -358,7 +345,6 @@ Column { } KeyNavigation.down: password - // Background with drop shadow and frosted glass Item { anchors.fill: parent Rectangle { @@ -379,7 +365,6 @@ Column { } } - // Left Icon (User icon) Button { id: userFieldLeftIcon width: parent.height @@ -396,7 +381,6 @@ Column { background: Rectangle { color: "transparent" } } - // Username display in the middle (Non-editable, clean text) Text { id: username anchors.centerIn: parent @@ -414,7 +398,6 @@ Column { styleColor: Qt.rgba(0, 0, 0, 0.40) } - // Dropdown Arrow Button on Right Item { id: userDropdownBtn width: parent.height @@ -453,7 +436,6 @@ Column { } } - // Whole field click area MouseArea { id: userSelectorMouseArea anchors.fill: parent @@ -469,7 +451,6 @@ Column { } } - // Dropdown Popup Popup { id: userDropdownPopup @@ -482,7 +463,6 @@ Column { z: 100 background: Item { - // Drop shadow underlay Rectangle { anchors.fill: parent anchors.topMargin: root.font.pointSize * 0.15 @@ -490,7 +470,6 @@ Column { color: Qt.rgba(0, 0, 0, 0.40) } - // Frosted Glass body (minimally translucent) Rectangle { anchors.fill: parent radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) : root.font.pointSize * 0.8 @@ -561,7 +540,6 @@ Column { anchors.rightMargin: root.font.pointSize * 0.8 spacing: root.font.pointSize * 0.8 - // Mini avatar in dropdown row Item { width: root.font.pointSize * 2.4 height: root.font.pointSize * 2.4 @@ -620,7 +598,6 @@ Column { } } - // Username & realName Column { anchors.verticalCenter: parent.verticalCenter spacing: 2 @@ -841,7 +818,6 @@ Column { KeyNavigation.down: rebootBtn - // Drop shadow Rectangle { anchors.fill: parent anchors.topMargin: root.font.pointSize * 0.12 @@ -915,7 +891,6 @@ Column { anchors.bottomMargin: root.font.pointSize * 0.3 spacing: root.font.pointSize * 1.8 - // Reboot gomb Column { spacing: root.font.pointSize * 0.5 @@ -923,7 +898,6 @@ Column { width: root.font.pointSize * 4.2 height: root.font.pointSize * 4.2 - // Button shadow Rectangle { anchors.fill: parent anchors.topMargin: root.font.pointSize * 0.12 @@ -979,7 +953,6 @@ Column { } } - // Shutdown gomb Column { spacing: root.font.pointSize * 0.5 @@ -987,7 +960,6 @@ Column { width: root.font.pointSize * 4.2 height: root.font.pointSize * 4.2 - // Button shadow Rectangle { anchors.fill: parent anchors.topMargin: root.font.pointSize * 0.12 diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml index ffe10fa..0d95c06 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml @@ -1,5 +1,3 @@ -// Keyboard Layout Indicator component -// Displays the current locale/layout and switches between them when clicked (if multiple are available) import QtQuick 2.15 import QtQml 2.15 @@ -13,13 +11,10 @@ Item { width: implicitWidth height: implicitHeight - // Number of available layouts property int layoutsCount: (typeof keyboard !== "undefined" && keyboard && keyboard.layouts) ? keyboard.layouts.length : 0 - // Show if we have layout info or a valid locale fallback and not hidden visible: (config.HideKeyboardLayout !== "false") ? false : (currentShortName !== "") - // Get current layout shortname (e.g. "US", "HU") property string currentShortName: "" function updateCurrentShortName() { @@ -34,7 +29,6 @@ Item { } } - // Fallback to config locale or system locale var loc = config.Locale || Qt.locale().name if (loc) { var parts = loc.split("_") @@ -48,7 +42,6 @@ Item { Component.onCompleted: updateCurrentShortName() - // Colors matched to the theme config property color textColor: config.UserIconColor || "#ffffff" property color hoverColor: config.HoverUserIconColor || "#b7cef1" @@ -56,9 +49,7 @@ Item { id: layoutRow height: root.font.pointSize * 1.1 spacing: root.font.pointSize * 0.4 - // Removed anchors.centerIn to prevent circular binding loop with parent width/height - // Keyboard icon Canvas { id: kbdCanvas width: root.font.pointSize * 1.5 @@ -79,7 +70,6 @@ Item { ctx.lineJoin = "round" ctx.globalAlpha = 0.85 - // Draw keyboard outline var r = height * 0.15 var bx = ctx.lineWidth / 2 var by = ctx.lineWidth / 2 @@ -95,16 +85,13 @@ Item { ctx.closePath() ctx.stroke() - // Draw simple key grid ctx.lineWidth = height * 0.06 var kw = bw / 6 var kh = bh / 4 - // Row 1 & 2 keys for (var i = 0; i < 4; i++) { ctx.fillRect(bx + kw * (i + 1), by + kh, kw * 0.6, kh * 0.6) ctx.fillRect(bx + kw * (i + 0.5), by + kh * 2, kw * 0.6, kh * 0.6) } - // Spacebar ctx.fillRect(bx + kw * 1.5, by + kh * 3, kw * 3, kh * 0.6) ctx.globalAlpha = 1.0 @@ -116,7 +103,6 @@ Item { } } - // Layout Short Name (e.g. US, HU) Text { id: layoutText anchors.verticalCenter: parent.verticalCenter @@ -176,7 +162,6 @@ Item { color: delegateMouse.containsMouse ? Qt.rgba(1, 1, 1, 0.15) : "transparent" radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) / 4 : root.font.pointSize * 0.4 - // Get layout object safely property var layoutObj: (typeof keyboard !== "undefined" && keyboard && keyboard.layouts) ? keyboard.layouts[index] : null property string shortName: layoutObj && layoutObj.shortName ? layoutObj.shortName.toUpperCase() : "" property string longName: layoutObj && layoutObj.longName ? layoutObj.longName : "" diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml b/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml index 779a21a..65e6e41 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml @@ -29,7 +29,6 @@ ColumnLayout { Layout.rightMargin: innerPadding } - // Akkumulátor + Hálózat jelzők RowLayout { id: statusRow @@ -56,7 +55,6 @@ ColumnLayout { } } - // Billentyűzet kiosztás jelző (letiltva a felhasználói kérésnek megfelelően) KeyboardLayoutIndicator { id: keyboardLayoutIndicator diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml index 6300841..07bf902 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml @@ -10,7 +10,6 @@ Row { height: root.font.pointSize * 1.6 spacing: root.font.pointSize * 0.5 - // "none" | "wifi" | "ethernet" property string netType: "none" property int wifiQuality: 0 // 0-100 property string activeIface: "" @@ -28,7 +27,6 @@ Row { "enp0s3","enp0s31f6","ens33","ens3","ens18" ] - // ── Fájl olvasó ────────────────────────────────────────────────────────── function readFile(path, cb) { var xhr = new XMLHttpRequest() xhr.open("GET", "file://" + path, true) @@ -42,16 +40,13 @@ Row { xhr.send() } - // ── WiFi jelerősség /proc/net/wireless-ből ─────────────────────────────── function readWifiSignal(iface) { readFile("/proc/net/wireless", function(content) { if (!content) { wifiQuality = 60; netCanvas.requestPaint(); return } var lines = content.split("\n") for (var i = 0; i < lines.length; i++) { if (lines[i].indexOf(iface + ":") !== -1) { - // formátum: "wlan0: 0000 61. -49. -256 ..." var parts = lines[i].trim().replace(/\./g,"").split(/\s+/) - // parts[2] = link quality (0–70 tartomány általában) var q = parseFloat(parts[2]) || 0 wifiQuality = Math.min(100, Math.round(q / 70 * 100)) break @@ -61,7 +56,6 @@ Row { }) } - // ── Interfész keresők ──────────────────────────────────────────────────── function checkWifi(idx) { if (idx >= wifiIfaces.length) { checkEth(0); return } readFile("/sys/class/net/" + wifiIfaces[idx] + "/operstate", function(st) { @@ -75,7 +69,6 @@ Row { }) } - // ── Ethernet keresés ───────────────────────────────────────────────────── function checkEth(idx) { if (idx >= ethIfaces.length) { netType = "none"; return } readFile("/sys/class/net/" + ethIfaces[idx] + "/operstate", function(st) { @@ -100,21 +93,18 @@ Row { onTriggered: networkIndicator.refresh() } - // ── Szín ───────────────────────────────────────────────────────────────── function signalColor(q) { if (q >= 65) return "#4ade80" // zöld – erős if (q >= 40) return "#facc15" // sárga – közepes return "#fb923c" // narancs – gyenge } - // ── UI ─────────────────────────────────────────────────────────────────── Canvas { id: netCanvas width: root.font.pointSize * 2.0 height: root.font.pointSize * 1.6 anchors.verticalCenter: parent.verticalCenter - // Qt Canvas nem támogatja ctx.roundRect() – saját helper function rr(c, x, y, w, h, r) { r = Math.min(Math.max(r, 0), Math.min(w, h) / 2) c.beginPath() @@ -136,14 +126,12 @@ Row { drawEthernet(ctx) } - // ── WiFi antenna ikon (4 ívelt sáv) ───────────────────────────── function drawWifi(ctx) { var q = networkIndicator.wifiQuality var cx = width / 2 var base = height * 0.96 var dot = height * 0.08 - // Sávok száma a minőség alapján var bars = q >= 70 ? 4 : q >= 45 ? 3 : q >= 20 ? 2 : 1 var col = networkIndicator.signalColor(q) @@ -161,7 +149,6 @@ Row { ctx.stroke() } - // Középső pont (antenna) ctx.beginPath() ctx.arc(cx, base, dot, 0, Math.PI * 2) ctx.fillStyle = col @@ -170,7 +157,6 @@ Row { ctx.globalAlpha = 1.0 } - // ── Ethernet dugó ikon ─────────────────────────────────────────── function drawEthernet(ctx) { var col = "#4ade80" var lw = height * 0.09 @@ -184,7 +170,6 @@ Row { var cx = width / 2 var cy = height / 2 - // Kábel test (felső téglalap) var bw = width * 0.70 var bh = height * 0.38 var bx = cx - bw / 2 @@ -192,7 +177,6 @@ Row { rr(ctx, bx, by, bw, bh, height * 0.06) ctx.stroke() - // 3 érintkező pin a téglalapban var pinW = width * 0.08 var pinH = height * 0.22 var pinY = by - pinH + lw @@ -202,13 +186,11 @@ Row { ctx.fill() } - // Kábel vonala lefelé ctx.beginPath() ctx.moveTo(cx, by + bh) ctx.lineTo(cx, cy + height * 0.38) ctx.stroke() - // Dugó alap vonal ctx.lineWidth = lw * 1.5 ctx.beginPath() ctx.moveTo(cx - width * 0.22, cy + height * 0.38) @@ -219,7 +201,6 @@ Row { } } - // Felirat Text { id: netLabel anchors.verticalCenter: parent.verticalCenter diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml b/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml index 27d5b71..5c25217 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml @@ -40,7 +40,6 @@ Canvas { var p = particles[i] var r = p.baseR * (0.75 + 0.25 * Math.sin(p.phase + time * 2.2)) - // Glow halo var grd = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, p.glowR) grd.addColorStop(0, "hsla(" + p.hue + ",100%,72%," + (p.opacity * 0.55) + ")") grd.addColorStop(1, "hsla(" + p.hue + ",100%,72%,0)") @@ -49,7 +48,6 @@ Canvas { ctx.fillStyle = grd ctx.fill() - // Core dot ctx.beginPath() ctx.arc(p.x, p.y, r, 0, Math.PI * 2) ctx.fillStyle = "hsla(" + p.hue + ",100%,88%," + p.opacity + ")" @@ -84,7 +82,6 @@ Canvas { } Component.onCompleted: { - // kis késleltetés hogy a méret biztosan kész legyen Qt.callLater(initParticles) } } diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml b/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml index 045e298..a04408f 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml @@ -20,8 +20,6 @@ Item { ComboBox { id: selectSession - // important - // change also in errorMessage height: root.font.pointSize * 1.8 anchors.horizontalCenter: parent.horizontalCenter @@ -37,7 +35,6 @@ Item { } delegate: ItemDelegate { - // minus padding width: popupHandler.width - root.font.pointSize * 1.5 anchors.horizontalCenter: popupHandler.horizontalCenter diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml b/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml index 672f346..b3c16be 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml @@ -45,7 +45,6 @@ Item { border.color: Qt.rgba(1, 0.35, 0.35, 0.65) border.width: root.font.pointSize * 0.08 - // Pulse animation border SequentialAnimation on border.color { running: toastRoot.showing loops: Animation.Infinite diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml b/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml index f87b4d0..30d4013 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml @@ -9,13 +9,11 @@ import QtQuick.Effects 6.5 Item { id: userSwitcher - // Csak akkor látható ha több mint 1 felhasználó van visible: userModel.count > 1 width: switchBtn.implicitWidth + root.font.pointSize * 2 height: switchBtn.implicitHeight + root.font.pointSize * 0.6 - // Kiválasztott felhasználó indexe (kívülről beállítható) property int selectedIndex: 0 property string selectedName: { if (userModel.count < 1) return "" @@ -25,7 +23,6 @@ Item { signal userSwitched(int idx, string name) - // ── Segédfüggvények ─────────────────────────────────────────────────────────────────── function resolveUserIcon(idx) { var list = [] var count = (typeof userModel !== "undefined" && userModel) ? userModel.count : 0 @@ -64,7 +61,6 @@ Item { return userModel.data(userModel.index(idx, 0), Qt.UserRole + 1) || "" } - // ── Gomb (chip stílus) ──────────────────────────────────────────────────── Rectangle { id: switchBtn anchors.centerIn: parent @@ -90,7 +86,6 @@ Item { anchors.centerIn: parent spacing: root.font.pointSize * 0.5 - // Mini avatar kör Rectangle { id: miniAvatarCircle width: root.font.pointSize * 1.6 @@ -159,7 +154,6 @@ Item { } } - // Felhasználónév Text { anchors.verticalCenter: parent.verticalCenter text: userSwitcher.selectedName @@ -170,14 +164,12 @@ Item { font.family: root.font.family } - // Nyíl ikon Text { anchors.verticalCenter: parent.verticalCenter text: "⌄" color: Qt.rgba(1, 1, 1, 0.70) font.pointSize: root.font.pointSize * 0.85 font.family: root.font.family - // Csak ha több user van, akkor látszik a nyíl visible: userModel.count > 1 rotation: popup.visible ? 180 : 0 @@ -190,12 +182,10 @@ Item { anchors.fill: parent hoverEnabled: true cursorShape: Qt.PointingHandCursor - // Csak akkor nyit popup-ot ha több felhasználó van onClicked: if (userModel.count > 1) { popup.visible ? popup.close() : popup.open() } } } - // ── Felhasználó-lista popup ─────────────────────────────────────────────── Popup { id: popup @@ -225,7 +215,6 @@ Item { border.width: root.font.pointSize * 0.08 } - // Fejléc Column { width: parent.width spacing: root.font.pointSize * 0.4 @@ -239,14 +228,12 @@ Item { bottomPadding: root.font.pointSize * 0.2 } - // Elválasztó vonal Rectangle { width: parent.width height: root.font.pointSize * 0.08 color: Qt.rgba(1, 1, 1, 0.12) } - // Felhasználók listája ListView { id: userList width: parent.width @@ -264,7 +251,6 @@ Item { height: root.font.pointSize * 4 radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) / 2 : root.font.pointSize * 0.6 - // Kiemelés: aktív felhasználó property bool isActive: index === userSwitcher.selectedIndex color: isActive ? Qt.rgba(1, 1, 1, 0.12) @@ -280,7 +266,6 @@ Item { anchors.leftMargin: root.font.pointSize * 0.7 spacing: root.font.pointSize * 0.8 - // Avatar kör Rectangle { id: delegateAvatarCircle width: root.font.pointSize * 3 @@ -336,7 +321,6 @@ Item { } } - // Felhasználónév Text { anchors.verticalCenter: parent.verticalCenter text: userSwitcher.getUserName(index) @@ -347,7 +331,6 @@ Item { } } - // Aktív jelző csík a bal oldalon Rectangle { visible: delegateRect.isActive width: root.font.pointSize * 0.23 diff --git a/raveos-sddm-theme/sddm-rave-theme/Main.qml b/raveos-sddm-theme/sddm-rave-theme/Main.qml index 10f8325..c938645 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Main.qml +++ b/raveos-sddm-theme/sddm-rave-theme/Main.qml @@ -177,7 +177,6 @@ Pane { id: virtualKeyboard source: "Components/VirtualKeyboard.qml" - // x * 0.4 = x / 2.5 width: config.KeyboardSize == "" ? parent.width * 0.4 : parent.width * config.KeyboardSize anchors.left: config.VirtualKeyboardPosition == "left" ? parent.left : undefined; anchors.horizontalCenter: config.VirtualKeyboardPosition == "center" ? parent.horizontalCenter : undefined; diff --git a/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf b/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf index cd2c870..d98e25e 100644 --- a/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf +++ b/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf @@ -1,75 +1,36 @@ [General] -#################### General #################### ScreenWidth="" ScreenHeight="" ScreenPadding="" Logo="Themes/logo.png" -# Default 0, Options: from 0 to min(screen width/2,screen height/2). UserAvatar="" -# Optional path to a specific user avatar image (e.g. "/usr/share/sddm/faces/user.face.icon" or relative to theme) DefaultAvatar="" -# Fallback avatar when no user-specific avatar is found. Font="Open Sans" FontSize="" -# Default is screen height divided by 80 (1080/80=13.5), Options: 0-inf. KeyboardSize="0.4" -# Default 0.4, Options 0.1-1.0 RoundCorners="" Locale="hu" -# Locale for data and time format. I suggest leaving it blank. HourFormat="HH:mm" -# Default Locale.ShortFormat. DateFormat="MMMM d dddd" -# Default Locale.LongFormat. HeaderText="" -# You can put somehting fun. -#################### Background #################### BackgroundPlaceholder="Backgrounds/rave_background.png" -# Must be a relative path. -# Background displayed before the actual background is loaded. -# Use only if the background is a video, otherwise leave blank. -# Connected with: Background. -# Background="Backgrounds/sddm_bg_animated.mp4" Background="Backgrounds/rave_background.png" -# Must be a relative path. -# Supports: png, jpg, jpeg, webp, gif, avi, mp4, mov, mkv, m4v, webm. BackgroundSpeed="" -# Default 1.0. Options: 0.0-10.0 (can go higher). -# Speed of animated wallpaper. -# Connected with: Background. PauseBackground="" -# Default false. -# If set to true, stops playback of gifs. Works only with gifs. -# Connected with: Background. LoopBackground="false" -# Default false. -# If set to true, loops video playback infinitely. When false, freezes on the last frame when video ends. -# Connected with: Background. DimBackground="0.0" -# Options: 0.0-1.0. -# Connected with: DimBackgroundColor CropBackground="true" -# Default false. -# Crop or fit background. -# Connected with: BackgroundHorizontalAlignment and BackgroundVerticalAlignment dosn't work when set to true. BackgroundHorizontalAlignment="center" -# Default: center, Options: left, center, right. -# Horizontal position of the background picture. -# Connected with: CropBackground must be set to false. BackgroundVerticalAlignment="center" -# Horizontal position of the background picture. -# Default: center, Options: bottom, center, top. -# Connected with: CropBackground must be set to false. -#################### Colors #################### HeaderTextColor="#ffffff" DateTextColor="#ffffff" @@ -109,32 +70,18 @@ HoverSystemButtonsIconsColor="#b7cef1" HoverSessionButtonTextColor="#b7cef1" HoverVirtualKeyboardButtonTextColor="#b7cef1" -#################### Form #################### PartialBlur="true" -# Default false. FullBlur="" -# Default false. -# If you use FullBlur I recommend setting BlurMax to 64 and Blur to 1.0. BlurMax="48" -# Default 48, Options: 2-64. -# Connected with: Blur. Blur="1.0" -# Default 1.0, Options: 0.0-1.0. -# Connected with: BlurMax. HaveFormBackground="false" -# Form background is transparent if set to false. -# Connected with: PartialBlur and BackgroundColor. FormPosition="right" -# Default: left, Options: left, center, right. -#################### Virtual Keyboard #################### VirtualKeyboardPosition="left" -# Default: left, Options: left, center, right. -#################### Interface Behavior #################### HideKeyboardLayout="true" HideVirtualKeyboard="false" @@ -142,23 +89,14 @@ HideSystemButtons="false" HideLoginButton="false" ForceLastUser="true" -# If set to true last successfully logged in user appeares automatically in the username field. PasswordFocus="true" -# Automaticaly focuses password field. HideCompletePassword="true" -# Hides the password while typing. AllowEmptyPassword="false" -# Enable login for users without a password. AllowUppercaseLettersInUsernames="false" -# Do not change this! Uppercase letters are generally not allowed in usernames. This option is only for systems that differ from this standard! BypassSystemButtonsChecks="false" -# Skips checking if sddm can perform shutdown, restart, suspend or hibernate, always displays all system buttons. RightToLeftLayout="false" -# Revert the layout either because you would like the login to be on the right hand side or SDDM won't respect your language locale for some reason. This will reverse the current position of FormPosition if it is either left or right and in addition position some smaller elements on the right hand side of the form itself (also when FormPosition is set to center). -#################### Translation #################### -# These don't necessarily need to translate anything. You can enter whatever you want here. TranslatePlaceholderUsername="" TranslatePlaceholderPassword="" TranslateLogin="" diff --git a/raveos-support/PKGBUILD b/raveos-support/PKGBUILD index 556ad74..aeffdec 100644 --- a/raveos-support/PKGBUILD +++ b/raveos-support/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-support pkgver=1.0.0 -pkgrel=2 +pkgrel=3 pkgdesc="RaveOS Support launcher (opens the support page in the browser)" arch=('any') url="https://git.rp1.hu/RaveOS/RaveOS-PKGBUILD" diff --git a/raveos-support/raveos-support b/raveos-support/raveos-support index e8031db..645d2f9 100755 --- a/raveos-support/raveos-support +++ b/raveos-support/raveos-support @@ -1,6 +1,5 @@ #!/usr/bin/env bash -# RaveOS Support - opens the support page in the default browser. URL="https://ko-fi.com/raveteam" diff --git a/raveos-tools/PKGBUILD b/raveos-tools/PKGBUILD index 5197065..03d6cae 100644 --- a/raveos-tools/PKGBUILD +++ b/raveos-tools/PKGBUILD @@ -1,7 +1,8 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveos-tools pkgver=1.0.0 -pkgrel=11 +pkgrel=12 +pkgdesc="RaveOS tools and helper scripts" arch=('any') url="https://git.rp1.hu/RaveOS/RaveOS-PKGBUILD" license=('custom') diff --git a/raveos-updater/PKGBUILD b/raveos-updater/PKGBUILD index 239f96d..7c795c1 100644 --- a/raveos-updater/PKGBUILD +++ b/raveos-updater/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-updater pkgver=1.0.0 -pkgrel=2 +pkgrel=3 pkgdesc="RaveOS update checker background service and tray indicator" arch=('any') url="https://git.rp1.hu/RaveOS" diff --git a/raveos-updater/raveos-updater b/raveos-updater/raveos-updater index ad0c142..ebbb8e3 100644 --- a/raveos-updater/raveos-updater +++ b/raveos-updater/raveos-updater @@ -88,8 +88,6 @@ class Updater: self.tray.setContextMenu(self.menu) self.refresh() self.tray.show() - # Qt6 SNI: a tálca-ikon regisztrációjához legalább egy esemény-hurok - # iteráció kell, különben GNOME-on nem jelenik meg az ikon. self.app.processEvents() self.timer = QTimer() diff --git a/raveos-welcome/PKGBUILD b/raveos-welcome/PKGBUILD index 85f62b5..3ed1301 100644 --- a/raveos-welcome/PKGBUILD +++ b/raveos-welcome/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveos-welcome pkgver=2.2.2 -pkgrel=8 +pkgrel=9 pkgdesc="RaveOS Welcome Application and Safe GPU Performance Optimizer" arch=('x86_64') url="https://git.rp1.hu/RaveOS/RaveOS-PKGBUILD" @@ -34,7 +34,6 @@ package() { find "${pkgdir}/usr/share/raveos-welcome/brave-profile" -type f -exec chmod 644 {} + fi - # Safe GPU Performance Optimizer & Systemd/Udev Units [ -f "${startdir}/raveos-gpu-optimizer.sh" ] && install -Dm755 "${startdir}/raveos-gpu-optimizer.sh" "${pkgdir}/usr/bin/raveos-gpu-optimizer" [ -f "${startdir}/gpu-optimization.service" ] && install -Dm644 "${startdir}/gpu-optimization.service" "${pkgdir}/usr/lib/systemd/system/gpu-optimization.service" [ -f "${startdir}/99-gpu-monitor.rules" ] && install -Dm644 "${startdir}/99-gpu-monitor.rules" "${pkgdir}/etc/udev/rules.d/99-gpu-monitor.rules" diff --git a/raveos-welcome/gaming-optimize.sh b/raveos-welcome/gaming-optimize.sh index a4c846a..ef9aaf5 100755 --- a/raveos-welcome/gaming-optimize.sh +++ b/raveos-welcome/gaming-optimize.sh @@ -1,5 +1,4 @@ #!/bin/bash -# RaveOS Gaming Optimization Helper - fut root-ként pkexec-en keresztül set -uo pipefail LOGDIR="/var/log/raveos-welcome" @@ -51,7 +50,6 @@ EOF udevadm control --reload-rules 2>/dev/null || true udevadm trigger --subsystem-match=block --action=change 2>/dev/null || true - # azonnali alkalmazas is, ne csak legkozelebbi boot/hotplug-kor for sched in /sys/block/*/queue/scheduler; do [ -f "$sched" ] || continue dev="${sched%/queue/scheduler}" @@ -147,9 +145,6 @@ apply_amd_overdrive() { } apply_brave() { - # brave-origin-bin kesz binariskent elerheto a chaotic-aur repoban, - # nincs szukseg yay/AUR buildre (ami korabban lefagyott a PKGBUILD-diff - # promptnal, mert a --noconfirm azt nem nemitja el). if pacman -S --noconfirm --needed brave-origin-bin; then echo "[OK] brave-origin telepitve" return 0 @@ -159,9 +154,6 @@ apply_brave() { } restore_brave_profile() { - # Brave Origin a binarisba egetett "BraveSoftware/Brave-Origin" mappat - # hasznalja (nem "Brave-Browser", mint a rendes Brave) - strings-szel - # ellenorizve az /opt/brave-origin-bin/brave binariban. local src="/usr/share/raveos-welcome/brave-profile/config/BraveSoftware/Brave-Browser" if [ ! -d "$src" ]; then echo "[FAIL] brave_profile: forras profil nem talalhato ($src)" diff --git a/raveos-welcome/raveos-gpu-optimizer.sh b/raveos-welcome/raveos-gpu-optimizer.sh index e24285a..3a429f6 100644 --- a/raveos-welcome/raveos-gpu-optimizer.sh +++ b/raveos-welcome/raveos-gpu-optimizer.sh @@ -1,10 +1,7 @@ #!/usr/bin/env bash -# RaveOS Safe GPU Performance Optimizer & Stutter Preventer -# Prevents P-state lock lag, Wayland compositor micro-stuttering, and thermal throttling drops. set -euo pipefail -# Root check if [[ $EUID -ne 0 ]]; then echo "[RaveOS-GPU] Error: Root permissions required." >&2 exit 1 @@ -14,32 +11,26 @@ log() { echo "[RaveOS-GPU] $1" } -# 1. AMD GPU Optimization (Auto P-State + Smooth Power Cap) optimize_amd() { log "Optimizing AMD GPU acceleration without P-state locking..." for card in /sys/class/drm/card*/device; do if [ -f "$card/power_dpm_force_performance_level" ]; then - # Use 'auto' instead of rigid 'high' to prevent mouse lag and compositor stutter echo "auto" > "$card/power_dpm_force_performance_level" 2>/dev/null || true fi done } -# 2. NVIDIA GPU Optimization (Adaptive PowerMizer + Smooth TDP Limit) optimize_nvidia() { if command -v nvidia-smi &>/dev/null; then log "Optimizing NVIDIA GPU (Adaptive PowerMizer mode)..." - # Auto-boost enabled, avoiding forced clock lock that breaks PCIe ASPM nvidia-smi --auto-boost-default=ENABLED 2>/dev/null || true if command -v nvidia-settings &>/dev/null && [ -n "${DISPLAY:-}" ]; then - # Set PowerMizer to Auto/Adaptive (0) instead of max performance (1) to prevent compositor stutter nvidia-settings -a "[gpu:0]/GpuPowerMizerMode=0" 2>/dev/null || true fi fi } -# Main Execution main() { log "Starting safe GPU optimization..." diff --git a/raveos-welcome/raveos_welcome.py b/raveos-welcome/raveos_welcome.py index 7aa55c3..08b9bed 100644 --- a/raveos-welcome/raveos_welcome.py +++ b/raveos-welcome/raveos_welcome.py @@ -29,7 +29,6 @@ from PyQt6.QtGui import ( from PyQt6.QtWidgets import QProxyStyle, QStyle from PyQt6.QtSvgWidgets import QSvgWidget -# ─── Constants ──────────────────────────────────────────────────────────────── FLAG_FILE = Path.home() / ".config" / "raveos" / ".welcome_done" APP_INSTALLER = "/usr/bin/raveos-app-installer" @@ -52,7 +51,6 @@ COLORS = { "error": "#e74c3c", } -# ─── Translations ───────────────────────────────────────────────────────────── def _detect_system_lang(): """Kezdőnyelv a rendszer locale alapján (hu/de, egyébként en).""" @@ -69,17 +67,14 @@ def _detect_system_lang(): _current_lang = _detect_system_lang() T = { - # Nav "nav_back": {"hu": "← Vissza", "de": "← Zurück", "en": "← Back"}, "nav_next": {"hu": "Tovább →", "de": "Weiter →", "en": "Next →"}, - # Step bar "step_welcome": {"hu": "ÜDVÖZLÉS", "de": "WILLKOMMEN", "en": "WELCOME"}, "step_network": {"hu": "HÁLÓZAT", "de": "NETZWERK", "en": "NETWORK"}, "step_optimize": {"hu": "OPTIMALIZÁCIÓ", "de": "OPTIMIERUNG", "en": "OPTIMIZE"}, "step_hyprland": {"hu": "HYPRLAND", "de": "HYPRLAND", "en": "HYPRLAND"}, "step_credits": {"hu": "KÖZREMŰKÖDŐK", "de": "MITWIRKENDE", "en": "CREDITS"}, "step_finish": {"hu": "BEFEJEZÉS", "de": "ABSCHLUSS", "en": "FINISH"}, - # Welcome page "welcome_tag": {"hu": "LINUX DISTRIBUTION", "de": "LINUX DISTRIBUTION", "en": "LINUX DISTRIBUTION"}, "welcome_about": {"hu": "RaveOS finomhangolás, kulcsra kész állapot!", "de": "RaveOS optimiert, startklar!", @@ -94,7 +89,6 @@ T = { "feat_apps": {"hu": "App Installer\negy kattintás, minden szoftver", "de": "App Installer\nein Klick, alle Software", "en": "App Installer\none click, all software"}, - # WiFi page "wifi_title": {"hu": "HÁLÓZAT", "de": "NETZWERK", "en": "NETWORK"}, "wifi_subtitle": {"hu": "WiFi kapcsolat", "de": "WLAN-Verbindung", "en": "WiFi connection"}, "wifi_scan": {"hu": "Frissítés", "de": "Aktualisieren", "en": "Refresh"}, @@ -111,7 +105,6 @@ T = { "wifi_error": {"hu": "Hiba: {err}", "de": "Fehler: {err}", "en": "Error: {err}"}, "wifi_timeout": {"hu": "Időtúllépés - próbáld újra","de": "Zeitüberschreitung - bitte erneut versuchen", "en": "Timeout - try again"}, "wifi_unknown_err": {"hu": "Ismeretlen hiba", "de": "Unbekannter Fehler", "en": "Unknown error"}, - # Optimize page "opt_title": {"hu": "OPTIMALIZÁCIÓ", "de": "OPTIMIERUNG", "en": "OPTIMIZATION"}, "opt_gaming": {"hu": "GAMING OPTIMALIZÁCIÓ - GPU: {gpu}", "de": "GAMING-OPTIMIERUNG - GPU: {gpu}", "en": "GAMING OPTIMIZATION - GPU: {gpu}"}, "opt_sysctl": {"hu": "Kernel/sysctl tweaks", @@ -218,11 +211,9 @@ T = { "opt_reboot_needed": {"hu": "A GPU optimalizációk érvénybe lépéséhez a számítógépet újra kell indítani!", "de": "Für die GPU-Optimierungen ist ein Neustart erforderlich!", "en": "A reboot is required for GPU optimizations to take effect!"}, - # Hyprland page "hypr_title": {"hu": "HYPRLAND - KEYBINDS", "de": "HYPRLAND - TASTENKÜRZEL", "en": "HYPRLAND - KEYBINDS"}, "hypr_source": {"hu": "Forrás: ", "de": "Quelle: ", "en": "Source: "}, "hypr_none": {"hu": "Nem található Hyprland konfiguráció.", "de": "Keine Hyprland-Konfiguration gefunden.", "en": "No Hyprland configuration found."}, - # Hyprland descriptions "hypr_spotlight": {"hu": "Spotlight (DMS) megnyitása", "de": "Spotlight (DMS) öffnen", "en": "Open Spotlight (DMS)"}, "hypr_terminal": {"hu": "Terminál megnyitása (Kitty)", "de": "Terminal öffnen (Kitty)", "en": "Open terminal (Kitty)"}, "hypr_filemanager": {"hu": "Fájlkezelő megnyitása (Thunar)", "de": "Dateimanager öffnen (Thunar)", "en": "Open file manager (Thunar)"}, @@ -260,7 +251,6 @@ T = { "hypr_layout": {"hu": "Layout: {p}", "de": "Layout: {p}", "en": "Layout: {p}"}, "hypr_run": {"hu": "Futtatás: {prog}", "de": "Ausführen: {prog}", "en": "Run: {prog}"}, "hypr_run_generic": {"hu": "Program futtatása", "de": "Programm ausführen", "en": "Run program"}, - # Credits page "credits_title": {"hu": "KÖZREMŰKÖDŐK", "de": "MITWIRKENDE", "en": "CONTRIBUTORS"}, "credits_rp1_name": {"hu": "RavePriest1", "de": "RavePriest1", "en": "RavePriest1"}, "credits_rp1_role": {"hu": "Névadó, hivatalos naplopó", "de": "Namensgeber, offizieller Faulenzer", "en": "Namesake, official slacker"}, @@ -274,7 +264,6 @@ T = { "credits_stefi_name": {"hu": "Stefi", "de": "Stefi", "en": "Stefi"}, "credits_stefi_role": {"hu": "Design", "de": "Design", "en": "Design"}, "credits_stefi_desc": {"hu": "5000 lesz!", "de": "Das macht 5000!", "en": "That'll be 5000!"}, - # Finish page "finish_ok": {"hu": "OK", "de": "OK", "en": "OK"}, "finish_title": {"hu": "KÉSZ!", "de": "FERTIG!", "en": "DONE!"}, "finish_sub": {"hu": "A RaveOS be van állítva.", "de": "RaveOS ist eingerichtet.", "en": "RaveOS is set up."}, @@ -289,7 +278,6 @@ T = { "finish_close": {"hu": "Bezárás", "de": "Schließen", "en": "Close"}, "finish_install_missing": {"hu": "Nem található az App Installer.", "de": "App Installer nicht gefunden.", "en": "App Installer not found."}, "finish_install_err": {"hu": "Nem sikerült elindítani. Napló: {log}", "de": "Start fehlgeschlagen. Protokoll: {log}", "en": "Failed to launch. Log: {log}"}, - # Tooltip keys (for optimize page descriptions that use _ACTION_DESCS) "action_killactive": {"hu": "Aktív ablak bezárása", "de": "Aktives Fenster schließen", "en": "Close active window"}, "action_togglefloat": {"hu": "Lebegő mód ki/be", "de": "Schwebenden Modus umschalten", "en": "Toggle floating mode"}, "action_pseudo": {"hu": "Pseudo-tiling ki/be", "de": "Pseudo-Tiling umschalten", "en": "Toggle pseudo-tiling"}, @@ -477,7 +465,6 @@ QToolTip {{ }} """ -# ─── WiFi Worker ─────────────────────────────────────────────────────────────── class WiFiScanner(QThread): result = pyqtSignal(list) @@ -537,7 +524,6 @@ class WiFiConnector(QThread): self.failure.emit(str(e)) -# ─── Logo Widget ─────────────────────────────────────────────────────────────── def _find_svg() -> str: if Path(SVG_LOGO).exists(): @@ -574,7 +560,6 @@ class RaveLogo(QWidget): layout.addWidget(fallback) -# ─── WiFi page visibility check ─────────────────────────────────────────────── def _should_show_wifi() -> bool: try: @@ -599,7 +584,6 @@ def _should_show_wifi() -> bool: return has_wifi -# ─── Signal bar helper ───────────────────────────────────────────────────────── def signal_icon(signal: int) -> str: if signal >= 80: return "▂▄▆█" @@ -614,7 +598,6 @@ def security_tag(sec: str) -> str: return _t("wifi_encrypted") -# ─── Page 1: Welcome ─────────────────────────────────────────────────────────── class WelcomePage(QWidget): def __init__(self): @@ -626,7 +609,6 @@ class WelcomePage(QWidget): lay.setContentsMargins(60, 40, 60, 40) lay.setSpacing(0) - # Logo logo = RaveLogo() lay.addWidget(logo, alignment=Qt.AlignmentFlag.AlignHCenter) lay.addSpacing(10) @@ -653,7 +635,6 @@ class WelcomePage(QWidget): lay.addWidget(sep) lay.addSpacing(24) - # About card card = QFrame() card.setObjectName("card") card_lay = QVBoxLayout(card) @@ -699,7 +680,6 @@ class WelcomePage(QWidget): lay.addWidget(card) lay.addSpacing(18) - # Community links links_row1 = QHBoxLayout() links_row1.setSpacing(8) links_row2 = QHBoxLayout() @@ -754,7 +734,6 @@ class WelcomePage(QWidget): subprocess.Popen(["xdg-open", url]) -# ─── Page 2: WiFi ────────────────────────────────────────────────────────────── class WiFiPage(QWidget): def __init__(self): @@ -798,7 +777,6 @@ class WiFiPage(QWidget): self.list.itemClicked.connect(self._on_select) lay.addWidget(self.list) - # Password field self.pw_frame = QFrame() pw_lay = QVBoxLayout(self.pw_frame) pw_lay.setContentsMargins(0, 0, 0, 0) @@ -816,13 +794,11 @@ class WiFiPage(QWidget): self.pw_frame.setVisible(False) lay.addWidget(self.pw_frame) - # Status self.status_label = QLabel("") self.status_label.setObjectName("body") self.status_label.setAlignment(Qt.AlignmentFlag.AlignCenter) lay.addWidget(self.status_label) - # Connect button self.connect_btn = QPushButton(_t("wifi_connect")) self.connect_btn.setObjectName("primary") self.connect_btn.setEnabled(False) @@ -912,13 +888,10 @@ class WiFiPage(QWidget): self.connect_btn.setEnabled(True) -# ─── Hyprland Detection ─────────────────────────────────────────────────────── HYPR_CONFIG = Path.home() / ".config" / "hypr" / "hyprland.conf" _HYPR_FALLBACK = Path("/usr/share/raveos/hyprland-theme/theme-data/hypr/hyprland.conf") -# Hyprland 0.55+ Lua config mod (RaveOS ezt hasznalja alapertelmezetten, -# nincs is hagyomanyos hyprland.conf a rendszeren) HYPR_KEYBINDS_LUA = Path.home() / ".config" / "hypr" / "config" / "keybinds.lua" _HYPR_KEYBINDS_LUA_FALLBACK = Path( "/usr/share/raveos/hyprland-theme/theme-data/hypr/config/keybinds.lua" @@ -1111,10 +1084,6 @@ def _parse_hypr_binds(config_path: Path) -> list: return binds -# ─── Hyprland Lua config parser (keybinds.lua, hl.bind(...) hivasok) ───────── -# Best-effort parser: nem valodi Lua interpreter, csak a RaveOS keybinds.lua -# tipikus mintait (hl.bind("KEY", hl.dsp.xxx(...)), local string valtozok, -# egyszeru "for i = a, b do ... end" munkaterulet-ciklusok) ismeri fel. def _lua_extract_call(line: str, funcname: str): marker = funcname + "(" @@ -1268,8 +1237,6 @@ def _lua_try_add_bind(line: str, env: dict, binds: list): return combo = _fmt_key(combo_raw) - # ciklus-valtozok (pl. workspace = i) behelyettesitese a dispatcher - # kifejezesbe is, hogy a leiras a tenyleges munkaterulet-szamot mutassa dispatch_expr = args[1] for name, value in env.items(): if isinstance(value, int): @@ -1342,7 +1309,6 @@ def _parse_hypr_binds_lua(path: Path) -> list: return binds -# ─── Page: Hyprland Keybinds ───────────────────────────────────────────────── class HyprlandPage(QWidget): def __init__(self): @@ -1351,8 +1317,6 @@ class HyprlandPage(QWidget): self._binds = _parse_hypr_binds(cfg) self._cfg_path = cfg if not self._binds: - # nincs hagyomanyos hyprland.conf (vagy nincs benne bind sor) - - # a RaveOS Hyprland 0.55+ Lua config modot hasznalja lua_cfg = HYPR_KEYBINDS_LUA if HYPR_KEYBINDS_LUA.exists() else _HYPR_KEYBINDS_LUA_FALLBACK lua_binds = _parse_hypr_binds_lua(lua_cfg) if lua_binds: @@ -1439,7 +1403,6 @@ class HyprlandPage(QWidget): self.msg.setText(_t("hypr_none")) -# ─── GPU Detection ──────────────────────────────────────────────────────────── def _detect_gpu() -> tuple[str, str]: gpu_type = "other" @@ -1570,7 +1533,6 @@ def _detect_gpu() -> tuple[str, str]: return gpu_type, gpu_label -# ─── Page 3: Optimize ────────────────────────────────────────────────────────── OPTIMIZE_SCRIPT = "/usr/share/raveos-welcome/gaming-optimize.sh" OPTIMIZE_LOG = "/var/log/raveos-welcome/gaming-optimize.log" @@ -1623,7 +1585,6 @@ class OptimizePage(QWidget): vlay.setContentsMargins(0, 0, 8, 0) vlay.setSpacing(4) - # --- Gaming optimization --- self.sec1 = QLabel(_t("opt_gaming", gpu=self._gpu_label)) self.sec1.setObjectName("section_title") vlay.addWidget(self.sec1) @@ -1655,7 +1616,6 @@ class OptimizePage(QWidget): scroll.setWidget(inner) lay.addWidget(scroll, 1) - # Status + gomb self.status_lbl = QLabel("") self.status_lbl.setObjectName("body") self.status_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter) @@ -1748,7 +1708,6 @@ class OptimizePage(QWidget): self.status_lbl.setText(_t("opt_apply_err", code=exit_code, log=OPTIMIZE_LOG)) -# ─── Page 4: Credits ────────────────────────────────────────────────────────── class CreditsPage(QWidget): def __init__(self): @@ -1827,7 +1786,6 @@ class CreditsPage(QWidget): desc_lbl.setText(_t(desc_key)) -# ─── Page 5: Finish ──────────────────────────────────────────────────────────── class FinishPage(QWidget): launch_installer = pyqtSignal() @@ -1868,7 +1826,6 @@ class FinishPage(QWidget): lay.addWidget(sep) lay.addSpacing(24) - # App installer CTA card card = QFrame() card.setObjectName("card") card_lay = QVBoxLayout(card) @@ -1930,7 +1887,6 @@ class FinishPage(QWidget): self.install_status.setVisible(True) -# ─── Main Window ─────────────────────────────────────────────────────────────── class RaveOSWelcome(QMainWindow): def __init__(self): @@ -1955,15 +1911,12 @@ class RaveOSWelcome(QMainWindow): root.setContentsMargins(0, 0, 0, 0) root.setSpacing(0) - # Step indicator bar self.step_bar = self._make_step_bar() root.addWidget(self.step_bar) - # Page container self.stack = QStackedWidget() root.addWidget(self.stack, stretch=1) - # Pages self.p_welcome = WelcomePage() self.p_optimize = OptimizePage() self.p_credits = CreditsPage() @@ -1980,12 +1933,10 @@ class RaveOSWelcome(QMainWindow): self.stack.addWidget(self.p_credits) self.stack.addWidget(self.p_finish) - # Nav buttons nav = QHBoxLayout() nav.setContentsMargins(24, 10, 24, 18) nav.setSpacing(12) - # Language selector (bottom-left) self.lang_hu_btn = QPushButton("Magyar") self.lang_hu_btn.setObjectName("lang_btn") self.lang_hu_btn.setFixedHeight(30) @@ -2185,11 +2136,6 @@ class RaveOSWelcome(QMainWindow): os.environ.get("XDG_CURRENT_DESKTOP", "").lower() == "hyprland" if is_hyprland: - # Hyprland 0.55+ Lua config mod alatt a hagyomanyos - # "hyprctl dispatch exec <parancs>" szintaxis mar nem mukodik, - # csak a hl.dsp.exec_cmd("...") Lua hivas - de a regi .conf - # alapu Hyprland telepiteseken meg a regi szintaxis a jo, ezert - # eloszor azt probaljuk, es csak hiba eseten valtunk Lua-ra. result = subprocess.run( ["hyprctl", "dispatch", "exec", cmd], capture_output=True, text=True @@ -2227,7 +2173,6 @@ class RaveOSWelcome(QMainWindow): QTimer.singleShot(1200, _check) -# ─── Flag helpers ────────────────────────────────────────────────────────────── def _flag_exists() -> bool: return FLAG_FILE.exists() @@ -2237,7 +2182,6 @@ def _write_flag(): FLAG_FILE.touch() -# ─── Fast tooltip style ──────────────────────────────────────────────────────── class _FastTooltipStyle(QProxyStyle): def styleHint(self, hint, option=None, widget=None, returnData=None): @@ -2248,7 +2192,6 @@ class _FastTooltipStyle(QProxyStyle): return super().styleHint(hint, option, widget, returnData) -# ─── Entry point ─────────────────────────────────────────────────────────────── def main(): if _flag_exists() and "--force" not in sys.argv: diff --git a/raveswitch/PKGBUILD b/raveswitch/PKGBUILD index e7de60d..ba43297 100644 --- a/raveswitch/PKGBUILD +++ b/raveswitch/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: nippy <nippy@tuta.io> pkgname=raveswitch pkgver=0.4.1 -pkgrel=7 +pkgrel=8 pkgdesc="A modern GTK4-based window switcher and application launcher for Hyprland" arch=('x86_64' 'aarch64') conflicts=('hyprshell') @@ -11,20 +11,18 @@ license=("MIT") makedepends=('cargo' 'git') optdepends=('org.freedesktop.secrets: Store clipboard encryption in the keyring') depends=('hyprland' 'gtk4-layer-shell' 'gtk4' 'libadwaita' 'zstd') -source=("hyprland_raveswitch::git+ssh://git@git.rp1.hu/gabeszm/hyprland_raveswitch.git") +source=("hyprland_raveswitch::git+https://git.rp1.hu/gabeszm/hyprland_raveswitch.git") sha256sums=('SKIP') prepare() { export RUSTUP_TOOLCHAIN=stable cd hyprland_raveswitch - # Ensure dep-crates and crates contain stub README.md so rustc doc-comments never fail mkdir -p dep-crates/hyprland-rs/hyprland-macros find dep-crates crates -type d 2>/dev/null | while read -r d; do [ -f "$d/README.md" ] || echo "# vendored module" > "$d/README.md" done - # Ensure assets directory and logo.png exist mkdir -p assets if [ ! -f assets/logo.png ]; then if [ -f assets/raveicon.png ]; then |