• Stars
    star
    487
  • Rank 90,008 (Top 2 %)
  • Language
    Rust
  • License
    BSD 2-Clause "Sim...
  • Created about 1 year ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A terminal slideshow tool

presenterm

A terminal based slideshow tool.


presenterm lets you define presentations that run in your terminal.

This is how the demo presentation looks like:

Installation

The recommended way to install presenterm is to download the latest pre-built version for your system from the releases page.

For other alternative ways to install it, visit the installation docs.

Features

  • Define your presentation in a single markdown file.
  • Image rendering support for iterm2, terminals that support the kitty graphics protocol, and sixel.
  • Customize your presentation's look by defining themes, including colors, margins, layout (left/center aligned content), footer for every slide, etc.
  • Code highlighting for a wide list of programming languages.
  • Selective/dynamic code highlighting such that only a subset of the lines are highlighted at a time, and different sets of lines are highlighted as you move your slides forward.
  • Configurable column layouts that let you structure parts of your slide into columns.
  • Support for LaTeX and typst code block rendering so you can define formulas as text and have them automatically render as images when rendering a presentation.
  • Support for an introduction slide that displays the presentation title and your name.
  • Support for slide titles.
  • Support for shell code execution.
  • Support for generating PDF files from presentations to share with other people.
  • Support for pauses in between each slide so that it progressively renders for a more interactive presentation.
  • Automatically reload your presentation every time it changes for a fast development loop.
  • Terminal colored themes that use your terminal's color scheme. This means if your terminal uses transparent backgrounds or images as background, those will be implicitly set as the background of your presentation.

See the introduction page to learn more.

Images

Images are supported if you're using iterm2, a terminal the supports the kitty graphics protocol (such as kitty, of course), or one that supports sixel.

Read more about images here.

Hot reload

Unless you run in presentation mode by passing in the --present parameter, presenterm will automatically reload your presentation file every time you save it. presenterm will also automatically detect which specific slide was modified and jump to it so you don't have to be jumping back and forth between the source markdown and the presentation to see how the changes look like.

asciicast

Column layouts

Column layouts allow you to organize content into columns. You can define 2 or more columns, choose how wide you want them to be, and then put any content into them. For example:

See the documentation on layouts to learn more.

Shell code execution

Any shell code can be marked for execution, making presenterm execute it and render its output when you press ctrl+e. In order to do this, annotate the code block with +exec (e.g. bash +exec). Obviously use this at your own risk!

asciicast

See more details on this here.

Docs

Some docs on how to configure presenterm and how it works internally can be found here.

Acknowledgements

This tool is heavily inspired by:

Support for code highlighting on many languages is thanks to bat, which contains a custom set of syntaxes that extend syntect's default set of supported languages. Run presenterm --acknowledgements to get a full list of all the licenses for the binary files being pulled in.

More Repositories

1

libtins

High-level, multiplatform C++ network packet sniffing and crafting library.
C++
1,897
star
2

cppkafka

Modern C++ Apache Kafka client library (wrapper for librdkafka)
C++
557
star
3

Programs-Scripts

The tiny programs and scripts that don't deserve a project, but I still want to share.
C
214
star
4

dot11decrypt

An 802.11 WEP/WPA2 on-the-fly decrypter.
C++
135
star
5

ces

CLI for crypto exchanges
Python
49
star
6

packet-capture-benchmarks

Packet capture libraries benchmark
C++
31
star
7

sloth-fuzzer

A smart file fuzzer.
C++
26
star
8

blind-sqli

A simple python script that exploits blind SQL Injections. Useful for PoCs.
Python
24
star
9

trustrl

CLI tool to manipulate URLs
Rust
8
star
10

mergebro

The bro you need when you want to merge a pull request
Rust
5
star
11

pytins

Python bindings for libtins
C++
4
star
12

tcp-stream-assembler

C++
4
star
13

bogeyman-remote-cpp

C++ remote client for samelat/bogeyman
C++
2
star
14

libtins-sanitizers

Random short apps using libtins to find errors in packet parsing/serialization
C++
2
star
15

bgprust

Rust library to parse BGP (MRT/Zebra) files
Rust
2
star
16

DirHound

Crawler + Directory/file bruteforcer
Haskell
2
star
17

procmon

A tiny project to play around with eBPF
Rust
1
star
18

shaplim

Shared Playlist Manager
C++
1
star
19

dotfiles

m'dotfiles
Lua
1
star
20

roberto

Yet another Socks proxy server
C++
1
star
21

sockwho

Use eBPF tracepoints to inspect socketaddrs
Rust
1
star
22

brainchuck

A LLVM based brainfuck JIT compiler
Rust
1
star
23

SMTPPot

An extensible SPAMPot
Python
1
star
24

shaplim-gui

A shaplim GTK interface
Python
1
star
25

dns-metrics

A Rust toy project to capture DNS packets and expose metrics about them via a prometheus compatible endpoint
Rust
1
star