I have no programming experience yet and want to learn by building an open-source desktop application that gives a PC a console-style, controller-friendly 10-foot interface. It would eventually detect games from Steam, Epic, Microsoft Store, and emulators; launch and resume games; manage controllers, screenshots, achievements, media, downloads, mods, storage, and system settings; and provide features such as messaging, voice chat, broadcasts, overlays, game updates, driver updates, networking, volume controls, and power options.
I realize this is a very large project and would start with a small feature set before expanding. The application should run across platforms, have a smooth and attractive UI, remain responsive while games are running, and support substantial operating-system integration.
I am currently considering C# with Avalonia or Python with PySide6 and QML. Would either stack be suitable, or would another option such as Electron and React, JavaFX, or something else be a better choice for a beginner?
3 Answers
Reduce the first version to perhaps three features: detect games, launch them, and support basic controller navigation. Treat everything else as a later version. Discord voice chat, driver updates, mod management, system overlays, and cross-platform compatibility are substantial projects by themselves.
Build one small vertical slice that you can actually use, then expand based on what you genuinely need. That approach will teach you more than choosing a perfect framework in advance, and you can replace parts of the architecture later if the initial choice becomes limiting.
This is an extremely ambitious first project. The individual features—voice chat, overlays, driver updates, game detection, controller input, elevated system operations, and integrations with different stores—can each involve a lot of specialized work. Expect it to take years if you build it alone.
C# is probably a stronger fit than Python for this kind of desktop application. It has good tooling, strong libraries for Windows and system integration, and is generally more suitable for a large, structured application. Avalonia can provide a cross-platform UI, but you will also need to learn software architecture, version control, testing, logging, deployment, and documentation. Start with one small, complete feature rather than designing the entire platform first.
That makes sense. I’ll begin with a basic launcher and add features gradually. I’m still unsure why C# would be preferable to Python with QML, but I’ll compare the ecosystem and tooling before committing.
Electron with React is practical because there are countless tutorials, UI libraries, and examples. Tauri produces a lighter application, but learning Rust alongside the framework makes the initial learning curve steeper.
The bigger challenge is not the UI framework—it’s operating-system integration. Detecting installed games, communicating with store APIs, handling controller remapping, launching processes, managing overlays, and changing system settings may require native APIs, command-line tools, background services, or elevated permissions. A web-based UI can still work, but it will need a Node or Rust backend layer rather than relying on the browser portion alone. Looking at an existing open-source launcher can help you understand that architecture.
I was worried Electron might use too many resources or become sluggish while a demanding game is running. I’ll investigate how much work should be handled outside the UI and how existing launchers perform before ruling it out.

I agree. I’ll focus on getting a simple controller-operated launcher working first instead of trying to plan every feature before writing any code.