Foundry is a unified package manager providing both a graphical interface and a command-line interface for managing Flatpak, Pacman, AUR, AppImage, and custom package sources.
Build:
- Qt 6.5+ (Core, Gui, Widgets, Quick, QuickControls2, ShaderTools, Concurrent, Network, DBus, Svg)
- CMake (>= 3.19)
- C++20 compiler
Runtime, all optional — a source that is not installed is simply inactive:
flatpakfor the Flatpak sourcepacmanfor the Pacman source, pluspacman-contribforcheckupdates(without it no Pacman updates are reported) and a PolicyKit authentication agent for installing and removing packagesparuoryayfor the AUR sourceupdate-desktop-database(desktop-file-utils) for AppImage desktop integration
Foundry is available on the AUR:
# Release (builds from source)
paru -S astra-foundry
# or yay -S astra-foundry
# Precompiled binary (fast install)
paru -S astra-foundry-bin
# or yay -S astra-foundry-bin
# Latest git development
paru -S astra-foundry-git
# or yay -S astra-foundry-gitBuild and install Foundry system-wide:
mkdir -p build
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build
sudo cmake --install buildThis installs the astra binary to /usr/bin, the desktop launcher to /usr/share/applications/astra.desktop, and the application icon to /usr/share/icons/hicolor/scalable/apps/astra-foundry.svg.
Launch the graphical marketplace interface:
./build/foundry --guior:
./build/foundry -gSearch across enabled package sources:
foundry search <query>
foundry search <query> --source <Flatpak|Pacman|AUR|AppImage>
foundry search <query> --jsonWhen no --source is given, the source is resolved from the package id: an ambiguous id lists the
sources that provide it, so foundry install yay --source AUR picks the AUR package rather than the
repository one.
Install a package:
foundry install <package-id>
foundry install <package-id> --source <source>
foundry install <package-id> --source Flatpak --scope <user|system>Uninstall a package:
foundry remove <package-id>
foundry remove <package-id> --source <source>List installed packages:
foundry listList available updates:
foundry update
foundry update --jsonApply updates, either everything or a single package:
foundry upgrade
foundry upgrade <package-id>View package details:
foundry info <package-id>
foundry info <package-id> --source <source>List active package sources and plugins:
foundry sourcesShow help and all available commands:
foundry --helpOutput is coloured only when it goes to a terminal; --no-color and NO_COLOR disable it, and
--json prints machine readable output for search, list, update, info and sources.
Completions for bash, zsh and fish are installed alongside the binary.
Pacman operations are executed through pkexec, so they are authorised by PolicyKit. The shipped action
com.astra-foundry.pacman.update uses the standard defaults: administrator authentication is required, and
the authorisation is kept for the rest of the session (auth_admin_keep) so a full update does not ask
repeatedly.
A PolicyKit authentication agent has to be running for these operations; without one pkexec cannot ask
for credentials. Flatpak (--user) and AppImage operations do not require any elevated privileges.
Versions up to 1.1.0 also installed /usr/share/polkit-1/rules.d/10-astramarket-pacman.rules, which
allowed every member of the wheel group to run pacman through pkexec without authenticating. That file
is no longer shipped and should be removed from existing installations:
sudo rm -f /usr/share/polkit-1/rules.d/10-astramarket-pacman.rulesFor creating and installing custom package sources or scrapers, see PLUGINS.
The interface is translatable and ships with German. Translation files live in translations/ and are
compiled into the binary when the Qt Linguist tools are available (qt6-tools on Arch); without them the
build falls back to English. The language is picked from the system locale at startup.
Refresh the strings after changing the UI:
cmake --build build --target update_translationsTo add a language, copy translations/foundry_de.ts to translations/foundry_<code>.ts, add it to the
qt_add_translations() call in CMakeLists.txt and translate it with Qt Linguist.
Build instructions, the test setup and the code style are described in CONTRIBUTING.
- UI design language, tokens, and components adapted from Caelestia Shell.
- Material Design icons and shape specifications by Google.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for details.