SMOLNET PORTAL home about changes
isupport a custom program run before every slide - catpoint - Catpoint simple presenting software.	Err	bitreich.org	70
hgit clone git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/	URL:git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/	bitreich.org	70
1Log	/scm/catpoint/log.gph	bitreich.org	70
1Files	/scm/catpoint/files.gph	bitreich.org	70
1Refs	/scm/catpoint/refs.gph	bitreich.org	70
1Tags	/scm/catpoint/tag	bitreich.org	70
1README	/scm/catpoint/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/catpoint/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 89508a45aedca7ffde34fc4ac871c91f2e825652	/scm/catpoint/commit/89508a45aedca7ffde34fc4ac871c91f2e825652.gph	bitreich.org	70
1parent a09f93d317d1d5a400e46806b0c066170632961a	/scm/catpoint/commit/a09f93d317d1d5a400e46806b0c066170632961a.gph	bitreich.org	70
hAuthor: Josuah Demangeon <me@josuah.net>	URL:mailto:me@josuah.net	bitreich.org	70
iDate:   Fri,  9 Aug 2024 14:25:36 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
isupport a custom program run before every slide	Err	bitreich.org	70
i	Err	bitreich.org	70
iIgnore transitions when hitting uppercase H, J, K, L	Err	bitreich.org	70
iThis allows skipping quickly through the slides.	Err	bitreich.org	70
i	Err	bitreich.org	70
iThe catpoint-wrap utility will prepend a to every text file:	Err	bitreich.org	70
i	Err	bitreich.org	70
i    $ catpoint-wrap ./script.sh *.txt	Err	bitreich.org	70
i	Err	bitreich.org	70
iSigned-off-by: Josuah Demangeon <me@josuah.net>	Err	bitreich.org	70
iSigned-off-by: Christoph Lohmann <20h@r-36.net>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       2 +-	Err	bitreich.org	70
i  A catpoint-wrap                       |      11 +++++++++++	Err	bitreich.org	70
i  M catpoint.1                          |      23 +++++++++++++++++++++++	Err	bitreich.org	70
i  M catpoint.c                          |      74 +++++++++++++++++++++++++++----	Err	bitreich.org	70
i  A showoff/random-animation.sh         |      12 ++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 113 insertions(+), 9 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/catpoint/file/Makefile.gph	bitreich.org	70
i@@ -19,7 +19,7 @@ CATPOINT_LDFLAGS = ${LDFLAGS} -lncursesw	Err	bitreich.org	70
i 	Err	bitreich.org	70
i SRC = ${NAME}.c	Err	bitreich.org	70
i MAN1 = ${NAME}.1	Err	bitreich.org	70
i-BIN = ${NAME}	Err	bitreich.org	70
i+BIN = ${NAME} catpoint-animation	Err	bitreich.org	70
i OBJ = ${SRC:.c=.o}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i all: catpoint	Err	bitreich.org	70
1diff --git a/catpoint-wrap b/catpoint-wrap	/scm/catpoint/file/catpoint-wrap.gph	bitreich.org	70
i@@ -0,0 +1,11 @@	Err	bitreich.org	70
i+#!/bin/sh -e	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+animation_script=$1	Err	bitreich.org	70
i+shift	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+for slide; do	Err	bitreich.org	70
i+    set -- "$@" "$animation_script" "$slide"	Err	bitreich.org	70
i+    shift	Err	bitreich.org	70
i+done	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+exec ./catpoint "$@"	Err	bitreich.org	70
1diff --git a/catpoint.1 b/catpoint.1	/scm/catpoint/file/catpoint.1.gph	bitreich.org	70
i@@ -12,6 +12,7 @@	Err	bitreich.org	70
i reads text files from the	Err	bitreich.org	70
i .Ar files	Err	bitreich.org	70
i arguments and prints them to the terminal.	Err	bitreich.org	70
i+If the file is executable, it is run with the next slides as an argument.	Err	bitreich.org	70
i The slides can be navigated with keybinds.	Err	bitreich.org	70
i .Sh KEYBINDS	Err	bitreich.org	70
i .Bl -tag -width Ds	Err	bitreich.org	70
i@@ -21,6 +22,8 @@ Quit	Err	bitreich.org	70
i Go to next slide.	Err	bitreich.org	70
i .It h, k, ARROW LEFT, ARROW UP, PAGE UP	Err	bitreich.org	70
i Go to previous slide.	Err	bitreich.org	70
i+.It L, J, H, K	Err	bitreich.org	70
i+Go to next/previous slide without transition.	Err	bitreich.org	70
i .It ., u, BEGIN KEY, HOME KEY	Err	bitreich.org	70
i Go to the first slide.	Err	bitreich.org	70
i .It i, END KEY	Err	bitreich.org	70
i@@ -37,6 +40,26 @@ Quit	Err	bitreich.org	70
i .It SIGWINCH	Err	bitreich.org	70
i Redraw the current slide contents.	Err	bitreich.org	70
i .El	Err	bitreich.org	70
i+.Sh EXAMPLES	Err	bitreich.org	70
i+Present all the text files in the current directory:	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+.Dl $ catpoint *.txt	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Run the	Err	bitreich.org	70
i+.Pa ./run.sh	Err	bitreich.org	70
i+executable before the slide	Err	bitreich.org	70
i+.Pa 2.txt	Err	bitreich.org	70
i+and	Err	bitreich.org	70
i+.Pa 5.txt	Err	bitreich.org	70
i+while rendering all the others normally:	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+.Dl $ catpoint 1.txt ./run.sh 2.txt 3.txt 4.txt ./run.sh 5.txt	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Insert	Err	bitreich.org	70
i+.Pa ./run.sh	Err	bitreich.org	70
i+before every text file so that it runs on each slide:	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+.Dl $ catpoint-wrap ./run.sh *.txt	Err	bitreich.org	70
i .Sh EXIT STATUS	Err	bitreich.org	70
i .Ex -std	Err	bitreich.org	70
i .Sh SEE ALSO	Err	bitreich.org	70
1diff --git a/catpoint.c b/catpoint.c	/scm/catpoint/file/catpoint.c.gph	bitreich.org	70
i@@ -3,6 +3,7 @@	Err	bitreich.org	70
i #include <sys/mman.h>	Err	bitreich.org	70
i #include <sys/stat.h>	Err	bitreich.org	70
i #include <sys/types.h>	Err	bitreich.org	70
i+#include <sys/wait.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include <curses.h>	Err	bitreich.org	70
i #include <errno.h>	Err	bitreich.org	70
i@@ -33,6 +34,18 @@ unloadcurrentslide(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i+setupwin(void)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        initscr();	Err	bitreich.org	70
i+        cbreak();	Err	bitreich.org	70
i+        noecho();	Err	bitreich.org	70
i+        nonl();	Err	bitreich.org	70
i+        intrflush(stdscr, FALSE);	Err	bitreich.org	70
i+        keypad(stdscr, TRUE);	Err	bitreich.org	70
i+        curs_set(FALSE); /* hide cursor */	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i cleanup(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unloadcurrentslide();	Err	bitreich.org	70
i@@ -70,6 +83,29 @@ quit(int sig)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i+executeslide(char **argv)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        pid_t pid;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        endwin();	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fprintf(stderr, "\x1b[H\x1b[J");	Err	bitreich.org	70
i+        fflush(stderr);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        switch ((pid = fork())) {	Err	bitreich.org	70
i+        case 0:	Err	bitreich.org	70
i+                execvp(argv[0], argv);	Err	bitreich.org	70
i+        case -1:	Err	bitreich.org	70
i+                perror(argv[0]);	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        default:	Err	bitreich.org	70
i+                waitpid(pid, NULL, 0);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        setupwin();	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i loadcurrentslide(char **argv, int slide)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct stat statbuf;	Err	bitreich.org	70
i@@ -133,6 +169,7 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                 errno = 0;	Err	bitreich.org	70
i                 die("usage: %s file ...", argv[0]);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         slidefiles = ++argv;	Err	bitreich.org	70
i         nslides = --argc;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -145,13 +182,7 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         currentslidelen = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* init curses */	Err	bitreich.org	70
i-        initscr();	Err	bitreich.org	70
i-        cbreak();	Err	bitreich.org	70
i-        noecho();	Err	bitreich.org	70
i-        nonl();	Err	bitreich.org	70
i-        intrflush(stdscr, FALSE);	Err	bitreich.org	70
i-        keypad(stdscr, TRUE);	Err	bitreich.org	70
i-        curs_set(FALSE); /* hide cursor */	Err	bitreich.org	70
i+        setupwin();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i show:	Err	bitreich.org	70
i         /* display slide if changed */	Err	bitreich.org	70
i@@ -161,7 +192,12 @@ show:	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         clear();	Err	bitreich.org	70
i         refresh();	Err	bitreich.org	70
i-        printw("%.*s", currentslidelen, currentslidep);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (access(slidefiles[currentslide], X_OK) == 0) {	Err	bitreich.org	70
i+                executeslide(slidefiles + currentslide);	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                printw("%.*s", currentslidelen, currentslidep);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i again:	Err	bitreich.org	70
i         c = getch();	Err	bitreich.org	70
i@@ -173,6 +209,17 @@ again:	Err	bitreich.org	70
i         /* end presentation */	Err	bitreich.org	70
i         case 'q':	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i+        /* next without transition */	Err	bitreich.org	70
i+        case 'J':	Err	bitreich.org	70
i+        case 'L':	Err	bitreich.org	70
i+                for (int i = currentslide + 1; i < nslides; i++) {	Err	bitreich.org	70
i+                        if (access(slidefiles[i], X_OK) && i != currentslide) {	Err	bitreich.org	70
i+                                currentslide = i;	Err	bitreich.org	70
i+                                slidechanged = 1;	Err	bitreich.org	70
i+                                goto show;	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                goto again;	Err	bitreich.org	70
i         /* next */	Err	bitreich.org	70
i         case ' ':	Err	bitreich.org	70
i         case 'l':	Err	bitreich.org	70
i@@ -186,6 +233,17 @@ again:	Err	bitreich.org	70
i                         goto show;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 goto again;	Err	bitreich.org	70
i+        /* prev without transition */	Err	bitreich.org	70
i+        case 'H':	Err	bitreich.org	70
i+        case 'K':	Err	bitreich.org	70
i+                for (int i = currentslide - 1; i >= 0; i--) {	Err	bitreich.org	70
i+                        if (access(slidefiles[i], X_OK) && i != currentslide) {	Err	bitreich.org	70
i+                                currentslide = i;	Err	bitreich.org	70
i+                                slidechanged = 1;	Err	bitreich.org	70
i+                                goto show;	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                goto again;	Err	bitreich.org	70
i         /* prev */	Err	bitreich.org	70
i         case 'h':	Err	bitreich.org	70
i         case 'k':	Err	bitreich.org	70
1diff --git a/showoff/random-animation.sh b/showoff/random-animation.sh	/scm/catpoint/file/showoff/random-animation.sh.gph	bitreich.org	70
i@@ -0,0 +1,12 @@	Err	bitreich.org	70
i+#!/bin/sh	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+randomanimation() {	Err	bitreich.org	70
i+        printf '%s\n' beams binarypath blackhole bouncyballs bubbles burn \	Err	bitreich.org	70
i+                colorshift crumble decrypt errorcorrect expand fireworks \	Err	bitreich.org	70
i+                matrix middleout orbittingvolley overflow pour print rain \	Err	bitreich.org	70
i+                randomsequence rings scattered slice slide spotlights spray \	Err	bitreich.org	70
i+                swarm synthgrid unstable vhstape waves wipe \	Err	bitreich.org	70
i+        | sort -R | head -n 1	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+exec tte --frame-rate 400 --input-file "$1" "$(randomanimation)"	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/catpoint/commit/89508a45aedca...
Content-Typetext/plain; charset=utf-8