From 6492ba6b4107a4da228e18db4fc5fc871bfb0579 Mon Sep 17 00:00:00 2001 From: epoch Date: Wed, 17 Aug 2022 21:34:02 -0500 Subject: updated README to show that everything that got deleted went to an -extras repo. also, hackvr script updated to be better bash --- share/hackvr/examples/anonet_map.sh | 12 - share/hackvr/examples/anonet_map/map | 74 --- share/hackvr/examples/anonet_map/paths-to-edges | 5 - share/hackvr/examples/anonet_map/run | 8 - share/hackvr/examples/calendar/Makefile | 7 - share/hackvr/examples/calendar/calvr | 196 ------- share/hackvr/examples/chess/board.sh | 54 -- share/hackvr/examples/chess/camera.pos | 2 - share/hackvr/examples/chess/gnuchess-to-hackvr.sh | 32 -- share/hackvr/examples/chess/hackvr-to-gnuchess.sh | 18 - share/hackvr/examples/chess/pieces/bishop | 2 - share/hackvr/examples/chess/pieces/king | 2 - share/hackvr/examples/chess/pieces/knight | 2 - share/hackvr/examples/chess/pieces/pawn | 1 - share/hackvr/examples/chess/pieces/queen | 1 - share/hackvr/examples/chess/pieces/rook | 1 - share/hackvr/examples/chess/run | 5 - share/hackvr/examples/clock/Makefile | 11 - share/hackvr/examples/clock/generate.py | 10 - share/hackvr/examples/clock/hackvr-clock | 72 --- share/hackvr/examples/clock/run.pre | 24 - share/hackvr/examples/clock/set_clock.sh | 10 - share/hackvr/examples/dothack/chaosgate.py | 63 -- share/hackvr/examples/dothack/test.sh | 6 - share/hackvr/examples/draw/draw.sh | 48 -- share/hackvr/examples/draw/run | 3 - share/hackvr/examples/dungen/Makefile | 8 - share/hackvr/examples/dungen/dun2ascii.c | 46 -- share/hackvr/examples/dungen/dun2hackvr.c | 59 -- share/hackvr/examples/dungen/dunexplore.sh | 42 -- share/hackvr/examples/dungen/dungen.c | 61 -- share/hackvr/examples/editor/editor.sh | 6 - share/hackvr/examples/fib.sh | 24 - .../examples/filebrowser/action_to_target.sh | 11 - .../examples/filebrowser/backend-filebrowser.sh | 18 - .../hackvr/examples/filebrowser/backend-gopher.sh | 22 - share/hackvr/examples/filebrowser/backend-ps.sh | 12 - share/hackvr/examples/filebrowser/camera.pos | 2 - .../hackvr/examples/filebrowser/frontend-hackvr.sh | 6 - .../hackvr/examples/filebrowser/frontend-zenity.sh | 6 - share/hackvr/examples/filebrowser/list_to_cubes.sh | 33 -- share/hackvr/examples/filebrowser/run | 3 - share/hackvr/examples/grid_floor.sh | 10 - share/hackvr/examples/hackvr_term/Makefile | 19 - share/hackvr/examples/hackvr_term/camera.pos | 4 - .../examples/hackvr_term/hackvr_data_decode.sh | 3 - share/hackvr/examples/hackvr_term/hackvr_term | Bin 30508 -> 0 bytes share/hackvr/examples/hackvr_term/hackvr_term.c | 184 ------ .../hackvr/examples/hackvr_term/libtmt/README.rst | 637 --------------------- share/hackvr/examples/hackvr_term/libtmt/tmt.c | 500 ---------------- share/hackvr/examples/hackvr_term/libtmt/tmt.h | 140 ----- share/hackvr/examples/hackvr_term/pty | Bin 7776 -> 0 bytes share/hackvr/examples/hackvr_term/pty.c | 70 --- share/hackvr/examples/hackvr_term/read_line.sh | 5 - share/hackvr/examples/hackvr_term/run | 9 - share/hackvr/examples/hackvr_term/run.pty | 9 - share/hackvr/examples/hackvrd/hackvr-subsystem | 7 - share/hackvr/examples/hackvrd/hackvrd.sh | 115 ---- share/hackvr/examples/hackvrd/ident | 16 - share/hackvr/examples/hackvrd/list_to_cubes.sh | 33 -- share/hackvr/examples/hackvrd/multi.sh | 10 - share/hackvr/examples/hackvrd/radio.sh | 84 --- share/hackvr/examples/hackvrnet/connect.sh | 3 - share/hackvr/examples/marquee/marquee.sh | 28 - share/hackvr/examples/spinners/square.sh | 19 - share/hackvr/examples/starfield | Bin 7296 -> 0 bytes share/hackvr/examples/starfield.c | 12 - share/hackvr/examples/subsume/arms.hackvr | 7 - share/hackvr/examples/subsume/test.sh | 11 - share/hackvr/examples/tictactoe/board | 13 - share/hackvr/examples/tictactoe/board_orig | 14 - share/hackvr/examples/tictactoe/camera.pos | 5 - share/hackvr/examples/tictactoe/game.sh | 37 -- share/hackvr/examples/tictactoe/listen.sh | 11 - share/hackvr/examples/tictactoe/marker0 | 2 - share/hackvr/examples/tictactoe/marker1 | 1 - share/hackvr/examples/tictactoe/run | 4 - share/hackvr/examples/uristart.conf | 2 - share/hackvr/examples/wget-log | 0 share/hackvr/examples/wget-log.1 | 0 share/hackvr/examples/wget-log.2 | 0 share/hackvr/examples/wordsearch/game.sh | 37 -- share/hackvr/examples/wordsearch/run | 8 - share/hackvr/examples/xcmd.sh | 4 - 84 files changed, 3101 deletions(-) delete mode 100755 share/hackvr/examples/anonet_map.sh delete mode 100755 share/hackvr/examples/anonet_map/map delete mode 100755 share/hackvr/examples/anonet_map/paths-to-edges delete mode 100755 share/hackvr/examples/anonet_map/run delete mode 100644 share/hackvr/examples/calendar/Makefile delete mode 100755 share/hackvr/examples/calendar/calvr delete mode 100755 share/hackvr/examples/chess/board.sh delete mode 100644 share/hackvr/examples/chess/camera.pos delete mode 100755 share/hackvr/examples/chess/gnuchess-to-hackvr.sh delete mode 100755 share/hackvr/examples/chess/hackvr-to-gnuchess.sh delete mode 100644 share/hackvr/examples/chess/pieces/bishop delete mode 100644 share/hackvr/examples/chess/pieces/king delete mode 100644 share/hackvr/examples/chess/pieces/knight delete mode 100644 share/hackvr/examples/chess/pieces/pawn delete mode 100644 share/hackvr/examples/chess/pieces/queen delete mode 100644 share/hackvr/examples/chess/pieces/rook delete mode 100755 share/hackvr/examples/chess/run delete mode 100644 share/hackvr/examples/clock/Makefile delete mode 100755 share/hackvr/examples/clock/generate.py delete mode 100755 share/hackvr/examples/clock/hackvr-clock delete mode 100755 share/hackvr/examples/clock/run.pre delete mode 100755 share/hackvr/examples/clock/set_clock.sh delete mode 100755 share/hackvr/examples/dothack/chaosgate.py delete mode 100755 share/hackvr/examples/dothack/test.sh delete mode 100755 share/hackvr/examples/draw/draw.sh delete mode 100755 share/hackvr/examples/draw/run delete mode 100644 share/hackvr/examples/dungen/Makefile delete mode 100644 share/hackvr/examples/dungen/dun2ascii.c delete mode 100644 share/hackvr/examples/dungen/dun2hackvr.c delete mode 100755 share/hackvr/examples/dungen/dunexplore.sh delete mode 100644 share/hackvr/examples/dungen/dungen.c delete mode 100755 share/hackvr/examples/editor/editor.sh delete mode 100755 share/hackvr/examples/fib.sh delete mode 100755 share/hackvr/examples/filebrowser/action_to_target.sh delete mode 100755 share/hackvr/examples/filebrowser/backend-filebrowser.sh delete mode 100755 share/hackvr/examples/filebrowser/backend-gopher.sh delete mode 100755 share/hackvr/examples/filebrowser/backend-ps.sh delete mode 100644 share/hackvr/examples/filebrowser/camera.pos delete mode 100755 share/hackvr/examples/filebrowser/frontend-hackvr.sh delete mode 100755 share/hackvr/examples/filebrowser/frontend-zenity.sh delete mode 100755 share/hackvr/examples/filebrowser/list_to_cubes.sh delete mode 100755 share/hackvr/examples/filebrowser/run delete mode 100755 share/hackvr/examples/grid_floor.sh delete mode 100644 share/hackvr/examples/hackvr_term/Makefile delete mode 100644 share/hackvr/examples/hackvr_term/camera.pos delete mode 100755 share/hackvr/examples/hackvr_term/hackvr_data_decode.sh delete mode 100755 share/hackvr/examples/hackvr_term/hackvr_term delete mode 100644 share/hackvr/examples/hackvr_term/hackvr_term.c delete mode 100644 share/hackvr/examples/hackvr_term/libtmt/README.rst delete mode 100644 share/hackvr/examples/hackvr_term/libtmt/tmt.c delete mode 100644 share/hackvr/examples/hackvr_term/libtmt/tmt.h delete mode 100755 share/hackvr/examples/hackvr_term/pty delete mode 100644 share/hackvr/examples/hackvr_term/pty.c delete mode 100755 share/hackvr/examples/hackvr_term/read_line.sh delete mode 100755 share/hackvr/examples/hackvr_term/run delete mode 100755 share/hackvr/examples/hackvr_term/run.pty delete mode 100755 share/hackvr/examples/hackvrd/hackvr-subsystem delete mode 100755 share/hackvr/examples/hackvrd/hackvrd.sh delete mode 100755 share/hackvr/examples/hackvrd/ident delete mode 100755 share/hackvr/examples/hackvrd/list_to_cubes.sh delete mode 100755 share/hackvr/examples/hackvrd/multi.sh delete mode 100755 share/hackvr/examples/hackvrd/radio.sh delete mode 100755 share/hackvr/examples/hackvrnet/connect.sh delete mode 100755 share/hackvr/examples/marquee/marquee.sh delete mode 100755 share/hackvr/examples/spinners/square.sh delete mode 100755 share/hackvr/examples/starfield delete mode 100644 share/hackvr/examples/starfield.c delete mode 100644 share/hackvr/examples/subsume/arms.hackvr delete mode 100755 share/hackvr/examples/subsume/test.sh delete mode 100644 share/hackvr/examples/tictactoe/board delete mode 100644 share/hackvr/examples/tictactoe/board_orig delete mode 100644 share/hackvr/examples/tictactoe/camera.pos delete mode 100755 share/hackvr/examples/tictactoe/game.sh delete mode 100755 share/hackvr/examples/tictactoe/listen.sh delete mode 100644 share/hackvr/examples/tictactoe/marker0 delete mode 100644 share/hackvr/examples/tictactoe/marker1 delete mode 100755 share/hackvr/examples/tictactoe/run delete mode 100644 share/hackvr/examples/uristart.conf delete mode 100644 share/hackvr/examples/wget-log delete mode 100644 share/hackvr/examples/wget-log.1 delete mode 100644 share/hackvr/examples/wget-log.2 delete mode 100755 share/hackvr/examples/wordsearch/game.sh delete mode 100755 share/hackvr/examples/wordsearch/run delete mode 100755 share/hackvr/examples/xcmd.sh (limited to 'share/hackvr/examples') diff --git a/share/hackvr/examples/anonet_map.sh b/share/hackvr/examples/anonet_map.sh deleted file mode 100755 index 188dd78..0000000 --- a/share/hackvr/examples/anonet_map.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -cat <(printf "%s move 0 0 -270\n" "$USER") \ - <(wget http://hacking.allowed.org/cgi-bin/map_hackvr.cgi -qO- 2>/dev/null) \ - /dev/stdin \ - | slowcat 0 \ - | hackvr "$USER" | tee -a /dev/stderr \ - | grep --line-buffered action \ - | stdbuf -oL cut '-d ' -f3 \ - | xargs -r -L1 printf "whois://hacking.allowed.org/AS%s\n" \ - | tee /dev/stderr \ - | xargs -r -L1 urlstart - diff --git a/share/hackvr/examples/anonet_map/map b/share/hackvr/examples/anonet_map/map deleted file mode 100755 index 51a9e59..0000000 --- a/share/hackvr/examples/anonet_map/map +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -echo $USER set title anonet_AS_map - -paths="$(ncat --recv-only 21.41.41.1 64777 | sort | uniq | tee ${PREFIX}/var/cache/hackvr/anonet_data.new)" - -MAP=${PREFIX}/var/cache/hackvr/anonet_map.hackvr -mkdir -p ${PREFIX}/var/cache/hackvr/ - -#see if the data actually changed before regenerating this shit... -if cmp ${PREFIX}/var/cache/hackvr/anonet_data.new ${PREFIX}/var/cache/hackvr/anonet_data.old ; then - cat $MAP - exit 0 -fi - -mv ${PREFIX}/var/cache/hackvr/anonet_data.new ${PREFIX}/var/cache/hackvr/anonet_data.old - -> $MAP - -nodes=$(printf "%s\n" "$paths" | tr ' ' '\n' | sort | uniq) -nodes_count="$(printf "%s\n" "$nodes" | tr ' ' '\n' | wc -l | tr -cd '0-9')" -#echo $nodes -#echo $nodes_count -echo $USER move 0 0 -20 -coords="$( (for node in $nodes;do - printf "AS%s addshape 4 2 0 8 0 0 0 0\n" "$node" - printf "AS* rotate 0 0 +%d\n" "$[360 / ${nodes_count} ]" - printf "AS* flatten\n" -done -printf "* export *\n" -) | hackvr_headless 2>/dev/null | sed 's/^*_AS//g' | cut '-d ' -f5,6)" -#printf "%s\n" "$coords" -xcoords="$(printf "%s\n" "$coords" | cut '-d ' -f1)" -ycoords="$(printf "%s\n" "$coords" | cut '-d ' -f2)" - -#echo $xcoords -#echo $ycoords - -edges=$(printf "%s\n" "$paths" | tr '\n' '\0' | xargs -n1 -0 ./paths-to-edges | sort | uniq | tr ' ' '_') - -index_of() { - printf "%s\n" "$nodes" | grep -n '^'"$1"'$' | cut -d: -f1 -} - -xcoord_by_ASN() { - printf "%s\n" "$xcoords" | head -n "$(index_of $1)" | tail -n1 -} - -ycoord_by_ASN() { - printf "%s\n" "$ycoords" | head -n "$(index_of $1)" | tail -n1 -} - -line_between_nodes() { - a=$(printf "%s\n" "$1" | cut -d_ -f1) - b=$(printf "%s\n" "$1" | cut -d_ -f2) - printf "%s->%s addshape 2 2 %s %s 0 %s %s 0\n" "$a" "$b" $(xcoord_by_ASN $a) $(ycoord_by_ASN $a) $(xcoord_by_ASN $b) $(ycoord_by_ASN $b) -} - -for node in $nodes;do - printf " addshape 5 4 -1 8 0 -1 10 0 1 10 0 1 8 0\n" "$node" - printf "$' | sed 's/^<\(.*\)>$/\1/g' | tr '\n' '\0' | xargs -n1 -0 copy_start_nevermind.sh & - fi - done diff --git a/share/hackvr/examples/calendar/Makefile b/share/hackvr/examples/calendar/Makefile deleted file mode 100644 index 1646279..0000000 --- a/share/hackvr/examples/calendar/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -PREFIX:=/usr/local - -all: calvr - @echo using PREFIX: $(PREFIX) - -install: - install -t $(PREFIX)/bin calvr diff --git a/share/hackvr/examples/calendar/calvr b/share/hackvr/examples/calendar/calvr deleted file mode 100755 index afef593..0000000 --- a/share/hackvr/examples/calendar/calvr +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env bash -#draw a 7x7 grid -#top row gets the day names -#figure out what the first day of the week for that month is -#then looping is easy after that -#use date with format string of day-of-week for an alternate time of the viewing month's first day - -### :D atq in my calendar? -# atq files are stored in: /var/spool/cron/atjobs/ -# filename format: %1c %5x %8x -# order: queue, job number, time / 60 - -set -eo pipefail -current_year=$(date +%Y) -current_month=$(date +%m | sed 's/^0//') -current_day=$(date +%d | sed 's/^0//') - -year=$current_year -month=$current_month -day=$current_day - -### we're testing this weirdness -#year=1752 -#month=9 -#day=1 - -cw=30 -ch=30 - -yoff=51 -xoff=105 -backup=238 - -WORKING_DIR=~/.local/var/cal -mkdir -p $WORKING_DIR - -cd "${WORKING_DIR}" -#git pull - -### hack to load in clock widget? -hackvr-clock init | sed 's/_clock_face_digit[^ ]* /_clock_face_ /g' -clock_left=15 -printf "_clock_face_hand_hour_ move -%s 0 0\n" $clock_left -printf "_clock_face_hand_minute_ move -%s 0 0\n" $clock_left -printf "_clock_face_hand_second_ move -%s 0 0\n" $clock_left -printf "_clock_face_ move -%s 0 0\n" $clock_left -while true;do - hackvr-clock set - sleep 1 -done & -### - -printf "%s move %s 0 -%s\n" "$USER" "$xoff" "$backup" - -refresh="yep" - -stdbuf -oL grep -v '^#' | while true;do - if [ "$refresh" ];then - unset refresh -# first_dow="$(date -d $month/1/$year +%w)" - -### this doesn't work for august 2020. outputs 4, should output 6 - first_dow=$[$(cal -d "${year}-${month}" | tail -n+3 | head -n1 | cut -d1 -f1 | wc -c) / 3] - monthname="$(date -d $month/1/2000 +%B)" #year isn't important - dow=$first_dow - row=0 - d=1 - -### current month and its "button" - printf "_cal_MONTH_ addshape 1 4 %s %s 0 %s %s 0 %s %s 0 %s %s 0\n" \ - $[0] $[1*$ch + $yoff] \ - $[(($cw * 7 ) / 2) - 1] $[1*$ch + $yoff] \ - $[(($cw * 7 ) / 2) - 1] $[1*$ch+($ch/2) + $yoff - 1] \ - $[0] $[1*$ch+($ch/2) + $yoff - 1] - printf "%s\n" "${monthname}" | makelabel.sh "_cal_MONTH_" $[$xoff / 3] $[$yoff + $ch + 5] 0 - -### current year and its "button" - printf "_cal_YEAR_ addshape 1 4 %s %s 0 %s %s 0 %s %s 0 %s %s 0\n" \ - $[($cw * 7 ) / 2 ] $[1*$ch + $yoff] \ - $[$cw * 7 - 1] $[1*$ch + $yoff] \ - $[$cw * 7 - 1] $[1*$ch+($ch/2) + $yoff - 1] \ - $[($cw * 7 ) / 2 ] $[1*$ch+($ch/2) + $yoff - 1] - printf "%s\n" "${year}" | makelabel.sh "_cal_YEAR_" $[$xoff + 5] $[$yoff + $ch + 5] 0 - -### the <== button - printf "_cal_prevmonth_ addshape 1 4 %s %s 0 %s %s 0 %s %s 0 %s %s 0\n" \ - $[-$cw] $[1*$ch + $yoff] \ - $[-1] $[1*$ch + $yoff] \ - $[-1] $[1*$ch+($ch/2) + $yoff - 1] \ - $[-$cw] $[1*$ch+($ch/2) + $yoff - 1] - printf "<==\n" | makelabel.sh "_cal_prevmonth_" $[0 - $cw + 1] $[$yoff + $ch + 5] 0 - -### the ==> button - printf "_cal_nextmonth_ addshape 1 4 %s %s 0 %s %s 0 %s %s 0 %s %s 0\n" \ - $[$cw * 7] $[1*$ch + $yoff] \ - $[$cw * 8 -1] $[1*$ch + $yoff] \ - $[$cw * 8 -1] $[1*$ch+($ch/2) + $yoff - 1] \ - $[$cw * 7] $[1*$ch+($ch/2) + $yoff - 1] - printf "==>\n" | makelabel.sh "_cal_nextmonth_" $[$cw * 7 + 1] $[$yoff + $ch + 5] 0 - - for d in $(cal -d $year-$month | tail -n+3 | tr '\n' ' ' | tr -s ' ');do -# while [ "$d" -le "$days_in_month" ];do -# printf "%s %s : %s\n" "$row" "$dow" "$d" - if [ -f ${WORKING_DIR}/${year}_${month}_${d} ];then - color=$[4+16] - else - color=$[5+16] - fi - printf "%s addshape %s 4 %s %s 0 %s %s 0 %s %s 0 %s %s 0\n" \ - "_cal_day_${d}_" "${color}" \ - "$[$dow*$cw]" "$[-1*$row*$ch + $yoff]" \ - "$[$dow*$cw+$cw-1]" "$[-1*$row*$ch + $yoff]" \ - "$[$dow*$cw+$cw-1]" "$[-1*$row*$ch+$ch-1 + $yoff]" \ - "$[$dow*$cw]" "$[-1*$row*$ch+$ch-1 + $yoff]" - printf "%s\n" "${d}" | makelabel.sh "_cal_day_${d}_" "$[$dow*$cw + 1]" "$[-1*$row*$ch + $yoff + 1]" 0 - d=$[$d+1] - dow=$[$dow + 1] - if [ $dow = 7 ];then - dow=0 - row=$[$row + 1] - fi - done - if [ $month = $current_month -a $year = $current_year ];then - printf "_cal_day_%s_ move 0 0 -2\n" "${current_day}" - fi - fi - if ! read group action target;then - exit - fi - #xmessage "$group $action $target" - if [ "$action" = "action" ];then - if [ "$target" = "_cal_nextmonth_" ];then - month=$[month + 1] - if [ $month = 13 ];then - month=1 - year=$[$year + 1] - fi - refresh="yep" - fi - if [ "$target" = "_cal_prevmonth_" ];then - month=$[month - 1] - if [ $month = 0 ];then - month=12 - year=$[$year - 1] - fi - refresh="yep" - fi - if [ "$target" = "_cal_MONTH_" ];then - month="$(xmessage -buttons January:1,February:2,March:3,April:4,May:5,June:6,July:7,August:8,September:9,October:10,November:11,December:12 'pick a month';echo $?)" - refresh="yep" - fi - if [ "$target" = "_cal_YEAR_" ];then - year="$(seq $[$year - 5] $[$year + 5] | dmenu -p 'enter a year' | tr -cd '0-9' | sed 's/^$/1970/')" - refresh="yep" - fi - if printf "%s\n" "$target" | grep '^_cal_day_' 2>&1 >/dev/null;then - d="$(printf "%s\n" "$target" | cut -d_ -f4)" - file=${WORKING_DIR}/${year}_${month}_${d} - if [ -e "${file}" ];then - derp=exists - else - derp=notexists - fi - x-terminal-emulator -e nano "${file}" - if [ -e "${file}" ];then #if the file exists - if [ ! -s "${file}" ];then #but the file is empty - rm "${file}" >&2 - #git rm "${file}" >&2 - #git commit -m '[calvr] removed: ${file}' >&2 - else #the file is NOT empty, so it was changed, or not, might as well try to add and commit. - echo "# lol wat?" - #git add "${file}" >&2 - #git commit -m '[calvr] maybe changed: ${file}' >&2 # if nothing changed it won't bother to commit - #git push # just to make it more magical - fi - fi - if [ -e "${file}" ];then - merp=exists - else - merp=notexists - fi - if [ "${derp}" != "${merp}" ];then - refresh="yep" - fi - fi - fi - if [ "$action" = "quit" ];then - exit - fi - if [ "$refresh" ];then - ### I /might/ want to just make all of the calendar parts - ### start with _cal_* so I can deletegroup _cal_* - ### instead of nuking the world except the user. - printf '%s deletegroup _cal_*\n' "$USER" - fi -done diff --git a/share/hackvr/examples/chess/board.sh b/share/hackvr/examples/chess/board.sh deleted file mode 100755 index dc3fb3b..0000000 --- a/share/hackvr/examples/chess/board.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env bash - -e=$1 #elevation of board -width=8 -height=8 -cols="a b c d e f g h" - -printf "junk set camera.r.x -45\n" - -for x in $(seq 1 $width);do - for y in $(seq 1 $height);do - color=$[((($y % 2) + ($x % 2))%2)+16] -### board is on the wall. draw in x and y. -# printf "%s%s addshape %s 4 %s %s %s %s %s %s %s %s %s %s %s %s\n" \ -# $(printf "%s\n" "$cols" | cut '-d ' -f$x) $y $color \ -# $x $y $e \ -# $[x+1] $y $e \ -# $[x+1] $[y+1] $e \ -# $x $[y+1] $e -### board is on floor. draw in x and z. - printf "%s%s addshape %s 4 %s %s %s %s %s %s %s %s %s %s %s %s\n" \ - $(printf "%s\n" "$cols" | cut '-d ' -f$x) $y $color \ - $x $e $y \ - $[x+1] $e $y \ - $[x+1] $e $[y+1] \ - $x $e $[y+1] - done -done - -row8="rook knight bishop queen king bishop knight rook" -row1="$row8" - -color="19 19 0 0 0 0 20 20" - -#draw pawns. triangles. -for x in $(seq $width);do - for y in 2 7;do - locat="$(printf "%s\n" "$cols" | cut '-d ' "-f$x")$y" - cat "./pieces/pawn" | sed 's/^[^ ][^ ]* addshape [0-9][0-9]* /piece_'"${locat}"' addshape '"$(printf "%s\n" "$color" | cut '-d ' "-f$y")"' /g' -### board is on wall. use x and y. -# printf "piece_%s move %s %s %s\n" "$locat" "$x" "$y" "$e" -### board is on floor. use x and z. - printf "piece_%s move %s %s %s\n" "$locat" "$x" "$e" "$y" - done - for y in 1 8;do - locat="$(printf "%s\n" "$cols" | cut '-d ' "-f$x")$y" - cat "./pieces/$(printf "%s\n" "$row1" | cut '-d ' "-f$x")" \ - | sed 's/^[^ ][^ ]* addshape [0-9][0-9]* /piece_'"${locat}"' addshape '"$(printf "%s\n" "$color" | cut '-d ' "-f$y")"' /g' -### board is on wall. use x and y. -# printf "piece_%s move %s %s %s\n" "$locat" "$x" "$y" "$e" -### board is on floor. use x and z. - printf "piece_%s move %s %s %s\n" "$locat" "$x" "$e" "$y" - done -done diff --git a/share/hackvr/examples/chess/camera.pos b/share/hackvr/examples/chess/camera.pos deleted file mode 100644 index 32433c2..0000000 --- a/share/hackvr/examples/chess/camera.pos +++ /dev/null @@ -1,2 +0,0 @@ -epoch move 5 5 -6 -derp set global.zoom 60 diff --git a/share/hackvr/examples/chess/gnuchess-to-hackvr.sh b/share/hackvr/examples/chess/gnuchess-to-hackvr.sh deleted file mode 100755 index 841389b..0000000 --- a/share/hackvr/examples/chess/gnuchess-to-hackvr.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -e=$1 -tee /dev/stderr | while read first second third;do - if [ "_$first" = "_feature" ];then - printf "# just gnuchess saying what features it has: %s %s %s\n" "$first" "$second" "$third" >&2 - elif printf "%s\n" "$first" | grep '^[0-9][0-9]*\.$' >/dev/null 2>&1;then - #we made a successful move. - ### how to tell hackvr to move the piece now? $second should contain what the move was. - printf "# Hey! Hackvr! do this move: %s\n" "$second" >&2 - if [ "_$second" = "_..." ];then #computer/other person made a move. - move=$third - else - move=$second - fi - from=$(printf "%s\n" "$move" | fold -w1 | head -n2 | tr -d '\n') - to=$(printf "%s\n" "$move" | fold -w1 | tail -n+3 | head -n2 | tr -d '\n') - x=$(echo "a b c d e f g h" | tr ' ' '\n' | grep -n "$(printf "%s\n" "$to" | fold -w1 | head -n1)" | cut -d: -f1) - y=$(printf "%s\n" "$to" | fold -w1 | tail -n1) - magic=$(printf "%s\n" "$move" | fold -w1 | tail -n+5 | tr -d '\n') -### if the board is on the wall we need to use x and y -# printf "piece_%s move %s %s %s\n" "$from" "$x" "$y" "$e" | tee /dev/stderr -### the board is on the floor atm. use x and z - printf "piece_%s move %s %s %s\n" "$from" "$x" "$e" "$y" | tee /dev/stderr - - printf "#delete the old piece_%s group\n" - printf "epoch deletegroup piece_%s\n" "$to" - printf "epoch renamegroup piece_%s piece_%s\n" "$from" "$to" | tee /dev/stderr - else - #something else. - printf "oops. something else happened. let's see: %s %s %s\n" "$first" "$second" "$third" >&2 - fi -done diff --git a/share/hackvr/examples/chess/hackvr-to-gnuchess.sh b/share/hackvr/examples/chess/hackvr-to-gnuchess.sh deleted file mode 100755 index 94cd1ab..0000000 --- a/share/hackvr/examples/chess/hackvr-to-gnuchess.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -part1="" -echo "sleeping 3 seconds. might have gnuchess less likely to not do anything." >&2 -sleep 3 -echo "protover 2" -while read derp command target extra;do - if [ "_$command" = "_action" ];then - if printf "%s\n" "$target" | grep -v "^piece_" 2>&1 > /dev/null;then #we are ignoring clicks on pieces in favor of squares atm. when full 3d probably want pieces. - if [ "_$part1" = "_" ];then - part1=$target - else - #we have two parts. let's tell gnuchess! - printf "%s%s\n" $part1 $target - part1="" - fi - fi - fi -done diff --git a/share/hackvr/examples/chess/pieces/bishop b/share/hackvr/examples/chess/pieces/bishop deleted file mode 100644 index db6f144..0000000 --- a/share/hackvr/examples/chess/pieces/bishop +++ /dev/null @@ -1,2 +0,0 @@ -rook addshape 4 4 .4 .1 0 .6 .1 0 .6 .9 0 .4 .9 0 -rook addshape 4 4 .3 .6 0 .7 .6 0 .7 .8 0 .3 .8 0 diff --git a/share/hackvr/examples/chess/pieces/king b/share/hackvr/examples/chess/pieces/king deleted file mode 100644 index 8ca79ef..0000000 --- a/share/hackvr/examples/chess/pieces/king +++ /dev/null @@ -1,2 +0,0 @@ -king addshape 4 4 .1 .7 0 .3 .9 0 .9 .3 0 .7 .1 0 -king addshape 4 4 .3 .1 0 .9 .7 0 .7 .9 0 .1 .3 0 diff --git a/share/hackvr/examples/chess/pieces/knight b/share/hackvr/examples/chess/pieces/knight deleted file mode 100644 index adc7f53..0000000 --- a/share/hackvr/examples/chess/pieces/knight +++ /dev/null @@ -1,2 +0,0 @@ -knight addshape 4 4 .1 .1 0 .3 .1 0 .3 .9 0 .1 .9 0 -knight addshape 4 4 .1 .1 0 .9 .1 0 .9 .3 0 .1 .3 0 diff --git a/share/hackvr/examples/chess/pieces/pawn b/share/hackvr/examples/chess/pieces/pawn deleted file mode 100644 index d7d2d29..0000000 --- a/share/hackvr/examples/chess/pieces/pawn +++ /dev/null @@ -1 +0,0 @@ -pawn addshape 4 3 .2 .1 0 .8 .1 0 .5 .5 0 diff --git a/share/hackvr/examples/chess/pieces/queen b/share/hackvr/examples/chess/pieces/queen deleted file mode 100644 index 3ebb4ab..0000000 --- a/share/hackvr/examples/chess/pieces/queen +++ /dev/null @@ -1 +0,0 @@ -pawn addshape 4 3 .2 .1 0 .8 .1 0 .5 .9 0 diff --git a/share/hackvr/examples/chess/pieces/rook b/share/hackvr/examples/chess/pieces/rook deleted file mode 100644 index 2550eb5..0000000 --- a/share/hackvr/examples/chess/pieces/rook +++ /dev/null @@ -1 +0,0 @@ -rook addshape 4 4 .4 .1 0 .6 .1 0 .6 .9 0 .4 .9 0 diff --git a/share/hackvr/examples/chess/run b/share/hackvr/examples/chess/run deleted file mode 100755 index 1168044..0000000 --- a/share/hackvr/examples/chess/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -export elevation=0 -mknod p p -stdbuf -oL cat camera.pos <(./board.sh $elevation) <(cat p | ./gnuchess-to-hackvr.sh $elevation) | hackvr "$USER" | ./hackvr-to-gnuchess.sh | gnuchess -x > p -rm p diff --git a/share/hackvr/examples/clock/Makefile b/share/hackvr/examples/clock/Makefile deleted file mode 100644 index ea7944a..0000000 --- a/share/hackvr/examples/clock/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -PREFIX:=/usr/local - -.PHONY: all install - -hackvr-clock: run.pre generate.py - ./generate.py | cat run.pre /dev/stdin > hackvr-clock - chmod +x hackvr-clock -all: hackvr-clock - -install: all - install -t $(PREFIX)/bin hackvr-clock diff --git a/share/hackvr/examples/clock/generate.py b/share/hackvr/examples/clock/generate.py deleted file mode 100755 index f3db105..0000000 --- a/share/hackvr/examples/clock/generate.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python3 -import math - -for i in range(1,13): - x=math.floor(math.sin(math.pi / 6 * i) * 1000) / 100 - y=math.floor(math.cos(math.pi / 6 * i) * 1000) / 100 - print("_clock_face_digit_{}_ addshape 2 4 {} {} 0 {} {} 0 {} {} 0 {} {} 0".format(i,x-1,y-1,x+1,y-1,x+1,y+1,x-1,y+1)) - print("_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0") - print("_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0") - print("_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0") diff --git a/share/hackvr/examples/clock/hackvr-clock b/share/hackvr/examples/clock/hackvr-clock deleted file mode 100755 index 95ba948..0000000 --- a/share/hackvr/examples/clock/hackvr-clock +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bash -if [ "$1" = "init" ];then - grep -A1000 '^___CUT___' "$0" | tail -n+2 - exit -elif [ "$1" = "set" ];then - hour=$(date +%H | sed 's/^0//') - minute=$(date +%M | sed 's/^0//') - second=$(date +%S | sed 's/^0//') - printf "_clock_face_hand_hour_ rotate 0 0 -%s\n" "$[$hour * 30 + ($minute / 2)]" - printf "_clock_face_hand_minute_ rotate 0 0 -%s\n" "$[$minute * 6]" - printf "_clock_face_hand_second_ rotate 0 0 -%s\n" "$[$second * 6]" - #printf "_clock_face_hand_hour_ rotate 0 0 %s\n" "$[$hour * 30 + ($minute / 2)]" - #printf "_clock_face_hand_minute_ rotate 0 0 %s\n" "$[$minute * 6]" - #printf "_clock_face_hand_second_ rotate 0 0 %s\n" "$[$second * 6]" -else - nonblocktail \ - <(echo $USER move 0 0 -30) \ - <("$0" init) \ - <(while true;do "$0" set;sleep 1;done) \ - /dev/stdin 2>/dev/null \ - | hackvr 2>/dev/null -fi -exit 0 -___CUT___ -_clock_face_digit_1_ addshape 2 4 3.99 7.66 0 5.99 7.66 0 5.99 9.66 0 3.99 9.66 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_2_ addshape 2 4 7.66 4.0 0 9.66 4.0 0 9.66 6.0 0 7.66 6.0 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_3_ addshape 2 4 9.0 -1.0 0 11.0 -1.0 0 11.0 1.0 0 9.0 1.0 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_4_ addshape 2 4 7.66 -6.0 0 9.66 -6.0 0 9.66 -4.0 0 7.66 -4.0 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_5_ addshape 2 4 4.0 -9.67 0 6.0 -9.67 0 6.0 -7.67 0 4.0 -7.67 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_6_ addshape 2 4 -1.0 -11.0 0 1.0 -11.0 0 1.0 -9.0 0 -1.0 -9.0 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_7_ addshape 2 4 -6.0 -9.67 0 -4.0 -9.67 0 -4.0 -7.67 0 -6.0 -7.67 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_8_ addshape 2 4 -9.67 -6.01 0 -7.67 -6.01 0 -7.67 -4.01 0 -9.67 -4.01 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_9_ addshape 2 4 -11.0 -1.01 0 -9.0 -1.01 0 -9.0 0.99 0 -11.0 0.99 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_10_ addshape 2 4 -9.67 3.99 0 -7.67 3.99 0 -7.67 5.99 0 -9.67 5.99 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_11_ addshape 2 4 -6.01 7.66 0 -4.01 7.66 0 -4.01 9.66 0 -6.01 9.66 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 -_clock_face_digit_12_ addshape 2 4 -1.01 9.0 0 0.99 9.0 0 0.99 11.0 0 -1.01 11.0 0 -_clock_face_hand_hour_ addshape 2 3 -1 -1 0 0 5 0 1 -1 0 -_clock_face_hand_minute_ addshape 2 3 -.75 -.75 0 0 8 0 .75 -.75 0 -_clock_face_hand_second_ addshape 2 3 -.25 -.25 0 0 10 0 .25 -.25 0 diff --git a/share/hackvr/examples/clock/run.pre b/share/hackvr/examples/clock/run.pre deleted file mode 100755 index ed0e68b..0000000 --- a/share/hackvr/examples/clock/run.pre +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -if [ "$1" = "init" ];then - grep -A1000 '^___CUT___' "$0" | tail -n+2 - exit -elif [ "$1" = "set" ];then - hour=$(date +%H | sed 's/^0//') - minute=$(date +%M | sed 's/^0//') - second=$(date +%S | sed 's/^0//') - printf "_clock_face_hand_hour_ rotate 0 0 -%s\n" "$[$hour * 30 + ($minute / 2)]" - printf "_clock_face_hand_minute_ rotate 0 0 -%s\n" "$[$minute * 6]" - printf "_clock_face_hand_second_ rotate 0 0 -%s\n" "$[$second * 6]" - #printf "_clock_face_hand_hour_ rotate 0 0 %s\n" "$[$hour * 30 + ($minute / 2)]" - #printf "_clock_face_hand_minute_ rotate 0 0 %s\n" "$[$minute * 6]" - #printf "_clock_face_hand_second_ rotate 0 0 %s\n" "$[$second * 6]" -else - nonblocktail \ - <(echo $USER move 0 0 -30) \ - <("$0" init) \ - <(while true;do "$0" set;sleep 1;done) \ - /dev/stdin 2>/dev/null \ - | hackvr 2>/dev/null -fi -exit 0 -___CUT___ diff --git a/share/hackvr/examples/clock/set_clock.sh b/share/hackvr/examples/clock/set_clock.sh deleted file mode 100755 index 36c3fb4..0000000 --- a/share/hackvr/examples/clock/set_clock.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -hour=$(date +%H | sed 's/^0//') -minute=$(date +%M | sed 's/^0//') -second=$(date +%S | sed 's/^0//') -printf "_clock_face_hand_hour_ rotate 0 0 -%s\n" "$[$hour * 30 + ($minute / 2)]" -printf "_clock_face_hand_minute_ rotate 0 0 -%s\n" "$[$minute * 6]" -printf "_clock_face_hand_second_ rotate 0 0 -%s\n" "$[$second * 6]" -#printf "_clock_face_hand_hour_ rotate 0 0 %s\n" "$[$hour * 30 + ($minute / 2)]" -#printf "_clock_face_hand_minute_ rotate 0 0 %s\n" "$[$minute * 6]" -#printf "_clock_face_hand_second_ rotate 0 0 %s\n" "$[$second * 6]" diff --git a/share/hackvr/examples/dothack/chaosgate.py b/share/hackvr/examples/dothack/chaosgate.py deleted file mode 100755 index b1cea43..0000000 --- a/share/hackvr/examples/dothack/chaosgate.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -import math - -def fp(p): - return " {} {} {}".format(p[0],p[1],p[2]) - -def print_rect(r): - print("gate addshape 3 4 {} {} {} {}".format(fp(r[0]),fp(r[1]),fp(r[2]),fp(r[3]))) - -d=1 - -sides = 16.0 -step = 360.0/sides -rot=0.0 -zoff = 0.0 -while rot < 360: -# print("rot: {}".format(rot)) - x1=math.sin(rot * math.pi / 180.0) - y1=math.cos(rot * math.pi / 180.0) - rot = rot + step - x2=math.sin(rot * math.pi / 180.0) - y2=math.cos(rot * math.pi / 180.0) - -# print("{} {}".format(x1,y1)) - - ### now to calculate points for the 4 rectangles we need to draw... - v1 = x1 * (d+30.0) # inner first point - v2 = x1 * (d+32.0) # outer first point - v3 = x1 * (d+31.0) # center first point - - v4 = y1 * (d+30.0) - v5 = y1 * (d+32.0) - v6 = y1 * (d+31.0) - - v7 = x2 * (d+30.0) - v8 = x2 * (d+32.0) - v9 = x2 * (d+31.0) - - v10 = y2 * (d+30.0) - v11 = y2 * (d+32.0) - v12 = y2 * (d+31.0) - - p1 = (v1, v4, zoff + 0.0) - p2 = (v2, v5, zoff + 0.0) - p3 = (v3, v6, zoff + 1.0) - p4 = (v3, v6, zoff - 1.0) - - p5 = (v7, v10, zoff + 0.0) - p6 = (v8, v11, zoff + 0.0) - p7 = (v9, v12, zoff + 1.0) - p8 = (v9, v12, zoff - 1.0) - - r1 = (p1, p5, p7, p3) #inner near - r2 = (p1, p5, p8, p4) #inner far - r3 = (p2, p6, p7, p3) #outer near - r4 = (p2, p6, p8, p4) #outer far - - ### first rectange is... - print_rect(r1) - print_rect(r2) - print_rect(r3) - print_rect(r4) diff --git a/share/hackvr/examples/dothack/test.sh b/share/hackvr/examples/dothack/test.sh deleted file mode 100755 index 7a30544..0000000 --- a/share/hackvr/examples/dothack/test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -nonblocktail \ - <(./chaosgate.py) \ - <(echo gate move 0 0 150) \ - <(while true;do for i in $(seq 0 5 360);do echo "gate rotate 0 $i 0";sleep .1;done;done) \ - | hackvr_open diff --git a/share/hackvr/examples/draw/draw.sh b/share/hackvr/examples/draw/draw.sh deleted file mode 100755 index e18a8b4..0000000 --- a/share/hackvr/examples/draw/draw.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -echo "$USER move 5 7 -19" - -for y in $(seq 0 1 15);do - for x in $(seq 0 1 15);do - echo cell_${x}_${y} addshape 2 4 -.5 -.5 0 -.5 .5 0 .5 .5 0 .5 -.5 0 - #echo cell_${x}_${y} addshape 2 4 $x $y 0 $[x] $[y+1] 0 $[x+1] $[y+1] 0 $[x+1] $[y] 0 - echo cell_${x}_${y} move $x $y 0 - done -done - -### color pallete -### 0-8 are ansi colors. -for c in $(seq 0 16);do - echo color_${c} addshape $[c] 4 $[-2 - ($c / 8)] $[($c%8)+3] 0 $[-1 - ($c / 8)] $[($c%8)+3] 0 $[-1 - ($c / 8)] $[($c%8)+4] 0 $[-2 - ($c / 8)] $[($c%8)+4] 0 -done - -#cat ${PREFIX}/share/hackvr/meshes/floppy.hackvr | grep '^[^ #]' | sed 's/^[^ ][^ ]*/save/g' -#echo save move -5 0 0 - -tee /dev/stderr | while read -r source command target;do - if [ "$command" = "action" ];then - if echo "$target" | grep "^save" 2>&1 >/dev/null;then - echo "$USER export *" - date=$(date +%s) - echo "$USER ping $date" - while read -r line;do - if [ "$line" = "${USER} pong ${date}" ];then - break - else - printf "%s\n" "$line" >> ~/drawsave.hackvr - fi - done - fi - if echo "$target" | grep "^color_" 2>&1 >/dev/null;then - color=$(echo $target | cut -d_ -f2) - echo deletegroup $target - echo color_${color}_current addshape $[$color] 4 -2 0 0 -2 1 0 -1 1 0 -1 0 0 - elif echo "$target" | grep '^cell_' 2>&1 >/dev/null;then - x=$(echo $target | cut -d_ -f2) - y=$(echo $target | cut -d_ -f3) - echo $target deletegroup $target - #echo $target addshape $[$color] 4 $x $y 0 $x $[y+1] 0 $[x+1] $[y+1] 0 $[x+1] $y 0 | tee /dev/stderr - echo $target addshape $[$color] 4 -.5 -.5 0 -.5 .5 0 .5 .5 0 .5 -.5 0 - printf "%s move %d %d 0" "$target" "$x" "$y" - fi - fi -done diff --git a/share/hackvr/examples/draw/run b/share/hackvr/examples/draw/run deleted file mode 100755 index 699a38c..0000000 --- a/share/hackvr/examples/draw/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -mknod p p -hackvr_coproc ./draw.sh diff --git a/share/hackvr/examples/dungen/Makefile b/share/hackvr/examples/dungen/Makefile deleted file mode 100644 index cd05f4b..0000000 --- a/share/hackvr/examples/dungen/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -.PHONY: all clean - -all: dungen dun2ascii dun2hackvr - -clean: - rm -f dungen - rm -f dun2ascii - rm -f dun2hackvr diff --git a/share/hackvr/examples/dungen/dun2ascii.c b/share/hackvr/examples/dungen/dun2ascii.c deleted file mode 100644 index d7a9996..0000000 --- a/share/hackvr/examples/dungen/dun2ascii.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include - -//nsew -char *a[16]; - -char field[256]; - -void print_field() { - int i; - fprintf(stderr,"\x1b[H"); - for(i=0;i<(16*strlen(a[field[0]]))+1;i++) fprintf(stderr,"#"); - for(i=0;i<256;i++) { - if(i%16 == 0) fprintf(stderr,"#\n#"); - fprintf(stderr,"%s",a[field[i]]); - } - fprintf(stderr,"#\n"); - for(i=0;i<(16*strlen(a[field[0]]))+2;i++) fprintf(stderr,"#"); - fprintf(stderr,"\n"); -} - -int main(int argc,char *argv[]) { - int i; - fprintf(stderr,"\x1b[H\x1b[2J"); - a[0x0]=" "; - a[0x1]="- "; - a[0x2]=" -"; - a[0x3]="---"; - a[0x4]=" . "; - a[0x5]="-. "; - a[0x6]=" .-"; - a[0x7]="-.-"; - a[0x8]=" ' "; - a[0x9]="-' "; - a[0xa]=" '-"; - a[0xb]="-'-"; - a[0xc]=" | "; - a[0xd]="-| "; - a[0xe]=" |-"; - a[0xf]="-|-"; - while(read(0,field,sizeof(field)) > 0) { - print_field(); - sleep(1); - } -} diff --git a/share/hackvr/examples/dungen/dun2hackvr.c b/share/hackvr/examples/dungen/dun2hackvr.c deleted file mode 100644 index b67af14..0000000 --- a/share/hackvr/examples/dungen/dun2hackvr.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include - -//nsew -char field[256]; - -#define NORTH_EXIT 8 -#define SOUTH_EXIT 4 -#define EAST_EXIT 2 -#define WEST_EXIT 1 - -int deg[]={0,180,270,90}; -int doorx[]={}; -int doory[]={}; - -void print_field() { - int i,d; - int x,y; - for(i=0;i<256;i++) { - //we need to draw the room here. - //each room will be... 16x16? sure.... - //we can use bitmasks to find which sides of the room need to be whole walls - //and which will contain passages to the next rooms - //whole walls are a single rectangle - //we need to loop over each wall and check if it has a passage through it - if(field[i]) { - for(d=0;d<4;d++) {//loop over the 4 possible directions/walls - x=(i%16) * 16 - (7 * 16); - y=(i/16) * -16 + 16; - if((field[i] & (1<<(3-d))) > 0) {//if this has an exit in this bit... - printf("wall_%d_%d addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7\n",i,d);//we need 4 parts for the doorway - printf("wall_%d_%d addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7\n",i,d); - if(d % 2) {//only do the south and west doorjams. every door has an opposite door that matches it anyway - printf("wall_%d_%d addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9\n",i,d); - printf("wall_%d_%d addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7\n",i,d); - printf("door_close_%d_%d addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0\n",i,d);//door needs to be built to where its hinge is at 0,y,0, then moved into place so opening will work. - printf("door_close_%d_%d rotate 0 %d 0\n",i,d,deg[d]); - if(d == 1) printf("door_close_%d_%d move %d 0 %d\n",i,d,x+2,y-8); - if(d == 3) printf("door_close_%d_%d move %d 0 %d\n",i,d,x-8,y-2); - } - } else {//no door in this wall - printf("wall_%d_%d addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7\n",i,d);//solid wall - } - printf("wall_%d_%d rotate 0 %d 0\n",i,d,deg[d]);//rotate this wall into position - printf("wall_%d_%d move %d 0 %d\n",i,d,x,y);//and put it in the right spot ofc - //the door needs to move either -2, +8 - } - } - } -} - -int main(int argc,char *argv[]) { - if(read(0,field,sizeof(field)) > 0) { - print_field(); - return 0; - } - return 1; -} diff --git a/share/hackvr/examples/dungen/dunexplore.sh b/share/hackvr/examples/dungen/dunexplore.sh deleted file mode 100755 index 6fbd5c3..0000000 --- a/share/hackvr/examples/dungen/dunexplore.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -### run me with hackvr_coproc -#the $USER triangle we add first is to give us some sort of avatar to see where the camera is. -#seed=1337 -red=1 -green=2 -blue=4 -echo $USER addshape 6 3 -1 0 -1 0 0 2 1 0 -1 ; echo $USER move 0 2 0 -echo world-x addshape $red 2 0 0 0 1 0 0 -echo world-y addshape $green 2 0 0 0 0 1 0 -echo world-z addshape $blue 2 0 0 0 0 0 1 -./dungen $seed | ./dun2hackvr -while read group action target;do - if [ "$action" = "action" ];then - if printf "%s\n" "${target}" | grep ^door_;then - printf "# clicked a door! %s\n" "${target}" >&2 - if printf "%s\n" "${target}" | grep ^door_open;then - tmp=$(printf "%s\n" "${target}" | sed 's/_open/_CLOSING/') - printf "%s renamegroup %s %s\n" ${target} ${target} ${tmp} - ( - for i in $(seq 1 5 90);do - printf "%s rotate 0 +5 0\n" ${tmp} - sleep .1 - done - tmp2=$(printf "%s\n" "${target}" | sed 's/_open/_close/') - printf "%s renamegroup %s %s\n" ${tmp} ${tmp} ${tmp2} - ) & - elif printf "%s\n" "${target}" | grep ^door_close;then - tmp=$(printf "%s\n" "${target}" | sed 's/_close/_OPENING/') - printf "%s renamegroup %s %s\n" ${target} ${target} ${tmp} - ( - for i in $(seq 1 5 90);do - printf "%s rotate 0 +-5 0\n" ${tmp} - sleep .1 - done - tmp2=$(printf "%s\n" "${target}" | sed 's/_close/_open/') - printf "%s renamegroup %s %s\n" ${tmp} ${tmp} ${tmp2} - ) & - fi - fi - fi -done diff --git a/share/hackvr/examples/dungen/dungen.c b/share/hackvr/examples/dungen/dungen.c deleted file mode 100644 index 738b395..0000000 --- a/share/hackvr/examples/dungen/dungen.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include -#include -#include - -#define ITERATIONS 16 - -char field[256]; -char nfield[256]; - -void prune() {//remove paths into wall - int i; - memcpy(nfield,field,256);//make a copy just for comparison - for(i=0;i<256;i++) { - if(i%16 == 0) field[i] &= ~0x1;//remove all left exits at left of map - else if((field[i]&0x1) && !(nfield[i-1]&0x2)) field[i] &= ~0x1; - if(i%16 == 15) field[i] &= ~0x2;//remove all right exits at right of map. - else if((field[i]&0x2) && !(nfield[i+1]&0x1)) field[i] &= ~0x2; - if(i > 240) field[i] &= ~0x4; - else if((field[i]&0x4) && !(nfield[i+16]&0x8)) field[i] &= ~0x4; - if(i < 16) field[i] &= ~0x8; - else if((field[i]&0x8) && !(nfield[i-16]&0x4)) field[i] &= ~0x8; - } -} - -void grow() { - int i=0; - memcpy(nfield,field,256); - for(i=0;i<256;i++) { - if(random() % 2 == 0) { - if((field[i]&0x1) && !nfield[i-1] && i%16 != 0) nfield[i-1]=random()%16 | 0x2; - if((field[i]&0x2) && !nfield[i+1] && i%16 != 15) nfield[i+1]=random()%16 | 0x1; - if((field[i]&0x4) && !nfield[i+16] && i<240) nfield[i+16]=random()%16 | 0x8; - if((field[i]&0x8) && !nfield[i-16] && i>16) nfield[i-16]=random()%16 | 0x4; - } - } - memcpy(field,nfield,256); -} - -void dump() { - int i; - write(1,field,sizeof(field)); -} - -int main(int argc,char *argv[]) { - int i; - int seed=time(0) * getpid(); - if(argc > 1) { - seed=atoi(argv[1]); - } - srandom(seed); - field[7+16] = 0x4;//center top - for(i=0;i 2) dump(); - grow(); - } - prune(); - dump(); -// fprintf(stderr,"seed: %d\n",seed); -} diff --git a/share/hackvr/examples/editor/editor.sh b/share/hackvr/examples/editor/editor.sh deleted file mode 100755 index e8ae65e..0000000 --- a/share/hackvr/examples/editor/editor.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -cat p | hackvr $USER \ - | stdbuf -oL tr -s ' ' \ - | grep --line-buffered "^[^ ][^ ]* action " \ - | stdbuf -oL cut '-d ' -f3 \ - | xargs -L1 printf "epoch control %s\n" > p diff --git a/share/hackvr/examples/fib.sh b/share/hackvr/examples/fib.sh deleted file mode 100755 index c1d87ab..0000000 --- a/share/hackvr/examples/fib.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -z=0 -a=1 -b=1 - -for i in $(seq 1 10);do - if [ $[$i % 2] = 0 ];then - x=$[$z] - y=0 - else - x=0 - y=$[$z] - fi - - w=$a - h=$a - - echo fib_$a addshape 2 4 $x $y 0 $[$x+$w] $y 0 $[$x+$w] $[$y+$h] 0 $x $[$y+$h] 0 - z=$a - s=$[$a+$b] - a=$b - b=$s - -done diff --git a/share/hackvr/examples/filebrowser/action_to_target.sh b/share/hackvr/examples/filebrowser/action_to_target.sh deleted file mode 100755 index 2abbe58..0000000 --- a/share/hackvr/examples/filebrowser/action_to_target.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -#this script gets the action lines that hackvr outputs and turns them into as normal of a string as possible -#for the backend script to use. -#so hex encoded strings need to be unencoded before they leave here. -#the hex encoded strings don't have a newline at the end. we need to add one. see xargs printf "%s0a" -grep --line-buffered ^USER \ - | stdbuf -oL cut '-d ' -f2- \ - | grep --line-buffered ^action \ - | stdbuf -oL cut '-d ' -f2- \ - | xargs -L1 printf "%s0a\n" \ - | stdbuf -oL xxd -r -p diff --git a/share/hackvr/examples/filebrowser/backend-filebrowser.sh b/share/hackvr/examples/filebrowser/backend-filebrowser.sh deleted file mode 100755 index 7fdfc2e..0000000 --- a/share/hackvr/examples/filebrowser/backend-filebrowser.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -#give a list of files. -#wait for a selection on stdin -#cd or start that file -#repeat. -while true;do -#not sure why this needs to be printed to show up every time. - echo .. - find . -maxdepth 1 #| tr ' ' '\n' #wut? no? - read -r selection - if [ -f "$selection" ];then - xdg-open "$selection" #good enough? - fi - if [ -d "$selection" ];then - cd "$selection" - fi - echo -done diff --git a/share/hackvr/examples/filebrowser/backend-gopher.sh b/share/hackvr/examples/filebrowser/backend-gopher.sh deleted file mode 100755 index fe73755..0000000 --- a/share/hackvr/examples/filebrowser/backend-gopher.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -#give a list of files. -#wait for a selection on stdin -#cd or start that file -#repeat. -server=$1 -${server:="gopher.hacking.allowed.org"} -#gopher.hacking.allowed.org -port=70 -selection=/ -while true;do -#not sure why this needs to be printed to show up every time. - printf "/\n" - printf '%s\n' "$selection" | ncat "$server" "$port" | tee /dev/stderr | grep -v ^i | cut -f2 | tr -d '\r' -### need to ask user for input in the form of a pop-up window if the selected target was of type 7 - read -r selection - if [ "_" = "_$selection" ];then - echo "looks like there's nothing here. exiting." >&2 - exit 1 - fi - echo -done diff --git a/share/hackvr/examples/filebrowser/backend-ps.sh b/share/hackvr/examples/filebrowser/backend-ps.sh deleted file mode 100755 index ac1eb47..0000000 --- a/share/hackvr/examples/filebrowser/backend-ps.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -#give a list of files. -#wait for a selection on stdin -#cd or start that file -#repeat. -while true;do -#not sure why this needs to be printed to show up every time. - ps | tail -n+2 - read -r selection - echo $selection - echo -done diff --git a/share/hackvr/examples/filebrowser/camera.pos b/share/hackvr/examples/filebrowser/camera.pos deleted file mode 100644 index 718923c..0000000 --- a/share/hackvr/examples/filebrowser/camera.pos +++ /dev/null @@ -1,2 +0,0 @@ -USER move 0 0 0 -USER rotate 0 0 0 diff --git a/share/hackvr/examples/filebrowser/frontend-hackvr.sh b/share/hackvr/examples/filebrowser/frontend-hackvr.sh deleted file mode 100755 index ff6264a..0000000 --- a/share/hackvr/examples/filebrowser/frontend-hackvr.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -if [ "_$1" = "_" ];then - echo "I need an argument for what my backend is." >&2 - exit 1 -fi -cat camera.pos <(stdbuf -oL $1 < p | ./list_to_cubes.sh) | hackvr USER | ./action_to_target.sh > p diff --git a/share/hackvr/examples/filebrowser/frontend-zenity.sh b/share/hackvr/examples/filebrowser/frontend-zenity.sh deleted file mode 100755 index 44ae385..0000000 --- a/share/hackvr/examples/filebrowser/frontend-zenity.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -if [ "_$1" = "_" ];then - echo "I need a backend script passed as first argument." >&2 - exit 1 -fi -stdbuf -oL $1 < p | stdbuf -oL tr '\n' ' ' | sed -u 's/$/_/' | stdbuf -oL tr '_' '\n' | xargs -L1 zenity --list --column file > p diff --git a/share/hackvr/examples/filebrowser/list_to_cubes.sh b/share/hackvr/examples/filebrowser/list_to_cubes.sh deleted file mode 100755 index 0dfca06..0000000 --- a/share/hackvr/examples/filebrowser/list_to_cubes.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -# blank lines deleteallexcept epoch -# expected input format: -# -# line1 -# line2 -# line3 -# -# line1 -# line2 -j=1 -r=200 -while read -r line;do - if [ "_$line" != '_' ];then -# ../tools/obj2hackvr.pl "$line" ../meshes/cube.obj - #turn line into hex to prevent stupid shit - hexline="$(printf "%s" "$line" | xxd -p | tr -d '\n')" - printf "%s addshape 18 3 8 %d %d 0 %d %d 0 %d %d\n" "$hexline" "$j" "$r" "$[$j+8]" "$r" "$j" "$r" - cd .. - printf "%s\n" "$line" | tee /dev/stderr | makelabel.sh "$hexline" 15 $j $r - cd filebrowser - #printf "%s move 0 %d %d 0 0 0 0 0 0\n" "$hexline" "$i" "$r" - printf "%s rotate 0 %d 0\n" "$hexline" "$[i * 3]" - #somehow printf '%s\n' "$line" | ./testfont.sh and make its output belong to same group as $line.. sed? - i=$[i+10] - j=$[j+4] - else - cat camera.pos - printf "USER deleteallexcept USER\n" #deleteallexcept doesn't have gr deletions yet I think. - j=0 - i=0 - fi -done diff --git a/share/hackvr/examples/filebrowser/run b/share/hackvr/examples/filebrowser/run deleted file mode 100755 index cc5a9df..0000000 --- a/share/hackvr/examples/filebrowser/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -cd "$(dirname "$0")" -./frontend-hackvr.sh ./backend-gopher.sh $1 diff --git a/share/hackvr/examples/grid_floor.sh b/share/hackvr/examples/grid_floor.sh deleted file mode 100755 index 452163f..0000000 --- a/share/hackvr/examples/grid_floor.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -cat <(for i in $(seq 1 32);do - for j in $(seq 1 32);do - echo floor addshape 2 4 $i 0 $j $i 0 $[j+1] $[i+1] 0 $[j+1] $[i+1] 0 $j -# echo floor addshape 2 4 $i 0 $j $[i+1] 0 $j $[i+1] 0 $[j+1] $i 0 $[j+1] - done - done) \ - <(echo -e "floor scaleup 8\nepoch export floor\nepoch quit\n") \ - | hackvr_headless $USER \ - | sed "s/\.0*//g" diff --git a/share/hackvr/examples/hackvr_term/Makefile b/share/hackvr/examples/hackvr_term/Makefile deleted file mode 100644 index fb33227..0000000 --- a/share/hackvr/examples/hackvr_term/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -.PHONY: all clean install uninstall - -all: hackvr_term - -hackvr_term.o: CFLAGS=-pedantic -Wall -libtmt/tmt.o: CFLAGS=-pedantic - -hackvr_term: hackvr_term.o libtmt/tmt.o - -clean: - rm *.o - rm */*.o - rm hackvr_term - -install: - install hackvr_term $(PREFIX)/bin/hackvr_term - -uninstall: - [ -e $(PREFIX)/bin/hackvr_term ] && rm -i $(PREFIX)/bin/hackvr_term || echo "nothing to uninstall" diff --git a/share/hackvr/examples/hackvr_term/camera.pos b/share/hackvr/examples/hackvr_term/camera.pos deleted file mode 100644 index df832fd..0000000 --- a/share/hackvr/examples/hackvr_term/camera.pos +++ /dev/null @@ -1,4 +0,0 @@ -USER move 250 -140 -300 -#these two lines are for when I want a screenshot of the terminal rotated so I can take pretty screeshots -#USER move 315 -125 -285 -#USER rotate 0 -5 0 diff --git a/share/hackvr/examples/hackvr_term/hackvr_data_decode.sh b/share/hackvr/examples/hackvr_term/hackvr_data_decode.sh deleted file mode 100755 index 85c64af..0000000 --- a/share/hackvr/examples/hackvr_term/hackvr_data_decode.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail -exec grep --line-buffered '^[^ ]* data ' | stdbuf -oL tr -s ' ' | stdbuf -oL cut '-d ' -f3- | stdbuf -o0 xxd -r -p diff --git a/share/hackvr/examples/hackvr_term/hackvr_term b/share/hackvr/examples/hackvr_term/hackvr_term deleted file mode 100755 index d2fb6d2..0000000 Binary files a/share/hackvr/examples/hackvr_term/hackvr_term and /dev/null differ diff --git a/share/hackvr/examples/hackvr_term/hackvr_term.c b/share/hackvr/examples/hackvr_term/hackvr_term.c deleted file mode 100644 index b044498..0000000 --- a/share/hackvr/examples/hackvr_term/hackvr_term.c +++ /dev/null @@ -1,184 +0,0 @@ -#include -#include -#include -#include -#include -#include //PATH_MAX -#include "libtmt/tmt.h" - -//these numbers include the space between characters -//apple401 font is this wide: -//#define FONTW 14 -//#define FONTH 16 - -//epoch font is this wide: -#define FONTW 6 -#define FONTH 10 - -//////////////////////////////////// hey. you can do some config here. either preload glyphs or re-read font file each time. -//comment out the next line if you want what is probably the slow version. might be safer and use less memory though. -//maybe just put the font file in ram. linux caches that crap anyway, right? -//testing showed preloading was at least 10x faster. -#define PRELOAD_GLYPHS -//only 8-bit characters atm. -//and we'll need to malloc the amount of lines each character will have. -//and malloc each line in that glyph... -//or just set it statically. - -#ifdef PRELOAD_GLYPHS - -#define MAXCHARACTER 256 -#define MAXLINESPERGLYPH 16 -#define MAXCHARSPERGLYPHLINE 256 -char glyphs[MAXCHARACTER][MAXLINESPERGLYPH][MAXCHARSPERGLYPHLINE]; - -char font_file[PATH_MAX]; - -void preload_glyphs() { - char line[MAXCHARSPERGLYPHLINE];//tmp storage - FILE *fp; - int charN; - int i; - for(i=0;ia.bg+15); - for(i=0,line=glyphs[ch->c][0];line[0];i++,line=glyphs[ch->c][i]) { - ret=1; - printf("term_%02d_%02d addshape %d %s",c,r,ch->a.fg == -1 ? 17 : ch->a.fg + 15,line+strlen("XX addshape X")); - } - if(ret) {//if we drew something we should place it somewhere. - printf("term_%02d_%02d move %d %d 0\n",c,r,c*FONTW,-r*FONTH); - } -} - -#else - -void hackvr_draw_character(int c,int r,const TMTCHAR *ch) {//this is slow but allows you to change the font between each character... if you really wanted that. - int i; - FILE *fp; - char str[16]; - char line[256];//whatever - if(ch->c < 128) { - snprintf(str,sizeof(str)-1,"%02lx",ch->c); - } else { - snprintf(str,sizeof(str)-1,"%08lx",ch->c); - } - if((fp=fopen(font_file,"r")) == NULL ) { - fprintf(stderr,"# fail to open font\n"); - exit(1); - } - printf("term_%02d_%02d addshape %d 4 -1 -3 0 5 -3 0 5 7 0 -1 7 0\n",c,r,ch->a.bg+15); - for(i=0;fgets(line,sizeof(line)-1,fp) != 0;i++) { - if(!strncmp(str,line,2)) { - printf("term_%02d_%02d addshape %d %s",c,r,ch->a.fg==-1?2:ch->a.fg+15,line+strlen("XX addshape X ")); - } - } - if(i) printf("term_%02d_%02d move %d %d 0\n",c,r,c*FONTW,-r*FONTH); - fclose(fp); -} - -#endif - -void callback(tmt_msg_t m,TMT *vt, const void *a,void *vt_old) { - static int cr_old=0; - static int cc_old=0; - const TMTSCREEN *s_old=tmt_screen(vt_old); - const TMTSCREEN *s=tmt_screen(vt); - const TMTPOINT *c=tmt_cursor(vt); - const TMTCHAR *ch; - switch(m) { - case TMT_MSG_BELL: - printf("term set global.beep\n"); - break; - case TMT_MSG_UPDATE: - for (size_t r = 0; r < s->nline; r++){ - if (s->lines[r]->dirty){ - for (size_t c = 0; c < s->ncol; c++){ - if(memcmp(&(s->lines[r]->chars[c]),&(s_old->lines[r]->chars[c]),sizeof(TMTCHAR))) { - ch=&(s->lines[r]->chars[c]); - printf("term_%02d_%02d deletegroup term_%02d_%02d\n",c,r,c,r); - hackvr_draw_character(c,r,ch); - memcpy(&(s_old->lines[r]->chars[c]),&(s->lines[r]->chars[c]),sizeof(TMTCHAR)); - } - } - } - } - break; - case TMT_MSG_ANSWER://what does this do? - fprintf(stderr,"ANSWER: %s\n",(const char *)a); - break; - case TMT_MSG_MOVED: - printf("cursor move %d %d 0\n", (c->c - cc_old) * 5, - (c->r - cr_old) * 9);//calculate relative movement needed based on previous and current positions. - cr_old=c->r; - cc_old=c->c; - break; - case TMT_MSG_CURSOR: - if(!strcmp(a,"t")) { - printf("cursor deletegroup cursor\n");//just delete it and redraw the cursor. - printf("cursor addshape 2 4 0 -2 0 4 -2 0 4 6 0 0 6 0\n");//let's pretend this is how cursors should be. - printf("cursor move %d %d 0\n",c->c * 5,-c->r * 9); - } - if(!strcmp(a,"f")) { - printf("cursor deletegroup cursor\n"); - cr_old=0; - cc_old=0; - } - break; - default: - fprintf(stderr,"unhandled message type: %d\n",m); - } - return; -} - -int main(int argc,char *argv[]) { - char in[16]; - if(argc < 3) return fprintf(stderr,"usage: ./hackvr_term cols rows\n"),1; - int r=atoi(argv[2]); - int ret=0; - int c=atoi(argv[1]); - if(!getenv("PREFIX")) { - fprintf(stderr,"hackvr_term: PREFIX is not set. I dunno where to find my fonts.\n"); - return 1; - } - snprintf(font_file,sizeof(font_file)-1,"%s/share/hackvr/font/default.hackvr",getenv("PREFIX")); -#ifdef PRELOAD_GLYPHS - printf("# hackvr_term: preloading glyphs\n"); - preload_glyphs();//will exit on error - printf("# hackvr_term: done.\n"); -#endif - setbuf(stdin,0); - setbuf(stdout,0); - TMT *vt_old = tmt_open(r,c,NULL,NULL,NULL); - if(!vt_old) return fprintf(stderr,"failed to open tmt's virtual terminal for storage"),1; - TMT *vt = tmt_open(r,c,callback,vt_old,NULL); - if(!vt) return fprintf(stderr,"failed to open tmt's virtual terminal"),1; - //read from stdin and write to terminal. - while((ret=read(0,in,16)) != 0) {//16 bytes at a time work? - if(ret == -1) { - if(errno == EAGAIN) continue; - break; - } - tmt_write(vt,in,ret); - } - tmt_close(vt); - return 0; -} diff --git a/share/hackvr/examples/hackvr_term/libtmt/README.rst b/share/hackvr/examples/hackvr_term/libtmt/README.rst deleted file mode 100644 index f3819df..0000000 --- a/share/hackvr/examples/hackvr_term/libtmt/README.rst +++ /dev/null @@ -1,637 +0,0 @@ - -============================================ -libtmt - a simple terminal emulation library -============================================ - -libtmt is the Tiny Mock Terminal Library. It provides emulation of a classic -smart text terminal, by maintaining an in-memory screen image. Sending text -and command sequences to libtmt causes it to update this in-memory image, -which can then be examined and rendered however the user sees fit. - -The imagined primary goal for libtmt is to for terminal emulators and -multiplexers; it provides the terminal emulation layer for the `mtm`_ -terminal multiplexer, for example. Other uses include screen-scraping and -automated test harnesses. - -libtmt is similar in purpose to `libtsm`_, but considerably smaller (500 -lines versus 6500 lines). libtmt is also, in this author's humble opinion, -considerably easier to use. - -.. _`mtm`: https://github.com/deadpixi/mtm -.. _`libtsm`: https://www.freedesktop.org/wiki/Software/kmscon/libtsm/ - -Major Features and Advantages -============================= - -Works Out-of-the-Box - libtmt emulates a well-known terminal type (`ansi`), the definition of - which has been in the terminfo database since at least 1995. There's no - need to install a custom terminfo entry. There's no claiming to be an - xterm but only emulating a small subset of its features. Any program - using terminfo works automatically: this includes vim, emacs, mc, - cmus, nano, nethack, ... - -Portable - Written in pure C99. - Optionally, the POSIX-mandated `wcwidth` function can be used, which - provides minimal support for combining characters. - -Small - Less than 500 lines of C, including comments and whitespace. - -Free - Released under a BSD-style license, free for commercial and - non-commerical use, with no restrictions on source code release or - redistribution. - -Simple - Only 8 functions to learn, and really you can get by with 6! - -International - libtmt internally uses wide characters exclusively, and uses your C - library's multibyte encoding functions. - This means that the library automatically supports any encoding that - your operating system does. - -How to Use libtmt -================= - -libtmt is a single C file and a single header. Just include these files -in your project and you should be good to go. - -By default, libtmt uses only ISO standard C99 features, -but see `Compile-Time Options`_ below. - -Example Code ------------- - -Below is a simple program fragment giving the flavor of libtmt. -Note that another good example is the `mtm`_ terminal multiplexer: - -.. _`mtm`: https://github.com/deadpixi/mtm - -.. code:: c - - #include - #include - #include "tmt.h" - - /* Forward declaration of a callback. - * libtmt will call this function when the terminal's state changes. - */ - void callback(tmt_msg_t m, TMT *vt, const void *a, void *p); - - int - main(void) - { - /* Open a virtual terminal with 2 lines and 10 columns. - * The first NULL is just a pointer that will be provided to the - * callback; it can be anything. The second NULL specifies that - * we want to use the default Alternate Character Set; this - * could be a pointer to a wide string that has the desired - * characters to be displayed when in ACS mode. - */ - TMT *vt = tmt_open(2, 10, callback, NULL, NULL); - if (!vt) - return perror("could not allocate terminal"), EXIT_FAILURE; - - /* Write some text to the terminal, using escape sequences to - * use a bold rendition. - * - * The final argument is the length of the input; 0 means that - * libtmt will determine the length dynamically using strlen. - */ - tmt_write(vt, "\033[1mhello, world (in bold!)\033[0m", 0); - - /* Writing input to the virtual terminal can (and in this case, did) - * call the callback letting us know the screen was updated. See the - * callback below to see how that works. - */ - tmt_close(vt); - return EXIT_SUCCESS; - } - - void - callback(tmt_msg_t m, TMT *vt, const void *a, void *p) - { - /* grab a pointer to the virtual screen */ - const TMTSCREEN *s = tmt_screen(vt); - const TMTPOINT *c = tmt_cursor(vt); - - switch (m){ - case TMT_MSG_BELL: - /* the terminal is requesting that we ring the bell/flash the - * screen/do whatever ^G is supposed to do; a is NULL - */ - printf("bing!\n"); - break; - - case TMT_MSG_UPDATE: - /* the screen image changed; a is a pointer to the TMTSCREEN */ - for (size_t r = 0; r < s->nline; r++){ - if (s->lines[r]->dirty){ - for (size_t c = 0; c < s->ncol; c++){ - printf("contents of %zd,%zd: %lc (%s bold)\n", r, c, - s->lines[r]->chars[c].c, - s->lines[r]->chars[c].a.bold? "is" : "is not"); - } - } - } - - /* let tmt know we've redrawn the screen */ - tmt_clean(vt); - break; - - case TMT_MSG_ANSWER: - /* the terminal has a response to give to the program; a is a - * pointer to a string */ - printf("terminal answered %s\n", (const char *)a); - break; - - case TMT_MSG_MOVED: - /* the cursor moved; a is a pointer to the cursor's TMTPOINT */ - printf("cursor is now at %zd,%zd\n", c->r, c->c); - break; - } - } - -Data Types and Enumerations ---------------------------- - -.. code:: c - - /* an opaque structure */ - typedef struct TMT TMT; - - /* possible messages sent to the callback */ - typedef enum{ - TMT_MSG_MOVED, /* the cursor changed position */ - TMT_MSG_UPDATE, /* the screen image changed */ - TMT_MSG_ANSWER, /* the terminal responded to a query */ - TMT_MSG_BELL /* the terminal bell was rung */ - } tmt_msg_T; - - /* a callback for the library - * m is one of the message constants above - * vt is a pointer to the vt structure - * r is NULL for TMT_MSG_BELL - * is a pointer to the cursor's TMTPOINT for TMT_MSG_MOVED - * is a pointer to the terminal's TMTSCREEN for TMT_MSG_UPDATE - * is a pointer to a string for TMT_MSG_ANSWER - * p is whatever was passed to tmt_open (see below). - */ - typedef void (*TMTCALLBACK)(tmt_msg_t m, struct TMT *vt, - const void *r, void *p); - - /* color definitions */ - typedef enum{ - TMT_COLOR_BLACK, - TMT_COLOR_RED, - TMT_COLOR_GREEN, - TMT_COLOR_YELLOW, - TMT_COLOR_BLUE, - TMT_COLOR_MAGENTA, - TMT_COLOR_CYAN, - TMT_COLOR_WHITE, - TMT_COLOR_DEFAULT /* whatever the host terminal wants it to mean */ - } tmt_color_t; - - /* graphical rendition */ - typedef struct TMTATTRS TMTATTRS; - struct TMTATTRS{ - bool bold; /* character is bold */ - bool dim; /* character is half-bright */ - bool underline; /* character is underlined */ - bool blink; /* character is blinking */ - bool reverse; /* character is in reverse video */ - bool invisible; /* character is invisible */ - tmt_color_t fg; /* character foreground color */ - tmt_color_t bg; /* character background color */ - }; - - /* characters */ - typedef struct TMTCHAR TMTCHAR; - struct TMTCHAR{ - wchar_t c; /* the character */ - TMTATTRS a; /* its rendition */ - }; - - /* a position on the screen; upper left corner is 0,0 */ - typedef struct TMTPOINT TMTPOINT; - struct TMTPOINT{ - size_t r; /* row */ - size_t c; /* column */ - }; - - /* a line of characters on the screen; - * every line is always as wide as the screen - */ - typedef struct TMTLINE TMTLINE; - struct TMTLINE{ - bool dirty; /* line has changed since it was last drawn */ - TMTCHAR chars; /* the contents of the line */ - }; - - /* a virtual terminal screen image */ - typedef struct TMTSCREEN TMTSCREEN; - struct TMTSCREEN{ - size_t nline; /* number of rows */ - size_t ncol; /* number of columns */ - TMTLINE **lines; /* the lines on the screen */ - }; - -Functions ---------- - -`TMT *tmt_open(size_t nrows, size_t ncols, TMTCALLBACK cb, VOID *p, const wchar *acs);` - Creates a new virtual terminal, with `nrows` rows and `ncols` columns. - The callback `cb` will be called on updates, and passed `p` as a final - argument. See the definition of `tmt_msg_t` above for possible values - of each argument to the callback. - - Terminals must have a size of at least two rows and two columns. - - `acs` specifies the characters to use when in Alternate Character Set - (ACS) mode. The default string (used if `NULL` is specified) is:: - - L"><^v#+:o##+++++~---_++++|<>*!fo" - - See `Alternate Character Set`_ for more information. - - Note that the callback must be ready to be called immediately, as - it will be called after initialization of the terminal is done, but - before the call to `tmt_open` returns. - -`void tmt_close(TMT *vt)` - Close and free all resources associated with `vt`. - -`bool tmt_resize(TMT *vt, size_t nrows, size_t ncols)` - Resize the virtual terminal to have `nrows` rows and `ncols` columns. - The contents of the area in common between the two sizes will be preserved. - - Terminals must have a size of at least two rows and two columns. - - If this function returns false, the resize failed (only possible in - out-of-memory conditions or invalid sizes). If this happens, the terminal - is trashed and the only valid operation is the close the terminal. - -`void tmt_write(TMT *vt, const char *s, size_t n);` - Write the provided string to the terminal, interpreting any escape - sequences contained threin, and update the screen image. The last - argument is the length of the input. If set to 0, the length is - determined using `strlen`. - - The terminal's callback function may be invoked one or more times before - a call to this function returns. - - The string is converted internally to a wide-character string using the - system's current multibyte encoding. Each terminal maintains a private - multibyte decoding state, and correctly handles mulitbyte characters that - span multiple calls to this function (that is, the final byte(s) of `s` - may be a partial mulitbyte character to be completed on the next call). - -`const TMTSCREEN *tmt_screen(const TMT *vt);` - Returns a pointer to the terminal's screen image. - -`const TMTPOINT *tmt_cursor(cosnt TMT *vt);` - Returns a pointer to the terminal's cursor position. - -`void tmt_clean(TMT *vt);` - Call this after receiving a `TMT_MSG_UPDATE` or `TMT_MSG_MOVED` callback - to let the library know that the program has handled all reported changes - to the screen image. - -`void tmt_reset(TMT *vt);` - Resets the virtual terminal to its default state (colors, multibyte - decoding state, rendition, etc). - -Special Keys ------------- - -To send special keys to a program that is using libtmt for its display, -write one of the `TMT_KEY_*` strings to that program's standard input -(*not* to libtmt; it makes no sense to send any of these constants to -libtmt itself). - -The following macros are defined, and are all constant strings: - -- TMT_KEY_UP -- TMT_KEY_DOWN -- TMT_KEY_RIGHT -- TMT_KEY_LEFT -- TMT_KEY_HOME -- TMT_KEY_END -- TMT_KEY_INSERT -- TMT_KEY_BACKSPACE -- TMT_KEY_ESCAPE -- TMT_KEY_BACK_TAB -- TMT_KEY_PAGE_UP -- TMT_KEY_PAGE_DOWN -- TMT_KEY_F1 through TMT_KEY_F10 - -Note also that the classic PC console sent the enter key as -a carriage return, not a linefeed. Many programs don't care, -but some do. - -Compile-Time Options --------------------- - -There are two preprocessor macros that affect libtmt: - -`TMT_INVALID_CHAR` - Define this to a wide-character. This character will be added to - the virtual display when an invalid multibyte character sequence - is encountered. - - By default (if you don't define it as something else before compiling), - this is `((wchar_t)0xfffd)`, which is the codepoint for the Unicode - 'REPLACEMENT CHARACTER'. Note that your system might not use Unicode, - and its wide-character type might not be able to store a constant as - large as `0xfffd`, in which case you'll want to use an alternative. - -`TMT_HAS_WCWIDTH` - By default, libtmt uses only standard C99 features. If you define - TMT_HAS_WCWIDTH before compiling, libtmt will use the POSIX `wcwidth` - function to detect combining characters. - - Note that combining characters are still not handled particularly - well, regardless of whether this was defined. Also note that what - your C library's `wcwidth` considers a combining character and what - the written language in question considers one could be different. - -Alternate Character Set ------------------------ - -The terminal can be switched to and from its "Alternate Character Set" (ACS) -using escape sequences. The ACS traditionally contained box-drawing and other -semigraphic characters. - -The characters in the ACS are configurable at runtime, by passing a wide string -to `tmt_open`. The default if none is provided (i.e. the argument is `NULL`) -uses ASCII characters to approximate the traditional characters. - -The string passed to `tmt_open` must be 31 characters long. The characters, -and their default ASCII-safe values, are in order: - -- RIGHT ARROW ">" -- LEFT ARROW "<" -- UP ARROW "^" -- DOWN ARROW "v" -- BLOCK "#" -- DIAMOND "+" -- CHECKERBOARD "#" -- DEGREE "o" -- PLUS/MINUS "+" -- BOARD ":" -- LOWER RIGHT CORNER "+" -- UPPER RIGHT CORNER "+" -- UPPER LEFT CORNER "+" -- LOWER LEFT CORNER "+" -- CROSS "+" -- SCAN LINE 1 "~" -- SCAN LINE 3 "-" -- HORIZONTAL LINE "-" -- SCAN LINE 7 "-" -- SCAN LINE 9 "_" -- LEFT TEE "+" -- RIGHT TEE "+" -- BOTTOM TEE "+" -- TOP TEE "+" -- VERTICAL LINE "|" -- LESS THAN OR EQUAL "<" -- GREATER THAN OR EQUAL ">" -- PI "*" -- NOT EQUAL "!" -- POUND STERLING "f" -- BULLET "o" - -If your system's wide character type's character set corresponds to the -Universal Character Set (UCS/Unicode), the following wide string is a -good option to use:: - - L"→←↑↓■◆▒°±▒┘┐┌└┼⎺───⎽├┤┴┬│≤≥π≠£•" - -**Note that multibyte decoding is disabled in ACS mode.** The traditional -implementations of the "ansi" terminal type (i.e. IBM PCs and compatibles) -had no concept of multibyte encodings and used the character codes -outside the ASCII range for various special semigraphic characters. -(Technically they had an entire alternate character set as well via the -code page mechanism, but that's beyond the scope of this explanation.) - -The end result is that the terminfo definition of "ansi" sends characters -with the high bit set when in ACS mode. This breaks several multibyte -encoding schemes (including, most importantly, UTF-8). - -As a result, libtmt does not attempt to decode multibyte characters in -ACS mode, since that would break the multibyte encoding, the semigraphic -characters, or both. - -In general this isn't a problem, since programs explicitly switch to and -from ACS mode using escape sequences. - -When in ACS mode, bytes that are not special members of the alternate -character set (that is, bytes not mapped to the string provided to -`tmt_open`) are passed unchanged to the terminal. - -Supported Input and Escape Sequences -==================================== - -Internally libtmt uses your C library's/compiler's idea of a wide character -for all characters, so you should be able to use whatever characters you want -when writing to the virtual terminal (but see `Alternate Character Set`_). - -The following escape sequences are recognized and will be processed -specially. - -In the descriptions below, "ESC" means a literal escape character and "Ps" -means zero or more decimal numeric arguments separated by semicolons. -In descriptions "P1", "P2", etc, refer to the first parameter, second -parameter, and so on. If a required parameter is omitted, it defaults -to the smallest meaningful value (zero if the command accepts zero as -an argument, one otherwise). Any number of parameters may be passed, -but any after the first eight are ignored. - -Unless explicitly stated below, cursor motions past the edges of the screen -are ignored and do not result in scrolling. When characters are moved, -the spaces left behind are filled with blanks and any characters moved -off the edges of the screen are lost. - -====================== ====================================================================== -Sequence Action -====================== ====================================================================== -0x07 (Bell) Callback with TMT_MSG_BELL -0x08 (Backspace) Cursor left one cell -0x09 (Tab) Cursor to next tab stop or end of line -0x0a (Carriage Return) Cursor to first cell on this line -0x0d (Linefeed) Cursor to same column one line down, scroll if needed -ESC H Set a tabstop in this column -ESC 7 Save cursor position and current graphical state -ESC 8 Restore saved cursor position and current graphical state -ESC c Reset terminal to default state -ESC [ Ps A Cursor up P1 rows -ESC [ Ps B Cursor down P1 rows -ESC [ Ps C Cursor right P1 columns -ESC [ Ps D Cursor left P1 columns -ESC [ Ps E Cursor to first column of line P1 rows down from current -ESC [ Ps F Cursor to first column of line P1 rows up from current -ESC [ Ps G Cursor to column P1 -ESC [ Ps d Cursor to row P1 -ESC [ Ps H Cursor to row P1, column P2 -ESC [ Ps f Alias for ESC [ Ps H -ESC [ Ps I Cursor to next tab stop -ESC [ Ps J Clear screen - P1 == 0: from cursor to end of screen - P1 == 1: from beginning of screen to cursor - P1 == 2: entire screen -ESC [ Ps K Clear line - P1 == 0: from cursor to end of line - P1 == 1: from beginning of line to cursor - P1 == 2: entire line -ESC [ Ps L Insert P1 lines at cursor, scrolling lines below down -ESC [ Ps M Delete P1 lines at cursor, scrolling lines below up -ESC [ Ps P Delete P1 characters at cursor, moving characters to the right over -ESC [ Ps S Scroll screen up P1 lines -ESC [ Ps T Scroll screen down P1 lines -ESC [ Ps X Erase P1 characters at cursor (overwrite with spaces) -ESC [ Ps Z Go to previous tab stop -ESC [ Ps b Repeat previous character P1 times -ESC [ Ps c Callback with TMT_MSG_ANSWER "\033[?6c" -ESC [ Ps g If P1 == 3, clear all tabstops -ESC [ Ps h If P1 == 25, show the cursor (if it was hidden) -ESC [ Ps m Change graphical rendition state; see below -ESC [ Ps l If P1 == 25, hide the cursor -ESC [ Ps n If P1 == 6, callback with TMT_MSG_ANSWER "\033[%d;%dR" - with cursor row, column -ESC [ Ps s Alias for ESC 7 -ESC [ Ps u Alias for ESC 8 -ESC [ Ps @ Insert P1 blank spaces at cursor, moving characters to the right over -====================== ====================================================================== - -For the `ESC [ Ps m` escape sequence above ("Set Graphic Rendition"), -up to eight parameters may be passed; the results are cumulative: - -============== ================================================= -Rendition Code Meaning -============== ================================================= -0 Reset all graphic rendition attributes to default -1 Bold -2 Dim (half bright) -4 Underline -5 Blink -7 Reverse video -8 Invisible -10 Leave ACS mode -11 Enter ACS mode -22 Bold off -23 Dim (half bright) off -24 Underline off -25 Blink off -27 Reverse video off -28 Invisible off -30 Foreground black -31 Foreground red -32 Foreground green -33 Foreground yellow -34 Foreground blue -35 Foreground magenta -36 Foreground cyan -37 Foreground white -39 Foreground default color -40 Background black -41 Background red -42 Background green -43 Background yellow -44 Background blue -45 Background magenta -46 Background cyan -47 Background white -49 Background default color -============== ================================================= - -Other escape sequences are recognized but ignored. This includes escape -sequences for switching out codesets (officially, all code sets are defined -as equivalent in libtmt), and the various "Media Copy" escape sequences -used to print output on paper (officially, there is no printer attached -to libtmt). - -Additionally, "?" characters are stripped out of escape sequence parameter -lists for compatibility purposes. - -Known Issues -============ - -- Combining characters are "handled" by ignoring them - (when compiled with `TMT_HAS_WCWIDTH`) or by printing them separately. -- Double-width characters are rendered as single-width invalid - characters. -- The documentation and error messages are available only in English. - -Frequently Asked Questions -========================== - -What programs work with libtmt? -------------------------------- - -Pretty much all of them. Any program that doesn't assume what terminal -it's running under should work without problem; this includes any program -that uses the terminfo, termcap, or (pd|n)?curses libraries. Any program -that assumes it's running under some specific terminal might fail if its -assumption is wrong, and not just under libtmt. - -I've tested quite a few applications in libtmt and they've worked flawlessly: -vim, GNU emacs, nano, cmus, mc (Midnight Commander), and others just work -with no changes. - -What programs don't work with libtmt? -------------------------------------- - -Breakage with libtmt is of two kinds: breakage due to assuming a terminal -type, and reduced functionality. - -In all my testing, I only found one program that didn't work correctly by -default with libtmt: recent versions of Debian's `apt`_ assume a terminal -with definable scrolling regions to draw a fancy progress bar during -package installation. Using apt in its default configuration in libtmt will -result in a corrupted display (that can be fixed by clearing the screen). - -.. _`apt`: https://wiki.debian.org/Apt - -In my honest opinion, this is a bug in apt: it shouldn't assume the type -of terminal it's running in. - -The second kind of breakage is when not all of a program's features are -available. The biggest missing feature here is mouse support: libtmt -doesn't, and probably never will, support mouse tracking. I know of many -programs that *can* use mouse tracking in a terminal, but I don't know -of any that *require* it. Most (if not all?) programs of this kind would -still be completely usable in libtmt. - -License -------- - -Copyright (c) 2017 Rob King -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -- Neither the name of the copyright holder nor the - names of contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, -COPYRIGHT HOLDERS, OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/share/hackvr/examples/hackvr_term/libtmt/tmt.c b/share/hackvr/examples/hackvr_term/libtmt/tmt.c deleted file mode 100644 index 26c122e..0000000 --- a/share/hackvr/examples/hackvr_term/libtmt/tmt.c +++ /dev/null @@ -1,500 +0,0 @@ -/* Copyright (c) 2017 Rob King - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the copyright holder nor the - * names of contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, - * COPYRIGHT HOLDERS, OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include -#include -#include -#include -#include "tmt.h" - -#define BUF_MAX 100 -#define PAR_MAX 8 -#define TAB 8 -#define MAX(x, y) (((size_t)(x) > (size_t)(y)) ? (size_t)(x) : (size_t)(y)) -#define MIN(x, y) (((size_t)(x) < (size_t)(y)) ? (size_t)(x) : (size_t)(y)) -#define CLINE(vt) (vt)->screen.lines[MIN((vt)->curs.r, (vt)->screen.nline - 1)] - -#define P0(x) (vt->pars[x]) -#define P1(x) (vt->pars[x]? vt->pars[x] : 1) -#define CB(vt, m, a) ((vt)->cb? (vt)->cb(m, vt, a, (vt)->p) : (void)0) -#define INESC ((vt)->state) - -#define COMMON_VARS \ - TMTSCREEN *s = &vt->screen; \ - TMTPOINT *c = &vt->curs; \ - TMTLINE *l = CLINE(vt); \ - TMTCHAR *t = vt->tabs->chars - -#define HANDLER(name) static void name (TMT *vt) { COMMON_VARS; - -struct TMT{ - TMTPOINT curs, oldcurs; - TMTATTRS attrs, oldattrs; - - bool dirty, acs, ignored; - TMTSCREEN screen; - TMTLINE *tabs; - - TMTCALLBACK cb; - void *p; - const wchar_t *acschars; - - mbstate_t ms; - size_t nmb; - char mb[BUF_MAX + 1]; - - size_t pars[PAR_MAX]; - size_t npar; - size_t arg; - enum {S_NUL, S_ESC, S_ARG} state; -}; - -static TMTATTRS defattrs = {.fg = TMT_COLOR_DEFAULT, .bg = TMT_COLOR_DEFAULT}; -static void writecharatcurs(TMT *vt, wchar_t w); - -static wchar_t -tacs(const TMT *vt, unsigned char c) -{ - /* The terminfo alternate character set for ANSI. */ - static unsigned char map[] = {0020U, 0021U, 0030U, 0031U, 0333U, 0004U, - 0261U, 0370U, 0361U, 0260U, 0331U, 0277U, - 0332U, 0300U, 0305U, 0176U, 0304U, 0304U, - 0304U, 0137U, 0303U, 0264U, 0301U, 0302U, - 0263U, 0363U, 0362U, 0343U, 0330U, 0234U, - 0376U}; - for (size_t i = 0; i < sizeof(map); i++) if (map[i] == c) - return vt->acschars[i]; - return (wchar_t)c; -} - -static void -dirtylines(TMT *vt, size_t s, size_t e) -{ - vt->dirty = true; - for (size_t i = s; i < e; i++) - vt->screen.lines[i]->dirty = true; -} - -static void -clearline(TMT *vt, TMTLINE *l, size_t s, size_t e) -{ - vt->dirty = l->dirty = true; - for (size_t i = s; i < e && i < vt->screen.ncol; i++){ - l->chars[i].a = defattrs; - l->chars[i].c = L' '; - } -} - -static void -clearlines(TMT *vt, size_t r, size_t n) -{ - for (size_t i = r; i < r + n && i < vt->screen.nline; i++) - clearline(vt, vt->screen.lines[i], 0, vt->screen.ncol); -} - -static void -scrup(TMT *vt, size_t r, size_t n) -{ - n = MIN(n, vt->screen.nline - 1 - r); - - if (n){ - TMTLINE *buf[n]; - - memcpy(buf, vt->screen.lines + r, n * sizeof(TMTLINE *)); - memmove(vt->screen.lines + r, vt->screen.lines + r + n, - (vt->screen.nline - n - r) * sizeof(TMTLINE *)); - memcpy(vt->screen.lines + (vt->screen.nline - n), - buf, n * sizeof(TMTLINE *)); - - clearlines(vt, vt->screen.nline - n, n); - dirtylines(vt, r, vt->screen.nline); - } -} - -static void -scrdn(TMT *vt, size_t r, size_t n) -{ - n = MIN(n, vt->screen.nline - 1 - r); - - if (n){ - TMTLINE *buf[n]; - - memcpy(buf, vt->screen.lines + (vt->screen.nline - n), - n * sizeof(TMTLINE *)); - memmove(vt->screen.lines + r + n, vt->screen.lines + r, - (vt->screen.nline - n - r) * sizeof(TMTLINE *)); - memcpy(vt->screen.lines + r, buf, n * sizeof(TMTLINE *)); - - clearlines(vt, r, n); - dirtylines(vt, r, vt->screen.nline); - } -} - -HANDLER(ed) - size_t b = 0; - size_t e = s->nline; - - switch (P0(0)){ - case 0: b = c->r + 1; clearline(vt, l, c->c, vt->screen.ncol); break; - case 1: e = c->r - 1; clearline(vt, l, 0, c->c); break; - case 2: /* use defaults */ break; - default: /* do nothing */ return; - } - - clearlines(vt, b, e - b); -} - -HANDLER(ich) - size_t n = P1(0); /* XXX use MAX */ - if (n > s->ncol - c->c - 1) n = s->ncol - c->c - 1; - - memmove(l->chars + c->c + n, l->chars + c->c, - MIN(s->ncol - 1 - c->c, - (s->ncol - c->c - n - 1)) * sizeof(TMTCHAR)); - clearline(vt, l, c->c, n); -} - -HANDLER(dch) - size_t n = P1(0); /* XXX use MAX */ - if (n > s->ncol - c->c) n = s->ncol - c->c; - - memmove(l->chars + c->c, l->chars + c->c + n, - (s->ncol - c->c - n) * sizeof(TMTCHAR)); - - clearline(vt, l, s->ncol - c->c - n, s->ncol); -} - -HANDLER(el) - switch (P0(0)){ - case 0: clearline(vt, l, c->c, vt->screen.ncol); break; - case 1: clearline(vt, l, 0, MIN(c->c + 1, s->ncol - 1)); break; - case 2: clearline(vt, l, 0, vt->screen.ncol); break; - } -} - -HANDLER(sgr) - #define FGBG(c) *(P0(i) < 40? &vt->attrs.fg : &vt->attrs.bg) = c - for (size_t i = 0; i < vt->npar; i++) switch (P0(i)){ - case 0: vt->attrs = defattrs; break; - case 1: case 22: vt->attrs.bold = P0(0) < 20; break; - case 2: case 23: vt->attrs.dim = P0(0) < 20; break; - case 4: case 24: vt->attrs.underline = P0(0) < 20; break; - case 5: case 25: vt->attrs.blink = P0(0) < 20; break; - case 7: case 27: vt->attrs.reverse = P0(0) < 20; break; - case 8: case 28: vt->attrs.invisible = P0(0) < 20; break; - case 10: case 11: vt->acs = P0(0) > 10; break; - case 30: case 40: FGBG(TMT_COLOR_BLACK); break; - case 31: case 41: FGBG(TMT_COLOR_RED); break; - case 32: case 42: FGBG(TMT_COLOR_GREEN); break; - case 33: case 43: FGBG(TMT_COLOR_YELLOW); break; - case 34: case 44: FGBG(TMT_COLOR_BLUE); break; - case 35: case 45: FGBG(TMT_COLOR_MAGENTA); break; - case 36: case 46: FGBG(TMT_COLOR_CYAN); break; - case 37: case 47: FGBG(TMT_COLOR_WHITE); break; - case 39: case 49: FGBG(TMT_COLOR_DEFAULT); break; - } -} - -HANDLER(rep) - if (!c->c) return; - wchar_t r = l->chars[c->c - 1].c; - for (size_t i = 0; i < P1(0); i++) - writecharatcurs(vt, r); -} - -HANDLER(dsr) - char r[BUF_MAX + 1] = {0}; - snprintf(r, BUF_MAX, "\033[%zd;%zdR", c->r, c->c); - CB(vt, TMT_MSG_ANSWER, (const char *)r); -} - -HANDLER(resetparser) - memset(vt->pars, 0, sizeof(vt->pars)); - vt->state = vt->npar = vt->arg = vt->ignored = (bool)0; -} - -HANDLER(consumearg) - if (vt->npar < PAR_MAX) - vt->pars[vt->npar++] = vt->arg; - vt->arg = 0; -} - -HANDLER(fixcursor) - c->r = MIN(c->r, s->nline - 1); - c->c = MIN(c->c, s->ncol - 1); -} - -static bool -handlechar(TMT *vt, char i) -{ - COMMON_VARS; - - char cs[] = {i, 0}; - #define ON(S, C, A) if (vt->state == (S) && strchr(C, i)){ A; return true;} - #define DO(S, C, A) ON(S, C, consumearg(vt); if (!vt->ignored) {A;} \ - fixcursor(vt); resetparser(vt);); - - DO(S_NUL, "\x07", CB(vt, TMT_MSG_BELL, NULL)) - DO(S_NUL, "\x08", if (c->c) c->c--) - DO(S_NUL, "\x09", while (++c->c < s->ncol - 1 && t[c->c].c != L'*')) - DO(S_NUL, "\x0a", c->r < s->nline - 1? (void)c->r++ : scrup(vt, 0, 1)) - DO(S_NUL, "\x0d", c->c = 0) - ON(S_NUL, "\x1b", vt->state = S_ESC) - ON(S_ESC, "\x1b", vt->state = S_ESC) - DO(S_ESC, "H", t[c->c].c = L'*') - DO(S_ESC, "7", vt->oldcurs = vt->curs; vt->oldattrs = vt->attrs) - DO(S_ESC, "8", vt->curs = vt->oldcurs; vt->attrs = vt->oldattrs) - ON(S_ESC, "+*()", vt->ignored = true; vt->state = S_ARG) - DO(S_ESC, "c", tmt_reset(vt)) - ON(S_ESC, "[", vt->state = S_ARG) - ON(S_ARG, "\x1b", vt->state = S_ESC) - ON(S_ARG, ";", consumearg(vt)) - ON(S_ARG, "?", (void)0) - ON(S_ARG, "0123456789", vt->arg = vt->arg * 10 + atoi(cs)) - DO(S_ARG, "A", c->r = MAX(c->r - P1(0), 0)) - DO(S_ARG, "B", c->r = MIN(c->r + P1(0), s->nline - 1)) - DO(S_ARG, "C", c->c = MIN(c->c + P1(0), s->ncol - 1)) - DO(S_ARG, "D", c->c = MIN(c->c - P1(0), c->c)) - DO(S_ARG, "E", c->c = 0; c->r = MIN(c->r + P1(0), s->nline - 1)) - DO(S_ARG, "F", c->c = 0; c->r = MAX(c->r - P1(0), 0)) - DO(S_ARG, "G", c->c = MIN(P1(0) - 1, s->ncol - 1)) - DO(S_ARG, "d", c->r = MIN(P1(0) - 1, s->nline - 1)) - DO(S_ARG, "Hf", c->r = P1(0) - 1; c->c = P1(1) - 1) - DO(S_ARG, "I", while (++c->c < s->ncol - 1 && t[c->c].c != L'*')) - DO(S_ARG, "J", ed(vt)) - DO(S_ARG, "K", el(vt)) - DO(S_ARG, "L", scrdn(vt, c->r, P1(0))) - DO(S_ARG, "M", scrup(vt, c->r, P1(0))) - DO(S_ARG, "P", dch(vt)) - DO(S_ARG, "S", scrup(vt, 0, P1(0))) - DO(S_ARG, "T", scrdn(vt, 0, P1(0))) - DO(S_ARG, "X", clearline(vt, l, c->c, P1(0))) - DO(S_ARG, "Z", while (c->c && t[--c->c].c != L'*')) - DO(S_ARG, "b", rep(vt)); - DO(S_ARG, "c", CB(vt, TMT_MSG_ANSWER, "\033[?6c")) - DO(S_ARG, "g", if (P0(0) == 3) clearline(vt, vt->tabs, 0, s->ncol)) - DO(S_ARG, "m", sgr(vt)) - DO(S_ARG, "n", if (P0(0) == 6) dsr(vt)) - DO(S_ARG, "h", if (P0(0) == 25) CB(vt, TMT_MSG_CURSOR, "t")) - DO(S_ARG, "i", (void)0) - DO(S_ARG, "l", if (P0(0) == 25) CB(vt, TMT_MSG_CURSOR, "f")) - DO(S_ARG, "s", vt->oldcurs = vt->curs; vt->oldattrs = vt->attrs) - DO(S_ARG, "u", vt->curs = vt->oldcurs; vt->attrs = vt->oldattrs) - DO(S_ARG, "@", ich(vt)) - - return resetparser(vt), false; -} - -static void -notify(TMT *vt, bool update, bool moved) -{ - if (update) CB(vt, TMT_MSG_UPDATE, &vt->screen); - if (moved) CB(vt, TMT_MSG_MOVED, &vt->curs); -} - -static TMTLINE * -allocline(TMT *vt, TMTLINE *o, size_t n, size_t pc) -{ - TMTLINE *l = realloc(o, sizeof(TMTLINE) + n * sizeof(TMTCHAR)); - if (!l) return NULL; - - clearline(vt, l, pc, n); - return l; -} - -static void -freelines(TMT *vt, size_t s, size_t n, bool screen) -{ - for (size_t i = s; vt->screen.lines && i < s + n; i++){ - free(vt->screen.lines[i]); - vt->screen.lines[i] = NULL; - } - if (screen) free(vt->screen.lines); -} - -TMT * -tmt_open(size_t nline, size_t ncol, TMTCALLBACK cb, void *p, - const wchar_t *acs) -{ - TMT *vt = calloc(1, sizeof(TMT)); - if (!nline || !ncol || !vt) return free(vt), NULL; - - /* ASCII-safe defaults for box-drawing characters. */ - vt->acschars = acs? acs : L"><^v#+:o##+++++~---_++++|<>*!fo"; - vt->cb = cb; - vt->p = p; - - if (!tmt_resize(vt, nline, ncol)) return tmt_close(vt), NULL; - return vt; -} - -void -tmt_close(TMT *vt) -{ - free(vt->tabs); - freelines(vt, 0, vt->screen.nline, true); - free(vt); -} - -bool -tmt_resize(TMT *vt, size_t nline, size_t ncol) -{ - if (nline < 2 || ncol < 2) return false; - if (nline < vt->screen.nline) - freelines(vt, nline, vt->screen.nline - nline, false); - - TMTLINE **l = realloc(vt->screen.lines, nline * sizeof(TMTLINE *)); - if (!l) return false; - - size_t pc = vt->screen.ncol; - vt->screen.lines = l; - vt->screen.ncol = ncol; - for (size_t i = 0; i < nline; i++){ - TMTLINE *nl = NULL; - if (i >= vt->screen.nline) - nl = vt->screen.lines[i] = allocline(vt, NULL, ncol, 0); - else - nl = allocline(vt, vt->screen.lines[i], ncol, pc); - - if (!nl) return false; - vt->screen.lines[i] = nl; - } - vt->screen.nline = nline; - - vt->tabs = allocline(vt, vt->tabs, ncol, 0); - if (!vt->tabs) return free(l), false; - vt->tabs->chars[0].c = vt->tabs->chars[ncol - 1].c = L'*'; - for (size_t i = 0; i < ncol; i++) if (i % TAB == 0) - vt->tabs->chars[i].c = L'*'; - - fixcursor(vt); - dirtylines(vt, 0, nline); - notify(vt, true, true); - return true; -} - -static void -writecharatcurs(TMT *vt, wchar_t w) -{ - COMMON_VARS; - - #ifdef TMT_HAS_WCWIDTH - extern int wcwidth(wchar_t c); - if (wcwidth(w) > 1) w = TMT_INVALID_CHAR; - if (wcwidth(w) < 0) return; - #endif - - CLINE(vt)->chars[vt->curs.c].c = w; - CLINE(vt)->chars[vt->curs.c].a = vt->attrs; - CLINE(vt)->dirty = vt->dirty = true; - - if (c->c < s->ncol - 1) - c->c++; - else{ - c->c = 0; - c->r++; - } - - if (c->r >= s->nline){ - c->r = s->nline - 1; - scrup(vt, 0, 1); - } -} - -static inline size_t -testmbchar(TMT *vt) -{ - mbstate_t ts = vt->ms; - return vt->nmb? mbrtowc(NULL, vt->mb, vt->nmb, &ts) : (size_t)-2; -} - -static inline wchar_t -getmbchar(TMT *vt) -{ - wchar_t c = 0; - size_t n = mbrtowc(&c, vt->mb, vt->nmb, &vt->ms); - vt->nmb = 0; - return (n == (size_t)-1 || n == (size_t)-2)? TMT_INVALID_CHAR : c; -} - -void -tmt_write(TMT *vt, const char *s, size_t n) -{ - TMTPOINT oc = vt->curs; - n = n? n : strlen(s); - - for (size_t p = 0; p < n; p++){ - if (handlechar(vt, s[p])) - continue; - else if (vt->acs) - writecharatcurs(vt, tacs(vt, (unsigned char)s[p])); - else if (vt->nmb >= BUF_MAX) - writecharatcurs(vt, getmbchar(vt)); - else{ - switch (testmbchar(vt)){ - case (size_t)-1: writecharatcurs(vt, getmbchar(vt)); break; - case (size_t)-2: vt->mb[vt->nmb++] = s[p]; break; - } - - if (testmbchar(vt) <= MB_LEN_MAX) - writecharatcurs(vt, getmbchar(vt)); - } - } - - notify(vt, vt->dirty, memcmp(&oc, &vt->curs, sizeof(oc)) != 0); -} - -const TMTSCREEN * -tmt_screen(const TMT *vt) -{ - return &vt->screen; -} - -const TMTPOINT * -tmt_cursor(const TMT *vt) -{ - return &vt->curs; -} - -void -tmt_clean(TMT *vt) -{ - for (size_t i = 0; i < vt->screen.nline; i++) - vt->dirty = vt->screen.lines[i]->dirty = false; -} - -void -tmt_reset(TMT *vt) -{ - vt->curs.r = vt->curs.c = vt->oldcurs.r = vt->oldcurs.c = vt->acs = (bool)0; - resetparser(vt); - vt->attrs = vt->oldattrs = defattrs; - memset(&vt->ms, 0, sizeof(vt->ms)); - clearlines(vt, 0, vt->screen.nline); - CB(vt, TMT_MSG_CURSOR, "t"); - notify(vt, true, true); -} diff --git a/share/hackvr/examples/hackvr_term/libtmt/tmt.h b/share/hackvr/examples/hackvr_term/libtmt/tmt.h deleted file mode 100644 index ae0ddbb..0000000 --- a/share/hackvr/examples/hackvr_term/libtmt/tmt.h +++ /dev/null @@ -1,140 +0,0 @@ -/* Copyright (c) 2017 Rob King - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the copyright holder nor the - * names of contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, - * COPYRIGHT HOLDERS, OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef TMT_H -#define TMT_H - -#include -#include -#include - -/**** INVALID WIDE CHARACTER */ -#ifndef TMT_INVALID_CHAR -#define TMT_INVALID_CHAR ((wchar_t)0xfffd) -#endif - -/**** INPUT SEQUENCES */ -#define TMT_KEY_UP "\033[A" -#define TMT_KEY_DOWN "\033[B" -#define TMT_KEY_RIGHT "\033[C" -#define TMT_KEY_LEFT "\033[D" -#define TMT_KEY_HOME "\033[H" -#define TMT_KEY_END "\033[Y" -#define TMT_KEY_INSERT "\033[L" -#define TMT_KEY_BACKSPACE "\x08" -#define TMT_KEY_ESCAPE "\x1b" -#define TMT_KEY_BACK_TAB "\033[Z" -#define TMT_KEY_PAGE_UP "\033[V" -#define TMT_KEY_PAGE_DOWN "\033[U" -#define TMT_KEY_F1 "\033OP" -#define TMT_KEY_F2 "\033OQ" -#define TMT_KEY_F3 "\033OR" -#define TMT_KEY_F4 "\033OS" -#define TMT_KEY_F5 "\033OT" -#define TMT_KEY_F6 "\033OU" -#define TMT_KEY_F7 "\033OV" -#define TMT_KEY_F8 "\033OW" -#define TMT_KEY_F9 "\033OX" -#define TMT_KEY_F10 "\033OY" - -/**** BASIC DATA STRUCTURES */ -typedef struct TMT TMT; - -typedef enum{ - TMT_COLOR_DEFAULT = -1, - TMT_COLOR_BLACK = 1, - TMT_COLOR_RED, - TMT_COLOR_GREEN, - TMT_COLOR_YELLOW, - TMT_COLOR_BLUE, - TMT_COLOR_MAGENTA, - TMT_COLOR_CYAN, - TMT_COLOR_WHITE, - TMT_COLOR_MAX -} tmt_color_t; - -typedef struct TMTATTRS TMTATTRS; -struct TMTATTRS{ - bool bold; - bool dim; - bool underline; - bool blink; - bool reverse; - bool invisible; - tmt_color_t fg; - tmt_color_t bg; -}; - -typedef struct TMTCHAR TMTCHAR; -struct TMTCHAR{ - wchar_t c; - TMTATTRS a; -}; - -typedef struct TMTPOINT TMTPOINT; -struct TMTPOINT{ - size_t r; - size_t c; -}; - -typedef struct TMTLINE TMTLINE; -struct TMTLINE{ - bool dirty; - TMTCHAR chars[]; -}; - -typedef struct TMTSCREEN TMTSCREEN; -struct TMTSCREEN{ - size_t nline; - size_t ncol; - - TMTLINE **lines; -}; - -/**** CALLBACK SUPPORT */ -typedef enum{ - TMT_MSG_MOVED, - TMT_MSG_UPDATE, - TMT_MSG_ANSWER, - TMT_MSG_BELL, - TMT_MSG_CURSOR -} tmt_msg_t; - -typedef void (*TMTCALLBACK)(tmt_msg_t m, struct TMT *v, const void *r, void *p); - -/**** PUBLIC FUNCTIONS */ -TMT *tmt_open(size_t nline, size_t ncol, TMTCALLBACK cb, void *p, - const wchar_t *acs); -void tmt_close(TMT *vt); -bool tmt_resize(TMT *vt, size_t nline, size_t ncol); -void tmt_write(TMT *vt, const char *s, size_t n); -const TMTSCREEN *tmt_screen(const TMT *vt); -const TMTPOINT *tmt_cursor(const TMT *vt); -void tmt_clean(TMT *vt); -void tmt_reset(TMT *vt); - -#endif diff --git a/share/hackvr/examples/hackvr_term/pty b/share/hackvr/examples/hackvr_term/pty deleted file mode 100755 index a1900b1..0000000 Binary files a/share/hackvr/examples/hackvr_term/pty and /dev/null differ diff --git a/share/hackvr/examples/hackvr_term/pty.c b/share/hackvr/examples/hackvr_term/pty.c deleted file mode 100644 index 6903bc3..0000000 --- a/share/hackvr/examples/hackvr_term/pty.c +++ /dev/null @@ -1,70 +0,0 @@ -#define _XOPEN_SOURCE 500 //ptsname -#define _XOPEN_SOURCE_EXTENDED -#include -#include -#include -#include -#include -#include - -int main(int argc,char *argv[]) { - char *pts; - char in;//I dunno. - int r; - int pid; - int eof1,eof2; - int master,slave; - master=open("/dev/ptmx",O_RDWR); - if(master == -1) return 1; - pts=ptsname(master); -// printf("%s\n",pts); -// system("ls -l /dev/pts/*"); - grantpt(master); - unlockpt(master); -// system("ls -l /dev/pts/*"); - if(pts == NULL) return 2; - slave=open(pts,O_RDWR); - if(slave == -1) { - perror("open"); - return 3; - } - argv++; - fcntl(master,F_SETFL,O_NONBLOCK); -// fcntl(slave,F_SETFL,O_NONBLOCK); - fcntl(0,F_SETFL,O_NONBLOCK); - fcntl(1,F_SETFL,O_NONBLOCK); - fcntl(2,F_SETFL,O_NONBLOCK); - switch(pid=fork()) { - case -1: - return 4;//fork failed - case 0://child - setsid(); - close(master); - dup2(slave,0); - dup2(slave,1); - dup2(slave,2); - execv(argv[0],argv);//execute arguments. - return 5;//exec failed - default: - break; - } - eof1=0; - eof2=0; - for(;!(eof1 || eof2);) { - if(waitpid(-1,0,WNOHANG) > 0) { - return 0;//fuck if I know. - //we got a dead child. let's bail. - } - switch(r=read(0,&in,1)) { - case 0: eof1=1;;//EOF - case -1: if(errno != EAGAIN) eof1=1; break;//EAGAIN probably. - default: write(master,&in,r); - } - switch(r=read(master,&in,1)) { - case 0: eof2=1;;//EOF - case -1: if(errno != EAGAIN) eof2=1; break;//EAGAIN probably - default: write(1,&in,r); - } - usleep(100);//kek - } -} diff --git a/share/hackvr/examples/hackvr_term/read_line.sh b/share/hackvr/examples/hackvr_term/read_line.sh deleted file mode 100755 index c26ebf3..0000000 --- a/share/hackvr/examples/hackvr_term/read_line.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -./hackvr_data_decode.sh \ - | ./pty `which bash` "-c" 'read -p "type> " line;xmessage $line' \ - | ./hackvr_term 60 2 \ - | sed -u 's/addshape 15 4/addshape 12 4/g' diff --git a/share/hackvr/examples/hackvr_term/run b/share/hackvr/examples/hackvr_term/run deleted file mode 100755 index 9fcc247..0000000 --- a/share/hackvr/examples/hackvr_term/run +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -mknod p p -cat <(cat camera.pos | sed 's/USER/'"$USER"'/g') \ - <(./hackvr_data_decode.sh

p -rm p diff --git a/share/hackvr/examples/hackvr_term/run.pty b/share/hackvr/examples/hackvr_term/run.pty deleted file mode 100755 index 1cfcf96..0000000 --- a/share/hackvr/examples/hackvr_term/run.pty +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -mknod p p -cat <(cat camera.pos | sed 's/USER/'"$USER"'/g') \ - <(./hackvr_data_decode.sh

p -rm p diff --git a/share/hackvr/examples/hackvrd/hackvr-subsystem b/share/hackvr/examples/hackvrd/hackvr-subsystem deleted file mode 100755 index 024a896..0000000 --- a/share/hackvr/examples/hackvrd/hackvr-subsystem +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -o pipefail - -if [ "$1" ];then - derp="$USER action $1" -fi -cat <(echo $derp) /dev/stdin | socat tcp-connect:127.0.0.1:1337,null-eof stdio diff --git a/share/hackvr/examples/hackvrd/hackvrd.sh b/share/hackvr/examples/hackvrd/hackvrd.sh deleted file mode 100755 index 0b16543..0000000 --- a/share/hackvr/examples/hackvrd/hackvrd.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash - -set -o pipefail - -OUR_HOST=$(/usr/local/libexec/sockip | head -n1) -THEIR_HOST=$(/usr/local/libexec/peerip | head -n1) -OUR_PORT=$(/usr/local/libexec/sockip | tail -n1) -THEIR_PORT=$(/usr/local/libexec/peerip | tail -n1) - -log=/var/log/log.hackvr - -# some hackvr scripts use USER for commanding the player -if USER=$(ident $OUR_HOST $THEIR_HOST 113 $THEIR_PORT $OUR_PORT);then - export USER -else - printf "%s does not have an ident daemon running.\n" "$THEIR_HOST" >> $log - exit 1 -fi - -if [ ! "$USER" ];then - exit 1 -fi -printf "%s@%s connected to hackvr\n" "$USER" "$THEIR_HOST" >> $log - -last_pong=$(date +%s) -wat=true - -while true;do - while read -t 10 group action target args;do - printf "hackvr line: %s\n" "$group $action $target $args" >> $log - if [ "$group" = "$USER" -a "$action" = "pong" ];then - printf '%s@%s ponged on hackvr\n' $USER $THEIR_HOST >> $log - last_pong="$(date +%s)" - fi - if [ "$group" = "$USER" -a "$action" = "quit" ];then - break - fi - if [ "$action" = "action" ];then - if [ "$target" = "/links" ];then - printf "%s deleteallexcept %s\n" "$USER" "$USER" - off=-10 - for link in gopher://thebackupbox.net/;do - off=$[$off + 10] - printf '<%s> addshape 4 3 0 0 0 0 8 0 8 0 0\n' "$link" - printf '%s' "$link" | makelabel.sh "<$link>" 8 0 0 - printf '<%s> move 0 %d 0\n' "$link" "$off" - done - target=/ - fi - if [ $target = "/radio" ];then - printf "$USER deleteallexcept $USER\n" - cd /var/hackvr/ - ./radio.sh - target=/ - fi - if [ $target = "/ttt" ];then - printf "$USER deleteallexcept $USER\n" - cd /usr/local/src/hackvr/share/hackvr/examples/tictactoe - ./game.sh 2>/dev/null - target=/ - fi - if grep "^/dun" <<< "$target" 2>&1 >/dev/null;then - printf "$USER deleteallexcept $USER\n" - export seed="$(printf "%s\n" "$target" | cut -d/ -f3)" - cd /usr/local/src/hackvr/share/hackvr/examples/dungen - ./dunexplore.sh 2>/dev/null - target=/ - fi - if [ $target = "/multi" ];then - /var/hackvr/multi.sh - target=/ - fi - if [ $target = "/map" ];then - printf "$USER deleteallexcept $USER\n" - cd /usr/local/src/hackvr/share/hackvr/examples/anonet_map - ./map 2>/dev/null - printf '/ addshape 4 3 0 0 0 0 8 0 8 0 0\n' - while read group action target args;do - if [ "$action" = "action" ];then - if [ "$target" = "/" ];then - break - fi - fi - done - target=/ - fi - if [ $target = "/" ];then - printf "%s deleteallexcept %s\n" "$USER" "$USER" - cd /usr/local/src/hackvr/share/hackvr/examples/hackvrd - off=-10 - for name in ttt dun map multi links radio;do - off=$[$off + 10] - printf '/%s addshape 4 3 0 0 0 0 8 0 8 0 0\n' "$name" - printf '/%s' "$name" | makelabel.sh "/$name" 8 0 0 - printf '/%s move 0 %d 0\n' $name $off - done - fi - else - if $wat;then - wat=false - printf '/ addshape 4 3 0 0 0 0 8 0 8 0 0\n' - printf 'welcome' | makelabel.sh / 8 0 0 - fi - fi - done - #printf "pinging... %s@%s\n" "$USER" "$THEIR_HOST" >> /var/log/hackvr.all - #printf "%s ping %s\n" "$USER" "thebackupbox.net" - #if [ $[$(date +%s) - $last_pong] -gt 30 ];then #they probably pinged out. - # printf '# you pinged out. gotta respond to those, dude.\n' - # printf "%s@%s pinged out from hackvr\n" "$USER" "$THEIR_HOST" >> /var/log/hackvr.all - # exit 1 - #fi -done - -printf "%s@%s disconnected from hackvr\n" "$USER" "$THEIR_HOST" >> $log diff --git a/share/hackvr/examples/hackvrd/ident b/share/hackvr/examples/hackvrd/ident deleted file mode 100755 index f4e7599..0000000 --- a/share/hackvr/examples/hackvrd/ident +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -if [ $# -lt 4 ];then - echo usage: ident.sh our-host their-host 113 their-port our-port - exit 1 -fi -REMOTE_PORT="$4" -SERVER_PORT="$5" -IDENT_PORT="$3" -REMOTE_ADDR="$2" -SERVER_ADDR="$1" -username="$(printf "%s, %s\r\n" "$REMOTE_PORT" "$SERVER_PORT" | (ncat -s "$SERVER_ADDR" "$REMOTE_ADDR" "$IDENT_PORT" 2>/dev/null || echo 'ERROR:ERROR:ERROR:ERROR') | tr -d '\r' | cut -d: -f4)" -if [ "$username" ];then - printf "%s\n" "$username" -else - exit 1 -fi diff --git a/share/hackvr/examples/hackvrd/list_to_cubes.sh b/share/hackvr/examples/hackvrd/list_to_cubes.sh deleted file mode 100755 index 0dfca06..0000000 --- a/share/hackvr/examples/hackvrd/list_to_cubes.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -# blank lines deleteallexcept epoch -# expected input format: -# -# line1 -# line2 -# line3 -# -# line1 -# line2 -j=1 -r=200 -while read -r line;do - if [ "_$line" != '_' ];then -# ../tools/obj2hackvr.pl "$line" ../meshes/cube.obj - #turn line into hex to prevent stupid shit - hexline="$(printf "%s" "$line" | xxd -p | tr -d '\n')" - printf "%s addshape 18 3 8 %d %d 0 %d %d 0 %d %d\n" "$hexline" "$j" "$r" "$[$j+8]" "$r" "$j" "$r" - cd .. - printf "%s\n" "$line" | tee /dev/stderr | makelabel.sh "$hexline" 15 $j $r - cd filebrowser - #printf "%s move 0 %d %d 0 0 0 0 0 0\n" "$hexline" "$i" "$r" - printf "%s rotate 0 %d 0\n" "$hexline" "$[i * 3]" - #somehow printf '%s\n' "$line" | ./testfont.sh and make its output belong to same group as $line.. sed? - i=$[i+10] - j=$[j+4] - else - cat camera.pos - printf "USER deleteallexcept USER\n" #deleteallexcept doesn't have gr deletions yet I think. - j=0 - i=0 - fi -done diff --git a/share/hackvr/examples/hackvrd/multi.sh b/share/hackvr/examples/hackvrd/multi.sh deleted file mode 100755 index 525f981..0000000 --- a/share/hackvr/examples/hackvrd/multi.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -printf 'user: %s joined multi\n' "$USER" >> /var/log/hackvr.all -cat /var/cache/hackvr/world_history <(echo 'root export *') \ - | egrep -v '^#|^[^ ][^ ]* *quit' \ - | grep -v 'move [a-z]' \ - | /usr/local/bin/hackvr_headless 2>/dev/null \ - | sed 's/^root_//g' -tail -f -n0 /var/cache/hackvr/world_history \ - | grep --line-buffered -v '^'"$USER"' ' & -tee -a /var/cache/hackvr/world_history >/dev/null diff --git a/share/hackvr/examples/hackvrd/radio.sh b/share/hackvr/examples/hackvrd/radio.sh deleted file mode 100755 index 7b290e9..0000000 --- a/share/hackvr/examples/hackvrd/radio.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env bash -log=/var/log/log.hackvr - -button="-2 2 1 2 2 1 2 -2 1 -2 -2 1" -bc=2 -printf " addshape 6 4 %s\n" "$button" -printf " move -5 5 0\n" -# |> -name=play -printf "%s addshape %s 4 %s\n" "$name" "$bc" "$button" -printf "play addshape 4 3 -1 1 0 1 0 0 -1 -1 0\n" -printf "play move 0 0 0\n" -# || -name=pause -printf "%s addshape %s 4 %s\n" "$name" "$bc" "$button" -printf "pause addshape 4 4 -1 1 0 -.5 1 0 -.5 -1 0 -1 -1 0\n" -printf "pause addshape 4 4 .5 1 0 1 1 0 1 -1 0 .5 -1 0\n" -printf "pause move 0 4 0\n" - -# [] -name=stop -printf "%s addshape %s 4 %s\n" "$name" "$bc" "$button" -printf "stop addshape 4 4 -1 1 0 1 1 0 1 -1 0 -1 -1 0\n" -printf "stop move 0 -4 0\n" - -# |>| -name=next -printf "%s addshape %s 4 %s\n" "$name" "$bc" "$button" -printf "next addshape 4 3 -1 1 0 .75 0 0 -1 -1 0\n" -printf "next addshape 4 4 .75 1 0 1 1 0 1 -1 0 .75 -1 0\n" -printf "next move 4 0 0\n" - -# |<| -name=prev -printf "%s addshape %s 4 %s\n" "$name" "$bc" "$button" -printf "prev addshape 4 3 -.75 0 0 1 1 0 1 -1 0\n" -printf "prev addshape 4 4 -1 1 0 -.75 1 0 -.75 -1 0 -1 -1 0\n" -printf "prev move -4 0 0\n" - -printf "exit addshape 4 4 %s\n" "$button" -printf "exit move 5 5 0\n" - -spin() { - for r in $(seq 15 15 360);do - printf "%s rotate 0 0 %s\n" "$1" "$r" - sleep .1 - done -} - -# a "listen" link to the http stream -# so anyone using hackvr_uri can open it from inside hackvr. :) - - while read group action target args;do - printf "hackvr line: %s\n" "$group $action $target" >> $log - if [ "$group" = "$USER" -a "$action" = "quit" ];then - break - fi - if [ "$action" = "action" ];then - if [ $target = "pause" ];then - spin $target & - mpc --host=21.41.41.4 --port=61666 pause 2>&1 >/dev/null 2>&1 - fi - if [ $target = "play" ];then - spin $target & - mpc --host=21.41.41.4 --port=61666 play 2>&1 >/dev/null 2>&1 - fi - if [ $target = "prev" ];then - spin $target & - mpc --host=21.41.41.4 --port=61666 prev 2>&1 >/dev/null 2>&1 - fi - if [ $target = "next" ];then - spin $target & - mpc --host=21.41.41.4 --port=61666 next 2>&1 >/dev/null 2>&1 - fi - if [ $target = "stop" ];then - spin $target & - mpc --host=21.41.41.4 --port=61666 stop 2>&1 >/dev/null 2>&1 - fi - if [ $target = "exit" ];then - spin $target - break; - fi - fi - done diff --git a/share/hackvr/examples/hackvrnet/connect.sh b/share/hackvr/examples/hackvrnet/connect.sh deleted file mode 100755 index 5f7b660..0000000 --- a/share/hackvr/examples/hackvrnet/connect.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -password=hackvr -ncat 21.41.41.1 31337 -c 'hackvr "$USER"' diff --git a/share/hackvr/examples/marquee/marquee.sh b/share/hackvr/examples/marquee/marquee.sh deleted file mode 100755 index 4ea6c61..0000000 --- a/share/hackvr/examples/marquee/marquee.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -set -o pipefail - -pi=3 #lol - -from_cam=150 - -elevation=10 -while printf "marquee rotate 0 +-2 0\n";do - sleep .1 -done & - -tail -F ~/.local/var/cache/music/nowplaying.txt 2>/dev/null | while read -r line;do - printf "%s deleteallexcept %s\n" "$USER" "$USER" - printf "nowplaying flatten\n" - printf "%s\n" "$line" >&2 - chars="$(printf "%s" "$line" | wc -c | tr -cd '[0-9]')" - char_width=5 #I think.. - rot=$[ 360 / $chars ] - diameter=$[ $chars * $char_width / $pi ] - printf "%s\n" "$line" | fold -w1 | while read -r char;do - printf "%s\n" "$char" | makelabel.sh nowplaying 0 0 0 | offsetshape.sh 0 0 "-${diameter}" - printf "nowplaying rotate 0 %d 0\n" "-$rot" - printf "nowplaying flatten\n" - done - printf "marquee assimilate nowplaying\n" - printf "marquee move 0 %s %s\n" "$elevation" "$[$diameter + $from_cam]" #this won't work before the generation loop unless I can flatten on certain parts. -done diff --git a/share/hackvr/examples/spinners/square.sh b/share/hackvr/examples/spinners/square.sh deleted file mode 100755 index 3b733c7..0000000 --- a/share/hackvr/examples/spinners/square.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -printf "%s move 0 0 -10\n" "$USER" -printf "square addshape 2 4 1 1 0 -1 1 0 -1 -1 0 1 -1 0\n" -inc=5 -end=180 -while true;do - for i in $(seq 1 $inc $end);do - printf "square rotate +%d +0 +0\n" "$inc" - sleep .01 - done - for i in $(seq 1 $inc $end);do - printf "square rotate +0 +%d +0\n" "$inc" - sleep .01 - done - for i in $(seq 1 $inc $end);do - printf "square rotate +0 +0 +%d\n" "$inc" - sleep .01 - done -done diff --git a/share/hackvr/examples/starfield b/share/hackvr/examples/starfield deleted file mode 100755 index b3b4778..0000000 Binary files a/share/hackvr/examples/starfield and /dev/null differ diff --git a/share/hackvr/examples/starfield.c b/share/hackvr/examples/starfield.c deleted file mode 100644 index d367bb3..0000000 --- a/share/hackvr/examples/starfield.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -int main(int argc,char *argv[]) { - - int i,x,y,z; - for(i=0;i<100;i++) { - x=(rand()%1000)-500; - y=(rand()%1000)-500; - z=(rand()%1000)-500; - printf("star%d addshape %d 1 %d %d %d %d %d %d\n",i,(rand()%7)+17,x,y,z,x+rand()%10,y,z); - } -} diff --git a/share/hackvr/examples/subsume/arms.hackvr b/share/hackvr/examples/subsume/arms.hackvr deleted file mode 100644 index de31aba..0000000 --- a/share/hackvr/examples/subsume/arms.hackvr +++ /dev/null @@ -1,7 +0,0 @@ -base addshape 1 2 0 0 0 0 8 0 -mid addshape 2 2 0 0 0 0 4 0 -mid move 0 8 0 -base subsume mid -end addshape 4 2 0 0 0 0 2 0 -end move 0 4 0 -mid subsume end diff --git a/share/hackvr/examples/subsume/test.sh b/share/hackvr/examples/subsume/test.sh deleted file mode 100755 index 67139ac..0000000 --- a/share/hackvr/examples/subsume/test.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cat arms.hackvr - -# these start all straight-up, rotate counter clockwise as rotation increases, and -# at these rates of rotation they should all be curled in on themselves at the bottom. -while true;do - printf "base rotate 0 0 +1\n" - printf "mid rotate 0 0 +2\n" - printf "end rotate 0 0 +3\n" - sleep .1 -done diff --git a/share/hackvr/examples/tictactoe/board b/share/hackvr/examples/tictactoe/board deleted file mode 100644 index e7494fd..0000000 --- a/share/hackvr/examples/tictactoe/board +++ /dev/null @@ -1,13 +0,0 @@ -_reset addshape 2 3 -4 6 4 -5 6 4 -4 5 4 - -boardtopleft addshape 2 4 -3 13 4 -1 13 4 -1 11 4 -3 11 4 -boardtopcenter addshape 2 4 -1 13 4 1 13 4 1 11 4 -1 11 4 -boardtopright addshape 2 4 1 13 4 3 13 4 3 11 4 1 11 4 - -boardmiddleleft addshape 2 4 -3 11 4 -1 11 4 -1 9 4 -3 9 4 -boardmiddlecenter addshape 2 4 -1 11 4 1 11 4 1 9 4 -1 9 4 -boardmiddleright addshape 2 4 1 11 4 3 11 4 3 9 4 1 9 4 - -boardbottomleft addshape 2 4 -3 9 4 -1 9 4 -1 7 4 -3 7 4 -boardbottomcenter addshape 2 4 -1 9 4 1 9 4 1 7 4 -1 7 4 -boardbottomright addshape 2 4 1 9 4 3 9 4 3 7 4 1 7 4 diff --git a/share/hackvr/examples/tictactoe/board_orig b/share/hackvr/examples/tictactoe/board_orig deleted file mode 100644 index 2fff3ba..0000000 --- a/share/hackvr/examples/tictactoe/board_orig +++ /dev/null @@ -1,14 +0,0 @@ -_reset addshape 2 3 -4 -4 4 -5 -4 4 -4 -5 4 -_exit addshape 2 3 4 -4 4 5 -4 4 4 -5 4 - -boardtopleft addshape 2 4 -3 3 4 -1 3 4 -1 1 4 -3 1 4 -boardtopcenter addshape 2 4 -1 3 4 1 3 4 1 1 4 -1 1 4 -boardtopright addshape 2 4 1 3 4 3 3 4 3 1 4 1 1 4 - -boardmiddleleft addshape 2 4 -3 1 4 -1 1 4 -1 -1 4 -3 -1 4 -boardmiddlecenter addshape 2 4 -1 1 4 1 1 4 1 -1 4 -1 -1 4 -boardmiddleright addshape 2 4 1 1 4 3 1 4 3 -1 4 1 -1 4 - -boardbottomleft addshape 2 4 -3 -1 4 -1 -1 4 -1 -3 4 -3 -3 4 -boardbottomcenter addshape 2 4 -1 -1 4 1 -1 4 1 -3 4 -1 -3 4 -boardbottomright addshape 2 4 1 -1 4 3 -1 4 3 -3 4 1 -3 4 diff --git a/share/hackvr/examples/tictactoe/camera.pos b/share/hackvr/examples/tictactoe/camera.pos deleted file mode 100644 index ef8e9da..0000000 --- a/share/hackvr/examples/tictactoe/camera.pos +++ /dev/null @@ -1,5 +0,0 @@ -junk set global.zoom 45 -junk set camera.p.z -6 -junk set camera.p.y -1 -junk set camera.p.x 0 - diff --git a/share/hackvr/examples/tictactoe/game.sh b/share/hackvr/examples/tictactoe/game.sh deleted file mode 100755 index a2adeb1..0000000 --- a/share/hackvr/examples/tictactoe/game.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash -turn=$( expr $RANDOM % 2) -BOARDFILE=board_orig -cat camera.pos $BOARDFILE -echo "go. player: $turn" >&2 -grep --line-buffered action \ - | while read user action group;do - if [ $action = "action" ];then - if grep "_reset" <<<$group >/dev/null;then - printf "%s deleteallexcept %s\n" "$user" "$user" - cat $BOARDFILE - continue - elif grep "_exit" <<<$group >/dev/null;then - #if a program wants to exit, it should just exit. - #the program may have been ran by some other program. - #maybe just filter out server-side quit messages for your own username? - #any user quit will cause any hackvr to quit? - #printf "%s quit\n" "$user" - exit 0 - elif grep "_" <<<$group >/dev/null;then - echo CUT IT OUT > /dev/stderr - continue - elif grep "^board" <<<$group >/dev/null;then - turn=$(expr \( $turn + 1 \) % 2) - #printf "# turn: %d\n" "$turn" > /dev/stderr - printf "%s deletegroup %s\n" "$user" "$group" - #printf "$user deletegroup %s\n" "$group" > /dev/stderr -#need to get the first point of the group clicked and translate the new shape by that much - translatex="$(grep "$group" $BOARDFILE | grep -v '^#' | tr -s ' ' | cut '-d ' -f5)" - translatey="$(grep "$group" $BOARDFILE | grep -v '^#' | tr -s ' ' | cut '-d ' -f6)" - cat "marker$turn" | offsetshape.sh $translatex "$(expr "$translatey" - 2 )" 0 - grep "$group" $BOARDFILE | sed "s/$group/_marked/g" - else - printf "# clicked outside of the game board.\n" >&2 - fi - fi - done diff --git a/share/hackvr/examples/tictactoe/listen.sh b/share/hackvr/examples/tictactoe/listen.sh deleted file mode 100755 index deac685..0000000 --- a/share/hackvr/examples/tictactoe/listen.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -#to finish out any that might still be listening -nc -z 127.0.0.1 1050 -nc -z 127.0.0.1 1051 - -echo hackvr://$(hostname).$(domainname):1050/ player 1 -echo hackvr://$(hostname).$(domainname):1051/ player 2 - -coproc ./game.sh -tee >(ncat -lp 1050 >&"${COPROC[1]}") >(ncat -lp 1051 >&"${COPROC[1]}") >/dev/null <&"${COPROC[0]}" diff --git a/share/hackvr/examples/tictactoe/marker0 b/share/hackvr/examples/tictactoe/marker0 deleted file mode 100644 index 5bc0c5c..0000000 --- a/share/hackvr/examples/tictactoe/marker0 +++ /dev/null @@ -1,2 +0,0 @@ -_marker addshape 1 2 .5 .5 2 1.5 1.5 2 -_marker addshape 1 2 1.5 .5 2 .5 1.5 2 diff --git a/share/hackvr/examples/tictactoe/marker1 b/share/hackvr/examples/tictactoe/marker1 deleted file mode 100644 index e7aa5a7..0000000 --- a/share/hackvr/examples/tictactoe/marker1 +++ /dev/null @@ -1 +0,0 @@ -_marker addshape 3 4 1.5 1.5 2 .5 1.5 2 .5 .5 2 1.5 .5 2 diff --git a/share/hackvr/examples/tictactoe/run b/share/hackvr/examples/tictactoe/run deleted file mode 100755 index 54d712a..0000000 --- a/share/hackvr/examples/tictactoe/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -turn=$( expr $RANDOM % 2) -echo "# go. player: $turn" >&2 -hackvr_coproc ./game.sh diff --git a/share/hackvr/examples/uristart.conf b/share/hackvr/examples/uristart.conf deleted file mode 100644 index d48e8d1..0000000 --- a/share/hackvr/examples/uristart.conf +++ /dev/null @@ -1,2 +0,0 @@ -hackvr: if [ "%u" ];then USER="%u";fi;ncat '%d' '%P' -c "echo $USER action %p;hackvr_uri" -hackvr+ssh: if [ '%u' ];then u='%u@';fi ; if [ "%P" ];then P='-p %P';fi; hackvr_coproc ssh "$u"'%d' $P "/var/hackvr/hackvr-subsystem" '%p' diff --git a/share/hackvr/examples/wget-log b/share/hackvr/examples/wget-log deleted file mode 100644 index e69de29..0000000 diff --git a/share/hackvr/examples/wget-log.1 b/share/hackvr/examples/wget-log.1 deleted file mode 100644 index e69de29..0000000 diff --git a/share/hackvr/examples/wget-log.2 b/share/hackvr/examples/wget-log.2 deleted file mode 100644 index e69de29..0000000 diff --git a/share/hackvr/examples/wordsearch/game.sh b/share/hackvr/examples/wordsearch/game.sh deleted file mode 100755 index 3c30be1..0000000 --- a/share/hackvr/examples/wordsearch/game.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash -## you might want to edit these to suit your tastes. -width=10 -height=$width -words_per_puzzle=$[width] -x=$[-10 * $width / 2] -y=$[10 * $width / 2] -z=0 -clicked="" -wordlist=/usr/share/dict/words -echo derp -wordsearch -w <(shuf $wordlist 2>/dev/null | grep '^.\{1,'"$width"'\}$' 2>/dev/null | head -n $words_per_puzzle | tee /dev/stderr) --columns $width --rows $height --text | tail -n+4 | head -n $height | while read -r line;do - echo "$line" | tr -d ' ' | fold -w 1 | while read letter;do - name="_${x}_${y}" - printf "%s addshape 2 4 %s %s %s %s %s %s %s %s %s %s %s %s\n" \ - "$name" \ - $[$x-2] $[$y-3] $z \ - $[$x+8] $[$y-3] $z \ - $[$x+8] $[$y+7] $z \ - $[$x-2] $[$y+7] $z - echo $letter | makelabel.sh "$name" $x $y $z - x=$[$x+10] - done - y=$[$y-10] -done -while read group action args;do - if [ $action = action ];then - if grep "$args" <<< "$clicked" 2>&1 >/dev/null;then - clicked=$(grep -v '^'"$args"'$' <<< "$clicked") - printf "%s move 0 0 0\n" "$args" - else - clicked="$clicked"$'\n'"$args" - printf "%s move 0 0 -5\n" "$args" - fi -# xmessage -nearmouse "$args" - fi -done diff --git a/share/hackvr/examples/wordsearch/run b/share/hackvr/examples/wordsearch/run deleted file mode 100755 index 48d107c..0000000 --- a/share/hackvr/examples/wordsearch/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# just need to get some way for these to coproc -if ! which wordsearch >/dev/null;then - echo "we need wordsearch installed to generate the puzzle" - echo "please read: https://github.com/jamis/wordsearch" - exit 1 -fi -socat exec:hackvr exec:./game.sh diff --git a/share/hackvr/examples/xcmd.sh b/share/hackvr/examples/xcmd.sh deleted file mode 100755 index df6279a..0000000 --- a/share/hackvr/examples/xcmd.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec $* | xclip -i | xclip -o | xmessage -buttons ok:0,pipe:1 -file - || exit 0 -#ask for command -xclip -o | eval $(zenity --entry) -- cgit v1.2.3