Motion
Get Motion

DocsSound, sensors and files

The pointer, clicks and time

A wallpaper doesn't only have to play. It can follow your mouse, answer a click on the desktop, change with the time of day, and show what only your computer knows: the song that's playing, how busy the processor is, the weather, your calendar.

9 min readMotion

Try it: Glow Tide (hover, click and drag), Snowfall (the clock and the date), Ink Pool (hover, click and drag), Valley Hours (day and night by the clock).

Following the pointer

Scenes see the pointer while it's over the desktop: where it is, and every click. On a phone or tablet, your finger is the pointer.

Only the desktop counts. When the pointer is over a window, the scene sees it leave.

Positions go from 0 to 1, from the top left: x across, y down. That's the same in every layer, script and material, whatever the size of the screen.

Layers that answer the pointer

The plainest is the Pointer light: a light with a trail that follows the mouse and bursts when you click. With no pointer decides what it does when the pointer's gone: Wander, Fade out or Stay.

Many other layers have a pointer setting of their own:

LayerWhat the pointer does
Water surfacestirs it as it moves; clicks splash
Fluidstirs the ink
Fireworksa rocket bursts where you click
Lightningarcs reach for it
Pathsa click sends a pulse from the nearest line
Plexusdraws the points in, or pushes them away
Flockthe birds or fish turn away from it, or follow it
Blobspushes them
Physicsthrows the shapes
Reaction-diffusionseeds new growth
Cellular automatadraws live cells
Depth parallaxthe picture moves in 3D with it
Lens and Lens flarefollow it
3D scene and 3D particlesthe camera leans towards it

A Particle system can spawn particles on a click, along the pointer's path, or push them with the pointer (see Particles). A Webpage or Web project can let clicks through to the page with Clicks reach the page (see Web layers).

Any layer

Every layer has an Interaction group in its settings, folded away at the bottom:

Trying it in Studio

In Studio, clicking the preview normally picks and moves layers. Click Try it in the bar under the preview, and clicks go to the scene instead, as they would on the desktop. Click it again to go back to editing.

Clicks and the pointer in scripts

scene.pointer is where the pointer is, with active telling you whether it's over the desktop, buttons and down which buttons are held, and speed how fast it moves. scene.on with "click" (which hands you the button too), "dblclick", "press", "drag", "wheel", "pointer", "hover" or "layerClick" (a click on a layer, the top one drawn there) runs a function each time. They come the same way in Studio's preview and on the desktop, on whichever screen the pointer is over; scene.screen says which screen a scene is on, and scene.isPreview whether it's the preview.

scene.on("click", (x, y) => {
    scene.set("Ripple", "x", x * 2 - 1);
    scene.set("Ripple", "y", y * 2 - 1);
    scene.animate("Ripple", "opacity", 1, 0.05);
    scene.after(0.4, () => scene.animate("Ripple", "opacity", 0, 1));
});

Layers' Left and right and Up and down go from -1 to 1, hence the x * 2 - 1.

In visual scripts: On Click, On Double Click, On Mouse Button, On Drag, On Mouse Wheel, On Layer Clicked, On Mouse Move, On Mouse Enter and On Mouse Leave start things, and Get Mouse Position, Is Mouse Button Down and Get Pointer Speed give how it is.

A wallpaper never hears the keyboard on the plain desktop. A scene that's played, as a game is, asks for it with scene.requestInput() (or Request Input); once the person gives it, scene.on("key") and scene.on("pad") hear the keys and the gamepad until it's given back.

The pointer in materials

The Input nodes work per pixel: Pointer, Pointer Mask, Click Ripple, Pointer Pressed, Time Since Click, Pointer Direction and Pointer Over Layer. Pointer Parallax shifts a picture with the pointer, as if it sat at a depth.

In GLSL, iPointer is the pointer from 0 to 1 from the top left, iMouse is the pointer as Shadertoy gives it, and iClick is the last click: x, y, the seconds since, and 1 if there's been one.

The time of day

Every scene knows the time where it's playing. You don't need to do anything for this: there's nothing to turn on.

Scripts read scene.clock: the hour, minute, second, weekday, how far through the day it is, and daylight, which is roughly how light it is outside: 0 at night, rising from six in the morning, highest at one in the afternoon and gone by eight in the evening.

// dim the scene at night
scene.every(60, () => {
    scene.animate("Glow", "opacity", 0.3 + 0.7 * scene.clock.daylight, 30);
});

In visual scripts, Get Time of Day and Get Hour give the time, and On Time of Day and On New Day start things. Materials have a Time of Day node, and shaders have iDate (year, month, day and the seconds so far today).

To show different scenes at different times of day, you don't need any of this: a playlist can change scenes through the day (see Playlists).

What the desktop knows

Four layers show what only your computer or phone knows. Motion asks for it only while a scene that shows it is on screen, once for every scene and screen, and hands it to the scene: the scene itself never goes looking. They work on Linux, Windows and Android alike.

In a script, scene.media, scene.system and scene.calendar read what these layers show; see What the desktop knows. The calendar is given only to a scene that can't send it anywhere: one that names no websites to read and has no web layer.

Now playing

Now playing shows the song that's playing: its title, artist, cover and a progress line, as a Card, One line or Cover only. It comes from whichever player is showing in your system's media controls: any MPRIS player on Linux, the media session Windows shows by its volume, and on Android the player in your notifications, once you let Motion read notifications (Android's way of letting an app see what's playing; Motion only looks at the song). The app asks only when the scene you chose shows what's playing. Shows can be While something plays or Always. Covers come only from your own computer; Motion doesn't fetch them from the web.

This is separate from moving to sound: Now playing knows what's playing, not how it sounds. A scene can do both.

System monitor

System monitor shows the processor, memory, network, temperature, swap, disk and battery as Rings, Bars or small Graphs. Pick which under Shows, and how often it reads them with Every (one to five seconds). The battery's meter warms as it empties. Windows doesn't give the network or the temperature to programs. Android gives apps a little less: the processor's load is how fast its cores are running, and the temperature is the battery's.

Calendar

Calendar shows this month as a grid with today marked, this week, or what's Coming up, with the next few events from your calendar. Weeks start on follows your country's custom unless you say otherwise.

The events come from your desktop's own calendar where Motion can read it: on Linux, Evolution Data Server (GNOME's calendar, Evolution and your online accounts); on Windows, the Calendar app's, where Windows lets desktop programs read it (Settings › Privacy & security › Calendar); on Android, the phone's calendar, which the app asks to read only when the scene you chose shows it. You can also pick a folder of .ics files in Settings › Weather and calendar (on Plasma this is the way, as KDE's calendars can't be read from outside). That's the default: a Calendar layer's Calendar can name one of its own instead, This computer's calendar alone or a Folder… of .ics files, so two calendars can sit side by side. Events are only ever read, and never leave your computer or phone.

Weather

Weather shows the conditions now and a short forecast, as icons and words. It's for the place you pick in Settings › Weather and calendar (on Android, in the app under Weather and calendar): type a town or city and pick it from the places found. Until you pick one, scenes show no weather there. While a scene on show uses a place, Motion asks Open-Meteo for its weather every half hour, once for every scene and screen, and keeps it, so starting again doesn't ask again. Only where the place is, to about 10 km, is kept and sent; Motion never uses your device's location. A layer's Place can name a place of its own instead: type a town or city, Find, and pick it; empty, it shows the default place. So one scene can show London and Tokyo side by side, each asked for once every half hour. Up to eight places are asked for at a time. A layer's own place comes first: its weather is asked for whether or not you've picked a default place in Settings, which is only for layers that don't name one. Units follow your country's custom unless you pick °C or °F. With Share with text and scripts on, {weather} and {temperature} fill in in any text layer.

For readings from a watch or other device, such as your heart rate, see Sensors and the watch.

Ask about this page on the forumAsk a question in Help

Last changed 2 November 2026. Something wrong here? Tell us.