-# print hex value of a number
-hex() {
- emulate -L zsh
- [[ -n "$1" ]] && printf "%x\n" $1 || { print 'Usage: hex <number-to-convert>' ; return 1 }
-}
-
-# calculate (or eval at all ;-)) with perl => p[erl-]eval
-# hint: also take a look at zcalc -> 'autoload zcalc' -> 'man zshmodules | less -p MATHFUNC'
-peval() {
- [[ -n "$1" ]] && CALC="$*" || print "Usage: calc [expression]"
- perl -e "print eval($CALC),\"\n\";"
-}
-functions peval &>/dev/null && alias calc=peval
-
-# just press 'asdf' keys to toggle between dvorak and us keyboard layout
-aoeu() {
- echo -n 'Switching to us keyboard layout: '
- [[ -z "$DISPLAY" ]] && $SUDO loadkeys us &>/dev/null || setxkbmap us &>/dev/null
- echo 'Done'
-}
-asdf() {
- echo -n 'Switching to dvorak keyboard layout: '
- [[ -z "$DISPLAY" ]] && $SUDO loadkeys dvorak &>/dev/null || setxkbmap dvorak &>/dev/null
- echo 'Done'
-}
-# just press 'asdf' key to toggle from neon layout to us keyboard layout
-uiae() {
- echo -n 'Switching to us keyboard layout: '
- setxkbmap us && echo 'Done' || echo 'Failed'
-}
-
-# set up an ipv6 tunnel
-ipv6-tunnel() {
- emulate -L zsh
- case $1 in
- start)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print 'ipv6 tunnel already set up, nothing to be done.'
- print 'execute: "ifconfig sit1 down ; ifconfig sit0 down" to remove ipv6-tunnel.' ; return 1
- else
- [[ -n "$PUBLIC_IP" ]] || \
- local PUBLIC_IP=$(ifconfig $(route -n | awk '/^0\.0\.0\.0/{print $8; exit}') | \
- awk '/inet addr:/ {print $2}' | tr -d 'addr:')
-
- [[ -n "$PUBLIC_IP" ]] || { print 'No $PUBLIC_IP set and could not determine default one.' ; return 1 }
- local IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x:1::1" $(print ${PUBLIC_IP//./ }))
- print -n "Setting up ipv6 tunnel $IPV6ADDR via ${PUBLIC_IP}: "
- ifconfig sit0 tunnel ::192.88.99.1 up
- ifconfig sit1 add "$IPV6ADDR" && print done || print failed
- fi
- ;;
- status)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print 'ipv6 tunnel available' ; return 0
- else
- print 'ipv6 tunnel not available' ; return 1
- fi
- ;;
- stop)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print -n 'Stopping ipv6 tunnel (sit0 + sit1): '
- ifconfig sit1 down ; ifconfig sit0 down && print done || print failed
- else
- print 'No ipv6 tunnel found, nothing to be done.' ; return 1
- fi
- ;;
- *)
- print "Usage: ipv6-tunnel [start|stop|status]">&2 ; return 1
- ;;
- esac
-}
-
-# spawn a minimally set up mksh - useful if you want to umount /usr/.
-minimal-shell() {
- emulate -L zsh
- local shell="/bin/mksh"
-
- if [[ ! -x ${shell} ]]; then
- printf '`%s'\'' not available, giving up.\n' ${shell} >&2
- return 1
- fi
-
- exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ${shell}
-}
-