commit b95ee9c3f701ede5263139276897ae482ba70331
Author: Christoph Lohmann <20h@r-36.net>
Date: Thu, 27 Aug 2015 23:54:58 +0200
Initial commit.
Diffstat:
10 files changed, 216 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -0,0 +1,9 @@
+# catpoint
+
+LDLIBS = -lncursesw
+
+BIN = catpoint
+all: $(BIN)
+
+clean:
+ rm -f $(BIN)
diff --git a/README b/README
@@ -0,0 +1,10 @@
+# Synopsis
+
+Catpoint is a simple viewer of text files written in curses.
+Further documentation comes in a series of slides. Just do:
+
+ $ make && ./catpoint showoff/*.txt
+
+# Usage
+
+ catpoint file ...
diff --git a/catpoint.c b/catpoint.c
@@ -0,0 +1,103 @@
+/* $Id: catpoint.c,v 1.2 2013/03/28 12:00:48 lostd Exp $ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <curses.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <locale.h>
+
+int
+main(int argc, char *argv[])
+{
+ int c, i, fd;
+ char **p; /* the slides */
+
+ if (argc == 1)
+ errx(1, "usage: %s file ...", argv[0]);
+ argv++;
+ argc--;
+
+ setlocale(LC_ALL, "");
+
+ p = calloc(argc, sizeof(char *));
+
+ /* map files to mem */
+ for (i = 0; argv[i] != NULL; i++) {
+ fd = open(argv[i], O_RDONLY, 0);
+ if (fd == -1)
+ err(1, "open: %s", argv[i]);
+ p[i] = mmap(NULL, 0x1000, PROT_READ, MAP_PRIVATE, fd, 0);
+ if (p[i] == MAP_FAILED)
+ err(1, "mmap");
+ close(fd);
+ }
+
+ /* init curses */
+ initscr();
+ cbreak();
+ noecho();
+ nonl();
+ intrflush(stdscr, FALSE);
+ keypad(stdscr, TRUE);
+ curs_set(FALSE); /* hide cursor */
+
+ /* start */
+ i = 0;
+show:
+ /* display slide */
+ clear();
+ printw("%s", p[i]);
+again:
+ c = getch();
+ switch (c) {
+ case 'q':
+ break;
+ /* next */
+ case 'l':
+ case 'j':
+ case KEY_RIGHT:
+ case KEY_DOWN:
+ case KEY_NPAGE:
+ if (i < argc - 1) {
+ i++;
+ goto show;
+ }
+ goto again;
+ /* prev */
+ case 'h':
+ case 'k':
+ case KEY_LEFT:
+ case KEY_UP:
+ case KEY_PPAGE:
+ if (i > 0) {
+ i--;
+ goto show;
+ }
+ goto again;
+ /* first */
+ case 'u':
+ case KEY_BEG:
+ i = 0;
+ goto show;
+ /* last */
+ case 'i':
+ case KEY_END:
+ i = argc - 1;
+ goto show;
+ default:
+ goto again;
+ }
+
+ /* unmap mem */
+ for (i = 0; argv[i] != NULL; i++)
+ munmap(p[i], 0x1000);
+
+ endwin(); /* restore terminal */
+
+ return (0);
+}
diff --git a/showoff/00-intro.txt b/showoff/00-intro.txt
@@ -0,0 +1,13 @@
+
+
+
+
+
+ .----------------------------------------------------------------.
+ | How to transform your presentation into pure art with catpoint |
+ '----------------------------------------------------------------'
+
+
+ Lazaros Koromilas <lostd@2f30.org>
+
+ http://www.2f30.org/~lostd
diff --git a/showoff/01-files.txt b/showoff/01-files.txt
@@ -0,0 +1,18 @@
+
+ Create the slides
+ =================
+
+ o Create a text file for every slide
+
+ 00-intro.txt
+ 01-files.txt
+ 02-config.txt
+ 03-run.txt
+ 04-graph.txt
+ 99-end.txt
+
+ o You can use banner or figlet to generate text art
+
+ o You can use gnuplot to produce graphs using
+
+ set term dumb
diff --git a/showoff/02-config.txt b/showoff/02-config.txt
@@ -0,0 +1,12 @@
+
+ Configure the environment
+ =========================
+
+ o You can alter your xterm defaults by adding the
+ following lines to your ~/.Xdefaults:
+
+ XTerm*background: white
+ XTerm*foreground: black
+ XTerm*faceName: xft:Monospace:size=16
+
+ o Open an xterm and maximize its window
diff --git a/showoff/03-run.txt b/showoff/03-run.txt
@@ -0,0 +1,9 @@
+
+ Run the presentation
+ ====================
+
+ o Go to the directory where the files live
+
+ o Run catpoint with the list of files as arguments
+
+ $ catpoint *.txt
diff --git a/showoff/04-graph.txt b/showoff/04-graph.txt
@@ -0,0 +1,22 @@
+
+ Show graphs
+ ===========
+
+ +---------+---------+---------+---------+---------+---------+---------+
+ | Rate +----+ |
+ | |
+ 20 ++ +-+ ++
+ | +-+ | | +-+ |
+ | | | | | | | |
+ 15 ++ +-+ | | | | | | ++
+ | | | | | | | | | |
+ | | | | | | | | | |
+ 10 ++ +-+ | | | | | | | | ++
+ | | | | | | | | | | | |
+ | | | | | | | | | | | |
+ 5 ++ +-+ | | | | | | | | | | ++
+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | |
+ 0 ++--------+---------+---------+---------+---------+---------+--------++
+ 60 128 256 512 1024 1514
+ Packet size (bytes)
diff --git a/showoff/05-export.txt b/showoff/05-export.txt
@@ -0,0 +1,8 @@
+
+ Exporting
+ =========
+
+ o Easily create a basic Black on White PDF export like that:
+
+ $ enscript *.txt -Brf "Courier16" -p - > slides.ps
+ $ ps2pdf slides.ps
diff --git a/showoff/99-end.txt b/showoff/99-end.txt
@@ -0,0 +1,12 @@
+
+ EOF
+ ===
+
+
+
+
+ _____ _ _ _
+ |_ _| |__ __ _ _ __ | | _____| |
+ | | | '_ \ / _` | '_ \| |/ / __| |
+ | | | | | | (_| | | | | <\__ \_|
+ |_| |_| |_|\__,_|_| |_|_|\_\___(_)