Standalone guide
How to make web wallpapers
From a simple HTML animation to Wallpaper Engine-compatible properties in one small example.
Folder structure
my-wallpaper/ ├─ index.html ├─ wallpaper.js ├─ wallpaper-runtime.js (properties) ├─ project.json (properties) └─ preview.png
01
Basic web wallpaper
A web wallpaper is a small local web page. It can use HTML, CSS, Canvas, SVG, and JavaScript.
- 1. Create a folder. Put
index.html,wallpaper.js, styles, and local images inside it. For properties, also copywallpaper-runtime.jsfrom the VKify catalog. - 2. Build the animation. It should fill the window, respond to resizing, and avoid creating a new timer every frame.
- 3. Test locally. Serve the folder with a local HTTP server and open
index.htmlin a browser.
Minimal index.htmlhtml
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>html, body { margin: 0; height: 100%; overflow: hidden; }</style>
</head>
<body>
<canvas id="wallpaper"></canvas>
<script src="wallpaper-runtime.js"></script>
<script src="wallpaper.js"></script>
</body>
</html>Start with this template. Remove the wallpaper-runtime.js line if you do not need properties.
02
Wallpaper Engine properties
To expose settings in VKify and Wallpaper Engine, place `project.json` next to `index.html` and add the standard listener to JavaScript.
- 1. Add the VKify bridge. Save
https://vkify.ru/wallpapers/web/wallpaper-runtime.jsnext toindex.htmland load it before your own script, as shown above. - 2. Describe fields in `project.json`. VKify supports
slider,bool,color,textinput, andcombo. - 3. Use matching keys. A
speedproperty in JSON must be read asproperties.speedin the listener. - 4. Apply values immediately. Wallpaper Engine and VKify call
applyUserPropertieswhenever the user changes a setting. - Colors. A
colorvalue is a string with three numbers from 0 to 1, such as0.1 0.55 1. Convert it to RGB before using it in Canvas or CSS.
project.jsonjson
{
"file": "index.html",
"preview": "preview.png",
"title": "My Wallpaper",
"type": "web",
"general": {
"properties": {
"speed": {
"text": "Speed",
"type": "slider",
"value": 5,
"min": 1,
"max": 10,
"step": 1,
"order": 0
},
"accentcolor": {
"text": "Accent color",
"type": "color",
"value": "0.1 0.55 1",
"order": 1
},
"glow": {
"text": "Glow",
"type": "bool",
"value": true,
"order": 2
}
}
}
}wallpaper.js — receiving valuesjavascript
const settings = { speed: 5, accentcolor: '0.1 0.55 1', glow: true };
window.wallpaperPropertyListener = {
applyUserProperties(properties) {
for (const key of Object.keys(settings)) {
if (properties[key]?.value !== undefined) {
settings[key] = properties[key].value;
}
}
}
};project.json and index.html must be in the same folder.
03
Publishing and connecting
VKify loads web wallpapers by URL, so the browser must be able to access the entire folder.
- 1. Upload the folder to HTTPS hosting. GitHub Pages, Cloudflare Pages, Netlify, or your own server will work.
- 2. Check the direct link. The URL should end in
index.html, open without authentication, and render instead of downloading. - 3. Paste the URL into VKify. If
project.jsonis available next to it, extra properties appear automatically. - Verify the result. Reload VK, change every property, and ensure the animation keeps running after tab and window-size changes.
VKify → View → Background → Custom → Web wallpaper.