diff --git a/.gitignore b/.gitignore
index 82f2650..1aeebc3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,10 @@ release/**
# Native capture build artifacts
electron/native/wgc-capture/build/
electron/native/cursor-monitor/build/
+
+# Arch packaging (makepkg)
+packaging/arch/src/
+packaging/arch/pkg/
+packaging/arch/*.pkg.tar.zst
+packaging/arch/*.pkg.tar.xz
+packaging/arch/*.AppImage
diff --git a/README.md b/README.md
index 1ec1873..125afce 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@ Language: EN | [简中](README.zh-CN.md)
+
### Create polished, pro-grade screen recordings.
@@ -132,6 +133,28 @@ https://github.com/webadderall/Recordly/releases
---
+## Arch Linux / Manjaro (yay)
+
+From the AUR:
+
+```bash
+yay -S recordly-bin
+```
+
+Or build and install from this repo:
+
+```bash
+git clone https://github.com/webadderall/Recordly.git && cd Recordly/packaging/arch && makepkg -si
+```
+
+From the repo root you can run `npm run package:arch` instead.
+
+**Local build from source** (installs as `recordly-bin-local` / “Recordly (Local)” alongside the AUR package): from the repo root run `npm run install:linux`. This builds the Linux AppImage, copies it to `packaging/arch/`, and runs `makepkg -p PKGBUILD.from-source -si` so you get a system package without downloading the release binary.
+
+The same PKGBUILD lives in this repo under `packaging/arch/`. AUR publishing and release-triggered updates are handled by the [recordly-aur](https://github.com/firtoz/recordly-aur) helper repo. For AUR-specific issues or the current maintainer, see the [recordly-bin AUR page](https://aur.archlinux.org/packages/recordly-bin).
+
+---
+
## Build from source
```bash
diff --git a/package.json b/package.json
index a00e9fc..e25ec48 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,8 @@
"build:mac": "npm run build:platform-native-helpers && tsc && vite build && electron-builder --mac",
"build:win": "npm run build:platform-native-helpers && tsc && vite build && electron-builder --win",
"build:linux": "npm run build:platform-native-helpers && tsc && vite build && electron-builder --linux",
+ "install:linux": "npm run build:linux && cp release/Recordly.AppImage packaging/arch/Recordly-linux-x64.AppImage && (cd packaging/arch && makepkg -p PKGBUILD.from-source -si)",
+ "package:arch": "cd packaging/arch && makepkg -si",
"i18n:check": "node scripts/i18n-check.mjs",
"test": "vitest --run",
"test:watch": "vitest"
diff --git a/packaging/arch/.SRCINFO b/packaging/arch/.SRCINFO
new file mode 100644
index 0000000..0aa4ac5
--- /dev/null
+++ b/packaging/arch/.SRCINFO
@@ -0,0 +1,17 @@
+pkgbase = recordly-bin
+ pkgdesc = Open-source screen recorder and editor with auto-zoom, cursor effects, and polished video export
+ pkgver = 1.0.9
+ pkgrel = 1
+ url = https://github.com/webadderall/Recordly
+ arch = x86_64
+ license = MIT
+ depends = fuse2
+ options = !strip
+ source = https://github.com/webadderall/Recordly/releases/download/v1.0.9/Recordly-linux-x64.AppImage
+ source = recordly.desktop
+ source = https://raw.githubusercontent.com/webadderall/Recordly/main/LICENSE
+ sha256sums = 09ec420d9101d2e256eb3539fe7688fe6bdd60c47c313b53b9d7e5198cddd0f5
+ sha256sums = SKIP
+ sha256sums = ebd7d285818a531c49145a2e429b2cfc6dad9f3292263cf33aedfb0b23ebdac9
+
+pkgname = recordly-bin
diff --git a/packaging/arch/LICENSE b/packaging/arch/LICENSE
new file mode 100644
index 0000000..9535dc5
--- /dev/null
+++ b/packaging/arch/LICENSE
@@ -0,0 +1,12 @@
+Copyright (C) 2025 by the AUR package maintainer(s).
+
+Permission to use, copy, modify, and/or distribute this packaging (PKGBUILD and
+associated files) for any purpose with or without fee is hereby granted.
+
+THE PACKAGING IS PROVIDED "AS IS" AND THE AUTHOR(S) DISCLAIM ALL WARRANTIES
+WITH REGARD TO THIS PACKAGING INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS PACKAGING.
diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD
new file mode 100644
index 0000000..294631d
--- /dev/null
+++ b/packaging/arch/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: firtoz
+# Upstream: https://github.com/webadderall/Recordly
+
+pkgname=recordly-bin
+pkgver=1.0.9
+pkgrel=1
+pkgdesc="Open-source screen recorder and editor with auto-zoom, cursor effects, and polished video export"
+arch=(x86_64)
+url="https://github.com/webadderall/Recordly"
+license=(MIT)
+depends=(fuse2)
+source=(
+ "https://github.com/webadderall/Recordly/releases/download/v${pkgver}/Recordly-linux-x64.AppImage"
+ "recordly.desktop"
+ "https://raw.githubusercontent.com/webadderall/Recordly/main/LICENSE"
+)
+sha256sums=(
+ '09ec420d9101d2e256eb3539fe7688fe6bdd60c47c313b53b9d7e5198cddd0f5' # AppImage v${pkgver}
+ 'SKIP'
+ 'ebd7d285818a531c49145a2e429b2cfc6dad9f3292263cf33aedfb0b23ebdac9' # Upstream MIT LICENSE
+)
+options=(!strip)
+
+package() {
+ install -d "$pkgdir/opt/recordly"
+ install -Dm755 "$srcdir/Recordly-linux-x64.AppImage" "$pkgdir/opt/recordly/Recordly.AppImage"
+
+ install -d "$pkgdir/usr/bin"
+ cat > "$pkgdir/usr/bin/recordly" << 'EOF'
+#!/bin/sh
+exec /opt/recordly/Recordly.AppImage "$@"
+EOF
+ chmod 755 "$pkgdir/usr/bin/recordly"
+
+ install -Dm644 "$srcdir/recordly.desktop" "$pkgdir/usr/share/applications/dev.recordly.app.desktop"
+ install -Dm644 "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+
+ # Extract icons from AppImage so Icon=dev.recordly.app in the .desktop resolves
+ cd "$srcdir"
+ chmod +x Recordly-linux-x64.AppImage
+ ./Recordly-linux-x64.AppImage --appimage-extract
+ for size in 16 24 32 48 64 128 256 512 1024; do
+ src="squashfs-root/usr/share/icons/hicolor/${size}x${size}/apps/recordly.png"
+ if [ -f "$src" ]; then
+ install -Dm644 "$src" "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/dev.recordly.app.png"
+ fi
+ done
+ rm -rf squashfs-root
+}
diff --git a/packaging/arch/PKGBUILD.from-source b/packaging/arch/PKGBUILD.from-source
new file mode 100644
index 0000000..46595f4
--- /dev/null
+++ b/packaging/arch/PKGBUILD.from-source
@@ -0,0 +1,44 @@
+# Build-from-source: npm run build:linux && npm run package:arch copies release/Recordly.AppImage here as Recordly-linux-x64.AppImage, then makepkg -p PKGBUILD.from-source -si
+# Installs as recordly-bin-local (separate from recordly-bin) so both can coexist.
+pkgname=recordly-bin-local
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="Recordly screen recorder (local build from source)"
+arch=(x86_64)
+url="https://github.com/webadderall/Recordly"
+license=(MIT)
+depends=(fuse2)
+source=(
+ "Recordly-linux-x64.AppImage"
+ "recordly-local.desktop"
+)
+sha256sums=(
+ SKIP
+ SKIP
+)
+options=(!strip)
+
+package() {
+ install -d "$pkgdir/opt/recordly-local"
+ install -Dm755 "$srcdir/Recordly-linux-x64.AppImage" "$pkgdir/opt/recordly-local/Recordly.AppImage"
+
+ install -d "$pkgdir/usr/bin"
+ cat > "$pkgdir/usr/bin/recordly-local" << 'EOF'
+#!/bin/sh
+exec /opt/recordly-local/Recordly.AppImage "$@"
+EOF
+ chmod 755 "$pkgdir/usr/bin/recordly-local"
+
+ install -Dm644 "$srcdir/recordly-local.desktop" "$pkgdir/usr/share/applications/dev.recordly.app.local.desktop"
+
+ cd "$srcdir"
+ chmod +x Recordly-linux-x64.AppImage
+ ./Recordly-linux-x64.AppImage --appimage-extract
+ for size in 16 24 32 48 64 128 256 512 1024; do
+ src="squashfs-root/usr/share/icons/hicolor/${size}x${size}/apps/recordly.png"
+ if [ -f "$src" ]; then
+ install -Dm644 "$src" "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/dev.recordly.app.local.png"
+ fi
+ done
+ rm -rf squashfs-root
+}
diff --git a/packaging/arch/README.md b/packaging/arch/README.md
new file mode 100644
index 0000000..eb5a3cb
--- /dev/null
+++ b/packaging/arch/README.md
@@ -0,0 +1,47 @@
+# Arch Linux / AUR packaging for Recordly
+
+This directory is the **canonical** source for Arch packaging. It contains the PKGBUILD and helper files for installing Recordly on Arch Linux and Manjaro (via the AUR or locally with `makepkg`). Upstream keeps these files in sync with release behaviour (AppImage name, desktop entries, icon paths). AUR publishing and automation (e.g. pushing to `aur.archlinux.org`) are handled externally by the AUR maintainer; see the [AUR package page](https://aur.archlinux.org/packages/recordly-bin) and the [recordly-aur](https://github.com/firtoz/recordly-aur) helper repo.
+
+For issues or update requests about the **recordly-bin** AUR package, see the [AUR package page](https://aur.archlinux.org/packages/recordly-bin) for the current maintainer.
+
+## Build and install from this repo
+
+```bash
+cd packaging/arch
+makepkg -si
+```
+
+From the repo root you can run `npm run package:arch` instead.
+
+## Local build from source
+
+To install a **local build** as `recordly-bin-local` (shows as "Recordly (Local)" in the app menu, alongside the release package):
+
+From the **repo root**:
+
+```bash
+npm run install:linux
+```
+
+This will:
+
+1. Run `npm run build:linux` (build the Linux AppImage).
+2. Copy `release/Recordly.AppImage` to `packaging/arch/Recordly-linux-x64.AppImage`.
+3. Run `makepkg -p PKGBUILD.from-source -si` to build and install the `recordly-bin-local` package.
+
+You end up with `recordly-local` on your PATH and a "Recordly (Local)" desktop entry. Uses `PKGBUILD.from-source` and `recordly-local.desktop`.
+
+## Updating the package
+
+When a new release is published on [GitHub Releases](https://github.com/webadderall/Recordly/releases):
+
+1. Set `pkgver` in `PKGBUILD` to the new version (e.g. `1.0.10`). Release tags use the form `vX.Y.Z`.
+2. If you changed `PKGBUILD` metadata, regenerate `.SRCINFO`:
+ ```bash
+ makepkg --printsrcinfo > .SRCINFO
+ ```
+3. For the AUR: commit and push your changes to the `recordly-bin` AUR package repo (branch `master`).
+
+## Submitting to the AUR
+
+See the main repo [README](../../README.md) "Arch Linux / Manjaro (yay)" section and the [AUR submission guidelines](https://wiki.archlinux.org/title/AUR_submission_guidelines). Copy `PKGBUILD`, `.SRCINFO`, `LICENSE`, and `recordly.desktop` into your AUR clone and push to the `master` branch.
diff --git a/packaging/arch/recordly-local.desktop b/packaging/arch/recordly-local.desktop
new file mode 100644
index 0000000..fda58a2
--- /dev/null
+++ b/packaging/arch/recordly-local.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Recordly (Local)
+Comment=Screen recorder and editor with auto-zoom and cursor effects (build from source)
+Exec=recordly-local %U
+Icon=dev.recordly.app.local
+Terminal=false
+Type=Application
+Categories=AudioVideo;Video;
+StartupWMClass=Recordly
diff --git a/packaging/arch/recordly.desktop b/packaging/arch/recordly.desktop
new file mode 100644
index 0000000..867df9a
--- /dev/null
+++ b/packaging/arch/recordly.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Recordly
+Comment=Screen recorder and editor with auto-zoom and cursor effects
+Exec=/opt/recordly/Recordly.AppImage %U
+Icon=dev.recordly.app
+Terminal=false
+Type=Application
+Categories=AudioVideo;Video;
+StartupWMClass=Recordly