I'm building a game that's really many games in one like the Neo Geo arcade machine. What I'd like to do is build my own game launcher/shell which is an OpenGL program that starts when my computer starts up. It's kind of like the dashboards you'd see on consoles nowadays, or like Steam's client app. How should I approach this?
I've thought about adding this is by scanning a specified folder for a list of folders where each folder represents an installed game. This would be similar to the "Program Files" folder you'd see on a Windows computer. Each of these folders will have a "Shell" folder that'd contain assets used by the launcher to represent that game, such as an icon, background music, localized text file, etc. Each game would be contained as separate stand-alone applications since I probably can't afford to have the launcher running at all times. Then, once the player selects a game from the launcher, it'll close the launcher, then launch the game. When the player leaves the game, the launcher will automatically run again after the game ends.
Another approach would be to suspend the launcher, but that would mean having to preserve my OpenGL context. I have plenty of shared memory to do this, but I'm concerned about the potential loss in processing performance due to the suspended launcher process.
I've thought about going with the DM approach for the launcher, but it'd take quite a bit of learning to get me where I want to be. Btw, I'm using Debian for my OS.