A drag-and-drop install that lets Mac users run TomoTexture — Alfonso Mallozzi's texture editor for Tomodachi Life: Living The Dream UGC saves — on top of Ryujinx.
TomoTexture was built for Windows. This repo packages a thin macOS launcher into a self-contained .app that runs the original Windows build's bytecode directly, with a small patch so it finds your Ryujinx save folder. No upstream code is hosted here: the app downloads Alfonso's official release on first launch.
Credit: All credit for TomoTexture itself goes to Alfonso Mallozzi. This project only ships the macOS launcher wrapper.
- macOS 11 or newer on Apple Silicon (M1, M2, M3, M4...).
- Intel Macs are not supported — see For developers if you want to build a x86_64 version yourself; in practice, running Ryujinx + a Switch save through this tool isn't viable on Intel hardware regardless.
- Use Ryujinx Stable, not Canary, for Tomodachi Life. Recent Canary builds have a MoltenVK crash when taking in-game photos in PhotoStudio that can wipe UGC items you're editing before they autosave. Stable is older and slower to gain features, but doesn't crash.
-
Download
TomoTexture.dmgfrom the latest release. -
Double-click the
.dmgto open it. -
Drag
TomoTextureonto theApplicationsfolder in the same window. -
Eject the disk image (right-click the
TomoTexturedrive on your Desktop → Eject) and openApplications. -
Right-click
TomoTexture→ Open → in the dialog, click Open.⚠ This only happens ONCE. macOS shows this because TomoTexture isn't signed with a paid Apple Developer ID — same as Handbrake, OpenEmu, and other free, unsigned apps. After this first time, double-clicking just works.
If your macOS version doesn't show an "Open" button (only "Done"):
- Open System Settings → Privacy & Security
- Scroll to the Security section
- Click Open Anyway next to the TomoTexture warning
- Right-click TomoTexture → Open again, and confirm
-
The first launch shows a small progress window while it downloads TomoTexture from Alfonso's GitHub (~34 MB) and sets it up. After that, every launch opens straight into the app.
When the app opens for the first time, it'll ask for two folders:
Point this at your Ryujinx save folder for Tomodachi Life. On macOS it lives at:
~/Library/Application Support/Ryujinx/bis/user/save/<YOUR_SAVE_ID>/
<YOUR_SAVE_ID> is a 16-digit number (commonly 0000000000000001). It's the folder that contains subfolders named 0/, 1/, and (after first use) SAVE BACKUP/.
How to navigate to it in the Browse dialog:
- In the Browse dialog, press Cmd + Shift + G (Go to Folder).
- Paste this path:
~/Library/Application Support/Ryujinx/bis/user/save - Press Enter.
- Pick the numbered folder inside (usually
0000000000000001).
macOS hides
~/Libraryin Finder by default — that's why you need Cmd+Shift+G.
Any folder where you want backups stored. A safe choice is a folder in ~/Documents/ so backups survive if you ever reinstall Ryujinx. If you don't have one, create ~/Documents/TomoTexture-Backups first in Finder, then select it.
"Cannot be opened because Apple cannot check it for malicious software" (or "...because it is from an unidentified developer") — This is macOS Gatekeeper blocking unsigned downloads. See step 5 above (right-click → Open). You only need to do it once.
"App is damaged and can't be opened. You should move it to the Trash." — Same Gatekeeper check, more aggressively worded. Use the right-click → Open path above. If that doesn't work, open Terminal and run:
xattr -dr com.apple.quarantine /Applications/TomoTexture.app
then try opening it normally. (This removes the quarantine flag macOS adds to internet downloads.)
First-launch progress window stalls or shows an error — Quit the app, make sure your internet is working, and re-open. The app stores its download under ~/Library/Application Support/TomoTexture/. Deleting that folder and reopening forces a clean re-download.
App opens but says "Slot Mismatch Detected" — This is the app warning you that your save slots and your existing backups don't match (e.g., you added new items since the last backup). Not an error. Click through it; if you want it to stop appearing, take a fresh in-app backup.
App can't find Library folder in the Browse dialog — Use Cmd+Shift+G to paste the path directly. macOS hides ~/Library from Finder by default.
Re-installing or updating — Drag the new TomoTexture.app from a fresh .dmg into /Applications, replacing the old one. Your downloaded runtime under ~/Library/Application Support/TomoTexture/ is reused, so updates don't re-download.
You need Python 3.14 (Homebrew or python.org — both work).
git clone https://github.com/zachmtz08/tomotexture-port.git
cd tomotexture-port
python3.14 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python setup.py py2app --arch=arm64
open dist/TomoTexture.appThe build is arm64-only because numpy 2.x and recent Pillow stopped shipping universal2 wheels — a universal2 build would silently break on Intel anyway. If you want to build for x86_64 specifically, swap --arch=arm64 for --arch=x86_64 and run on (or under Rosetta on) an Intel-capable machine.
The Windows TomoTexture app contains hardcoded path literals like %APPDATA%\Ryujinx\bis\user\save\... and resolves them with os.path.expandvars. On macOS:
os.path.expandvarsisposixpath.expandvars, which only handles$VAR/${VAR}— it leaves%VAR%untouched.- Backslashes aren't path separators on POSIX; they're literal filename characters.
app_main.py monkey-patches os.path.expandvars to use ntpath.expandvars (which handles %VAR%), sets APPDATA to ~/Library/Application Support, and replaces backslashes with forward slashes in the result. The bundled app then resolves its save paths to the correct macOS Ryujinx location with zero changes to the original code.
Python 3.14 is required because the upstream .pyc files were compiled against 3.14's bytecode magic number; runpy.run_path will refuse to load them under any other minor version. The .app bundles its own Python 3.14 interpreter via py2app, so end users don't need to install anything.
.github/workflows/release.yml builds the arm64 .app, packages it into a .dmg, and attaches it to the GitHub Release on every v* tag push. To cut a release:
git tag v2.0.0
git push --tagsYou can also trigger a build manually from the Actions tab (workflow_dispatch) — useful for verifying the workflow without cutting a real tag.
The Terminal-based installer (install.sh, setup.sh, TomoTexture-Installer.command, TomoTexture.command) lives in legacy/ for now in case anyone is mid-install with the old flow. They will be removed in a future release.
The launcher code in this repo is released under the MIT License — see LICENSE.
TomoTexture itself is Alfonso Mallozzi's work and is downloaded from his official release page at first launch. Its license was not specified upstream at the time of writing — use at your own discretion. This repo does not redistribute any upstream binaries.