Topographic isoline wallpapers generated from real-world elevation data.
Matterhorn — isowall.py matterhorn
Elevation comes from AWS Terrain Tiles (free, no API key). Contours are extracted with marching squares and rendered as antialiased vector lines colored by elevation.
![]() |
![]() |
|---|---|
Dolomites — -p blueprint |
Big Sur — -p abyss (with bathymetry) |
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt# a preset location
.venv/bin/python isowall.py matterhorn
# any place name (geocoded via OpenStreetMap — check the printed match)
.venv/bin/python isowall.py "lake como" --palette blueprint
# exact coordinates
.venv/bin/python isowall.py 46.55,7.98 --zoom 11 --palette ember
# see what's available
.venv/bin/python isowall.py --list-presets
.venv/bin/python isowall.py --list-palettesOutput defaults to a 4K PNG (3840x2160) in the current directory.
.venv/bin/python server.py # then open http://127.0.0.1:8000An interactive preview UI: the server fetches elevation data and returns
contour polylines, the browser renders them as SVG (fills the window like a
real wallpaper). Palette changes are instant (recoloring happens
client-side); sliders for zoom / levels / smooth / detail / aspect refetch
automatically. The Map button opens an OpenStreetMap picker (Leaflet) —
click to pick a location; the map zoom becomes the wallpaper zoom.
Download PNG renders a full-resolution file via the same code path as the
CLI (4500x3000 for 3:2, otherwise 3840px on the long edge). Press H to
hide the panel.
| Flag | Default | Meaning |
|---|---|---|
-p, --palette |
midnight |
color palette |
-s, --size |
3840x2160 |
output resolution WxH |
-z, --zoom |
11 |
map zoom 8–14, higher = closer in |
-n, --levels |
24 |
approximate number of contour levels |
-i, --interval |
auto | contour interval in meters (overrides --levels) |
--smooth |
1.6 |
gaussian smoothing of the terrain (0 = off) |
--detail |
1100 |
elevation grid width in samples (more = crisper detail, slower) |
--line-scale |
1.0 |
line width multiplier |
-o, --output |
auto | output path |
Dark: midnight, ember, forest, blueprint, mono, synthwave,
oxide, aurora, magma, nebula, abyss, crimson, sakura.
Pure black (#000000): matrix, onyx, noir, laser.
Light: sand, paper, arctic. Each is a background color plus a
low→high elevation gradient for the lines. Every 5th contour is drawn
heavier (index contours), like a real topo map.
Add your own in the PALETTES dict at the top of isowall.py.
isowall.py CLI renderer — tiles, contours, drawing (self-contained)
server.py web preview backend
static/ web preview frontend (vanilla JS + SVG)
batch.py render every preset × palette into wallpapers/
examples/ images used in this README
- Downloaded tiles are cached in
.cache/tiles/, so re-rendering the same area with a different palette is fast. - Coastal areas include bathymetry (underwater contours) — often looks great.
- If a location renders flat (open ocean, plains), try a different zoom.

