How to add icons on the homescreen that link to emulators?



It would be cool if Clockwork could make a wiki so a topic like this could turn into a proper guide so other users can learn how to add these themselves.


@DisruptItYourself You´re right, I think this part is totally necesary!

I make my first shortcut and icon for the menu and its works thanks to @Sammie <3


YES! Wiki, it’s a good idea, do you like github’s wiki?


Yes @hal I do! Might as well keep it all in one place. That way they can be connected to files and pull requests, etc.

@Sammie would you like to take a wack at it? You pretty much already wrote it and others can add to it. It would be a good starting point. I can then test it and make sure your instructions work and maybe add some images or something.


More icons! Can I put anywhere if someone wants to set up in his system!


Ive already started digging into how we can do the same things for folders and it looks pretty easy. Thanks to @Sammie for writing the wiki post. It’s too bad the wiki pages are on a repository level and can’t be accessed from the Project. That means more digging for people unfamiliar with GitHub.

But anyway… it seems all we need to do is

  1. add a folder to launcher/Menu/GameShell/20_Retro Games/ example SNES
  2. in that folder create a file called action.config
  3. in that file it should contain:

LAUNCHER=retroarch -L
TITLE=[Title to display by Launcher]

  1. Then place your thumbnail in launcher/skin/default/Menu/GameShell/20_Retro Games/

Launcher Customization
How to add new emulators (Gameboy, SNES, etc.)

We have the discord of the community and there is a design channel if you want :slight_smile:


Oh gawd thank you, this is what we need! (if we make this, the folders can appear like a circle icon but once inside we can make square icons for each game :stuck_out_tongue:

Could you please, put a real example code of one folder dedicated to snes emulator from retroarch (with 3 roms inside of this folder) to see more clearly for my side? (sorry for my ignorance)


Check it out!!

(file upload limits are crazy, sorry)


I have done this, but it keeps asking me download cores again and again.


Can you show me your command line AND your exact location of the core you’re directing too?


Could you please put the original lines for SNES folder? No matter if you folder structure are different from us! But I want to see what Im doing wrong hahahahaha

Thank you man!


LAUNCHER=retroarch -L

Go to: and make sure the core your using is actually on that list and spelled correctly. And after the download that directory should have the emulator in it.


What the script does is it checks to see if you have the emulator (snes9x2010 in this example) in the cpi/apps/emulators/ directory. If you don’t it will use the SO_URL you provided to download the core/emulator from buildbot.libretro. If your ROM_SO info and your SO_URL info doesn’t match then it will check to see if you have the emulator, see that you dont, download a different emulator and then loop forever.

What it should do at the end of the script is probably update the ROM_SO value to reflect the name of the file it just downloaded regardless of what you had before. Just a thought.


Thanks for the write-up @DisruptItYourself I came to the same conclusion (creating the folder, adding the action.config file, etc). But even after adding a custom system like SNES, and verifying everything was correct in the action.config file, the launcher still wanted to download the core every time (even though it was already downloaded, and matched the location defined in action.config), and would never actually launch the game.

Then I noticed something, cores downloaded via a custom folder (like the SNES example) were extracted to the dest directory with 0644 permissions. Once the core permissions were chanted to 0775 (like the other cores), the launcher actually launched the game, and worked as expected.

Anyways, hope this helps! Probably a little bug in the launcher code.


Can you put that in as a bug on github? I think you’re right


Yea, I’ll get it submitted. In case anyone runs into this issue:


Can I use config.action folder interface, or something like it, for things that aren’t emulation related? For example I have a directory of love2D games. And make the action file like this:

  • ROM=/home/cpi/games/LOVE
  • EXT=love
  • LAUNCHER=love
  • TITLE=LOVE Games

Actually tried this and worked around the ROM_SO/SO_URL installation by putting a blank in a zip on a url, but can’t get around the fact that the file I’m trying to load comes after the core file, which just loads Love blank. Is there a better way?

Got it to work. Took /user/bin/love file and put it in zip. Put that zip on the web. And blanked the Launcher.

  • ROM=/home/cpi/games/LOVE
  • ROM_SO=/usr/bin/love
  • EXT=love
  • TITLE=LOVE Games
  • SO_URL=


Is it important to put the SO_URL= part? What does it do?


Instead of using /20_Retro Games folder why don´t you use the menu one?

Create a .sh and dont forget to chmod +x it here:

Then add the icon with the same name ( for example if your script is named your icon should be MyScript.png)


This is a example on how would it look afterwards: