Modern Package Manager for Arch Linux
Features • Installation • Usage • Contributing • License
Unify pacman, AUR, Flatpak, and npm under one interface. Search, install, update, and remove packages from any source seamlessly.
50+ built-in plugins with an extensible Python hook system supporting lifecycle hooks (on_startup, on_tick, on_view_changed). Browse and install community plugins from the store.
Create portable package bundles for easy deployment. Export, import, install, and share bundles locally or as community bundles.
Pull, run, list, stop, and clean containers with port mappings, volumes, environment variables, GPU passthrough, and restart policies.
Clone, build, update, and clean Git projects with a click. Auto-detects build methods: Cargo, Autotools, Makefile, and custom build commands.
Create and restore Timeshift snapshots before updates. Revert to a known good state if anything goes wrong. Automatic cleanup of old snapshots.
Sign in with Supabase via OAuth to sync bundle favorites across devices. Session tokens are cached securely for seamless re-authentication.
Set and forget with configurable auto-update intervals (1-30 days), auto-refresh, and optional snapshot-before-update via built-in plugins.
Scriptable package management from the terminal. Search, install, remove, upgrade, list updates, read Arch news, create backups, purge orphans, and run system checks — all with --json output for automation. Runs headless (no GUI required).
neoarch-cli search browserpass # search pacman + AUR
neoarch-cli install --aur yay # install from AUR
neoarch-cli upgrade --all # full system upgrade
neoarch-cli list-updates --json # machine-readable updates
neoarch-cli news # latest Arch Linux news
neoarch-cli doctor # system health check
neoarch-cli scan ./PKGBUILD # security scan (risky tools, elevation, homographs)
neoarch-cli downgrade firefox -l # list cached versions
neoarch-cli downgrade firefox -p # downgrade + pin to IgnorePkg
neoarch-cli marks list # show IgnorePkg / HoldPkg
neoarch-cli marks hold linux # hold a package
neoarch-cli marks reason firefox explicit # set install reason
neoarch-cli appimage list # managed AppImages
neoarch-cli appimage add-repo Obsidian obsidianmd/obsidian-releases
neoarch-cli appimage check --json # check for AppImage updates
neoarch-cli backup -c # create a backup
neoarch-cli purge -o # remove orphaned packages
neoarch-cli keyring list # trusted pacman keys
neoarch-cli keyring populate # official Arch keyrings
neoarch-cli purify corrupt # find corrupted cache archives
neoarch-cli purify cache --keep 2 # paccache retention
neoarch-cli purify flatpak # remove unused Flatpak runtimes
neoarch-cli purify merge /etc/x.pacnew --accept # three-way .pacnew merge
neoarch-cli restart check --json # is a reboot recommended?
neoarch-cli parallel # show ParallelDownloads
neoarch-cli parallel 10 # set it in /etc/pacman.conf (root)
neoarch-cli schedule show # weekly update schedule
neoarch-cli schedule set --days 1,3,5 --time 05:30 --enable
neoarch-cli recommend --limit 5 # curated package recommendations
neoarch-cli install-url https://host/pkg.pkg.tar.zst # install from URL
neoarch-cli aur-build yay --check # AUR build (chroot/check/commit)
neoarch-cli news --mark-read # read news + mark as read
The appimage subcommands manage a NeoArch-owned AppImage store at
~/.local/share/neoarch/appimages: add (local file), add-url
(static URL), and add-repo (GitHub/GitLab/Codeberg/Forgejo latest
release). Each gets a desktop entry + icon and is tracked for updates
via check/update.
The scan command statically reviews a PKGBUILD (and its .install scriptlets) without executing it, flagging risky post-install tools, privilege elevation, dynamic shell construction, local binary sources, obfuscated tool names, and Unicode homograph spoofing. It exits with code 2 if any critical finding is present, making it safe to gate scripts on.
Create full system backups (package list + config export) with Btrfs snapshot support on Btrfs roots. Restore packages from any backup, list snapshots, and auto-prune old backups (keeps last 5).
Keep your system clean: one-click orphaned package removal (pacman -Qtdq), manage leftover .pacnew/.pacsave files (view diff, accept, or delete), and read the latest Arch Linux news via the built-in RSS reader with offline caching.
Install .pkg.tar.zst, .pacman, .AppImage, and .flatpakref files with a single click. Auto-detects package type and handles installation with appropriate privileges. Missing-dependency resolution with --assume-installed retry for local packages.
Secure session-based sudo credential caching with auto-cleaning on exit. GUI password dialog with SUDO_ASKPASS support for polkit and sudo-A.
One-click BleachBit cache cleaning and pacman package cache cleanup (pacman -Sc). Reclaim disk space without leaving the app.
Mark specific packages to ignore during updates. Persisted to ~/.config/neoarch/ignored_updates.json — survives reboots and updates.
Search and Discover Packages
Installed Packages View
NeoArch compared to Shelly-ALPM, another modern Arch Linux package manager:
| Shelly-ALPM | NeoArch | |
|---|---|---|
| License | GPL-3.0 (copyleft) | MIT (permissive) |
| Stack | Zig + Vala + .NET, GTK4 native Wayland | Python + PyQt6 |
| Core package mgmt | pacman (libalpm) |
pacman + AUR + Flatpak + npm |
| CLI | Yes (shelly/shelly-cli) |
neoarch-cli |
| Flatpak | Optional separate backend | Built-in |
| AUR support | Yes | Yes (incl. live search) |
| Plugin system | No | Yes (50+ built-in, Python hooks) |
| Bundle system | No | Yes (portable bundles) |
| Docker manager | No | Yes |
| Git manager | No | Yes |
| Snapshots | No | Yes (Timeshift) |
| System backup | No | Yes (Btrfs) |
| System hygiene | No | Yes (orphans, .pacnew, news) |
| Cloud sync | No | Yes (Supabase) |
| Scheduled updates | No | Yes |
| Local package install | AppImage only | .pkg.tar.zst, .pacman, .AppImage, .flatpakref |
Shelly is a fast native GTK4/libalpm frontend with a strong CLI and a clean codebase. NeoArch covers more package sources and a wider feature set, while keeping a permissive MIT license.
yay -S neoarch-git # or paru -S neoarch-git
sudo pacman -S --needed python python-pyqt6 python-requests qt6-svg git flatpak nodejs npm
python -m venv .venv
source .venv/bin/activate
pip install -r requirements_pyqt.txt
Note: On Arch, using system
pipoften triggers the “externally-managed-environment” error. Prefer Option A (pacman) or use a virtual environment (Option B). You can also usepipx(sudo pacman -S python-pipx) which manages a dedicated venv for each app.
python Neoarch.py
Or make it executable:
chmod +x Neoarch.py && ./Neoarch.py
| Action | Description |
|---|---|
| Discover Packages | Search and browse available packages from pacman, AUR, Flatpak, and npm |
| Install Packages | Select and install packages with a single click |
| Manage Updates | View and install available system updates across all sources |
| Plugins | Enable, disable, and create Python hook plugins; browse community plugins |
| Bundles | Create, export, import, and install package bundles |
| Docker | Pull, run, stop, and clean Docker containers with port mappings and volumes |
| Git | Clone, build, update, and clean Git projects with auto-detected build methods |
| Snapshots | Create and restore Timeshift snapshots before risky operations |
| System Backup | Create/restore system backups with Btrfs snapshot support |
| Hygiene | Remove orphaned packages, manage .pacnew files, read Arch news |
| Local Files | Install .pkg.tar.zst, .pacman, .AppImage, .flatpakref files directly |
| Cloud Sync | Sign in with Supabase to sync favorites across devices |
| CLI | Scriptable neoarch-cli with --json output for search/install/backup/etc. |
git clone https://github.com/Sanjaya-Danushka/Neoarch.git
cd Neoarch
python -m venv .venv
source .venv/bin/activate
pip install -r requirements_pyqt.txt
python Neoarch.py
We welcome contributions! Please follow our guidelines:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)If you discover any security vulnerabilities, report them immediately to dsanjaya712@gmail.com.
This project is licensed under the MIT License — see the LICENSE file for details.
Built with ❤️ by Sanjaya Danushka
Website • Issues • Discussions • Releases