Commit ce9adec2f05abd682f7825e6d9fbb37667a273ad

Authored by Georg Hopp
0 parents

initial checkin

  1 +A collection of shell functions and tools I am using.
  1 +SSH_KEYGEN="/usr/bin/ssh-keygen"
  2 +SSH_ADD="/usr/bin/ssh-add"
  3 +
  4 +export SSH_KEYGEN SSH_ADD
  5 +
  6 +IDENTITY_FILE="/mnt/auth/ghopp/.ssh/ident"
  7 +SSH_AGENT_FILE="${HOME}/.ssh/agent.info"
  8 +
  9 +GPG_TTY=$(tty)
  10 +
  11 +export IDENTITY_FILE SSH_AGENT_FILE GPG_TTY
  12 +
  13 +alias ssh_init_github="ssh-add /mnt/auth/ghopp/.ssh/ident-github ~/.ssh/getcred_github.sh"
  14 +
  15 +function ssh-keygen() {
  16 + ident="${1:-${IDENTITY_FILE}}"
  17 + ${SSH_KEYGEN} -f "${ident}" "$@"
  18 +}
  19 +
  20 +function ssh-add() {
  21 + ident="${1:-${IDENTITY_FILE}}"
  22 + ask_pass="${2:-${HOME}/.ssh/getcred.sh}"
  23 +
  24 + if [ '-' != "${ident:0:1}" ]
  25 + then
  26 + DISPLAY=:0.0 SSH_ASKPASS="${ask_pass}" \
  27 + ${SSH_ADD} ${ident} 2>/dev/null </dev/null
  28 + else
  29 + ${SSH_ADD} "$@"
  30 + fi
  31 +}
  32 +
  33 +function ssh-init-agent() {
  34 + local CAT="/bin/cat"
  35 + local PS="/bin/ps"
  36 + local ECHO="/bin/echo"
  37 + local SSH_AGENT="/usr/bin/ssh-agent"
  38 +
  39 + test -e "${SSH_AGENT_FILE}" && eval `${CAT} "${SSH_AGENT_FILE}"` >/dev/null
  40 +
  41 + if [ "x" != x${SSH_AGENT_PID} ]
  42 + then
  43 + if [ "ssh-agent" = "`${PS} -p ${SSH_AGENT_PID} -o comm=`" ]
  44 + then
  45 + return
  46 + fi
  47 + fi
  48 +
  49 + ${ECHO} -n "start ssh-agent ... "
  50 + ${SSH_AGENT} >"${SSH_AGENT_FILE}"
  51 + if [ 0 -eq $? ]
  52 + then
  53 + eval `${CAT} "${SSH_AGENT_FILE}"` >/dev/null
  54 + ${ECHO} "OK"
  55 + ssh-add
  56 + else
  57 + ${ECHO} "FAILED"
  58 + fi
  59 +}
  60 +
  61 +function gpg-init-agent() {
  62 + local FUSER="/bin/fuser"
  63 + local CAT="/bin/cat"
  64 + local PS="/bin/ps"
  65 + local ECHO="/bin/echo"
  66 + local CUT="/usr/bin/cut"
  67 + local GPG_AGENT="/usr/bin/gpg-agent --daemon --allow-preset-passphrase"
  68 + local GPG_PRESET="/usr/libexec/gpg-preset-passphrase"
  69 + local CREDDIR="/mnt/auth/ghopp/gnupg/"
  70 + local KEYGRIP="D17D6099DA4F7CF580991F6525BAC9DB841C9B30"
  71 + local SUBKEYGRIP="BE4A9914142B488736792B9CBE01AE3A94D96E7A"
  72 +
  73 + if ${FUSER} ${HOME}/.gnupg/S.gpg-agent >/dev/null 2>&1
  74 + then
  75 + return
  76 + else
  77 + ${ECHO} -n "start gpg-agent ... "
  78 + ${GPG_AGENT}
  79 + if [ 0 -eq $? ]
  80 + then
  81 + ${ECHO} "OK"
  82 + ${CAT} "${CREDDIR}/gpg.pw" | ${GPG_PRESET} --preset ${KEYGRIP}
  83 + ${CAT} "${CREDDIR}/gpg.pw" | ${GPG_PRESET} --preset ${SUBKEYGRIP}
  84 + else
  85 + ${ECHO} "FAILED"
  86 + fi
  87 + fi
  88 +}
  89 +
  90 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/bash -x
  2 +
  3 +TMPDIR="/tmp/${USER}/"
  4 +
  5 +test -d ${TMPDIR} || mkdir ${TMPDIR}
  6 +for dir in \
  7 + ".cache" \
  8 + ".adobe" \
  9 + ".macromedia" \
  10 + ".mozilla/firefox" \
  11 + ".pentadactyl" \
  12 + ".scummvm/logs"
  13 +do
  14 + test -d "${TMPDIR}${dir}" || mkdir -p "${TMPDIR}${dir}"
  15 +done
  16 +
  17 +for file in \
  18 + ".dmenu_cache" \
  19 + ".scummvm/logs/scummvm.log"
  20 +do
  21 + test -f "${TMPDIR}${file}" || touch "${TMPDIR}${file}"
  22 +done
  23 +
  24 +FF_PROFILE='default'
  25 +FF_DIR="${HOME}/.mozilla/firefox/"
  26 +FF_PROFILE_DIR="${FF_DIR}${FF_PROFILE}/"
  27 +if [ ! -e "${FF_PROFILE_DIR}" ]
  28 +then
  29 + mkdir -p "${FF_PROFILE_DIR}"
  30 + cat >${FF_DIR}/profiles.ini <<-END
  31 + [General]
  32 + StartWithLastProfile=1
  33 +
  34 + [Profile0]
  35 + Name=default
  36 + IsRelative=1
  37 + Path=${FF_PROFILE}
  38 + END
  39 +
  40 + for element in ${HOME}/.mozilla/persistent/*
  41 + do
  42 + test "${element}" == "${HOME}/.mozilla/persistent/*" && break
  43 + ln -s "${element}" "${FF_PROFILE_DIR}${element##*/}"
  44 + done
  45 +fi
  46 +
  47 +source .functions
  48 +
  49 +# vim: set ts=4 sw=4:
  1 +source ${HOME}/scripts/init/tools/rand_printable
  2 +source ${HOME}/scripts/init/tools/diff_no_links
  3 +source ${HOME}/scripts/init/tools/tardiff
  4 +source ${HOME}/scripts/init/tools/background
  5 +source ${HOME}/scripts/init/tools/gcal
  6 +source ${HOME}/scripts/init/tools/coltest
  7 +source ${HOME}/scripts/init/tools/i3task
  8 +source ${HOME}/scripts/init/tools/lxc-start
  9 +source ${HOME}/scripts/init/tools/lxc-snapshot
  1 +#!/bin/bash
  2 +
  3 +##
  4 +# This one generates a background image for all active xrandr displays
  5 +# and sets it via ImageMagick display. The intermediate image will
  6 +# be removed as soon as the background ist set.
  7 +#
  8 +# Author: Georg Hopp <ghopp@bigpoint.net>
  9 +# Date: Tue Apr 17 17:19:56 CEST 2012
  10 +# Version: 1.0.0
  11 +#
  12 +
  13 +function rand() {
  14 + local DD="/bin/dd"
  15 + local OD="/usr/bin/od"
  16 + local SED="/bin/sed"
  17 +
  18 + ${DD} if=/dev/urandom bs=2 count=1 2>/dev/null | \
  19 + ${OD} -i | ${SED} '2d;s/^0\+ \+//'
  20 +}
  21 +
  22 +function background() {
  23 + local SED="/bin/sed"
  24 + local XRANDR="/usr/bin/xrandr"
  25 + local TEMPFILE="/bin/tempfile"
  26 + local IDENTIFY="/usr/bin/identify"
  27 + local CONVERT="/usr/bin/convert"
  28 + local SETROOT="/usr/bin/xsri"
  29 + local ECHO="/bin/echo"
  30 + local EXPR="/usr/bin/expr"
  31 + local WC="/usr/bin/wc"
  32 + local LS="/bin/ls"
  33 +
  34 + local BGDIR="${BGDIR:-${HOME}/images/backgrounds}"
  35 + local MYDISP="${DISPLAY:-:0}"
  36 +
  37 + local XRANDR_EXP='
  38 + /^Screen/{
  39 + s/ //g
  40 + s/^.*ent\([0-9x]*\).*$/\1/
  41 + }
  42 + / conn/s/^.*cted \([^ ]*\).*$/\1/
  43 + t
  44 + d'
  45 +
  46 + local RESOLUTIONS="`DISPLAY=${MYDISP} ${XRANDR} | ${SED} "${XRANDR_EXP}"`"
  47 + local WHOLE="`${ECHO} "${RESOLUTIONS}" | ${SED} '1p;d'`"
  48 + local SCREENS="`${ECHO} "${RESOLUTIONS}" | ${SED} '2,$p;d'`"
  49 +
  50 + local BGS="`${LS} -1b "${BGDIR}"`"
  51 + local N_BGS=`${ECHO} "${BGS}" | ${WC} -l`
  52 +
  53 + local res img size ofs ofs_x ofs_y screen_asp image_asp image_geom cmd
  54 +
  55 + cmd="-size ${WHOLE} xc:black"
  56 +
  57 + for res in ${SCREENS}
  58 + do
  59 + img=`rand`
  60 + img=`${EXPR} ${img} % ${N_BGS} + 1`
  61 + img="${BGDIR}/`${ECHO} "${BGS}" | ${SED} ${img}'p;d'`"
  62 +
  63 + size=${res%%+*}
  64 + ofs=${res#*+*}
  65 + ofs_x=${ofs%%+*}
  66 + ofs_y=${ofs##*+}
  67 +
  68 + screen_asp=`eval ${EXPR} ${size/x/ '\*' 100 \/ }`
  69 + image_asp=`eval "${IDENTIFY} -format \"%w '\*' 100 \/ %h\" ${img}"`
  70 + image_asp=`eval ${EXPR} $image_asp`
  71 +
  72 + # decide wheter to scale up to screen height or width
  73 + # based on previously computed asp's
  74 + if [ ${image_asp} -lt ${screen_asp} ]
  75 + then
  76 + # scale on height!
  77 + image_geom="x${size##*x}"
  78 + else
  79 + # scale on width!
  80 + image_geom="${size%%x*}x"
  81 + fi
  82 +
  83 + image_geom=`eval "${CONVERT} -scale ${image_geom} ${img} jpeg:- | \
  84 + ${IDENTIFY} -format \"%wx%h\" jpeg:-"`
  85 +
  86 + ofs_x=`${EXPR} $ofs_x + \( \( ${size%%x*} - ${image_geom%%x*} \) / 2 \)`
  87 + ofs_y=`${EXPR} $ofs_y + \( \( ${size##*x} - ${image_geom##*x} \) / 2 \)`
  88 +
  89 + cmd="${cmd} ${img} -geometry ${image_geom}+${ofs_x}+${ofs_y} -composite"
  90 + done
  91 +
  92 + img=`${TEMPFILE} -s '.jpg'`
  93 + eval "${CONVERT} ${cmd} ${img}"
  94 + DISPLAY=${MYDISP} ${SETROOT} --emblem="${img}" --set 2>/dev/null
  95 + rm ${img}
  96 +}
  97 +
  98 +test "X$(basename -- "$0")" = "Xbackground" && background "$@"
  99 +
  100 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +function coltest() {
  4 + local ECHO="/bin/echo"
  5 +
  6 + if [ $# -lt 1 ]
  7 + then
  8 + ${ECHO} "coltest 256fg-col [256bg-col]"
  9 + return
  10 + fi
  11 +
  12 + ${ECHO} -en "\033[38;5;${1}m"
  13 + [ "$2" ] && ${ECHO} -en "\033[48;5;${2}m"
  14 + ${ECHO} -n "test"
  15 + ${ECHO} -e "\033[00m"
  16 +}
  17 +
  18 +test "X$(basename -- "$0")" = "Xcoltest" && coltest "$@"
  19 +
  20 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +function diff_no_links() {
  4 + local FIND="/usr/bin/find"
  5 + local SED="/bin/sed"
  6 + local CAT="/bin/cat"
  7 + local TR="/usr/bin/tr"
  8 + local SORT="/usr/bin/sort"
  9 +
  10 + local SRC=$1
  11 + local DST=$2
  12 +
  13 + local SRC_SYMS="${FIND} \"${SRC}\" -type l -exec basename {} \;"
  14 + local DST_SYMS="${FIND} \"${DST}\" -type l -exec basename {} \;"
  15 + local ALL_SYMS="${CAT} <(${SRC_SYMS}) <($DST_SYMS) | ${SORT} -u"
  16 +
  17 + local EXCLUDES="${ALL_SYMS} | ${SED} 's/^/ -x /' | ${TR} -d '\n'"
  18 +
  19 + diff -Naur `eval ${EXCLUDES}` "${SRC}" "${DST}"
  20 + return $?
  21 +}
  22 +
  23 +test "X$(basename -- "$0")" = "Xdiff_no_links" && diff_no_links "$@"
  24 +
  25 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +source ${HOME}/.aliases
  4 +source ${HOME}/scripts/init/tools/gcal
  5 +
  6 +test "X$(basename -- "$0")" = "Xmailterms" && mailterms "$@"
  7 +
  8 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +alias i3active='task i3active 2>/dev/null | sed '\''4!d'\'''
  4 +alias i3next='task i3next 2>/dev/null | sed '\''4!d'\'''
  5 +alias i3overdue='task i3overdue 2>/dev/null | sed '\''4!d'\'''
  6 +alias odcnt='task overdue 2>/dev/null | sed '\''$!d;s/task.*/overdue/'\'''
  7 +
  8 +function i3odcnt() {
  9 + echo "\"color\":\"#FF0000\",\"full_text\":\"$(odcnt)\""
  10 +}
  11 +
  12 +function i3tasko() {
  13 + _i3print "$(i3overdue)"
  14 +}
  15 +
  16 +function i3task() {
  17 + local TASK="$(i3active)"
  18 +
  19 + test -z "${TASK}" && TASK="$(i3next)"
  20 +
  21 + _i3print "${TASK}"
  22 +}
  23 +
  24 +function _taskdate() {
  25 + local TDATE
  26 +
  27 + TDATE="$(echo "${1}" | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3-\2-\1/')"
  28 + test "${TDATE}" == "${1}" && TDATE="3000-12-12"
  29 + echo "${TDATE}"
  30 +}
  31 +
  32 +function _taskmsg() {
  33 + echo "${1}" | sed 's/^[0-9.]* *//'
  34 +}
  35 +
  36 +function _taskcol() {
  37 + local ACTIVE_COL="#4040FF"
  38 + local ONEDAY_COL="#FFFF00"
  39 + local OVERDUE_COL="#FF0000"
  40 + local COLOR="#00FF00"
  41 +
  42 + test "$(i3active)" == "${1}" && {
  43 + echo "${ACTIVE_COL}"
  44 + return
  45 + }
  46 +
  47 + # add one day to due date as the due date has also 24 hours
  48 + local DUE=$(($(date -d "$(_taskdate "${1}")" +%s)+(24*60*60)))
  49 + local NOW=$(date +%s)
  50 +
  51 + test ${DUE} -le $((${NOW}+(24*60*60))) && COLOR="${ONEDAY_COL}"
  52 + test ${DUE} -le ${NOW} && COLOR="${OVERDUE_COL}"
  53 +
  54 + echo "${COLOR}"
  55 +}
  56 +
  57 +function _i3print() {
  58 + printf "\"color\":\"%s\",\"full_text\":\"%s\"" \
  59 + "$(_taskcol "${1}")" \
  60 + "$(_taskmsg "${1}")"
  61 +}
  62 +
  63 +test "X$(basename -- "$0")" = "Xi3task" && i3task "$@"
  64 +test "X$(basename -- "$0")" = "Xi3overdue" && i3tasko "$@"
  65 +test "X$(basename -- "$0")" = "Xi3odcnt" && i3odcnt "$@"
  66 +
  67 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +alias i3active='task i3active 2>/dev/null | sed '\''4!d'\'''
  4 +alias i3next='task i3next 2>/dev/null | sed '\''4!d'\'''
  5 +alias i3overdue='task i3overdue 2>/dev/null | sed '\''4!d'\'''
  6 +alias odcnt='task overdue 2>/dev/null | sed '\''$!d;s/task.*/overdue/'\'''
  7 +
  8 +function i3odcnt() {
  9 + echo "\"color\":\"#FF0000\",\"full_text\":\"$(odcnt)\""
  10 +}
  11 +
  12 +function i3tasko() {
  13 + _i3print "$(i3overdue)"
  14 +}
  15 +
  16 +function i3task() {
  17 + local TASK="$(i3active)"
  18 +
  19 + test -z "${TASK}" && TASK="$(i3next)"
  20 +
  21 + _i3print "${TASK}"
  22 +}
  23 +
  24 +function _taskdate() {
  25 + local TDATE
  26 +
  27 + TDATE="$(echo "${1}" | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3-\2-\1/')"
  28 + test "${TDATE}" == "${1}" && TDATE="3000-12-12"
  29 + echo "${TDATE}"
  30 +}
  31 +
  32 +function _taskmsg() {
  33 + echo "${1}" | sed 's/^[0-9.]* *//'
  34 +}
  35 +
  36 +function _taskcol() {
  37 + local ACTIVE_COL="#4040FF"
  38 + local ONEDAY_COL="#FFFF00"
  39 + local OVERDUE_COL="#FF0000"
  40 + local COLOR="#00FF00"
  41 +
  42 + test "$(i3active)" == "${1}" && {
  43 + echo "${ACTIVE_COL}"
  44 + return
  45 + }
  46 +
  47 + # add one day to due date as the due date has also 24 hours
  48 + local DUE=$(($(date -d "$(_taskdate "${1}")" +%s)+(24*60*60)))
  49 + local NOW=$(date +%s)
  50 +
  51 + test ${DUE} -le $((${NOW}+(24*60*60))) && COLOR="${ONEDAY_COL}"
  52 + test ${DUE} -le ${NOW} && COLOR="${OVERDUE_COL}"
  53 +
  54 + echo "${COLOR}"
  55 +}
  56 +
  57 +function _i3print() {
  58 + printf "\"color\":\"%s\",\"full_text\":\"%s\"" \
  59 + "$(_taskcol "${1}")" \
  60 + "$(_taskmsg "${1}")"
  61 +}
  62 +
  63 +test "X$(basename -- "$0")" = "Xi3task" && i3task "$@"
  64 +test "X$(basename -- "$0")" = "Xi3overdue" && i3tasko "$@"
  65 +test "X$(basename -- "$0")" = "Xi3odcnt" && i3odcnt "$@"
  66 +
  67 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +alias i3active='task i3active 2>/dev/null | sed '\''4!d'\'''
  4 +alias i3next='task i3next 2>/dev/null | sed '\''4!d'\'''
  5 +alias i3overdue='task i3overdue 2>/dev/null | sed '\''4!d'\'''
  6 +alias odcnt='task overdue 2>/dev/null | sed '\''$!d;s/task.*/overdue/'\'''
  7 +
  8 +function i3odcnt() {
  9 + echo "\"color\":\"#FF0000\",\"full_text\":\"$(odcnt)\""
  10 +}
  11 +
  12 +function i3tasko() {
  13 + _i3print "$(i3overdue)"
  14 +}
  15 +
  16 +function i3task() {
  17 + local TASK="$(i3active)"
  18 +
  19 + test -z "${TASK}" && TASK="$(i3next)"
  20 +
  21 + _i3print "${TASK}"
  22 +}
  23 +
  24 +function _taskdate() {
  25 + local TDATE
  26 +
  27 + TDATE="$(echo "${1}" | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3-\2-\1/')"
  28 + test "${TDATE}" == "${1}" && TDATE="3000-12-12"
  29 + echo "${TDATE}"
  30 +}
  31 +
  32 +function _taskmsg() {
  33 + echo "${1}" | sed 's/^[0-9.]* *//'
  34 +}
  35 +
  36 +function _taskcol() {
  37 + local ACTIVE_COL="#4040FF"
  38 + local ONEDAY_COL="#FFFF00"
  39 + local OVERDUE_COL="#FF0000"
  40 + local COLOR="#00FF00"
  41 +
  42 + test "$(i3active)" == "${1}" && {
  43 + echo "${ACTIVE_COL}"
  44 + return
  45 + }
  46 +
  47 + # add one day to due date as the due date has also 24 hours
  48 + local DUE=$(($(date -d "$(_taskdate "${1}")" +%s)+(24*60*60)))
  49 + local NOW=$(date +%s)
  50 +
  51 + test ${DUE} -le $((${NOW}+(24*60*60))) && COLOR="${ONEDAY_COL}"
  52 + test ${DUE} -le ${NOW} && COLOR="${OVERDUE_COL}"
  53 +
  54 + echo "${COLOR}"
  55 +}
  56 +
  57 +function _i3print() {
  58 + printf "\"color\":\"%s\",\"full_text\":\"%s\"" \
  59 + "$(_taskcol "${1}")" \
  60 + "$(_taskmsg "${1}")"
  61 +}
  62 +
  63 +test "X$(basename -- "$0")" = "Xi3task" && i3task "$@"
  64 +test "X$(basename -- "$0")" = "Xi3overdue" && i3tasko "$@"
  65 +test "X$(basename -- "$0")" = "Xi3odcnt" && i3odcnt "$@"
  66 +
  67 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +function lxc-snapshot()
  4 +{
  5 + local BTRFS=/sbin/btrfs
  6 + local CHMOD=/bin/chmod
  7 + local CHOWN=/bin/chown
  8 + local CUT=/usr/bin/cut
  9 + local ECHO=/bin/echo
  10 + local GREP=/bin/grep
  11 + local ID=/usr/bin/id
  12 + local LXC_USERNSEXEC=/usr/bin/lxc-usernsexec
  13 + local MKDIR=/bin/mkdir
  14 + local SED=/bin/sed
  15 + local TEST=/usr/bin/test
  16 +
  17 + local SOURCE=$1
  18 + local TARGET=$2
  19 + local IP=$3
  20 +
  21 + local SUBUIDS=$(${GREP} ${USER} /etc/subuid)
  22 + local SUBGIDS=$(${GREP} ${USER} /etc/subgid)
  23 + local SUID_START=$(${ECHO} "${SUBUIDS}" | ${CUT} -d: -f2)
  24 + local SGID_START=$(${ECHO} "${SUBGIDS}" | ${CUT} -d: -f2)
  25 +
  26 + local HUID=$(${ID} -u)
  27 + local HGID=$(${ID} -g)
  28 +
  29 + ${MKDIR} "${HOME}/.local/share/lxc/${TARGET}"
  30 + ${CHMOD} 770 "${HOME}/.local/share/lxc/${TARGET}"
  31 + ${SED} 's/'${SOURCE}'/'${TARGET}'/;/lxc.network.ipv4 *=/s/= *.*/= '${IP//\//\\/}'/' \
  32 + "${HOME}/.local/share/lxc/${SOURCE}/config" >"${HOME}/.local/share/lxc/${TARGET}/config"
  33 + ${LXC_USERNSEXEC} -m 'u:0:'${SUID_START}':1' -m 'g:0:'${SGID_START}':1' \
  34 + -m 'u:'${HUID}':'${HUID}':1' -m 'g:'${HGID}':'${HGID}':1' -- \
  35 + ${CHOWN} 0 "${HOME}/.local/share/lxc/${TARGET}"
  36 + ${LXC_USERNSEXEC} -m 'u:0:'${SUBUIDS#*:} -m 'g:0:'${SUBGIDS#*:} -- \
  37 + ${BTRFS} subvolume snapshot \
  38 + "${HOME}/.local/share/lxc/${SOURCE}/rootfs" \
  39 + "${HOME}/.local/share/lxc/${TARGET}/rootfs"
  40 +}
  41 +
  42 +export -f lxc-snapshot
  43 +
  44 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +function lxc-start()
  4 +{
  5 + local LXC_START=/usr/bin/lxc-start
  6 + local TEST=/usr/bin/test
  7 + local ECHO=/bin/echo
  8 + local MKDIR=/bin/mkdir
  9 + local CHOWN=/bin/chown
  10 + local SUDO=/usr/bin/sudo
  11 + local TEE=/usr/bin/tee
  12 +
  13 + (
  14 + PID=$(exec /bin/sh -c 'echo $PPID')
  15 + for ctrl in /sys/fs/cgroup/*
  16 + do
  17 + ${TEST} ${ctrl##*/} = 'openrc' && continue
  18 +
  19 + if ${TEST} ! -d ${ctrl}/${USER}
  20 + then
  21 + ${TEST} ${ctrl##*/} = 'cpuset' && \
  22 + ${ECHO} 1 | ${SUDO} ${TEE} ${ctrl}/cgroup.clone_children >/dev/null
  23 + ${TEST} ${ctrl##*/} = 'memory' && \
  24 + ${ECHO} 1 | ${SUDO} ${TEE} ${ctrl}/memory.use_hierarchy >/dev/null
  25 +
  26 + ${SUDO} ${MKDIR} ${ctrl}/${USER}/
  27 + ${SUDO} ${CHOWN} ${USER}: ${ctrl}/${USER}
  28 + ${SUDO} ${CHOWN} ${USER}: ${ctrl}/${USER}/tasks
  29 + ${SUDO} ${CHOWN} ${USER}: ${ctrl}/${USER}/cgroup.procs
  30 + fi
  31 + ${ECHO} ${PID} >>"${ctrl}/${USER}/tasks"
  32 + done
  33 +
  34 + ${LXC_START} $@
  35 + )
  36 +}
  37 +
  38 +export -f lxc-start
  39 +
  40 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +source ${HOME}/.aliases
  4 +source ${HOME}/scripts/init/tools/gcal
  5 +
  6 +test "X$(basename -- "$0")" = "Xmailterms" && mailterms "$@"
  7 +
  8 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +function rand_printable() {
  4 + local ECHO="/bin/echo"
  5 + local TR="/usr/bin/tr"
  6 + local HEAD="/usr/bin/head"
  7 +
  8 + ${ECHO} -n "`</dev/urandom ${TR} -dc \ -~ | ${HEAD} -c${1:-512}`"
  9 +}
  10 +
  11 +test "X$(basename -- "$0")" = "Xrand_printable" && rand_printable "$@"
  12 +
  13 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/bash
  2 +
  3 +##
  4 +# Create an unified diff over two tar archives.
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +##
  12 +# This one is not POSIX conform. POSIX does not define
  13 +# process substitution via <() or >(). The alternative
  14 +# I tries is using fifos but doing this with seems to
  15 +# be a synchonization nightmare.
  16 +#
  17 +
  18 +function tardiff() {
  19 + local SED="/bin/sed"
  20 + local SORT="/usr/bin/sort"
  21 + local TAR="/bin/tar"
  22 + local DIFF="/usr/bin/diff"
  23 + local XARGS="/usr/bin/xargs"
  24 + local BASH="/bin/bash"
  25 +
  26 + if [ 2 -ne $# ]
  27 + then
  28 + echo "tardiff tar1 tar2"
  29 + return 1
  30 + fi
  31 +
  32 + local TAR1=$1
  33 + local TAR2=$2
  34 +
  35 + local FILES1="${TAR} tfa \"${TAR1}\""
  36 + local FILES2="${TAR} tfa \"${TAR2}\""
  37 +
  38 + ##
  39 + # get the union of all files in both tar's
  40 + # Exclude directories.
  41 + #
  42 + local FILES="${SORT} -u <(${FILES1}) <(${FILES2}) | ${SED} '/\/$/d'"
  43 +
  44 + ##
  45 + # create a diff over all files and change the /dev/fd/ entries
  46 + # with the current filename.
  47 + # The resulting diff can be used as a patch on the extracted
  48 + # first tar to get the content of the extracted second tar.
  49 + #
  50 + eval ${FILES} | ${XARGS} -I %file ${BASH} -c "
  51 + FILE=\"%file\"
  52 + ESC_FILE=\"\${FILE//\//\/}\"
  53 + ${DIFF} -Nau \
  54 + <(${TAR} xfOa \"${TAR1}\" \"%file\" 2>/dev/null) \
  55 + <(${TAR} xfOa \"${TAR2}\" \"%file\" 2>/dev/null) | \
  56 + ${SED} 's/\/dev\/fd\/[0-9]\+/'\${ESC_FILE}'/'"
  57 +}
  58 +
  59 +test "X$(basename -- "$0")" = "Xtardiff" && tardiff "$@"
  60 +
  61 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +#!/bin/sh
  2 +
  3 +##
  4 +# various functions and aliases that make gcal more convinient
  5 +#
  6 +# Author: Georg Hopp <ghopp@bigpoint.net>
  7 +# Date: Tue Apr 17 17:19:56 CEST 2012
  8 +# Version: 1.0.0
  9 +#
  10 +
  11 +alias gcal='LC_MESSAGES=de_DE.UTF-8 /usr/bin/gcal -K -s Monday'
  12 +alias hollidays='gcal -qde_hh -n'
  13 +alias dates='gcal -c'
  14 +alias mdates='gcal -cm'
  15 +alias tcomingf='tcoming | sed '\''1!d'\'
  16 +alias ttomorrowf='ttomorrow | sed '\''1!d'\'
  17 +
  18 +function terms() {
  19 + _terms "all" 1 "$@"
  20 +}
  21 +
  22 +function tcoming() {
  23 + _terms "coming" 1
  24 +}
  25 +
  26 +function tpast() {
  27 + _terms "past" 1
  28 +}
  29 +
  30 +function ttomorrow() {
  31 + _terms "all" 0 -ct
  32 +}
  33 +
  34 +function _terms() {
  35 + local modifier=${1:-all}
  36 + local color=${2:-0}
  37 + local current_time=`date +%H:%M`
  38 + shift 2
  39 +
  40 + #dates "$@" | sed '1,/^Fixed date/d; /^$/d; s/[^:]*: //'
  41 + dates "$@" | awk -v ctime="${current_time}" -v mod="${modifier}" \
  42 + -v col=${color} -v format=${DATES_FORMAT} '
  43 + BEGIN {
  44 + chour = ctime; gsub(/:.*/, "", chour);
  45 + cminute = ctime; gsub(/.*:/, "", cminute);
  46 + ctime = chour * 60 + cminute
  47 + }
  48 +
  49 + NR == 1, /^Fixed date/ {next}
  50 + /^$/ {next}
  51 +
  52 + {
  53 + gsub(/^[^:]*: /, "");
  54 + FS=" ";
  55 + hour=$1; gsub(/:.*/, "", hour);
  56 + minute=$1; gsub(/.*:/, "", minute);
  57 + time = hour * 60 + minute
  58 +
  59 + color=""
  60 + if (format == "i3bar") {
  61 + if (col != 0 && time != 0 && time-ctime <= 15)
  62 + color="\"color\":\"#00FF00\",";
  63 + if (col != 0 && time != 0 && time-ctime <= 5)
  64 + color="\"color\":\"#FFFF00\",";
  65 + if (col != 0 && time != 0 && time-ctime <= 0)
  66 + color="\"color\":\"#FF0000\",";
  67 + }
  68 + else {
  69 + if (col != 0 && time != 0 && time-ctime <= 15)
  70 + color="\033[38;5;82m";
  71 + if (col != 0 && time != 0 && time-ctime <= 5)
  72 + color="\033[38;5;190m";
  73 + if (col != 0 && time != 0 && time-ctime <= 0)
  74 + color="\033[38;5;124m";
  75 + }
  76 +
  77 + if ((mod == "all") ||
  78 + (mod == "coming" && (time+5 >= ctime || time == 0)) ||
  79 + (mod == "past" && (time < ctime || time == 0))) {
  80 +
  81 + gsub(/\\/, "", $0);
  82 + if (format == "i3bar") {
  83 + gsub(/"/, "\\\"", $0);
  84 + out = color "\"full_text\":\"" $0 "\""
  85 + }
  86 + else {
  87 + out = color $0 "\033[00m"
  88 + }
  89 + print out
  90 + }
  91 + }
  92 +
  93 + END {
  94 + if ("" == out) {
  95 + if (format == "i3bar") {
  96 + print "\"full_text\":\"none\""
  97 + }
  98 + else {
  99 + print "none"
  100 + }
  101 + }
  102 + }'
  103 +}
  104 +
  105 +test "X$(basename -- "$0")" = "Xgcal" && gcal "$@"
  106 +test "X$(basename -- "$0")" = "Xhollidays" && hollidays "$@"
  107 +test "X$(basename -- "$0")" = "Xdates" && dates "$@"
  108 +test "X$(basename -- "$0")" = "Xmdates" && mdates "$@"
  109 +test "X$(basename -- "$0")" = "Xtcomingf" && tcomingf "$@"
  110 +test "X$(basename -- "$0")" = "Xttomorrowf" && ttomorrowf "$@"
  111 +test "X$(basename -- "$0")" = "Xtcoming" && tcoming "$@"
  112 +test "X$(basename -- "$0")" = "Xtpast" && tpast "$@"
  113 +test "X$(basename -- "$0")" = "Xttomorrow" && ttomorrow "$@"
  114 +test "X$(basename -- "$0")" = "Xterms" && terms "$@"
  115 +
  116 +# vim: set ft=sh ts=4 sw=4:
  1 +vcs() {
  2 + local VCS REF
  3 +
  4 + git_dir() {
  5 + [ 'true' != "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ] && return 1
  6 + REF=$(git symbolic-ref -q HEAD || git name-rev --name-only HEAD 2>/dev/null)
  7 + REF=${REF#refs/heads/}
  8 + VCS="git"
  9 + }
  10 +
  11 + svn_dir() {
  12 + local INFO
  13 + INFO="$(svn info 2>/dev/null)" || return 1
  14 + REF=$(echo "${INFO}" | awk '/^Repository Root/ { sub(".*/","",$0); r=$0 } /^Revision/ { sub("[^0-9]*","",$0); print r":"$0 }')
  15 + VCS="svn"
  16 + }
  17 +
  18 + git_dir || svn_dir
  19 +
  20 + echo "${VCS:+[${VCS}|${REF}]}"
  21 +}
  22 +
  23 +# vim: set ft=sh ts=4 sw=4:
Please register or login to post a comment