From 63e848a93f69e2028532cf89aa44eded21737cd5 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 3 Jul 2012 09:57:53 +0200 Subject: Ponies are truncated on height under TTY, leaving 2 lines for shell interaction. export PONYSAY_BOTTOM=1 to show bottom instread of top. --- ponysay | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/ponysay b/ponysay index 6f1cf4e..a04d8d7 100755 --- a/ponysay +++ b/ponysay @@ -59,10 +59,28 @@ say() { echo -ne '\ec' fi - exec "$cmd" -f "$pony" "${wrap:+-W$wrap}" | (ponysaytruncater `tput cols || echo 0` 2>/dev/null || - ${HOME}/.local/bin/ponysaytruncater `tput cols || echo 0` 2>/dev/null || - ./ponysaytruncater `tput cols || echo 0` 2>/dev/null || - cat) + function wtrunc + { + ponysaytruncater `tput cols || echo 0` 2>/dev/null || + ${HOME}/.local/bin/ponysaytruncater `tput cols || echo 0` 2>/dev/null || + ./ponysaytruncater `tput cols || echo 0` 2>/dev/null || + cat + } + + function htrunc + { + head --lines=$(( $(stty size <&2 | cut -d ' ' -f 1) - 2 )) + } + + if [ "$TERM" = "linux" ]; then + if [ "$PONYSAY_BOTTOM" = 'yes' ] || [ "$PONYSAY_BOTTOM" = 'y' ] || [ "$PONYSAY_BOTTOM" = '1' ]; then + exec "$cmd" -f "$pony" "${wrap:+-W$wrap}" | wtrunc | tac | htrunc | tac + else + exec "$cmd" -f "$pony" "${wrap:+-W$wrap}" | wtrunc | htrunc + fi + else + exec "$cmd" -f "$pony" "${wrap:+-W$wrap}" | wtrunc + fi } while getopts f:W:lhv OPT -- cgit