protondl
Welcome to the documentation of protondl, a modern, headless, and async-first Python library for downloading and managing compatibility tools such as GE-Proton, Proton-Tkg, DXVK, and vkd3d-proton for Steam, Lutris, Heroic, Bottles, and other Linux game launchers.
✨ Features
- Launcher Discovery: Automatically detects Native, Flatpak, and Snap installations of Steam and other launchers.
- Modular Architecture: Easily extendable for new compatibility tools or launchers.
- Async-First: Built with httpx and asyncio for non-blocking downloads.
- Headless by Design: No Qt/GUI dependencies in the core library.
- Modern Tooling: Powered by uv, ruff, and mypy for a rock-solid developer experience.
Supported Launchers
| Tool Type | Steam | Lutris | Heroic Games Launcher | Bottles |
|---|---|---|---|---|
| ⚛️ Proton | ✅ | ✅ | ✅ | ✅ |
| 🍷 Wine | ❌ | ✅ | ✅ | ✅ |
| 🇽 VKD3D | ❌ | ✅ | ✅ | ❌ |
| 9️⃣ DXVK | ❌ | ✅ | ✅ | ❌ |
Supported Tools
- GE-Proton (Proton)
- Wine-Tkg (Wine)
- Proton-Tkg (Proton)
- DXVK (DXVK)
- DXVK Async (DXVK)
- DXVK (nightly) (DXVK)
- vkd3d-proton (VKD3D)
Current Scope
- Launcher discovery: Steam, Lutris, Heroic, and Bottles (native/flatpak; Steam also snap).
- Tool management (install/list tools): Steam, Lutris, Heroic, and Bottles.
- Game management (list games, set game tools, Steam Deck status): Steam only.
- Global/default compatibility tool management: Steam only.
Comparison
Below, you can find a comparison chart of different compatibility tool installer tools.
| Feature | protondl | ProtonUp-Qt^1 | ProtonPlus^2 | Protonup-rs^3 |
|---|---|---|---|---|
| GUI | ⬜ | ✅ | ✅ | ⬜ |
| CLI | ✅ | ⬜ | ⬜ | ✅ |
| Library | ✅ | ⬜ | ⬜ | ✅ |
| Install compatibility tools | ✅ | ✅ | ✅ | ✅ |
| Fetch available tool versions | ✅ | ✅ | ✅ | ✅ |
| List installed tools | ✅ | ✅ | ✅ | ⬜ |
| List installed games | ✅ | ✅ | ✅ | ⬜ |
| Get tool used by a game | ✅ | ✅ | ✅ | ⬜ |
| Set tool used by a game | ✅ | ✅ | ✅ | ⬜ |
| Show game SteamDeck rating | ✅ | ✅ | ⬜ | ⬜ |
| Show game AWACY^4 rating | ⬜ | ✅ | ✅ | ⬜ |
| Programming language | Python | Python | Vala | Rust |
| GUI/TUI | typer, rich | Qt | GTK | clap, indicatif |
The table may be out-of-date. Please create an issue or pull request if that is the case.