App::MojoSlides - Write your presentations in Perl and Mojolicious!


 $ mojo_slides daemon


This application lets you write presentations using the simple Perlish syntax that Mojo::Template provides for Mojolicious. It follows a similar model to LaTeX Beamer in structure and usage, though it is not nearly as full featured.


This software is in alpha form at best. It may eat baby kittens at any moment.


The Presentation File

Each presentation needs a configuration file. This file is loaded by the mojo_slides application via Mojolicious::Plugin::Config, and as such may use any functionality it provides. Additionally, when the file is loaded one helper presentation_file will have been added which can be used to reference the file and its path (see more below).

Configuration Keys

The file must evaluate to a hash reference, as all Mojolicious config files must. The application will look for several keys which establish the presentation.


A hash reference used to create the App::MojoSlides::Slides object which organizes the slide order, etc. See that module for documentation on how to use it.


If true, it will load Mojolicious::Plugin::PPI to allow code highlighting using that plugin. The API for this key is still influx, but that much is probably not going to change.


Use this key to specify which directories contain your slides. Your slides are actually Mojolicious Templates (see Mojolicious::Guides::Rendering and Mojo::Template for more on that. This key take a string or arrayref of strings which are prepended to the app's template directories.


Like templates this, key takes a string or arrayref of strings, which are directories prepended to the app's static files directories. Use this to allow the inclusion of other style files or javascript that you might need. Of course you will still have to include them in some template for them to be included.


If true, the bootstrap-theme.min.css file will be included in the default layout.


If true (by default), wrap lots more html tags into tag helpers from App::MojoSlides::MoreTagHelpers.

Slides from __DATA__

Emulating Mojolicious::Lite, you may also include slides (templates) in the __DATA__ section of your configuration file!

The Slides (Templates)

As I have said, the slides are just Mojolicious Templates, and such they have certain structure. If you don't understand that, go read about it in the Mojolicious::Guides.

The basic layout uses the standard title helper to set both the webpage title and a centered h1 at the top of the page. Other helpers are provided, such as:



Each returns the slide number for the slide in question. prev and next are smart enough to not leave the expected bounds of first and last.

 %= row begin
   row contents
 % end

Creates a div with the Bootstrap row class. Takes a string or template block like Mojolicious' tag helper does, though you probably mean block.

 %= column 6 => begin
   column contents
 % end

Creates a div of a given width (a number out of 12, see Bootstrap). Takes that width and a string or template block, though again, you probably mean block.

 %= overlay '2-4' => begin
  Stuff to show only on increments 2 through 4
 % end

Creates a div with the attribute msOverlay which the css/js bits of the system use for incrementing slides. The syntax of the specification follows LaTeX Beamer, which is like 2- to show an item from increment 2 onwards and so on.

N.B. adding msOverlay="2-4" to nearly any HTML tag will work as expect too!

Plus the tag helpers from App::MojoSlides::MoreTagHelpers if the configuration option is true.



- if desired for Perl code highlighting


- simple javascript keybinding library


This module is dedicated to the organizers and attendees of YAPC::Brazil 2013. They were kind enough to invite me as their keynote speaker and in turn I wrote this application to present that talk, so I owe them a debt of thanks on both accounts.



Joel Berger, <>


Copyright (C) 2013 by Joel Berger

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.