Home

Awesome

slide.sh

Spend less time making slides

""

What is it?

slide.sh is a small, basic, kludgy, hackish, ghetto slide maker that will execute entirely inside of your shell.

There are no graphics, no transitions or effects, no cool line drawing abilities, or anything like that. Seriously bro, its a shell script.

Purpose

slide.sh began as an experiment in what the bash shell is capable of all on its own, and attempts to do something cool without assuming that there are a slew of commands at your disposal. There only requirement outside of bash itself is the tput command, since bash doesn't provide the needed capabilities to move the cursor about the screen freely.

Secondarily, slide.sh is an experiment in feature density vs. code footprint. Complex conditions, pattern matching, string slicing, etc. are all done in the most terse way possible while remaining readable by humans. This isn't to say that this is a superior style, but rather a way of learning the bash shell's built-ins deeply in a real way.

Functionality

What slide.sh provides is the ability to show simulated pages of ASCII text inside of your terminal. An advantage to this is that you, as some sort of programmer, won't have to take a bunch of screen caps or copy / paste text into some full-featured slide creation program to demo the core functionality of your executable program in a clean and organized way while notating certain things and controlling the flow of your presentation.

Features

Usage

There are two functions provided by this library. Each has a different scope:

slide <optional message>

This command displays a single slide of text. The optional message is displayed at the bottom of the screen in place of the default, which explains controls. This command takes slide content from STDIN, so you can pipe slides into it or use a heredoc for a better inline UX. It is typical to make many calls to slide from within the same file to simulate a slide "deck", displaying one after the other.

The exit code from slide represents the character which was entered on the keyboard at exit time. Specifically:

* `0`: Enter, or an unrecognized character.
* `255`: Backspace
* `1..254`: Typed number followed by the Enter key.

Typically the return code is ignored by the caller, but it can be used by other programs to provide navigation if desired (see the deck command, for example).

deck <directory of *.slide files>

The deck command is a very simple wrapper over the slide command. It looks at the given directory for files ending in .slide, and composes a slide "deck" using their contents, one file per slide. There are a few important things to note when using this command:

Use Cases

Some useful things I've done with slide.sh / can think of for it:

Requirements

Examples

The above demo was created from one of the demos in this repository. You can find examples of how to use slide.sh in the examples folder.