Stoatworks Labs

Wallslide

A template sized to the wall, and a deck to test it

In developmentRuns in a browser tab

PowerPoint won't make an eighty-inch slide.

Type the wall's resolution and get a template that's actually its shape and size, themed with the event's own colours, fonts, logo and background, plus a deck of test patterns at the wall's native raster if you want one. The arithmetic that makes an oversized wall fit a format that caps a slide edge at 56 inches is the bit people get wrong in both directions, and it's done for you.

Everything happens in the tab. There's no backend, so a client's unannounced logo has nowhere to be uploaded to, and the .pptx is put together in the page and saved straight to your machine. Fonts are named by the theme rather than embedded, so check the playback machine with PowerPoint Font Manager before the show.

Wallslide — A template sized to the wall, and a deck to test it

What it builds

01

A slide size PowerPoint will accept

The point of it

A 7680 × 1080 wall at 96 dpi wants an eighty-inch slide, and the format caps an edge at 56. That's a schema limit (ST_SlideSizeCoordinate tops out at 51,206,400 EMU) rather than a dialog being fussy. So the deck gets built at 16:9 and stretched, or built at close enough and letterboxed, and the first anyone knows about it is at the tech rehearsal. Wallslide builds at half size and records the export multiplier. The build scale is always a whole number or a whole reciprocal, because "build at half and export at 200%" is an instruction a person can follow at 2 a.m. and "build at 1/2.37" isn't.

02

Keynote's limits aren't PowerPoint's

Measured by asking Keynote until it refused, not taken from documentation: Keynote runs 200 pt to 8192 pt where PowerPoint runs 72 pt to 4032 pt. A 7680 px wall is 5760 pt, which PowerPoint has to halve and Keynote just holds at 1:1, with no build scale, no export multiplier and nothing to get wrong. The floor goes the other way: a 1080 × 160 ticker strip is legal in PowerPoint and impossible in Keynote at native size. That's a good reason to pick one application over the other for a given wall.

03

A template, not a deck

Twelve theme colours and two font names in theme1.xml, a slide master and four layouts (Title Slide, Title and Content, Title Only, Blank) with the event's logo and background on the master, where they can be changed in one place. An organiser changes the theme and the whole deck follows, which is why you'd ship a template at all. Master text styles are scaled by the slide's width against PowerPoint's 13.333″ default, because a forty-inch slide with 44 pt titles has titles a third of the size anyone intended.

04

A safe area measured in cabinets

Where part of the wall is masked, the insets are given in wall pixels. The reason is physical, and "the bottom two cabinets are behind the band" is measured in cabinets rather than percentages. Every placeholder in every layout moves inside them.

05

Test patterns at the wall's own raster

Optional, rendered at the native pixel count and placed full-bleed with the master's shapes suppressed, because a test pattern with a logo on it is a picture of a logo. Every pattern is labelled with what it reads: most diagnose the wall, one diagnoses the chain. A 1 px checkerboard that comes back flat grey means something between PowerPoint and the panels is scaling, which is worth knowing and isn't a fault in the wall. A deck that doesn't make that distinction is how somebody spends midnight re-terminating a perfectly healthy wall.

What to check before a show

  1. 01

    It doesn't write a .key file, and won't

    Keynote's format has been IWA since 2013, which is Snappy-compressed protobuf in an undocumented schema. So Wallslide serves Keynote the two ways that work instead: open the generated .pptx in it, which imports and keeps the slide size, or type the two numbers it gives you into Document Setup.

  2. 02

    This isn't Test Card, and shouldn't become it

    What's here is the subset of patterns that survives a trip through a deck. Test Card is the serious generator: RP 219 measured against ffmpeg's own smptehdbars, real cabinet maps imported from Pixel Peeker, PNGs at the exact raster of every physical output. RP 219 is left out here on purpose. Having the fifteen colours exactly right is all it's for, and a pattern that's about exact colour shouldn't be sent down a path that may colour-manage it. The bars here are plain 75% bars and are labelled as such.

  3. 03

    Fonts are named, not embedded

    The theme asks for a typeface but doesn't carry one. Embedding is licence-encumbered and Mac PowerPoint ignores it, so a template that claimed to embed would be lying on one of the two platforms an event runs on. The themes also carry no script fallback table, which is what stops a two-font deck reporting thirty-nine. The cost is that a deck meant to carry Japanese or Devanagari needs its theme fonts set to a face that covers it, because there's no curated fallback to rescue it.

  4. 04

    The slide is the right size; the playout isn't tested

    Four decks have been opened in a real PowerPoint and a real Keynote on macOS with no repair prompt, with slide widths reported as 40.00″, 20.00″, 11.25″ and 40.00″, exactly the computed values, and a full-bleed picture measuring 2880 × 810 pt on a 2880 × 810 pt slide. No deck it's produced has been played out to a real LED processor or wall and measured, and what a playback machine and a processor then do with the picture isn't something this can tell you.

  5. 05

    A well-formed file isn't a file PowerPoint opens

    Every XML part is parsed by xmllint in CI, and the unit tests prove the package is a well-formed ZIP of well-formed XML. The gap between that and "PowerPoint will open it" is where every OOXML bug lives, in a format whose failure mode is a dialog that gives no reason. That gap gets closed by hand, with sample decks opened in the real applications.

Run your own copy

Wallslide is also published as a Docker image, ghcr.io/stoatworks-labs/wallslide, serving the same files as the hosted copy. On a laptop or a box in the rack it keeps working when the venue's internet doesn't.

Docker

docker run -d --name wallslide --restart unless-stopped -p 8543:80 ghcr.io/stoatworks-labs/wallslide:latest

Then it's at http://localhost:8543/. The repo's docker-compose.yml does the same with docker compose up -d.

Unraid

Search Community Applications for wallslide and install it. The template sets the port to 8543 for you.

Self-hosting the web tools, and which ones you can