Loupe

GNOME's default image viewer since GNOME 45, written in Rust with GTK4 and sandboxed image loading via the glycin library.

Loupe is the official GNOME image viewer, shipped as part of GNOME Core since GNOME 45, replacing the long-serving Eye of GNOME (eog). It is written entirely in Rust using GTK4 and libadwaita, bringing GPU-accelerated rendering and a modern adaptive interface to everyday image browsing. What sets Loupe apart architecturally is its use of the glycin library, which decodes each image format in a separate sandboxed process — meaning a maliciously crafted image file cannot compromise the host application or the user's session.

Features

  • Sandboxed image decoding — The glycin library runs each image decoder in an isolated subprocess, preventing malicious image files from escaping into the viewer process.
  • GPU-accelerated rendering — GTK4's scene graph renders images on the GPU, enabling smooth zoom and pan even on large files.
  • SVG support with tiled rendering — Scalable vector graphics are rendered at native resolution using tiled rendering to handle arbitrarily large SVGs without exhausting memory.
  • EXIF-aware rotation — Rotating a JPEG writes the new orientation to the file's EXIF metadata rather than re-encoding pixel data, preserving quality.
  • Print layout dialog — A dedicated print dialog lets you set paper size, margins, and image scaling before sending to a printer.
  • Touch and trackpad gestures — Pinch-to-zoom and swipe-to-navigate work naturally on touchscreens and precision touchpads.
  • High-DPI aware — Images are displayed at the correct physical size on HiDPI screens without blurring.
  • Adaptive layout — The UI adapts to narrow windows and mobile form factors, consistent with libadwaita design conventions.
  • Wide format support — JPEG, PNG, WebP, AVIF, HEIC, GIF, TIFF, BMP, SVG, and more via the glycin loader ecosystem.
  • GNOME Core — Loupe is installed on every standard GNOME desktop; no separate installation is needed on GNOME-based systems.

Installation

On most GNOME-based desktops Loupe is already present. If you need to install or update it:

# Flatpak — Flathub (recommended for latest version)
flatpak install flathub org.gnome.Loupe

# Fedora (included in GNOME spin by default)
sudo dnf install loupe

# Debian 13 (Trixie) / Ubuntu 24.10+
sudo apt install loupe

# Arch Linux
sudo pacman -S loupe

# Nix
nix-env -iA nixpkgs.loupe

Usage

Loupe registers itself as the default image viewer on GNOME, so double-clicking any image in Files (Nautilus) opens it automatically. You can also launch it from the terminal:

# Open a single image
loupe photo.jpg

# Open multiple images — navigate between them with arrow keys
loupe *.png

# Open from a directory — all images in the directory become navigable
loupe ~/Pictures/holiday/IMG_0001.jpg

Keyboard shortcuts

ActionShortcut
Next image or Space
Previous image
Zoom in+ or Ctrl+=
Zoom out-
Fit to window0
Full-screenF or F11
Rotate clockwiseR
Rotate counter-clockwiseShift+R
Open print dialogCtrl+P
Copy imageCtrl+C
Trash fileDelete

Viewing image properties

Click the button in the header bar to open the Properties panel. It shows file size, dimensions, colour profile, camera make and model, exposure settings, and GPS coordinates (with a map link) when EXIF data is present.

glycin: Sandboxed image loading

The glycin library is the security foundation that distinguishes Loupe from most image viewers. Traditional viewers load image data directly in the application process; a heap overflow in a JPEG decoder, for example, could give an attacker control of the viewer process and access to the user's files.

Glycin addresses this by forking a separate, sandboxed loader process for each image. The loader process:

  • Runs under a restrictive seccomp-bpf syscall filter
  • Has no network access
  • Can only read the specific file it was asked to decode
  • Communicates results back to Loupe over a private D-Bus socket

If the loader crashes or is exploited, the damage is contained to that short-lived process. This architecture also means adding a new image format only requires writing a new loader — the viewer itself needs no changes.

Loupe vs Eye of GNOME

FeatureLoupeEye of GNOME
LanguageRustC
ToolkitGTK4 + libadwaitaGTK3
Sandboxed loading✅ (glycin)
GPU rendering
AVIF / WebP supportLimited
Adaptive / mobile UI
Print dialog
Touch gestures
MaintainedMinimal