How to make a live wallpaper with AI
Step by step
- Pick a wallpaper typeA Metal shader for the Mac, an HLSL shader for Windows, or a web wallpaper (Canvas and WebGL) for both. All three are free.
- Copy the prompt and describe your ideaOn the docs' prompt page, copy the prompt for your type and replace the DESCRIPTION line with what you have in mind.
- Save the files the AI returnsThe AI answers with two code blocks: manifest.json, at the root of the folder, and the shader or index.html, inside content.
- Pack it with pack.pyDownload pack.py from the docs and run python3 pack.py with the folder name. It validates everything and writes the .livewallpaper file.
- Import and shareIn PrimoEngine, import the file with the + (Import) button in Installed. Then use Share… in the wallpaper's menu to send it to others.
Why can an AI make a wallpaper?
In PrimoEngine, a wallpaper is just a .livewallpaper file: a ZIP with a manifest.json that describes it and a content/ folder with the actual content. That’s a handful of text files, exactly the kind of thing ChatGPT and Claude write well, as long as they know the rules.
That’s what the ready-made prompts in the docs are for: they explain the format, the required names and what’s forbidden, so the result comes out valid.
Which wallpaper type should you pick?
| Type | Best for | Runs on | Plan |
|---|---|---|---|
metal | Patterns, gradients, effects. Lightest on battery. | Mac | Free |
hlsl | The same on Windows: the twin of a Metal shader. | Windows | Free |
web | Illustrations, particles, Canvas and WebGL. | Mac and Windows | Free |
video | Any looping video you already have. | Mac and Windows | Premium |
If you want one file for both systems, go web. If you want the lightest option on a laptop, go shader.
The steps in more detail
1. Write a good description
The prompt has a DESCRIPTION line. Replace it with what you picture, including colors and motion. For example: a soft aurora in greens and purples over a starry sky. The more concrete the description, the better the result.
Tip: if the AI can open links, also give it https://engine.oprimo.dev/docs/llms-full.txt. It’s the whole spec in a single file.
2. Save the files in the right place
The AI returns exactly two code blocks. For a Metal shader, the folder looks like this:
my-aurora/
manifest.json
content/
shader.metal
For a web wallpaper, the second file goes in content/web/index.html. For Windows, in content/shader.hlsl.
3. Pack it
Download pack.py from the docs and run it in Terminal:
python3 pack.py my-aurora
It checks the manifest, computes the checksum and writes my-aurora.livewallpaper. On the Mac, Python 3 ships with the Command Line Tools. On Windows, install Python 3 from the Microsoft Store and run py pack.py my-aurora.
4. Import it into PrimoEngine
- Mac: in Installed, click + (Import) and pick the file. It goes straight onto your desktop.
- Windows (beta): use the Import button or double-click the file.
Importing a package with the same id again replaces the installed one. That’s how you ship an update (bump version).
5. If something fails
Paste the message from the app or from pack.py back into the chat, together with the error table in the reference, and ask for a fix. The prompts already tell the AI not to use GLSL syntax, but it’s worth checking for that when a shader won’t compile.
How to share a .livewallpaper file
In the menu of a wallpaper you imported, Share… writes a .livewallpaper file. Send it by AirDrop, chat, email or GitHub. The person who gets it imports it with the same + button.
A few rules:
- You can only share wallpapers you imported. Catalog ones can’t be shared.
- There’s no server and no account: every file, wherever it came from, goes through the same checks on import. Shaders can only draw pixels, and web wallpapers run sandboxed, with no internet and no access to your files.
- For Windows users, send the web version, or two shader files (one
metaland onehlsl, with the sameid). The HLSL prompt can convert a Mac shader: paste itsmanifest.jsonandshader.metaland ask for the twin.
Coming from Shadertoy?
A lot carries over: iTime becomes u.time, iResolution.xy becomes u.resolution and vec2 becomes float2. There’s no iMouse and no textures, though, and the y axis grows downward. The details are in the practical guide.
Start with the app
To try what you make, you need PrimoEngine installed. It’s free and needs no account: download it for Mac or Windows. The full spec, with complete examples, is in the creator docs. And to see what’s already possible, browse the gallery.
Frequently asked questions
Do I need to know how to code to make a live wallpaper with AI?
No. The prompts in the docs already tell the AI the exact format PrimoEngine accepts. You describe the idea, save the files and run one command to pack them.
Does it work with free ChatGPT?
The prompts are written for ChatGPT, Claude or any chat AI, and don't rely on paid features. If the AI can read links, also give it the docs' llms-full.txt, which has the whole spec in one file.
Will the wallpaper I make work on Windows?
Web wallpapers run on Mac and Windows with the same file. A shader is one package per system: metal on the Mac and hlsl on Windows. To port one, paste the Mac shader under the HLSL prompt and ask for the twin, with the same id.
What if the import fails?
Paste the error from the app or from pack.py back into the chat, together with the error table from the reference, and ask for a fix.
Can I make a video wallpaper with AI?
A video wallpaper needs no code: import an .mp4, .mov or .m4v up to 256 MB directly. Using your own video is a Premium feature.