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.
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.
- Turning it on. In Motion Player, Settings, Sound and pointer, Scenes can follow the pointer. It's on to start with. Turn it off and every scene acts as if there were no pointer.
- Plasma. The desktop sits over the wallpaper and takes the mouse, so Motion needs the
motion-inputpackage to watch it. It only watches: the desktop still gets every click as before. - Windows. Motion follows the pointer behind your desktop icons with nothing to install.
- Android. Touch in the app: Follows your finger or Off.
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:
| Layer | What the pointer does |
|---|---|
| Water surface | stirs it as it moves; clicks splash |
| Fluid | stirs the ink |
| Fireworks | a rocket bursts where you click |
| Lightning | arcs reach for it |
| Paths | a click sends a pulse from the nearest line |
| Plexus | draws the points in, or pushes them away |
| Flock | the birds or fish turn away from it, or follow it |
| Blobs | pushes them |
| Physics | throws the shapes |
| Reaction-diffusion | seeds new growth |
| Cellular automata | draws live cells |
| Depth parallax | the picture moves in 3D with it |
| Lens and Lens flare | follow it |
| 3D scene and 3D particles | the 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:
- Depth shifts the layer as the pointer moves, as if it were nearer than the screen (above zero) or farther (below). Give the background a little negative depth and the foreground a little positive, and the whole scene gains a sense of depth.
- Follow the pointer moves the layer towards wherever the pointer is.
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.
- The Text and clock layer fills in
{time},{date},{day},{hour},{minute},{second}and{year}by itself. WriteIt's {day}and it says the day. - The Clock face has hands and ticks, or three rings filling with the hours, minutes and seconds. Hours ahead shows another time zone.
- The Real sky is the sky as it is now where you are: the sun and moon where they really are, the moon's phase, the stars, and dawn and dusk when they really happen. It guesses roughly where you are from the computer's time zone (Place from the time zone); turn that off to give your latitude and longitude. Time-lapse runs the day fast so you can see it through, and Time can hold the sky at A fixed moment instead of now.
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.
Last changed 2 November 2026. Something wrong here? Tell us.