Having tried a number of different frontends to emulators over the years (e.g. EmulationStation, Attract Mode, DBGL), I've never found one that I particularly like. In the end, I decided to let the operating system be my 'frontend' and created a library that can be used to auto-generate launchers for games. And here we are.
For example, you can give it a folder to search for SNES games and generate a launcher with matching icon for every .sfc file found. Or DOSBOX .conf files. Or give it the path to the Mame executable to generate a full lookup of short name to full name, then give it the path to your Mame .zip files and generate launchers for every name recognized. Or just give it a list of Doom wad files and create launchers directly for them.
For illustration purposes, here's the menu on my system:
First up: this is not going to be useful for anyone who doesn't run some *nix variant. And right now, I only directly supported Xfce and Gnome menu systems, though the Xfce technique probably works with most other desktop environments. It also requires a little bit of Python knowledge, though it's rather tame overall.
If this sounds like something you are interested in, give it a download and see how you like it. You will need to create your own 'generate' script to create the launchers for the systems/emulators/whatever you have on your machine. Either extract the download to one of your site-packages/dist-packages folders, or just use it in the same folder as your generate script. Full documentation is inside the file, as well as a pydoc html render inside the tarball. The documentation has a few example snippets of script that you can use in your generate script as a starting point for a few scenarios.