Game launchers are everywhere: Steam, Epic, GOG, Ubisoft… but most of them feel heavy, fragmented, and locked to a specific ecosystem. As a developer, I wanted to challenge myself: can I build a lightweight, open, and extensible game launcher that gives me control over my own library?
That’s how Avocado Game Launcher started.
🎯 Motivation
The main drivers behind the project:
- Learning opportunity – I wanted to put into practice packaging desktop apps with PyQt6 + PyInstaller.
- Control over my library – I have games spread across different stores; I wanted one simple interface.
- Experimentation – how far can I push Python in the desktop space?
The name? I like avocados 🥑, and it stuck.
🛠️ Technical Overview
- Python + PyQt6 – Modern cross-platform GUI, fast prototyping.
-
PyInstaller – Bundling into a standalone
.exewithout external dependencies. - dotenv – Managing API keys and configuration safely.
- RAWG API – Fetching metadata (covers, info) to enrich the library.
- JSON storage – Simplicity over complexity; no need for a DB (yet).
- Custom i18n module – Allowing easy translations of UI elements.
🔑 Current Features
- Import local executables into the launcher.
- Automatically fetch covers and info from the RAWG API.
- Support for importing Steam installed games.
- Persistent user settings and library via JSON.
- Clean multi-language support.
🚀 Version 1.0.1 – What’s New
- Improved UI and icons for a cleaner look.
- Added Steam integration to detect installed games.
- Displaying more game metadata inside the launcher.
📚 Lessons Learned
-
Packaging is tricky – Handling relative paths with PyInstaller required a proper
resource_path()utility. -
Circular imports are real – Splitting responsibilities across
core/modules helped me untangle dependencies. -
APIs enrich UX – Just showing an
.exename isn’t enough; fetching metadata makes the library feel alive. - Keep it simple – JSON storage is more than enough at this stage; no need for databases.
🛣️ What’s Next?
- Support for other platforms (Steam, local, etc.)
- Customization (themes, layouts, user settings)
- Cloud sync to keep libraries portable
- Packaging for Linux/macOS
đź’ˇ Final Thoughts
Building Avocado Game Launcher has been both fun and frustrating — PyInstaller path issues, environment variables not loading, and chasing circular imports. But every challenge taught me something about desktop development in Python, and it’s rewarding to see it work as a real application.
The project is open-source, and I’d love feedback from fellow developers:
👉 GitHub – Avocado Game Launcher
👉 Itch.io Release Page
Thanks for reading, and if you’ve ever wanted to roll your own launcher, maybe this inspires you to start. 🥑
Top comments (0)