From 9b6d154afb2b32f81dae99cc45392b4cace2a29d Mon Sep 17 00:00:00 2001 From: NeodarZ Date: Sun, 18 Sep 2016 02:11:28 +0200 Subject: Add more conf --- .i3-blocks/blocks/scroll | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 .i3-blocks/blocks/scroll (limited to '.i3-blocks/blocks/scroll') diff --git a/.i3-blocks/blocks/scroll b/.i3-blocks/blocks/scroll new file mode 100755 index 0000000..677a7fc --- /dev/null +++ b/.i3-blocks/blocks/scroll @@ -0,0 +1,69 @@ +#!/bin/bash +# IMPORTANT: +# To make this block work, you have to edit your block-command. +# It should point to this file. For best performance, only use it on blocks +# which are wide and that you need to scroll. +# +# Example: +# command=~/.i3-blocks/blocks/scroll $BLOCK_NAME +# markup=pango +# interval=repeat + +PROG="${1}" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BLOCK_PATH="${SCRIPT_DIR}/${PROG}" + +INTERVAL=0.17 +MAX_LENGTH=25 +ADD_STR=" | " +ADD_LENGTH=${#ADD_STR} + +if [[ -f "${BLOCK_PATH}" ]]; then + BLOCK_OUT=$(bash "${BLOCK_PATH}") + OUT_TEXT=$(echo "${BLOCK_OUT}" | tail -n 1) +elif [[ "${PROG}" != "" ]]; then + OUT_TEXT=$(${PROG}) + if [[ $? -ne 0 ]]; then + sleep 1 + echo "${PROG}" + echo "${PROG}" + exit 33 + fi +fi + +if [[ "${OUT_TEXT}" ]]; then + CHECK_SUM=$(echo "${PROG}-${BLOCK_INSTANCE}" | md5sum | awk '{print $1}') + + TMP_FILE="/tmp/.scroll-${CHECK_SUM}" + + if [[ -f "${TMP_FILE}" ]]; then + SCROLL_POS=$(cat "${TMP_FILE}") + else + SCROLL_POS=0 + fi + + TEXT_LENGTH=${#OUT_TEXT} + MAX_OFFSET=$((TEXT_LENGTH +ADD_LENGTH -1)) + + if [[ "${TEXT_LENGTH}" -lt "${MAX_LENGTH}" ]]; then + MAX_LENGTH="${TEXT_LENGTH}" + fi + + if [[ "${SCROLL_POS}" -gt "${MAX_OFFSET}" ]]; then + SCROLL_POS=0 + fi + + TEXT_LINE="${OUT_TEXT}${ADD_STR}${OUT_TEXT}${ADD_STR}${OUT_TEXT}" + TEXT_LINE=${TEXT_LINE:$SCROLL_POS:$MAX_LENGTH} + + echo "${TEXT_LINE}" + echo "${TEXT_LINE}" + + SCROLL_POS=$((SCROLL_POS +1)) + + echo "${SCROLL_POS}" > "${TMP_FILE}" + sleep "${INTERVAL}" +else + sleep 1 +fi -- cgit v1.2.1