doot doot
This commit is contained in:
196
dot_sh_functions
Normal file
196
dot_sh_functions
Normal file
@@ -0,0 +1,196 @@
|
||||
autoload -U terminfo
|
||||
autoload -U add-zsh-hook
|
||||
|
||||
function swap_hogs() {
|
||||
grep --color=never -n VmSwap /proc/*/status | sort -n -k2 | awk '/proc\/([0-9]+)\/status/ { split($1, p, "/"); fn="/proc/"p[3]"/status"; getline s < fn; split(s, n, ":"); sub(/^[ \t\r\n]+/, "", n[2]); print n[2] " (" p[3] ") " $2 "kB" }'
|
||||
}
|
||||
|
||||
# ssh-agent {{{
|
||||
# typeset _ssh_env_cache
|
||||
# _ssh_env_cache="$HOME/.ssh/environment-${HOST/.*/}"
|
||||
# function _start_ssh_agent() {
|
||||
# ssh-agent -s -t 4h | sed 's/^echo/#echo/' >! "$_ssh_env_cache"
|
||||
#
|
||||
# for ident in $HOME/.ssh/*.pub; do
|
||||
# ssh-add ${ident/.pub/}
|
||||
# done
|
||||
# }
|
||||
#
|
||||
# if [[ -n "$SSH_AUTH_SOCK" ]]; then
|
||||
# [[ -L "$SSH_AUTH_SOCK" ]] || ln -snf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USER-screen
|
||||
# elif [[ -f "$_ssh_env_cache" ]]; then
|
||||
# . "$_ssh_env_cache" > /dev/null
|
||||
# pgrep ssh-agent | grep -q $SSH_AGENT_PID || {
|
||||
# _start_ssh_agent
|
||||
# }
|
||||
# else
|
||||
# _start_ssh_agent
|
||||
# fi
|
||||
#
|
||||
# unset _ssh_env_cache
|
||||
# }}}
|
||||
|
||||
# battery/UPS {{{
|
||||
if [[ -x "$(whence apcaccess)" ]]; then
|
||||
function battery_pct_remaining() {
|
||||
echo $(apcaccess | fgrep BCHARGE | cut -d: -f2 | cut -d\ -f2)
|
||||
}
|
||||
function battery_time_remaining() {
|
||||
echo $(apcaccess | fgrep TIMELEFT | cut -d: -f2)
|
||||
}
|
||||
function battery_pct_prompt() {
|
||||
b=$(battery_pct_remaining)
|
||||
if [[ $b -gt 60 ]]; then
|
||||
color=green
|
||||
elif [[ $b -gt 25 ]]; then
|
||||
color=yellow
|
||||
else
|
||||
color=red
|
||||
fi
|
||||
echo "%{$fg[$color]%}$(battery_pct_remaining)%%%{$reset_color%}"
|
||||
}
|
||||
else
|
||||
function battery_pct_remaining() {
|
||||
}
|
||||
function battery_time_remaining() {
|
||||
}
|
||||
function battery_pct_prompt() {
|
||||
}
|
||||
fi
|
||||
# }}}
|
||||
|
||||
# git prompt {{{
|
||||
function git_prompt_info() {
|
||||
local ref
|
||||
ref=$(command git symbolic-ref HEAD 2>/dev/null) || \
|
||||
ref=$(command git rev-parse --short HEAD 2>/dev/null) || return 0
|
||||
echo "git:(${ref#refs/heads/}$(parse_git_dirty))"
|
||||
}
|
||||
function parse_git_dirty() {
|
||||
local STATUS=''
|
||||
local -a FLAGS
|
||||
FLAGS=('--porcelain' '--untracked-files=no')
|
||||
STATUS=$(command git status ${FLAGS} 2>/dev/null | tail -n1)
|
||||
if [[ -n "$STATUS" ]]; then
|
||||
# dirty
|
||||
echo -e " %{\e[1;35m%}%{⧱%G%}%{\e[0;34m%}"
|
||||
else
|
||||
# clean
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
# }}}
|
||||
|
||||
function title {
|
||||
emulate -L zsh
|
||||
[[ "$EMACS" == *term* ]] && return
|
||||
: ${2=$1}
|
||||
case "$TERM" in
|
||||
cygwin|xterm*|putty*|rxvt*|ansi)
|
||||
print -Pn "\e]2;$2:q\a" # window
|
||||
print -Pn "\e]1;$1:q\a" # tab
|
||||
;;
|
||||
screen*)
|
||||
print -Pn "\ek$1:q\e\\"
|
||||
;;
|
||||
*)
|
||||
if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then
|
||||
echoti tsl
|
||||
print -Pn "$1"
|
||||
echoti fsl
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function title_precmd {
|
||||
title "%15<…<%~%<<" "%n@%m: %~"
|
||||
}
|
||||
|
||||
add-zsh-hook precmd title_precmd
|
||||
|
||||
function title_preexec {
|
||||
setopt extended_glob
|
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}
|
||||
local LINE="${2:gs/%/%%}"
|
||||
|
||||
title "$CMD" "%100>…>$LINE%<<"
|
||||
}
|
||||
|
||||
add-zsh-hook preexec title_preexec
|
||||
|
||||
|
||||
function md() {
|
||||
mkdir -p $1
|
||||
cd $1
|
||||
}
|
||||
|
||||
function cdl() {
|
||||
pushd "$1" && ls -CF --color=always "${@:2}"
|
||||
}
|
||||
|
||||
function dur() {
|
||||
ls -lSr -hd "${1:-.}"/*; du -chd2 -- "${1:-.}"/ | sort -h; df -h "$@"
|
||||
}
|
||||
|
||||
alias rcp="rsync -aiPvh"
|
||||
alias rup="rsync -aiPvhu"
|
||||
|
||||
function rmv() {
|
||||
local -a flags=(${(M)@:#-*})
|
||||
local -a parms=(${@:#-*})
|
||||
shift $parms
|
||||
local src="${parms[1]}"
|
||||
local dest="${parms[2]}"
|
||||
rsync -aiPvhu --remove-source-files --prune-empty-dirs "${(@)flags}" "$parms"
|
||||
if [[ -d "$src" ]] ; then
|
||||
find "$src" -type d -empty -delete
|
||||
fi
|
||||
}
|
||||
|
||||
function unpack() {
|
||||
filename="$1"
|
||||
echo "$filename"
|
||||
shift
|
||||
basefilename="$(basename "${filename}")"
|
||||
dirname="${basefilename%.*}"
|
||||
echo "$dirname"
|
||||
mkdir -p "$dirname"
|
||||
7z x -o"$dirname" "$filename"
|
||||
}
|
||||
function unpack-mv() {
|
||||
unpack "$1"
|
||||
mv "$@"
|
||||
}
|
||||
|
||||
cp-lower() {
|
||||
local -a from=()
|
||||
local to
|
||||
local CMD=""
|
||||
local verbose
|
||||
while [[ $# -gt 1 ]]; do
|
||||
case "$1" in
|
||||
-n)
|
||||
CMD=echo
|
||||
echo '.-n' "$@"
|
||||
;;
|
||||
-v)
|
||||
verbose=-v
|
||||
echo '.-v' "$@"
|
||||
;;
|
||||
*)
|
||||
if [[ -e "$1" ]]; then
|
||||
from+=("$to")
|
||||
to="$1"
|
||||
fi
|
||||
echo "$@"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo ${(@)from}
|
||||
echo $to
|
||||
}
|
||||
|
||||
# vim:ft=zsh
|
||||
Reference in New Issue
Block a user