dotfiles

Settings and scripts
git clone git://git.konyahin.xyz/dotfiles
Log | Files | Refs | LICENSE

commit 359705cd0bacac3d120298d1006592ba6d6348f3
parent 7b5534a7f5b6456a52dff843a4cd5c6c0a10ff5d
Author: Anton Konyahin <me@konyahin.xyz>
Date:   Thu, 29 Feb 2024 22:10:45 +0300

scripts: skefir - force less to be a gopher browser

Diffstat:
Ascripts/dot-bin/skefir | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+), 0 deletions(-)

diff --git a/scripts/dot-bin/skefir b/scripts/dot-bin/skefir @@ -0,0 +1,57 @@ +#!/usr/bin/env sh + +set -eu + +if [ "$#" -lt 2 ]; then + echo "Usage: skefir [-n] <host> <url>" + exit 1 +fi + +if [ "$1" == "-n" ]; then + NO_MAP=true + shift +fi + +link () { + LINK=$1 + LINE=$2 + ARGS=$3 + + printf "[%3d] " $LINK + echo "$LINE" | awk -F '\t' '{print substr($1, 2)}' + + KEFIR_CALL="$(echo "$LINE" | awk -F '\t' '{printf "%s %s", $3, $2}')" + COMMAND="$LINK shell ./skefir $ARGS $KEFIR_CALL" + echo "\n$COMMAND" >> "$LESSKEY_FILE" +} + +viewer () { + LINK=1 + while read -r LINE || [ -n "$LINE" ]; do + case "$LINE" in + i*) + printf " " + echo "$LINE" | awk -F '\t' '{print substr($1, 2)}' + ;; + 1*) + link "$LINK" "$LINE" "" + LINK=$((LINK + 1)) + ;; + 0*) + link "$LINK" "$LINE" "-n" + LINK=$((LINK + 1)) + ;; + *) + ;; + esac + done +} + +LESSKEY_FILE=$(mktemp -t skefir.XXXXXX) +echo "#command" > "$LESSKEY_FILE" + +TEXT=$(printf "$2\r\n" | nc "$1" 70) +[ -z "${NO_MAP:-}" ] && TEXT="$(echo "$TEXT" | viewer)" +echo "$TEXT" | less --lesskey-src="$LESSKEY_FILE" + +rm "$LESSKEY_FILE"