Tinker [Shuffle/Menuhax Theme Manager]

Discussion in '3DS - Homebrew Development and Emulators' started by HeyItsJono, Dec 31, 2015.

  1. HeyItsJono

    HeyItsJono Breath of Fresh Heir

    Mar 26, 2011

    Hi everyone, I've always thought it was a bit of a hassle having to manually copy/paste files to apply custom themes to Shufflehax/Menuhax/Themehax, so I put together a little theme manager to take care of the process. It's heavily inspired by CHMM2 and made using Rinnegatamante's lpp-3ds. I tried to make it work in a similar way to CHMM2.

    You can find the source code here.

    FOR THOSE OF YOU WITH SysNAND+EmuNAND (CtrBootManager+Menuhax):
    Tinker will ONLY apply themes to SysNAND. To apply themes to EmuNAND you can safely use CHMM2 after launching HBL from within EmuNAND (via .cia or some other method).

    1. Download the latest .zip file here.
    2. Extract it to the 3ds folder on your SD Card; the path should look like this:
    3. Place your themes in a Themes folder at the root of your SD Card, just like you would for CHMM2. Themes should each have their own folder with their contents in them like so:
    (Theme1, Theme2, etc are just examples of theme names, your theme folders can be named anything, as long as they are in /Themes/)

    NOTE: If you have a Japanese 3DS console, there is a bug in the 3dsx file which stops Tinker from running. You'll need to download 15avaughn's patched Tinker.3dsx file and replace /3ds/Tinker/Tinker.3dsx with that patched Tinker.3dsx. Furthermore, launching 3dsx files doesn't work either, meaning after you press A to install a theme from the popup, you need to manually exit out of Tinker, enter Menuhax Manager and select Install Theme. These problems are only present on Japanese 3DS's.

    Usage Guide
    • Browse the available themes on the bottom screen using the DPad arrow keys.
    • Press Y while over a theme to bring up a theme preview on the top screen. Once Y is pressed, the top screen portion of the preview should appear. It will last about 5 seconds, then the bottom screen portion will appear. That will disappear after about 5 seconds and you should be able to move again.
    • Press A to apply the theme, this will bring up a confirmation dialogue. Pressing A will open up Menuhax Manager, choose Install Custom Theme to install the theme. Pressing B will close the dialogue box and the theme will not be applied.
    • Press the Start button to exit the application and return to the Homebrew Launcher. This glitches out if you're using the Gridlauncher so you'll have to hold Right Bumper+Left Bumper+Down Arrow+B button to exit.
    • You can't use the touchscreen or circlepad to navigate, circlepad is planned for a future release but touchscreen support probably won't happen because effort.
    • The Settings button (blue circle with the gear in it) is inaccessible for now, that'll be implemented later when I actually find settings worth implementing.
    • No support for theme shuffling just yet, I'm looking into it to see if it's possible to implement. UPDATE: Looks like Menuhax/etc doesn't support shuffling yet. If it's ever implemented, I'll add support for it in Tinker.
    • This only works for Menuhax theme implementation, use CHMM2 if you're looking for standard custom theme installation.
    • If you have a very large number of themes then the app will likely hang at a black screen on start up for a long time as it loads them all
    • v1.0.2 (3/1/16)
      • Introduced proper error dialogue for when Tinker detects Menuhax Manager is not installed, rather than having it throw a Lua-style error.
      • Added banners for use with Masher's Gridlauncher (a standard one which is used by default, and a 3dsflow one which can be used by renaming the standard one to something else, and renaming the 3dsflow one to "Tinker-banner-fullscreen.png")
      • Added a .3ds file - this has not been tested at all, I have no idea if it works or what it does. I don't have any means of testing it currently. Feel free to try it, but I'm not responsible for any damage that might occur as a result (although the worst that should happen is that it just doesn't work).
    • v1.0.1 (1/1/16)
      • Introduced proper error dialogue for when no themes are detected, rather than having it throw a Lua-style error.
    • v1.0.0 (31/12/15)
      • Initial release
    • Rinnegatamante for lpp-3ds and also for their incredible work on CHMM2 and Sunshell. Without all of those things this project would not be possible.
    • ihaveamac for guidance and support in getting features like .3dsx launching working.
    • 15avaughn for his patched Tinker.3dsx file which works on Japanese consoles.

    Hopefully some people find this useful!
    Last edited by HeyItsJono, Jan 11, 2016
  2. Yangarang

    Yangarang GBAtemp Regular

    Nov 14, 2015
    This looks really useful, I'm trying it out now
  3. JJTapia19

    JJTapia19 I fight for my friends.

    May 31, 2015
    Puerto Rico
    This is just amazing! from the UI elements to the functionality it's great. Now that homemenuhax works on the latest firmware I find this more useful than it could had ever been so great timing also! When I run it on 9.5 I get a black screen until I remove the sd card. I think it's because it's loading the .smdh's or something like that and I have more than 100 themes. On my 9.0 firmware it get's stuck on red screen while booting but many other lpp apps do this also. Since you are so good with design could you consider creating a 3DSflow homebrew box art for it? I wanted to make one but it would be cool having an official one. Thanks for your work!

    3DSFlow project thread
  4. YourAverageGamer

    YourAverageGamer Member

    Sep 1, 2015
    United States
    Awesome :yay:
  5. RainCode

    RainCode The Temper that Tampers

    Sep 29, 2015
    An application that uses material design? That sure feels rare to me when it comes to the 3DS.
    Looks like something I could give a spin later on. I currently don't have a custom theme set for themehax and I for some reason can't be bothered moving and renaming a theme file every time. So I suppose this would be a sweet addition. ;)
    ihaveamac likes this.
  6. robot56

    robot56 Advanced Member

    Sep 13, 2015
    United States
    You might be able to poll themes directly from 3dsthem.es also.

    I think Rinnegatamante was working on it for CHMM2.
  7. Buttsnake

    Buttsnake "Mods please close this thread"

    Aug 23, 2015
    United States
    Inside your SD card
    You are freaking genius man thank you
    DarkRioru likes this.
  8. Damon_girl

    Damon_girl GBAtemp Advanced Fan

    Oct 27, 2015
    United States
    Sweet! I'm definitely gonna use this. I've missed my custom themes.
  9. srwgin

    srwgin GBAtemp Advanced Fan

    Aug 13, 2013
    is this means we can use shuffle customtheme with homethemehax´╝č

    O3DS 10.3-28J use themehax
    when I run this give me redscreen

    I try ninjahax themehax browserhax
    only work if I write a xml named thinker.xml and put it with .3dsx
    <targets selectable="false">
        <title mediatype="1">00040000000D3000</title>
    Last edited by srwgin, Dec 31, 2015
  10. ihaveamac

    ihaveamac GBAtemp Guru

    Apr 20, 2015
    United States
    Tigard, OR
    there is. :)
    touching = Controls.check(Controls.read(), KEY_TOUCH)
    touch_x, touch_y = Controls.readTouch()
    cpad_x, cpad_y = Controls.readCirclePad()
    anyway this is a pretty cool idea
  11. dazindude

    dazindude Advanced Member

    Nov 20, 2011
    United States
    The depths of Naraka
    it black screens whenever it starts up for me does anyone else have this problem on n3ds
  12. royant1

    royant1 GBAtemp Regular

    Sep 17, 2015
  13. SomeGamer

    SomeGamer GBAtemp Guru

    Dec 19, 2014
    This is beautiful! I love material design, so thank you.
  14. Yangarang

    Yangarang GBAtemp Regular

    Nov 14, 2015
    This is what I'm getting when I launch it, any way to solve this?

    Attached Files:

  15. hnguyen2010

    hnguyen2010 Advanced Member

    Dec 18, 2009
    United States
    I have the same problem when I launch it on my 2DS.
  16. Hayleia

    Hayleia GBAtemp Maniac

    Feb 26, 2015
    Wow, if there was one thing I disliked a lot with CHMM2, it was its interface (the irony when you're an application that manages interfaces...). But yours looks great and usable :D
    Congrats for it. Any plans to have it manage home menu themes too or only menuhax ones ?
  17. leonmagnus99

    leonmagnus99 GBAtemp Psycho!

    Apr 2, 2013
    United States
    this looks like my Nexus6 phone, material design o-o good job
  18. HeyItsJono

    HeyItsJono Breath of Fresh Heir

    Mar 26, 2011
    Thanks for all the kind words guys :)

    Thanks c: I'll look into the 3DSflow thing and see what I can do when I have some more spare time. As for the black and red screens and such, I unfortunately only have a 3DS on 10.3 so I'm not sure how to go about troubleshooting those problems. It's probably viable that it's taking a while to load all the smdh's if you have lots of them. I've only really tested it with like 10 themes myself.

    That's certainly a possibility, though I think that's too big of a project for my very limited programming skills. I could always give it a shot, but I think if you want something reliable you'd be better off waiting until Rinnegatamante implements the feature in CHMM2 then using that to download the themes. They should download to the same directory Tinker reads themes from so you can then just open up Tinker and apply them like normal. I know it's a hassle but I feel like Rinnegatamante has the skills to pull it off better than I do, I'm only just mediocre with design stuff my programming is actually kind of messy and poor haha.

    I'm not so sure about the shuffle option, I've only tested applying single themes with Shufflehax/Menuhax and this. The shuffle option might take some extra doing, I'll look into it though. As for the error, I have no idea why that's happening but hopefully that .xml trick fixed it. If you're still having issues let me know and I'll do my best to help fix them!

    Oh woops, I completely missed that part in the docs, my bad! I guess this is something to try and implement in the next version, thanks for the heads up! :)

    Hey there, I remember I was getting that issue during bug testing when my files weren't located in the right directories. Would you mind posting the layout of your SD card here, then I can take a look and see if everything is in order (if you don't feel comfortable posting it, feel free to PM me). JJTapia19 also reported a black screen occurring possibly due to having lots of themes, that might be an issue as well. I've only tested this with about 10 themes but if you have lots and lots I imagine it will take a while to read them all and load them all, so the program might hang for a while when you start it.

    Hey guys, I have an idea of what may be causing the issue but to confirm it I need you to post here/PM me the layouts of your SD Card and whatever themes you may have installed to confirm the issue. Hopefully I can get it fixed for you guys. Thanks!

    Hi there! I'm glad to hear you like the design :) I think I'm just going to stick to menuhax ones because they require pretty much no programming skills to install. All I need to do is copy files from the theme directory to the menuhax manager directory and the menuhax_manager takes care of the actual installation itself. I took a look at CHMM2's source code and home menu theme installation seems way over my head. Also, Rinnegatamante did a great job with CHMM2 so I don't see much reason to make something that does the same thing.
    Last edited by HeyItsJono, Dec 31, 2015
    JJTapia19 likes this.
  19. BurningDesire

    BurningDesire GBAtemp Psycho!

    Jan 27, 2015
    United States
    Behind a screen reading news
    What code did you use to get alerts to work? They look really nice and I would like to implement one in my future homebrews hahaha
  20. DeslotlCL

    DeslotlCL GBAtemp's official lewd axolotl

    Oct 28, 2015
    United States
    Just wondering, does this works with any entrypoint? Like, an alternative to CHMM2. Also, does this loop the theme BGM? I just learned that installing themes with menuhax makes the BGM not loop correctly.