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