Universal Package Installer for Arch Linux
Install AppImage, tar.xz, deb, rpm, and pacman packages with a single command.
| Feature | Description |
|---|---|
| π‘οΈ Shared BackupEngine | Now uses theyonecodes/toolkit BackupEngine β automatic pre-install snapshots of config, registry, binaries with SHA-256 manifest + rollback |
| π€ Jev Router Triage | AI model routing with Choice/Score/Noul primitives β confidence scoring for AUR vs official repo, dependency resolution risk |
| π¨ DarkTheme GUI | New tkinter DarkTheme GUI (from theyonecodes/toolkit) β consistent with CISO-Auditor, Windows-Super-Smooth |
| π Reusable Core | Core backup/restore logic migrated to theyonecodes/toolkit for use across Windows-Super-Smooth, electron-gpu-crash-fix, CISO-Auditor, universal-browser-backup |
| Feature | Description |
|---|---|
| π§ Multi-format | .AppImage, .tar.xz, .tar.gz, .tar.zst, .deb, .rpm, .pkg.tar.* |
| π‘οΈ Secure | GPG signatures, checksums, sandbox extraction (bubblewrap/firejail) |
| β‘ Atomic | Staging + commit with auto-rollback on failure |
| π¦ Registry | JSON database tracks packages, versions, files, ownership |
| π Upgrade | Compare versions, reinstall if newer |
| π Audit | Detect ghosts, orphans, broken symlinks, duplicates |
| π¨ GUI | tkinter DarkTheme (from toolkit), Electron, GTK3 |
| πͺ Hooks | Pre/post install and remove scripts |
| π§Ή Clean | Easy uninstall, broken symlink cleanup |
| π‘οΈ BackupEngine | Pre-install system snapshots with SHA-256 manifest + auto-rollback |
| π€ Jev Router | AI triage for AUR vs official repo, dependency risk assessment |
yay -S pkgdropcurl -O https://raw.githubusercontent.com/theyonecodes/pkgdrop/main/src/pkgdrop
chmod +x pkgdrop
sudo mv pkgdrop /usr/local/bin/# Install a package
pkgdrop app.tar.xz
# Upgrade a package
pkgdrop -U app.tar.xz
# Preview what would happen
pkgdrop --dry-run app.tar.xz
# List installed packages (with version info)
pkgdrop --list
# Show package info
pkgdrop --info app
# Uninstall a package
pkgdrop --uninstall app
# Remove broken symlinks
pkgdrop --cleanThe core backup/restore engine now lives in theyonecodes/toolkit and provides:
| Feature | Description |
|---|---|
| Automatic backups | Before any file/registry/BCD/EFI change |
| SHA-256 manifest | Every backed-up item has a hash |
| Automatic rollback | On failure, restores from backup |
| Cross-platform | Python + PowerShell implementations |
| Reusable | Used by Windows-Super-Smooth, electron-gpu-crash-fix, CISO-Auditor, universal-browser-backup |
# pkgdrop now automatically creates pre-install snapshots
pkgdrop app.tar.xz
# Creates: ~/.local/share/pkgdrop/backups/pre-install-20261010-143022/
# With SHA-256 manifest and automatic rollback on failure# Python usage (from toolkit)
from toolkit.backup_engine import invoke_with_backup
result = invoke_with_backup(
tool_name="pkgdrop",
description="Install app.tar.xz",
action=lambda: install_package("app.tar.xz"),
file_paths=["/etc/pacman.conf", "/var/lib/pacman/local"],
backup_bcd=False
)AI model routing with Choice/Score/Noul primitives for package management decisions:
| Primitive | Purpose |
|---|---|
| Choice | Select model for task (local vs cloud, AUR vs official) |
| Score | Confidence 0-100% based on capability match, cost, latency |
| Noul | Guardrails: if confidence < 70% β human review; if sensitive β human review |
CLI Usage:
# AUR vs official repo decision
python vendor/toolkit/jev-router/jev_router.py --choice system_optimization --context "{\"task_type\":\"package_install\",\"sensitive\":true,\"package_type\":\"aur\",\"required_capabilities\":[\"system_admin\",\"dependency_resolution\"]}"GUI Integration:
- Install dialog β "JEV TRIAGE" button β confidence scoring for AUR vs official repo
- Upgrade dialog β risk assessment for dependency changes
New tkinter DarkTheme GUI (from theyonecodes/toolkit):
python pkgdropGUI.pyFeatures:
- File selector with auto-type detection
- Options: Dry-run, Force, Verbose, System-wide, Extract mode
- Actions: Install, Uninstall, Upgrade, Audit, List, Clean
- JEV TRIAGE button β AI confidence scoring
- Backup history viewer
- Live logging with timestamps
Built on theyonecodes/toolkit DarkTheme β consistent with CISO-Auditor, Windows-Super-Smooth, electron-gpu-crash-fix, universal-browser-backup.
pkgdrop [OPTIONS] <file>
Options:
-h, --help Show help message
-v, --version Show version
-l, --list List installed packages (with versions)
-u, --uninstall Uninstall a package by name
-U, --upgrade Upgrade a package (reinstall if newer)
-i, --info Show package info (version, files, type)
-o, --owns <file> Show which package owns a file
-c, --clean Remove broken symlinks
-f, --force Force install (skip confirmations)
-S, --system Install system-wide (requires root)
-n, --dry-run Preview installation without changes
-V, --verbose Show detailed output
-y, --yes Skip confirmation prompts
-x, --extract Extract AppImage to /opt (proper install)
| Variable | Default | Description |
|---|---|---|
DEBUG |
0 |
Enable debug output |
VERBOSE |
0 |
Enable verbose output |
ASK_DEPENDENCIES |
1 |
Prompt for missing dependencies |
PKGDROP_DIR |
~/.local/opt |
Installation directory |
PKGDROP_MAX_SIZE |
1073741824 |
Max file size in bytes |
PKGDROP_LOG |
~/.local/share/pkgdrop/install.log |
Log file path |
PKGDROP_SANDBOX |
1 |
Enable sandbox extraction |
TOOLKIT_PATH |
~/.local/share/pkgdrop/toolkit |
Toolkit location |
Create ~/.config/pkgdrop/config:
PKGDROP_DIR="$HOME/.local/opt"
ASK_DEPENDENCIES=1
PKGDROP_MAX_SIZE=1073741824
PKGDROP_LOG="$HOME/.local/share/pkgdrop/install.log"
TOOLKIT_PATH="$HOME/.local/share/pkgdrop/toolkit"| Format | Handler | Requires |
|---|---|---|
*.pkg.tar.* |
pacman | sudo |
*.tar.xz |
extraction + symlink | - |
*.deb |
debtap | debtap (optional) |
*.AppImage |
copy to bin | - |
*.rpm |
alien + pacman | alien (optional) |
The core backup/restore engine now lives in theyonecodes/toolkit and provides:
| Feature | Description |
|---|---|
| Automatic backups | Before any file/registry/BCD/EFI change |
| SHA-256 manifest | Every backed-up item has a hash |
| Automatic rollback | On failure, restores from backup |
| Cross-platform | Python + PowerShell implementations |
| Reusable | Used by Windows-Super-Smooth, electron-gpu-crash-fix, CISO-Auditor, universal-browser-backup |
# pkgdrop now automatically creates pre-install snapshots
pkgdrop app.tar.xz
# Creates: ~/.local/share/pkgdrop/backups/pre-install-20261010-143022/
# With SHA-256 manifest and automatic rollback on failure# Python usage (from toolkit)
from toolkit.backup_engine import invoke_with_backup
result = invoke_with_backup(
tool_name="pkgdrop",
description="Install app.tar.xz",
action=lambda: install_package("app.tar.xz"),
file_paths=["/etc/pacman.conf", "/var/lib/pacman/local"],
backup_bcd=False
)AI model routing with Choice/Score/Noul primitives for package management:
| Primitive | Purpose |
|---|---|
| Choice | Select model for task (local vs cloud, AUR vs official) |
| Score | Confidence 0-100% based on capability match, cost, latency |
| Noul | Guardrails: if confidence < 70% β human review; if sensitive β human review |
GUI Integration:
- Install dialog β "JEV TRIAGE" button β confidence scoring for AUR vs official repo
- Upgrade dialog β risk assessment for dependency changes
CLI Usage:
# AUR vs official repo decision
python vendor/toolkit/jev-router/jev_router.py --choice system_optimization --context "{\"task_type\":\"package_install\",\"sensitive\":true,\"package_type\":\"aur\",\"required_capabilities\":[\"system_admin\",\"dependency_resolution\"]}"pkgdrop maintains a JSON registry at ~/.local/share/pkgdrop/registry.json that tracks:
- Package name, version, and install type
- All installed files per package
- Installation timestamp
- File ownership (prevents conflicts)
# List all registered packages
pkgdrop --list
# Show detailed info about a package
pkgdrop --info app
# Find which package owns a file
pkgdrop --owns /path/to/fileAll installations use atomic operations:
- Files are staged in a temporary directory
- Checksums and signatures are verified
- Staged files are atomically moved to the final location
- If anything fails, the original installation is restored
pkgdrop automatically verifies:
- GPG signatures (
.sigor.ascfiles alongside the package) - SHA-256/SHA-512/MD5 checksums (
.sha256,.sha512,.md5files)
# Install with verification
pkgdrop signed-package.tar.xz
# Force install without verification
pkgdrop --force unsigned-package.tar.xzCreate scripts in ~/.config/pkgdrop/hooks/ (or /usr/share/pkgdrop/hooks/):
# ~/.config/pkgdrop/hooks/pre-install-mynotification
#!/bin/bash
notify-send "Installing $PKGDROP_PKG_NAME v$PKGDROP_PKG_VERSION"Available hooks: pre-install, post-install, pre-remove, post-remove
Environment variables passed to hooks:
PKGDROP_PKG_NAME- Package namePKGDROP_PKG_VERSION- Package versionPKGDROP_PKG_TYPE- Package type (tarportable, appimage, etc.)PKGDROP_INSTALL_DIR- Installation directory
python pkgdropGUI.pyBuilt on theyonecodes/toolkit DarkTheme β consistent with CISO-Auditor, Windows-Super-Smooth.
cd gui
npm install # First time only
./run-gui.sh # Or: cd gui && electron ../run-gui.sh --gtk
# or: python3 gui/gtk_gui.py./run-gui.sh --tkinter
# or: python3 gui/drag_drop_uninstall.py- Konsole: Settings β Quick Commands β Add
pkgdrop %f - Dolphin: Right-click β "Install with pkgdrop"
- Desktop: Right-click any supported file β Open With β "Install Package"
- File locking prevents concurrent installs
- Atomic installs with automatic rollback on failure
- Package registry tracks file ownership and prevents conflicts
- Signature verification for GPG and checksums
- Sandbox extraction via bubblewrap/firejail
- Quarantine mode for suspicious archives
- Symlink validation catches path traversal
- setuid/setgid stripping on extracted files
- Sudo warnings before elevation
- File size limits prevent disk fill attacks
- Archive validation checks integrity before extraction
- Hook system for custom security policies
- π‘οΈ BackupEngine β Pre-install snapshots with SHA-256 manifest + auto-rollback
- π€ Jev Router β AI triage for AUR vs official repo, dependency risk
# Unit tests
bats tests/pkgdrop.bats
# Integration tests
bats tests/integration.bats
# Syntax check
bash -n src/pkgdrop && shellcheck src/pkgdrop
# Docker testing
docker build -t pkgdrop-test . && docker run pkgdrop-testpkgdrop/
βββ src/pkgdrop # Main CLI script (v3.1.0)
βββ pkgdropGUI.py # tkinter DarkTheme GUI (NEW)
βββ gui/ # GUI applications
β βββ run-gui.sh # Unified GUI launcher
β βββ index.html # Electron HTML
β βββ main.js # Electron main process
β βββ preload.js # Electron preload (IPC bridge)
β βββ app.js # Electron renderer JS
β βββ styles.css # Electron CSS (dark theme)
β βββ package.json # Electron dependencies
β βββ gtk_gui.py # Python GTK3 GUI (fallback)
β βββ drag_drop_uninstall.py # Python tkinter GUI (fallback)
β βββ uninstall_gui.sh # tkinter GUI launcher
βββ vendor/
β βββ toolkit/ # Git submodule (theyonecodes/toolkit)
β βββ backup-engine/
β βββ gui/dark-theme/
β βββ jev-router/
β βββ ...
βββ install.sh # System installer
βββ uninstall.sh # System uninstaller
βββ push-aur.sh # AUR update helper
βββ tests/
β βββ pkgdrop.bats # Unit tests
βββ completions/
β βββ pkgdrop.bash # Bash completions
β βββ _pkgdrop # Zsh completions
βββ deploy/
β βββ pkgdrop.desktop # Desktop entry
β βββ dolphin/ # Dolphin service menu
βββ docs/
β βββ pkgdrop.1 # Man page
βββ Dockerfile # Docker testing
βββ Makefile # Build targets
βββ CHANGELOG.md # Version history
βββ README.md # This file
See CHANGELOG.md for full version history.
- Toolkit integration: BackupEngine, DarkTheme GUI, Jev Router
- Shared BackupEngine: Pre-install snapshots with SHA-256 manifest + auto-rollback
- Jev Router: AI triage for AUR vs official repo, dependency risk assessment
- DarkTheme GUI: tkinter GUI using
theyonecodes/toolkitDarkTheme - tkinter GUI: New
pkgdropGUI.pywith JEV TRIAGE button
- Atomic installs with staging directory + commit
- Package registry (JSON database)
- Version comparison and upgrade support (
-U) - Conflict detection with file ownership tracking
- Package info (
-i) and owns (-o) commands - GPG signature and checksum verification
- Sandbox extraction (bubblewrap/firejail)
- Hook system (pre/post install/remove)
- Force flag (
-f) to skip confirmations - Progress bar for large archives
- File locking, quarantine, symlink validation
--dry-run,--verbose,--uninstall,--clean.rpmsupport via alien- Man page, completions, tests
- Docker support
- Initial release
.tar.xz,.deb,.AppImage,.pkg.tar.*support- Desktop integration, auto-binary detection
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE