Initial commit.
commit
b95ee9c3f7
|
@ -0,0 +1,9 @@
|
|||
# catpoint
|
||||
|
||||
LDLIBS = -lncursesw
|
||||
|
||||
BIN = catpoint
|
||||
all: $(BIN)
|
||||
|
||||
clean:
|
||||
rm -f $(BIN)
|
|
@ -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 ...
|
|
@ -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);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
.----------------------------------------------------------------.
|
||||
| How to transform your presentation into pure art with catpoint |
|
||||
'----------------------------------------------------------------'
|
||||
|
||||
|
||||
Lazaros Koromilas <lostd@2f30.org>
|
||||
|
||||
http://www.2f30.org/~lostd
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
Show graphs
|
||||
===========
|
||||
|
||||
+---------+---------+---------+---------+---------+---------+---------+
|
||||
| Rate +----+ |
|
||||
| |
|
||||
20 ++ +-+ ++
|
||||
| +-+ | | +-+ |
|
||||
| | | | | | | |
|
||||
15 ++ +-+ | | | | | | ++
|
||||
| | | | | | | | | |
|
||||
| | | | | | | | | |
|
||||
10 ++ +-+ | | | | | | | | ++
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
5 ++ +-+ | | | | | | | | | | ++
|
||||
| | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | |
|
||||
0 ++--------+---------+---------+---------+---------+---------+--------++
|
||||
60 128 256 512 1024 1514
|
||||
Packet size (bytes)
|
|
@ -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
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
EOF
|
||||
===
|
||||
|
||||
|
||||
|
||||
|
||||
_____ _ _ _
|
||||
|_ _| |__ __ _ _ __ | | _____| |
|
||||
| | | '_ \ / _` | '_ \| |/ / __| |
|
||||
| | | | | | (_| | | | | <\__ \_|
|
||||
|_| |_| |_|\__,_|_| |_|_|\_\___(_)
|
Loading…
Reference in New Issue