Slideshow

If C is good enough for your program, it's good enough for your presentation. (Coming soon.)

slideshow.tgz

Intro

Slideshow provides a framework for slide presentations on Plan 9 using the native draw(2) functions. You define a function per slide, with optional transitions between them, and an array of the steps of the presentation. The accompanying main.c and mkfile will build a program for your presentation which will allow you to step forward and backward through slides. The functions for your slides can use whatever draw functions you like: basic strings (or my wordwrap function), arbitrary drawing with draw(), line(), and friends, import arbitrary graphics with loadimage(), whatever. main.c also includes several helper functions to simplify common tasks and provide a few common slide types.

Slideshow runs on both Plan 9 and Plan 9 from User Space; for the later, 'cp mkfile.p9p mkfile'. Like most of my programs which run on both, it checks for $service being either blank, unset, or set to unix to detect Plan 9 from User Space, in which case it will use different fonts. You may have to change the fonts for your local system.

A proper man page is pending.

wordwrap

As shipped, slideshow assumes you have my wordwrap installed, located next to the slideshow directory. If you'd rather not bother with wordwrap, remove the #include up top and remove or redefine the functions wrline, wrlines, and footer (I recommend removing the first two and redefining the last to use string).

Example presentations

A few presentations are included in the distribution:

demo.c
Provids no content but shows the minimum structure.
nile.c
A presentation on Nile which, demonstrates many of the ways to build slides and transition between them. It tries to do something smart with screenshots, but that remains a work in progress and is best avoided for now. This matches (more or less) what was presented at the 11th IWP9.
p9intro.c
An introduction to Plan 9. This was created for a talk given on December 4th, 2025, at the Portland Linux/Unix Users' Group. The talk included a tour of Plan 9, which was conducted interactively inside Acme; that is not included here.

To make your own presentation, create a new .c file for it, create one function for a slide, and define steptab[] containing at least that one function; you could copy demo.c and start adding to that.

Notes

This is not the fastest way to create a presentation. For simple, less-formal things on Plan 9, consider doing it directly in Acme (with appropriate fonts). slideshow is for when you want to care a bit more about the visual presentation or want to provide builds, transitions, or similar slideshow-specific things.

I have tried a few different ways to handle graphics that can handle showing up at different sizes; I don't have a good answer here yet. This is my biggest frustration/limitation in using this today.

It would be nice to provide a way to write slides as plain text (with, say, indentation indicating content under a heading) and provide an awk script or similar to convert those into common slide types. That remains for future work.

Slideshow was largely inspired by Robin Sloan's "tap essay" Fish, which I highly recommend.