#!/bin/sh # DEBUG=1 test -n "$DEBUG" && set -x die() { tmux display-message "kweasy-pane error: $*" sleep 1 exit 2 } die-swap() { tmux swap-pane -t $PANE die "$@" } test -n "$TMUX_PANE" || exit 2 if test -n "$1"; then PANE="$1" else PANE=$(tmux list-panes -F '#{?pane_active,#D,}' | tr -d '\n\r ') fi test -n "$PANE" || die "Could not detect active pane" if test "$TMUX_PANE" = "$PANE"; then die "This command needs to run in background pane ${TMUX_PANE//%/%%} | ${PANE//%/%}" fi # tmux display-message "kweasy-pane running: source=$PANE display=$TMUX_PANE" if test -n "$FIND"; then tmux capturep -b kweasy -t "$PANE" \; \ swap-pane -t "$PANE" else tmux capturep -b kweasy -t "$PANE" \; \ showb -b kweasy \; \ swap-pane -t "$PANE" | \ awk 'NR>1{print line} {line=$0} END{printf "%s", line}' FIND=$(tty-readbyte) fi test -n "$DEBUG" && echo "Ready! »$FIND«" && read test -n "$FIND" || die-swap "nothing to match" # Workaround for byte/character counting mismatch: |tr "$uni" "$asc"| # uni='─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▐░▒▓▔▕▖▗▘▙▚▛▜▝▞▟' # asc='\-\-||\-\-||\-\-||++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\-\-||=|+++++++++++++++++++++++++++++++/\\X\-|\-|\-|\-|\-|\-|#____#######|||||###~###########' tmux saveb -b kweasy - | kweasy.awk FIND="$FIND" test -n "$DEBUG" && echo "Done! ($?)" && read tmux swap-pane -t $PANE