How to create and show a presentation from the command line on Linux

When you prepare a talk for audience, the first thing that will probably come to your mind is shiny presentation charts filled with fancy diagrams, graphics and animation effects. Fine. No one can deny the power of visually charming presentation. However, not all presentations need to be Ted talk quality. Often times, the purpose of a presentation is to convey specific information, which can easily be done with textual messages. In such cases, your time can be better spent on gathering information and checking facts, rather than searching for good-looking graphics from Google Image.

In the world of Linux, you can do presentation in several different ways, e.g., Impress for multimedia-rich content, Impress.js for stunning visualization, Beamer for hardcore LaTex users, and so on. If you are looking for a simple means to create and show a textual presentation, look no further. mdp can get the job done for you.

What is Mdp?

mdp is an ncurses-based command-line presentation tool for Linux. What I like about mdp is its markdown support, which makes it easy to create slides with familiar markdown format. Naturally, it becomes painless to publish the slides in HTML format as well. Another plus is its support for UTF-8 character encoding, which comes in handy when showing non-English characters (e.g., Greek or Cyrillic alphabets).

Install Mdp on Linux

Installation of mdp is mostly painless due to its light dependency requirement (i.e., ncursesw).

Debian, Ubuntu or their derivatives

$ sudo apt-get install git gcc make libncursesw5-dev
$ git clone https://github.com/visit1985/mdp.git
$ cd mdp
$ make
$ sudo make install

Fedora or CentOS/RHEL

$ sudo yum install git gcc make ncurses-devel
$ git clone https://github.com/visit1985/mdp.git
$ cd mdp
$ make
$ sudo make install

Arch Linux

On Arch Linux, you can easily install mdp from AUR.

Create a Presentation from the Command Line

Once you installed mdp, you can easily create a presentation by using your favorite text editor. If you are familiar with markdown, it will take no time to master mdp. For those of you who are not familiar with markdown, starting with an example is the best way to learn mdp.

Here is a 6-page sample presentation for your reference.

%title: Sample Presentation made with mdp (Xmodulo.com)
%author: Dan Nanni
%date: 2015-01-28

-> This is a slide title <-
=========

-> mdp is a command-line based presentation tool with markdown support. <-

*_Features_*

* Multi-level headers
* Code block formatting
* Nested quotes
* Nested list
* Text highlight and underline
* Citation
* UTF-8 special characters

-------------------------------------------------

-> # Example of nested list <-

This is an example of multi-level headers and a nested list.

# first-level title

second-level
------------

- *item 1*
    - sub-item 1
        - sub-sub-item 1
        - sub-sub-item 2
        - sub-sub-item 3
    - sub-item 2

-------------------------------------------------

-> # Example of code block formatting <-

This example shows how to format a code snippet.

    1  /* Hello World program */
    2
    3  #include <stdio.h>
    4
    5  int main()
    6  {
    7     printf("Hello World");
    8     return 0;
    9  }

This example shows inline code: `sudo reboot`

-------------------------------------------------

-> # Example of nested quotes <-

This is an example of nested quotes.

# three-level nested quotes

> This is the first-level quote.
>> This is the second-level quote
>> and continues.
>>> *This is the third-level quote, and so on.*

-------------------------------------------------

-> # Example of citations <-

This example shows how to place a citation inside a presentation.

This tutorial is published at [Xmodulo](http://xmodulo.com)

You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo)

Pretty cool, huh?

-------------------------------------------------

-> # Example of UTF-8 special characters <-

This example shows UTF-8 special characters.

ae = ä, oe = ö, ue = ü, ss = ß
alpha = α, beta = β, upsilon = Ʊ, phi = ɸ
Omega = Ώ, Delta = Δ, Sigma = Σ

▛▀▀▀▀▀▀▀▀▀▜
▌rectangle▐
▙▄▄▄▄▄▄▄▄▄▟

Show a Presentation from the Command Line

Once you save the above code as slide.md text file, you can show the presentation by simply running:

$ mdp slide.md

You can navigate the presentation by pressing Enter/Space/Page-Down/Down-Arrow (next slide), Backspace/Page-Up/Up-Arrow (previous slide), Home (first slide), End (last slide), or numeric-N (N-th slide).

The title of the presentation appears on top of each slide, and your name and page number are shown at the bottom.

This is an example of a nested list and multi-level headers.

This is an example of a code snippet and inline code.

This is an example of nested quotes.

This is an example of placing citations.

This is an example of UTF-8 special characters.

Summary

In this tutorial, I showed you how to use mdp to create and show a presentation from the command line. Its markdown compatibility saves us the trouble and hassle of having to learn any new formatting, which is an advantage compared to tpp, another command-line presentation tool. Due to its limitations, mdp may not qualify as your default presentation tool, but there should be definitely a use case for that. What do you think of mdp? Do you prefer something else?

Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.


Support Xmodulo

Did you find this tutorial helpful? Then please be generous and support Xmodulo!

The following two tabs change content below.
Dan Nanni is the founder and also a regular contributor of Xmodulo.com. He is a Linux/FOSS enthusiast who loves to get his hands dirty with his Linux box. He likes to procrastinate when he is supposed to be busy and productive. When he is otherwise free, he likes to watch movies and shop for the coolest gadgets.

9 thoughts on “How to create and show a presentation from the command line on Linux

  1. I copied / pasted the above code into nano and then did 'mdp slide.md'. This is the error I got:

    Error: Terminal height (53 lines) too small. Need at least 81 lines.
    You may need to add additional horizontal rules ('***') to split your file in shorter slides.

    How do I fix this???

    • Here is a solution «You may need to add additional horizontal rules ('***') to split your file in shorter slides.»
      So change the lines with "------------------"
      into "\n'******************"

  2. Strictly speaking, my favorite "command line" presentation maker probably doesn't count, since it produces PDFs, but I really like the "beamer" package for LaTeX.

    Besides giving you the power to put whatever mathematical information you wish in your presentation, the package makes it possible to automatically produce "layered" slides (where you "uncover" bullet points), and you can choose a variety of "skins" for your presentation.

    Of course, for better and for worse, you have to write everything in LaTeX, which can be done in any text editor (although it's my understanding that Emacs shines at writing LaTeX files, although I prefer Vim myself).

    • I almost forgot to mention: even though I'm more likely to use LaTeX over these command line options for presentations, I'm always happy to see good applications for the command line for things that we normally think can only be done in a graphical environment. The command line is more practical than a lot of people realize, and sometimes the simplicity of the command line is perfect for something that we might be doing!

      (Come to think of it, I'm planning a presentation on the Forth computer language. That might be a good place to use this with Gnu Screen; it would be easy to switch between this and a demo then....)

  3. thanks for this! I thought mdpress on debian was the same, but it produces a filer/html. this ncurses version is fantastic.

  4. Hello Dan,

    I am attempting my own presentation but mine runs to the edges of the terminal and your example is down the middle. Not centered, except for some components, but with (in my terminal) very large margins on the side. How is this accomplished?

Leave a comment

Your email address will not be published. Required fields are marked *