CHIMP - Cheap IMpression Presenter
__ _____
___ / /___ / _ \ \ ___
/ __| |/ _ \ | | | | |__ \
| (__| | (_) | | |_| | |__) |
\___| |\___(_|_)____| |___/
\_\ /_/
Make a cheap impression. Present via terminal.
gem install cheap-impression-presenter
The ruby gems it needs (tty-screen, pastel, hexapdf) are installed with it. Some features need external programs, which have to be installed separately (all are available in the usual linux distributions and homebrew):
-
figlet: for the figlet plugin. - Pictures in the terminal need a terminal that supports either sixel or the
kitty graphics protocol. The pic plugin finds out which one your terminal
has and uses it, so you only need the program for that one:
-
img2sixel(from libsixel): for sixel (the sixel plugin). On linux a VTE based terminal with sixel enabled works well, e.g. Black Box (https://flathub.org/apps/com.raggesilver.BlackBox), where sixel has to be switched on in the preferences. -
magick(ImageMagick 7): for the kitty graphics protocol (the kitty plugin), e.g. in kitty (https://sw.kovidgoyal.net/kitty/), Ghostty (https://ghostty.org) or WezTerm (https://wezterm.org). Pictures are sent through the terminal, so this also works via ssh.
-
-
inkscape: for svg pictures, in the terminal as well as in the PDF output. - DejaVu Sans Mono font: for the PDF output. If it is not installed, Courier is used, which lacks some characters (e.g. box drawing).
It has a simple syntax:
#what: the title of presentation
#size: the number of lines to zoom to (default 26, see below)
#theme: the PDF colors, e.g. background=#fdf6e3 text=#657b83 (see below)
#template: content drawn before anything else on the slide (e.g. ```figlet,right LOGO)
#template:
content drawn before anything else on the slide
#end
--- splits slides
+++ slides parts to appear
!!Bold Text!!
''Red Text''
%%Blue Text%%
~~Center Text
~~Center Text with !!Bold!!, ''Red'' and %%Blue%%
Plugins can not be used in centered lines, they have their own center parameter.
Everything else is in plugins. The following plugins are existing for now:
- Pic: display graphics in the terminal, with whatever the terminal supports
(kitty graphics protocol or sixel, kitty if both, nothing if neither):
```pic,20 name.png. This is the one to use, it takes the same parameters as Sixel (see below). If the detection is wrong, setCHIMP_PICtokitty,sixelornone. - Sixel: display graphics in the terminal:
```sixel,20 name.png.- The parameter 20 denotes the size in characters.
- You can add right or center as an additional parameter to align the picture.
- If the picture is right aligned and float is added as an additional parameter, text is added on the left of the picture instead of beneath.
- You can add animate as an additional parameter to return the cursor to where the picture started. Text that follows is then added on top of the picture instead of beneath. Combined with +++ the next picture replaces the current one, which allows for simple animations (see examples/sixel_svg.2.txt).
- Kitty: the same as Sixel, but with the kitty graphics protocol:
```kitty,20 name.png. All parameters of the Sixel plugin work. - Figlet: display fancy ascii text:
```figlet FANCY_TEXT.- You can add right or center as a parameter to align the fancy text.
- If the fancy text is right aligned, normal text is added on the left of the fancy text instead of beneath.
- You can add bold as an additional parameter to display the fancy text in bold (in the PDF in the bold color).
- Line Numbers: display line numbers beforce any text (mostly used for code :-).
```lnums
Line
Line
Line
```
Templates should be positioned carefully (e.g. right aligned figlet or sixel) to not collide with the content. All header lines (#what, #size, #theme, #template) have to be at the very beginning of the presentation.
Run the presentation with:
chimp mypresentation.txtWhile presenting you can use the usual button for navigating. In addition, you can use:
-
qto quit the presentation. -
rto reload the presentation and refresh the screen. You stay on the current slide and part, so you can edit the presentation while it is running and see the changes immediately. -
gfollowed by a slide number and enter to go to that slide (e.g.g12<ENTER>). Any other key cancels the goto.
I suggest zooming the terminal until about 26 lines are visible. To make this
easy a ^ character is visible at the right end of the footer line. Zoom
until the ^ character is no longer visible for the most audience friendly
results. The ^ is shown as long as more than 26 lines are visible, use
#size: directly after #what: to change this number.
Check out the examples.
How does it look?
PDF Output
Presenting is nice. Sending presentations to people is sometimes mandatory. But many people have not embraced the terminal (yet). So send them a PDF:
chimp -o pdf mypresentation.txtThis writes mypresentation.pdf to the directory you are currently in.
By default the slides are 26 lines high, as if you zoomed the terminal. It respects the size header. Pictures are embedded as vector graphics for SVGs or as images for everything else.
The default colors are solarized light. Change them with a #theme: line in
the header, holding KEY=#RRGGBB pairs for background, text, bold, red, blue and
footer. Colors you leave out keep their default. Solarized dark for example:
#theme: background=#002b36 text=#839496 bold=#93a1a1 red=#dc322f blue=#268bd2 footer=#586e75
examples/chimp.txt (light) and examples/markus.txt (dark) show both.
A #theme: line can also be put on any slide (on a line of its own). It
overrides the given colors for all subsequent slides.
History & Thanks
Amy Hoy all the way back in 2009 allowed me to use her monkey ascii art for the CHIMP. The CHIMP was written as an icebreaker for the curucamp, which was a ruby un-conference in 2009 in Vienna. We had fun, and many cool people from the community attended.
I am still using the CHIMP for scientifc presentations, and as sixel terminals finally are more common, I tried to polish the CHIMP up (2025) and make it available for easy consumption. Maybe you like it. I use it because I can create presentations faster than in PP, KN, other programs. Most of the work goes into graphics anyway, which I create with dedicated tools.
Drop me a note if you want to be a contributor, or send me merge request if you have created some plugins. Creating plugins is very simple :-)
LICENSE
GPL 3.0 or later.
