SwitchThemeInjector patches the Switch home menu because the console has no theme support
Create custom themes for the nintendo switch !
At a glance
- What is it?
- SwitchThemeInjector is a set of tools for creating and installing custom themes for the Nintendo Switch home menu, and the reason it exists is that the console operating system has no native theme support, so the menu layout files have to be patched directly. It requires a modded console running Atmosphere, and it works around a copyright constraint by inventing the nxtheme format, which carries only differences rather than Nintendo's own data.
- Who is it for?
- SwitchThemeInjector suits a Switch owner with a hacked console who wants a different look on the home menu and is comfortable with the fact that a bad theme can stop the console booting. It is the wrong tool for an unmodded console, since the home menu has no native theme support, and the wrong tool for anyone unwilling to handle a recovery procedure involving a folder on the SD card.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 30 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The home menu has no theme API, so the files get patched
The Switch home menu, called qlaunch, does not implement custom themes natively. That single fact shapes the whole project.
The repository contains tools to create and install custom themes for that home menu, and the mechanism is direct patching of the system layout files stored in the SZS archives in the romfs of qlaunch. In other words, the tool takes the console's own menu resources, changes them, and puts the result back.
That is a heavier and riskier approach than a theme setting, and the documentation is clear about the requirement: you need a modded console with the Atmosphere custom firmware. The getting started section says the same thing in different words, that to use custom themes you need a hacked Switch on a recent firmware.
The audience is therefore narrow by design. This is for a console owner who has already decided to run custom firmware and wants the home menu to look different. It is not a general theming tool for a stock console, because there is no mechanism on a stock console to hook into.
The project is written primarily in C, with a Visual Studio solution at the root, `SwitchThemes.sln`, and directories for the shared code in `SwitchThemesCommon/`, the Switch specific parts in `SwitchThemesNX/`, the command line tool in `NxThemeTool/`, the sysmodule in `ThemeSysmodule/` and a `Tests/` directory. There is also a `DefaultTemplates.json` at the root and documentation files for dumping files and for SZS patching. The licence is GPL-2.0.
The nxtheme format exists because the original files cannot be shared
This is the most interesting design decision in the project, and it is a licensing decision as much as a technical one.
The SZS files extracted from the console are considered copyrighted data and cannot be shared online. A theme in that format would therefore be a redistribution problem for anyone running a theme site, which is exactly the problem the nxtheme format exists to avoid.
The nxtheme format was developed to solve it. It contains only differential information, so it can be freely shared. The theme is no longer a copy of Nintendo's menu resources but a set of changes on top of the console's own files, and the console's files stay where they are, on the device.
The practical rule the documentation gives is worth quoting in substance. Unless you are dealing with making your own patches and custom layouts, you should only use nxtheme files. In other words, the shared format is the norm, and the raw SZS is the exception reserved for people who are doing something more involved.
The project also ships a set of documentation files that map the mechanics. `DumpingFiles.md` covers getting the files off the console, `SzsPatching.md` covers the patching side, and `CustomLayouts.md` covers the layout properties. The wiki has a page on the resident menu resource, `ResidentMenu.szs`.
Two tools are named for creating themes. The documentation points at themezer.net, and at a standalone online theme creator hosted at a GitHub Pages address. The version history shows the direction of travel, since the original desktop application and the early web port have both been deprecated in favour of those.
Installing a theme is a file copy onto the SD card
The install path is short enough that the whole thing fits in a paragraph, and that is by design.
Make a folder called `themes` in the root of the SD card, then copy the theme files into it. The accepted formats are `.nxtheme`, `.szs`, `.jpg` and `.png`. Launch the theme installer on the console and select the theme you want. Reboot the console and the theme is applied.
The reboot matters and is easy to miss. The installer stages the change, and the console picks it up on the next start, which is when the patched menu resources are actually in place.
There is one structural detail that surprises people. Each file is a single home menu part, for example just the lockscreen or just the main menu, and a full home menu theme is composed of multiple nxtheme files. So a theme is a set rather than one file, and installing one part leaves the other parts of the menu as they were.
Removal is the mirror image. The documentation states that themes live only on the SD card, which is a reassuring fact for anyone worried about permanently modifying a console, and to remove an installed theme you select uninstall in the theme installer. Installing a different theme overwrites the currently installed one.
Themes to start with are collected on the themezer website, and the documentation mentions that Themezer maintains a number of common layouts for all firmware versions, which matters for the next section.
A bad theme can stop the console booting
This is the failure mode that anyone adopting this tool should understand first, because it is the one that goes wrong in a way that is alarming.
If you install a bad theme, or you update the firmware without removing the current theme, the console may crash on boot. The fix is stated plainly in the documentation: delete the `\atmosphere\contents\01000000001000` folder from the SD card. The console then boots normally, because the patched resources are gone.
The fact that recovery requires an SD card and a file deletion rather than a factory reset is the pay-off of the architecture. Nothing is written to the console's internal storage, so the failure is always recoverable by taking the card out.
The underlying cause is worth understanding too. Firmware updates change the menu resources, so a patch built against one firmware version may be wrong for the next one, and the layout files themselves can be version specific. The documentation says a theme with a custom layout may look broken on a different firmware, and that if a theme does not look right it probably needs to be updated by the author, with Themezer maintaining common layouts across firmware versions as the practical answer to that.
The project has since closed the loop on the update case. Starting with version 2.9, the theme installer provides an update detection sysmodule that automatically uninstalls themes when the firmware is updated, and it can be installed from the settings page of the theme installer. That is the difference between a boot loop after every system update and not having to think about it.
Custom layouts are JSON and they break across firmware
Beyond colours and images, a theme can rearrange the home menu itself. Custom layouts are JSON files that allow changing the appearance of the home menu by moving the UI components.
Creating one is a two stage job. You need the original home menu SZS files, which are found in `/themes/systemData` on the SD card if you have ever used the theme installer, and a tool capable of editing them, with the switch layout editor named as an example. The `CustomLayouts.md` file in the repository documents the supported properties, and the layout editor's own wiki is where to start.
The limitation here is the one that decides whether a custom layout is worth the effort. Layouts are version specific, and a layout built for one firmware may render incorrectly on another, which is a different failure from a crash but is still a broken result that the theme's author has to fix.
The repository documents parts of the main home menu layout in its own wiki under `ResidentMenu.szs`, which is the reference for what is actually in those files and what can be moved.
The practical workflow, then, is a chain of three tools. Dump the files, edit the layout with the external editor, and package the result into a theme that the installer can apply. Each step is documented in a different place, and the friction is in the handoffs rather than in any one tool.
NXThemeTool moved theme creation to the PC
The repository also provides NXThemeTool, a PC command line application for creating and editing nxtheme files, which also supports the remote install feature of the theme installer. It runs on any operating system with .NET 8 installed.
That is a significant move in the project's history and it is worth understanding why it happened. The original Switch theme injector was a Windows-only theme creator application, and it has been deprecated, with its source code left in the history of the repository and previous releases still available. The web injector, an early port to the browser, has been deprecated as well, with the old links still working but the project no longer maintained and replaced by the themezer online theme creator.
So the project has had three generations. A Windows desktop creator, then a web port, and now a cross platform command line tool plus a hosted editor. The direction is consistent, moving the authoring work off the console and onto a machine with a keyboard and a browser.
The command line tool is also the piece that connects to the remote install feature, which closes a loop that a static theme file cannot: a theme can be built on a PC and pushed to the console without being copied to the SD card by hand. For anyone producing their own themes in volume, that is the difference between a hobby and a workflow.
The current release naming follows the installer rather than the library, with the recent tags being nxt-3.0.2, nxt-3.0.1 and nxt-3.0, and the last push was on 2026-09-22, so the tool is still being worked on alongside the installer.
Editorial conclusion
SwitchThemeInjector suits a Switch owner with a hacked console who wants a different look on the home menu and is comfortable with the fact that a bad theme can stop the console booting. It is the wrong tool for an unmodded console, since the home menu has no native theme support, and the wrong tool for anyone unwilling to handle a recovery procedure involving a folder on the SD card. Check first which firmware your layout files were built for, because custom layouts are version specific and can look broken on other firmware, and install the update detection sysmodule from the installer settings page, which removes the most likely way to end up in a boot loop.
Frequently asked questions
What does SwitchThemeInjector need to work?
A modded Nintendo Switch running the Atmosphere custom firmware, since the console operating system does not implement custom themes natively and the tool patches the system layout files stored in the SZS archives in the romfs of qlaunch.
Why is there a separate nxtheme file format?
Because the SZS files extracted from the console are considered copyrighted data and cannot be shared online. The nxtheme format contains only differential information, so it can be freely shared, and the documentation says you should only use nxtheme files unless you are making your own patches and custom layouts.
My Switch crashes on boot after installing a theme, what do I do?
Delete the `\atmosphere\contents\01000000001000` folder from the SD card. The documentation also notes that installing a bad theme or updating the firmware without removing the current theme can cause this, and that since version 2.9 the theme installer offers an update detection sysmodule that uninstalls themes automatically when the firmware is updated.
How do I create a theme file?
Use the tools at themezer.net or the standalone online theme creator, or the NXThemeTool command line application in the repository, which runs on any OS with .NET 8 installed and also supports the remote install feature. The original Windows-only theme creator and the early web port have both been deprecated.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/exelix11-switchthemeinjector)Was this useful?