... project dossier

Smooth Zoom

Smooth Monitor Zooming for GNOME on Wayland

... case study

Full Record

[long form]

I just released Smooth Zoom, a GNOME Shell 50 extension that smoothly zooms into the monitor your cursor is on, follows the cursor while zoomed, and gets out of the way of everything else on screen.

If you have ever tried to screencast live demos or screen-share something small on your desktop, you know the problem. Your audience needs to see what you are pointing at, but OBS zoom scripts do not work on Wayland. The existing tools for this were either Windows-only or broke as soon as you switched to Wayland. Neither one felt like a real solution for Linux desktop users.

Smooth Zoom solves this by working at the compositor level. Instead of relying on OBS or any external tool to capture and scale the screen, GNOME Shell itself does the zooming. This means OBS can stay a passive recorder, and the zoom follows your cursor naturally.

How it works

Press Super+Z and GNOME Shell smoothly animates a zoom into whichever monitor your cursor is on. Only that monitor scales — your other monitors (preview windows, chat, notes) stay at normal size. While zoomed, the view tracks your cursor with a smooth following effect so you can pan around the scaled content naturally.

The zoom is implemented by cloning the GNOME Shell UI group into a separate actor, clipping it to the active monitor, and driving the animation with pivot point and scale transforms. The system cursor remains native size and draws above everything, so it stays visible and usable while zoomed.

Built for demos

This was born from a very specific need: doing live demos on Wayland where the screen content is small and needs to be readable by an audience. Toggle zoom in, share your screen normally, and move your cursor to guide attention. Toggle follow off with Super+X if you want to freeze the framing while your cursor moves freely underneath. Toggle out when you are done.

Features

  • Per-monitor zoom — only the monitor under your cursor scales, other monitors stay at 1x
  • Smooth ease-out animation with configurable duration (50 to 800 ms)
  • Cursor follow with adjustable smoothing factor
  • Pause/resume follow with a separate hotkey
  • Rebindable hotkeys via a libadwaita preferences panel — no file editing required
  • Zoom level from 1.25x to 6x, adjustable in real time

Installation

You can install from source:

git clone https://github.com/kevinchappell/smoothzoom.git
cd smoothzoom
ln -s "$PWD/smoothzoom@kevinchappell.github.io" "$HOME/.local/share/gnome-shell/extensions/smoothzoom@kevinchappell.github.io"
glib-compile-schemas smoothzoom@kevinchappell.github.io/schemas/
gnome-extensions enable smoothzoom@kevinchappell.github.io

Then log out and back in to load the extension on Wayland. Open the preferences panel with gnome-extensions prefs smoothzoom@kevinchappell.github.io.

The source is available on GitHub under the MIT license: github.com/kevinchappell/smoothzoom