Skip to content

Your First Wallpaper

A color picker, a slider, a checkbox. That’s enough to turn a static page into a wallpaper someone can make their own. Try the controls below—then build the same thing with four small files.

Make it yours

Pick a color, tune the intensity, and toggle the title. The project below starts with these same defaults.

Wallpaper properties

My Wallpaper

  1. Install the two packages.

    In an empty project directory, install the package and Vite with Bun:

    Terminal window
    bun add wallpaper-engine
    bun add --dev vite
  2. Add the four files.

    The property record is shared by the build and your runtime listener. Switch tabs to copy each file into the matching location:

    src/properties.ts
    import {
    boolProperty,
    colorProperty,
    groupProperty,
    sliderProperty,
    } from 'wallpaper-engine/plugin';
    export const properties = {
    appearance: groupProperty({ text: 'Appearance' }),
    accent: colorProperty({ text: 'Accent', value: '#60a5fa' }),
    intensity: sliderProperty({
    text: 'Intensity',
    value: 0.5,
    min: 0,
    max: 1,
    fraction: true,
    precision: 2,
    }),
    showTitle: boolProperty({ text: 'Show title', value: true }),
    };
  3. Start the wallpaper.

    Terminal window
    bun x vite

    Open the printed local URL and click the WE Devtools island. The Properties tab contains the same controls you tried above.

Change Accent to recolor the background. Move Intensity to fade the title. Toggle Show title to hide it. Then choose Reset defaults in devtools to bring everything back.

The connection is small on purpose:

  • properties.ts defines the editor controls and their defaults.
  • wallpaper.ts applies host updates to your page. satisfies WallpaperPropertyListenerOf<typeof properties> infers the callback’s keys and value types.
  • The Vite plugin supplies the browser simulator during development and writes project.json during a production build.

Stop the development server and build:

Terminal window
bun x vite build

Your output directory now contains index.html, bundled assets, and project.json. The simulator stays out of production. Import that directory into Wallpaper Engine for the final host check; the Workshop workflow walks through the handoff.