Offerings is a modern, unified package manager GUI for Linux, designed to simplify application management across multiple package formats. Built with Rust and Slint, it provides a high-performance, aesthetically pleasing, and responsive interface for discovering, installing, and managing software.
- Unified Package Management: Seamlessly manage packages from multiple sources in one interface:
- Flatpak - Sandboxed applications from Flathub
- AppImage - Portable applications via AM (AppImage Manager)
- Pacstall - Ubuntu/Debian packages from Pacstall
- Snap - Canonical's Snap packages
- Custom - Developer-curated packages
- Smart Source Selection: When an app is available from multiple sources, easily switch between them via dropdown menu
- Automatic Fallback: If installation fails from one source, automatically tries alternative sources and notifies you of success
- Auto-Updating App List: Background refresh automatically detects new apps, removed apps, and version updates from all sources
- Modern User Interface: A sleek, "Dark Black" themed UI built with Slint
- Sidebar navigation with categorized views
- Responsive and fluid animations
- Optimized for readability with alternating row colors
- Developer Curated: Featured "Lilith" category for developer-curated applications
Ensure you have the following installed on your system:
- Rust & Cargo: Install Rust
- System Dependencies (Debian/Ubuntu):
Note: Additional dependencies for specific adapters (like Flatpak or Snap) may be required.
sudo apt install build-essential libfontconfig1-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb1-dev libxkbcommon-dev
-
Clone the repository:
git clone https://github.com/BlancoBAM/Offerings.git cd Offerings -
Build the application:
cargo build --release
-
Run:
./target/release/offerings
The sidebar allows you to filter applications by category. The Featured section highlights popular apps, while the Lilith category showcases developer-curated applications.
- Use the Search Bar at the top to find a package by name or description
- Click on a package to view its details
- If the package is available from multiple sources, use the Source dropdown to select your preferred source
- Click "Install" to install the package
If installation fails from the primary source, Offerings will automatically attempt to install from alternative sources. You'll receive a notification when a fallback installation succeeds.
Offerings automatically checks for updates in the background. You can also manually check for updates. The app list refreshes every 30 minutes to detect new apps, removed apps, and version changes.
Offerings is built using a clean, modular architecture:
- Frontend: Slint UI (
ui/main.slint) - A lightweight, native UI toolkit - Backend: Rust (
src/backend.rs) - Handles business logic, state, and orchestration - Adapters: (
src/adapters/) - Modular traits for connecting to different package managers - Database: SQLite (
src/db.rs) - Caches package metadata - IPC: Unix domain sockets for external control and single-instance locking
When duplicates exist across sources, packages are prioritized in this order:
- Flatpak (highest)
- AppImage
- Pacstall
- Snap
- Custom (lowest)
This project is open-source and available under the MIT License.