Driftwood
A friendly, modern AppImage manager for Linux desktops
Driftwood makes it easy to find, install, organize, update, and keep safe all your AppImage apps - without needing to use the terminal. It's built for people who just want their apps to work, and it fits right in with the GNOME desktop.
If you've ever downloaded an AppImage file and wondered "now what do I do with this?", Driftwood is for you.
✨ What is Driftwood?
Driftwood is a graphical app manager for AppImages. AppImages are portable Linux applications that come as a single file - no installation needed. But managing them by hand (making them show up in your app menu, checking for updates, knowing if they're safe) can be confusing, especially if you're new to Linux.
Driftwood handles all of that for you with a clean, easy-to-use interface.
🙋 Who is this for?
- New Linux users who want a simple way to manage AppImage apps
- Anyone who downloads AppImages and wants them organized, updated, and integrated into their desktop
- Privacy-conscious users who want to know what libraries their apps bundle and whether any have known security issues
- Power users who want a full CLI alongside the graphical interface
🖼️ What does it look like?
Driftwood uses GTK4 and libadwaita, so it looks and feels like a native GNOME app. It has three main views:
| View | What it does |
|---|---|
| Installed | Shows all your AppImages in a grid or list with status badges |
| Catalog | Browse and discover new AppImage apps to download |
| Updates | See which apps have newer versions and update them |
Click any app to see its full details - version info, security status, disk usage, screenshots, and more.
🌟 Features
📦 App Library
- Automatic scanning - Driftwood finds all AppImage files in your chosen
folders (like
~/Applicationsor~/Downloads) - Grid and list views - See your apps as cards with icons, or as a detailed list
- Search and sort - Find apps by name, sort by name, size, or when you added them
- Tags - Label your apps with custom tags and filter by them
- Selection mode - Select multiple apps at once for batch actions
- Drag and drop - Drop an AppImage file onto the window to add it
🌐 App Catalog (Store)
- Browse apps - Discover AppImage apps from the community catalog
- Category filters - Browse by Audio, Games, Graphics, Development, and more
- Featured apps - A rotating carousel of highlighted apps
- Search - Find apps by name across the entire catalog
- App details - See descriptions, screenshots, star counts, and download numbers
- One-click install - Download and add apps right from the catalog
⬆️ Updates
- Check for updates - Scan all your apps for newer versions with one click
- Update all at once - Or update apps one by one
- Release notes - See what changed in each new version
- Automatic backups - Optionally save old versions before updating, so you can go back if something breaks
- Multiple update sources - Works with GitHub Releases, GitLab Releases, zsync delta updates, and OCS feeds
🚀 Desktop Integration
- Add to app menu - Make any AppImage show up in your desktop's application menu with one click
- Icon installation - Automatically extracts and installs the app's icon
- Autostart - Set apps to launch automatically when you log in
- Custom launch options - Add command-line arguments or environment variables per app
- Undo everything - Remove any app from your menu just as easily
🛡️ Security
- Vulnerability scanning - Extracts the shared libraries bundled inside each AppImage and checks them against the OSV.dev vulnerability database
- CVE details - Shows the severity (Critical, High, Medium, Low), CVSS scores, and which library versions are affected
- Security report - Generate a full report of all your apps and export it as HTML, JSON, or CSV
- Desktop notifications - Get notified when a new vulnerability is found in one of your apps
- Signature verification - Check GPG signatures and SHA256 checksums
- Configurable thresholds - Choose whether to be notified about only critical issues or everything
🧩 FUSE and Wayland Compatibility
- FUSE detection - Checks whether your system can mount AppImages and tells you exactly what to install if it can't
- Guided FUSE setup - A step-by-step wizard that shows you the right install command for your distribution
- Wayland compatibility - Detects whether you're running Wayland or X11 and flags any compatibility concerns
- Fallback launching - If FUSE isn't available, Driftwood can extract and run AppImages directly
🧹 Cleanup and Disk Management
- Duplicate finder - Detects when you have multiple copies of the same app or different versions taking up space, and shows how much space you'd save
- Disk footprint - Shows config, cache, and data folders each app has created on your system
- Cleanup wizard - A guided walkthrough that finds orphaned desktop entries, leftover caches, and duplicates, then lets you choose what to remove
- Orphan cleanup - Finds and removes menu entries for AppImages that no longer exist on disk
🔢 Dashboard
- System overview - Quick health check showing FUSE status, Wayland status, total apps, storage used, and apps needing updates
- At-a-glance stats - See everything about your AppImage setup in one place
⚙️ Preferences
- Appearance - Follow your system's light/dark theme, or force one
- Scan directories - Choose which folders Driftwood watches for AppImages
- Update settings - Configure automatic update checking, backup behavior, and retention periods
- Security settings - Enable automatic scanning, notifications, and set a GitHub token for higher API rate limits
- Catalog settings - Toggle automatic metadata enrichment and removable media watching
🔒 Sandboxing
- Firejail support - Launch apps inside a Firejail sandbox for extra security
- Per-app profiles - Each app can have its own sandbox configuration
- Profile management - Use local, community, or default Firejail profiles
:accessibility: Accessibility
Driftwood is built to meet WCAG 2.2 AAA accessibility standards:
- Full keyboard navigation - Every feature is reachable without a mouse
- Screen reader support - All buttons, images, and status changes are announced to screen readers like Orca
- Focus management - Clear focus indicators (3px outlines) on all interactive elements
- 44px minimum target sizes - All buttons meet the AAA touch target standard
- High contrast support - Enhanced borders and colors when your system uses high contrast mode
- No timing requirements - Nothing in the app requires fast reactions
- Semantic roles - Headings, alerts, status regions, and live announcements are all properly marked up
- Automated testing - Includes an AT-SPI audit tool that walks the live accessibility tree and checks for violations
⌨️ Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+1 |
Switch to Installed view |
Ctrl+2 |
Switch to Catalog view |
Ctrl+3 |
Switch to Updates view |
Ctrl+F |
Search |
Ctrl+R or F5 |
Scan for AppImages |
Ctrl+U |
Check for updates |
Ctrl+K |
Open command palette |
Ctrl+D |
Open dashboard |
Ctrl+, |
Open preferences |
Ctrl+? |
Show keyboard shortcuts |
Ctrl+Q |
Quit |
🖥️ Command Line Interface
Every feature is also available from the terminal:
driftwood scan # Find AppImages in your configured folders
driftwood list # Show all known AppImages
driftwood list --format json # Output as JSON
driftwood inspect ~/Apps/MyApp.AppImage # Show app metadata
driftwood integrate ~/Apps/MyApp.AppImage # Add to desktop menu
driftwood remove ~/Apps/MyApp.AppImage # Remove from desktop menu
driftwood launch ~/Apps/MyApp.AppImage # Run the app
driftwood launch --sandbox ~/Apps/MyApp.AppImage # Run in sandbox
driftwood check-updates # Check all apps for updates
driftwood update-all # Update everything
driftwood verify ~/Apps/MyApp.AppImage # Check integrity
driftwood verify ~/Apps/MyApp.AppImage --sha256 abc123... # Verify hash
driftwood security # Scan all apps for vulnerabilities
driftwood duplicates # Find duplicate AppImages
driftwood footprint ~/Apps/MyApp.AppImage # Show disk usage
driftwood status # System compatibility check
driftwood clean-orphans # Remove stale menu entries
driftwood export # Export app list to JSON
driftwood export --output ~/backup.json
driftwood import ~/backup.json # Import app list
driftwood autostart ~/Apps/MyApp.AppImage --enable # Autostart on login
driftwood autostart ~/Apps/MyApp.AppImage --disable
driftwood purge # Remove ALL Driftwood system modifications
🐧 Which Linux distributions does it work on?
Driftwood works on any Linux distribution that has GTK 4.16+ and libadwaita 1.6+ available. In practice, that means most modern distributions released from 2024 onward.
| Distribution | Status | Notes |
|---|---|---|
| Ubuntu 24.04+ | Works | GTK4 and libadwaita available in default repos |
| Fedora 40+ | Works | Excellent GTK4 support out of the box |
| Arch Linux | Works | Rolling release, always has the latest GTK4 |
| Manjaro | Works | Same packages as Arch |
| openSUSE Tumbleweed | Works | Rolling release with current GTK4 |
| Debian Testing/Sid | Works | Stable Debian may have older GTK versions |
| Linux Mint 22+ | Works | Based on Ubuntu 24.04 |
| Pop!_OS 24.04+ | Works | Based on Ubuntu with COSMIC/GNOME |
| elementary OS 8+ | Works | Uses GTK4-based Pantheon |
| Gentoo | Works | Build GTK4 and libadwaita from source |
| Alpine | Works | GTK4 available in community repos |
Desktop environment: Driftwood is designed for GNOME but works on any desktop that supports GTK4 applications (KDE Plasma, Cinnamon, XFCE, Budgie, etc.). It looks best on GNOME and GNOME-based desktops because it uses libadwaita for styling.
🔧 System Requirements
What you need
| Requirement | Version | What it is |
|---|---|---|
| GTK | 4.16 or newer | The toolkit that draws the interface |
| libadwaita | 1.6 or newer | GNOME's design library for modern-looking apps |
| SQLite | 3 | A small database engine (stores your app library) |
| gettext | any | Handles translations for different languages |
Optional (but recommended)
| Package | What it does |
|---|---|
| libfuse2 or libfuse3 | Lets AppImages mount themselves (most need this to run) |
| firejail | Runs apps in a security sandbox |
| appimageupdate | Enables fast delta updates (downloads only what changed) |
For building from source
You'll also need:
| Package | What it is |
|---|---|
| Rust 1.75+ and Cargo | The programming language and build tool |
| Meson | Build system (only needed for system-wide installation) |
| libgtk-4-dev | GTK4 development headers |
| libadwaita-1-dev | libadwaita development headers |
| libsqlite3-dev | SQLite development headers |
| libglib2.0-dev-bin | Provides glib-compile-resources and glib-compile-schemas |
Package names may vary between distributions. On Fedora, use
-develinstead of-dev(for example,gtk4-develinstead oflibgtk-4-dev).
🏗️ Building from Source
Quick development build
git clone https://git.lashman.live/lashman/driftwood.git
cd driftwood
cargo build
cargo run
System-wide installation
meson setup build --prefix=/usr
meson compile -C build
sudo meson install -C build
After installing, Driftwood will appear in your application menu.
📦 Packaging
Ready-made packaging files are included:
| Format | Location | Notes |
|---|---|---|
| Flatpak | build-aux/app.driftwood.Driftwood.json |
Flatpak manifest |
| Arch Linux (AUR) | packaging/PKGBUILD |
For makepkg |
| AppImage | packaging/build-appimage.sh |
Self-contained build script |
📂 Where Driftwood stores things
| What | Location |
|---|---|
| App database | ~/.local/share/driftwood/driftwood.db |
| Cached icons | ~/.local/share/driftwood/icons/ |
| Desktop entries it creates | ~/.local/share/applications/driftwood-*.desktop |
| Installed icons | ~/.local/share/icons/hicolor/ |
| Autostart entries | ~/.config/autostart/ |
| Settings | GSettings (app.driftwood.Driftwood) |
| Backups | ~/.local/share/driftwood/backups/ |
Everything Driftwood does to your system is tracked in its database, and you can
undo all of it with driftwood purge or by uninstalling apps through the UI.
🧪 Accessibility Testing
Driftwood includes an automated accessibility audit tool that uses AT-SPI (the Linux accessibility bus) to walk the live widget tree and check for WCAG 2.2 violations:
# Run the full AAA-level audit (builds and launches the app automatically)
python3 tools/a11y-audit.py --level aaa
# Attach to an already-running instance
python3 tools/a11y-audit.py --no-launch --level aaa
# Run at AA level only
python3 tools/a11y-audit.py --level aa
# Show detailed live region inventory
python3 tools/a11y-audit.py --level aaa --verbose
The tool checks for:
- Interactive widgets without accessible names (SC 4.1.2)
- Images without alt text or decorative marking (SC 1.1.1)
- Headings without level attributes (SC 1.3.1)
- Widgets that aren't keyboard-focusable (SC 2.1.1)
- Target sizes below 24px (AA) and 44px (AAA)
- Windows without titles (SC 2.4.8)
- Vague link text (SC 2.4.9)
- Content regions without headings (SC 2.4.10)
- Keyboard traps (SC 2.1.3)
Results are printed to the terminal and saved as a11y-report.json for CI
integration.
🤝 Contributing
See CONTRIBUTING.md for guidelines on how to contribute code, translations, or bug reports.
📄 License
CC0-1.0 (Public Domain)
This project is released into the public domain under the CC0 1.0 Universal license. You can copy, modify, distribute, and use it for any purpose, even commercially, without asking permission. See LICENSE for the full legal text.