Install packages in a snap, like a wizard!
A magical GUI tool to help Linux users easily install .deb, .rpm, .snap, and .flatpak packages with a beautiful, modern interface.
- ✨ Simple and Intuitive Interface - Easy-to-use GUI designed for beginners
- 📦 Multi-Format Support - Works with
.deb,.rpm,.snap, and.flatpakpackages - 🎯 Drag-and-Drop Support - Simply drag package files into the window to add them to the queue
- ⚙️ Centralized Configuration - Easy customization through
config.py - 📊 Detailed Progress Tracking - 9-step installation process with real-time updates
- 🔍 Package Information - View detailed package metadata before installation
- 📝 Installation History - Keep track of all installed packages with success/failure indicators
- ❌ Error Handling - Clear error messages and troubleshooting guidance
- 🔧 Dependency Resolution - System package managers handle dependencies for individual packages (inter-queue dependencies require manual ordering)
- 🌐 Offline Support - Works completely offline once installed
- 📋 Installation Logs - Detailed logs for troubleshooting
- ⌨️ Keyboard Shortcuts - Full keyboard support (Ctrl+O, Ctrl+I, F5, Ctrl+Q)
- 🔔 System Tray Integration - Minimize to tray with installation notifications
- 💡 Comprehensive Tooltips - Helpful guidance on every element
- 🎨 Light & Dark Themes - Switch between themes with persistent settings
- 📍 Visual Progress Steps - See exactly what's happening during installation
- ✅ Success/Failure Icons - Quick visual identification in history
- 🎯 Professional Design - Modern, polished interface with emoji indicators
The main interface allows you to browse for packages, view package information, and install with a single click.
Track all your package installations with timestamps and status indicators.
- Python 3.6+
- PyQt5
- Linux operating system (Debian/Ubuntu, Fedora, RHEL, CentOS, openSUSE, etc.)
- Administrative privileges (for package installation)
The application automatically detects your system's package manager:
Traditional Package Managers:
- Debian/Ubuntu:
aptordpkg - Fedora:
dnf - RHEL/CentOS:
yumordnf - openSUSE:
zypper
Universal Package Managers:
-
Snap:
snapd(for.snappackages)# Install snapd sudo apt install snapd # Debian/Ubuntu sudo dnf install snapd # Fedora sudo systemctl enable --now snapd
-
Flatpak:
flatpak(for.flatpakpackages)# Install flatpak sudo apt install flatpak # Debian/Ubuntu sudo dnf install flatpak # Fedora
Use the automated installation script that handles everything for you:
# Clone the repository
git clone https://github.com/Srijan-XI/SnapWiz.git
cd SnapWiz
# Run the installation script
chmod +x install.sh
./install.shThe install.sh script will:
- ✅ Check for Python 3 and pip
- ✅ Install all required dependencies
- ✅ Create
app.shlauncher script - ✅ Create a desktop entry for easy access
- ✅ Create a launcher script in
~/.local/bin - ✅ Set up the application automatically
After running the script, you can launch the application by:
- Running
./app.shfrom the project directory (simplest method!) - Searching for "SnapWiz" in your application menu
- Running
snapwizin terminal (if~/.local/binis in your PATH) - Running
python3 main.pyfrom the project directory
If you prefer manual installation or want more control:
git clone https://github.com/Srijan-XI/SnapWiz.git
cd SnapWizIt's recommended to use a virtual environment to avoid conflicts with system packages:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtOr install manually:
pip install PyQt5chmod +x main.pyAfter installation, you can launch the application in several ways:
Navigate to the project directory and run:
cd ~/path/to/SnapWiz
./app.shThe app.sh script automatically activates the virtual environment and launches the application.
- Open your application menu/launcher
- Search for "SnapWiz"
- Click on the icon to launch
If you used the automated installer and ~/.local/bin is in your PATH:
snapwizNavigate to the project directory and run:
# If you used the automated installer
cd ~/path/to/SnapWiz
venv/bin/python main.pyOr if you installed manually with a virtual environment:
cd ~/path/to/SnapWiz
source venv/bin/activate
python main.pyIf the launcher command doesn't work, add ~/.local/bin to your PATH:
For Bash (Most Linux distributions):
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcFor Zsh (Kali Linux, modern Ubuntu, macOS):
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcFor Fish:
fish_add_path ~/.local/binAfter this, you can run snapwiz from anywhere!
- Launch the application using any of the methods above
- Click the "Browse..." button on the Install Package tab
- Navigate to your downloaded package file (usually in ~/Downloads)
- Select the
.debor.rpmfile you want to install - Review the package information - The app will display:
- Package name
- Version
- Architecture (32-bit/64-bit)
- Maintainer
- Description
- Click "Install Package" button (green button)
- Enter your password when prompted - This is required for system changes
- Wait for installation - Watch the progress bar and status messages
- Check the result - A popup will confirm success or show any errors
- View the log - The Installation Log panel shows detailed output
- Launch app → Browse → Select package → Install → Enter password → Done!
Track all your package installations:
- Click on the "Installation History" tab (second tab)
- View the list of all packages you've installed
- ✓ Green checkmark = Successful installation
- ✗ Red X = Failed installation
- Each entry shows: Package name and installation date/time
- Refresh the list - Click "Refresh" if you just installed something
- Clear history - Click "Clear History" to remove all entries (permanent!)
Access the "Settings" tab (third tab) to customize your experience:
- Light Theme (Default) - Clean, bright interface ideal for daytime use
- Dark Theme - Easy on the eyes for night-time use or low-light environments
To change theme:
- Go to Settings tab
- Under "Appearance", select your preferred theme from dropdown
- Theme applies instantly and is saved automatically
View detected system configuration:
- Package Manager - Shows which package manager is detected (apt, dnf, yum, zypper)
- Application Version - Current version of the installer
- About - Author and license information
1. Install first package (Browse → Install → Wait)
2. Click "Clear" button to reset
3. Install next package (Browse → Install → Wait)
4. Repeat as needed
5. Check Installation History to verify all installations
1. Browse to select package
2. Review package information carefully
3. Check if it's the correct version and architecture
4. If correct → Install
5. If wrong → Click "Clear" and select different package
1. If installation fails, check the Installation Log
2. Read the error message carefully
3. Common issues:
- Missing dependencies → Try installing dependencies first
- Wrong architecture → Download correct version (32-bit vs 64-bit)
- Permission denied → Make sure you entered password correctly
4. Check Installation History to see what went wrong
5. Try installing again or check package source
- Tab - Navigate between UI elements
- Enter - Click focused button
- Ctrl+Tab - Switch between tabs
- Alt+F4 - Close application
- Always download packages from official sources - This ensures security
- Check package compatibility - Make sure it matches your distribution:
.debfiles → Debian, Ubuntu, Linux Mint, Kali.rpmfiles → Fedora, RHEL, CentOS, openSUSE.snapfiles → Universal (requires snapd).flatpakfiles → Universal (requires flatpak)
- Review package info before installing - Verify it's what you expect
- Keep track of installations - Use the history feature
- Read error messages - They often tell you exactly what's wrong
- Make sure you have enough disk space - Some packages are large
- Use dark mode at night - It's easier on your eyes!
- Try drag-and-drop - It's the fastest way to add packages to the queue!
Recommended Maximum: 20 packages per batch
- Large batches (>20 packages) may experience performance issues
- For best experience, split large installations into smaller batches
- The application will still work with more, but installation time increases significantly
What this means:
✅ Good: Install 15 packages in one batch
⚠️ Acceptable: Install 30 packages (may be slower)
❌ Not Recommended: Install 100+ packages at once
Known Limitation: Dependencies between queued packages are not automatically resolved
What this means:
- If Package B depends on Package A, and both are in the queue
- Package B may fail if it's installed before Package A
- Solution: Install packages in dependency order, or install dependencies first
Example:
❌ Wrong Order:
1. app-plugin.deb (depends on app)
2. app.deb
✅ Correct Order:
1. app.deb
2. app-plugin.deb
Best Practice:
- Check package dependencies before batch installation
- Order packages manually in the queue (install dependencies first)
- Or use traditional package managers (apt/dnf) which handle dependencies automatically
Known Behavior: Root password may be requested multiple times during batch installation
Why this happens:
- Linux security policies (OS limitation, not SnapWiz)
- Each package installation requires privilege escalation
pkexec/sudosessions may timeout between packages
What to expect:
Installing 5 packages:
Package 1: Password prompt ✓
Package 2: (may use cached credentials)
Package 3: Password prompt again ✓
Package 4: (may use cached credentials)
Package 5: Password prompt again ✓
Tips:
- Keep an eye on the installation process
- Be ready to enter your password when prompted
- For large batches, consider using
sudowith extended timeout - This is normal behavior and doesn't indicate an error
Snap Packages:
- Require
snapdservice to be running - Local .snap files are installed with
--dangerousflag (bypasses signature checks) - First-time snap installation may take longer due to core snap setup
Flatpak Packages:
- Only
.flatpakbundle files are supported (not repository refs) - User-level installation is attempted first, then system-wide if it fails
- May require runtime dependencies (handled automatically)
Traditional .deb/.rpm:
- Dependency resolution handled by system package manager
- May update package databases automatically
- Internet connection may be required for dependencies
Create a desktop launcher for easy access:
cat > ~/.local/share/applications/package-installer.desktop << EOF
[Desktop Entry]
Name=Linux Package Installer
Comment=Install .deb and .rpm packages easily
Exec=/usr/bin/python3 /path/to/main.py
Icon=package-x-generic
Terminal=false
Type=Application
Categories=System;PackageManager;
EOFReplace /path/to/main.py with the actual path to your main.py file.
If you encounter permission errors:
- Ensure
pkexecorsudois installed on your system - Make sure you enter the correct password when prompted
- Check that your user account has sudo privileges
If the package manager is not detected:
- Ensure you're running a supported Linux distribution
- Install the appropriate package manager:
- Debian/Ubuntu:
sudo apt install apt - Fedora:
sudo dnf install dnf - RHEL/CentOS:
sudo yum install yum
- Debian/Ubuntu:
If installation fails due to missing dependencies:
- For individual packages: The system package manager tries to resolve dependencies automatically
- For
.debpackages:apthandles dependencies from repositories - For
.rpmpackages:dnf/yumhandle dependencies automatically - For batch installations: Dependencies between queued packages are NOT resolved
- See "Important Notes" section above for details
- Solution: Order packages manually with dependencies first
- Manual fix: Run your package manager's fix command in terminal
sudo apt --fix-broken install # For .deb sudo dnf check # For .rpm
If package information is not displayed:
- Install the required tools:
- For
.deb:sudo apt install dpkg - For
.rpm:sudo dnf install rpmorsudo yum install rpm - For
.snap:sudo apt install snapd - For
.flatpak:sudo apt install flatpak
- For
The application is built with a modular architecture:
├── main.py # Main application and GUI
├── requirements.txt # Python dependencies
└── src/
├── config.py # Centralized configuration and constants
├── language.py # Internationalization (i18n) support
├── package_handler.py # Package validation and installation logic
├── logger.py # Installation history and logging
├── exceptions.py # Custom exception classes
└── retry_utils.py # Retry utilities for network operations
- MainWindow: PyQt5-based GUI with tabs for installation, batch operations, uninstall, history, and settings
- PackageHandler: Detects package managers, validates packages (.deb/.rpm/.snap/.flatpak), extracts info, and handles installation
- InstallLogger: Manages installation history with JSON-based persistence and export capabilities
- InstallerThread: Background thread for non-blocking installations with progress reporting
- Language: Manages multi-language support with 6 supported languages (EN, FR, DE, ES, IT, RU)
- Config: Centralized configuration management for all application settings
- Elevated Privileges: The application requires administrative privileges to install packages
- pkexec: Uses
pkexecfor secure privilege elevation with GUI authentication - Package Validation: Validates package files before attempting installation
- Logged Actions: All installations are logged for audit purposes
Contributions are welcome! Please feel free to submit pull requests or open issues.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Test thoroughly on different Linux distributions
- Commit:
git commit -am 'Add your feature' - Push:
git push origin feature/your-feature - Submit a pull request
Planned features for future releases:
- Package search and download from repositories
- System repository management
- Package downgrade capability
- Advanced package dependency visualization
- Scheduled/automated updates
- Integration with popular software centers
This project is licensed under the MIT License - see the LICENSE file for details.
Comprehensive documentation is available:
- Keyboard Shortcuts - Quick reference for all shortcuts
- Features & Implementation - Complete feature documentation
- Development Guide - Developer reference and contribution guide
- Documentation Index - Complete documentation overview
- Batch Installation Guide - Multi-package installation walkthrough
- Uninstall Guide - Package removal instructions
- Export/Import Guide - History backup and restore
- Language Support Guide - Multi-language configuration
- Verification Guide - Package integrity verification
- Search & Filter Guide - Advanced search features
- Error Handling Guide - Troubleshooting common issues
- Changelog - Version history and release notes
- Contributing - Guidelines for contributors
Visit the docs folder and GUIDE folder for complete documentation.
- Built with PyQt5
- Inspired by the need to make Linux more accessible to beginners
- Thanks to the open-source community
If you encounter any issues or have questions:
- Check the Troubleshooting section
- Review the documentation folder
- Search existing Issues
- Open a new issue with detailed information about your problem
Srijan-XI
- GitHub: @Srijan-XI
- Repository: SnapWiz
Note: This application requires administrative privileges to install packages. Always verify package sources before installation to ensure system security.