sync/shells/zshrc
2018-02-13 12:18:40 -05:00

643 lines
18 KiB
Bash

#zmodload zsh/zprof
echo -ne '[ ]\r'
for CONFIG (~/.zsh/*.zsh) source "$CONFIG"
autoload -U compinit
compinit
setopt always_to_end # When completing from the middle of a word, move the cursor to the end of the word
setopt complete_in_word # Allow completion from within a word/phrase
setopt INTERACTIVECOMMENTS
setopt EXTENDED_GLOB
setopt HIST_EXPIRE_DUPS_FIRST
export HIST_STAMPS="dd.mm.yyyy"
export HISTSIZE=12000
export SAVEHIST=10000000
export HISTFILE="$HOME/.zsh_history"
setopt APPEND_HISTORY
setopt EXTENDED_HISTORY
setopt APPEND_HISTORY SHARE_HISTORY HISTIGNOREALLDUPS
export DISABLE_AUTO_TITLE=true
export EDITOR='vim'
export FZF_COMPLETION_OPTS='--no-mouse -m -1 -x'
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.cache/zsh
compress(){
INFILE="${1:r}.tpxz"
if [ -f "$INFILE" ]; then
echo "Won't replace $1" >&2
return 1
fi
tar --xattrs -I pixz -cpf "$INFILE" $*
}
# Check if a command exists
ex(){
command -v "$1" >/dev/null
return $?
}
if ex firefox; then
export BROWSER="firefox"
elif ex firefox-bin; then
export BROWSER="firefox-bin"
else
export BROWSER="xdg-open"
fi
# For pasting in commands that start with $
$ () {
$*
}
# A service implementation
sv () {
command="${@: -1}"
while (( $# > 1 )); do
if [[ "$command" == "i" ]]; then
echo "Status of $1"
rc-service "$1" status
shift
continue
fi
sudo true || return 2
if [[ "$1" == "sshd" ]] || [[ "$1" == "ssh" ]]; then
echo "Checking sshd config..."
sudo sshd -t && echo "Config good. Continuing" || (echo "Aborting due to bad ssh config";return 1)
fi
if [[ "$command" == "r" ]]; then
echo "Restarting $1"
sudo rc-service "$1" restart
elif [[ "$command" == "s" ]]; then
echo "Starting $1"
sudo rc-service "$1" start
elif [[ "$command" == "x" ]]; then
echo "Stopping $1"
sudo rc-service "$1" stop
else
sudo rc-service "$1" "$command"
fi
shift
done
}
compdef _services sv
# Run gui application as root by copying xauth credentials
asroot(){
# Use temporary file for added security
TEMPFILE=$(tempfile)
xauth extract $TEMPFILE $DISPLAY
sudo zsh -c "xauth merge $TEMPFILE;(srm $TEMPFILE||rm $TEMPFILE)&'$@';"
}
# De-symlink
dsl() {
while (( $# > 0 )); do
readlink $1 2>&1 >/dev/null && mv $(readlink $1) $1
shift
done
}
# Update the sync project
update-sync-project() {
if [[ ! -L ~/.zshrc ]]; then
echo "zshrc isn't a link"
return 1
fi
local ABSPATH="$(\dirname "$(\dirname "$(\readlink -e ~/.zshrc)")")"
git -C "$ABSPATH" pull origin master
if (( $# > 0 )); then
"$ABSPATH/scripts/sync.sh" $*
fi
}
# Remove directory by removing subdirectories up a level
dedir(){
# Try removing the directory if it's empty, fail silently if you can't
=rmdir "$1" 2>/dev/null && return
# Make a uuid to avoid name conflicts
# Ex: dediring sage when sage/sage fails because sage/sage is moved to .
# but since sage/ exists, it can't be moved
local name=$(uuidgen)
# Move the directory to the uuid
=mv -n "$1" "$name" || return 1
# Move all files, use (N) in case there is no * or .* matches
=mv -n "$name"/{.,}*(N) . || return 2
=rmdir "$name" || return 3
}
# Run multitail on logs
mt(){
if [[ -z "$1" ]]; then
echo "Opts:\nm xe gitea dm syncthing g" >&2
return 1
fi
case $1 in
m) sudo multitail /var/log/messages;;
xe) multitail ~/.xsession-errors;;
ef) sudo multitail /var/log/emerge-fetch.log;;
gitea) sudo multitail /var/log/gitea.{err,log};;
dm) dmesg -w;;
syncthing) sudo multitail /var/log/syncthing.{err,log};;
g) sudo watch -c genlop -tc;;
sync) watch grep -e Dirty: -e Writeback: /proc/meminfo;;
*) multitail "$1"
esac
}
run(){
test -f "${1:r}" && rm "${1:r}"
echo "Building..." >&2
gcc -Wall -g -std=c99 "${1:r}.c" -o "${1:r}" && (echo "Running..." >&2;./"${1:r}")
}
upload() {
tar -cf - "$*" | base64 | curl --data-urlencode text@- -d title="File uploaded at $(date '+%d/%h/%y %H:%M:%S') on $(hostname)" -d name=$USER -d expire="1440" https://austenwares.com/paste/api/create | sed -e 's/view/view\/raw/'
}
download() {
URL="$(printf $1 | perl -pe 's/\/paste\/view(?!\/raw)/\/paste\/view\/raw/')"
curl "$URL" | base64 -d | tar -xf -
}
update-tool() {
if [ "$EUID" -ne 0 ]; then
echo "This function should be run as root"
return 1
fi
local RESP=""
while [[ "$RESP" != "q" ]]; do
CMD=${RESP:0:1}
case "$CMD" in
u) update -q;;
l) layman -S ;;
g) upgrade;;
e) etc-update;;
p) emerge -Av @preserved-rebuild --usepkg=n --keep-going=y;;
m) emerge -Av @module-rebuild --usepkg=n;;
d) emerge -Ava --depclean;;
h) haskell-updater -- --usepkg=n;;
c) perl-cleaner --reallyall;;
y) python-updater;;
r) revdep-rebuild;;
q) return;;
esac
RESP=${RESP:1}
if [[ ! -z "$RESP" ]]; then
continue
fi
echo "Commands:"
echo "u: update"
echo "l: layman -S"
echo "g: upgrade"
echo "e: etc-update"
echo "p: emerge @preserved-rebuild --usepkg=n --keep-going=y"
echo "m: emerge @module-rebuild --usepkg=n"
echo "d: emerge --ask --depclean"
echo "h: haskell-updater -- --usepkg=n"
echo "c: perl-cleaner --reallyall"
echo "y: python-updater"
echo "r: revdep-rebuild"
echo "q: quit"
echo -n '\a> '
read RESP
done
}
if ex vim; then
alias vi='vim'
fi
if ex rc-service; then
alias service='rc-service'
fi
if ex ip; then
alias ip='ip -c'
fi
if ex adb; then
alias apush="adb push -p"
alias apull="adb pull -p"
fi
alias cleaner="sudo ~/run.sh 'perl-cleaner --reallyall' 'python-updater' 'haskell-updater -- --usepkg=n'"
alias jsonpretty='python -m json.tool'
alias nmrestart='nmcli radio wifi off;nmcli radio wifi on'
if ex mtr; then
alias mtr='mtr -t'
fi
if ex telegram-cli; then
alias tg='telegram-cli -NWA --disable-link-preview'
fi
alias perm='stat -c "%a %n"'
alias afci='git x ./autoformat.sh;git commit -am "Autoformatted"'
if ex eix; then
alias eix="eix -F"
fi
alias mouse1="xmodmap <(echo pointer = 1 2 3)"
alias mouse2="xmodmap <(echo pointer = 3 2 1)"
if ex ocp; then
alias ocp="ocp -vs0 -dcurses"
fi
alias con='git x php bin/console'
alias srm='shred -uzv'
alias disphost='export DISPLAY=:0.0'
alias ll='ls -AlhF'
alias la='ls -A'
alias l='ls -CF'
alias logout='sudo pkill -u $USER'
if ex tmux; then
alias tmux='tmux -2'
fi
alias less='less -R'
if ex tree; then
alias tree='tree -C'
fi
alias resource='. ~/.zshrc'
if [ "$(uname)" != "Darwin" ]; then
# Not Mac
export PATH="$HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$HOME/.cargo/bin"
alias ls='ls --color=always -F'
alias where="readlink -m"
else
# It is a mac
# Prepend macports directories in /opt/local
if ex greadlink; then
alias readlink='greadlink'
alias where="greadlink -m"
fi
export PATH="/opt/local/sbin:/opt/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$HOME/bin"
fi
if test -f /etc/gentoo-release; then
# Gentoo
alias etup='sudo etc-update'
ins(){
# Sudo echo so we have immediate results on weather sudo worked
sudo echo "Args: $*"
# Beep, verbose, ask
sudo emerge --autounmask-write -Ava $*
echo "\a"
}
upgrade(){
# Sudo echo so we have immediate results on weather sudo worked
sudo echo "Args: $*"
sudo emerge --update --newuse --deep --verbose --tree --keep-going=y --verbose-conflicts --alert --ask --binpkg-respect-use=y --binpkg-changed-deps=y --backtrack=30 $* @world
echo "\\a"
}
# For emerging with absolute paths
em(){
# Beep, verbose, ask
EMERGE_ARGS="-Ava"
X=""
for var in "$@"
do
if [[ "$var" =~ ^- ]]; then
EMERGE_ARGS="$EMERGE_ARGS $var"
else
X="$X =$var"
fi
done
echo sudo emerge "$EMERGE_ARGS""$X"
sudo emerge "$EMERGE_ARGS""$X"
echo "\a"
}
update(){
# If this is a server computer
sudo rm -f '/usr/portage/metadata/timestamp.chk'
if ex eix-update; then
sudo zsh -c "emaint sync -a&&eix-update"
else
sudo emaint sync -a
fi
sudo -k
if [ "$1" != "-q" ]; then
echo '\a'
fi
}
elif test -f /etc/lsb-release; then
# Ubuntu
alias install='sudo apt install'
alias remove='sudo apt remove'
alias update='sudo apt update'
alias upgrade='sudo apt upgrade'
alias autoremove='sudo apt autoremove'
alias updateall='sudo sh -c "apt update;apt full-upgrade -y"'
alias search='apt-cache search'
fi
alias ..='k ..'
alias ...='k ../..'
alias ....='k ../../..'
alias .....='k ../../../..'
alias ......='k ../../../../..'
alias .......='k ../../../../../..'
alias ........='k ../../../../../../..'
alias .........='k ../../../../../../../..'
alias ..........='k ../../../../../../../../..'
alias ...........='k ../../../../../../../../../..'
alias ............='k ../../../../../../../../../../..'
alias .............='k ../../../../../../../../../../../..'
alias ..............='k ../../../../../../../../../../../../..'
alias ...............='k ../../../../../../../../../../../../../..'
if ex youtube-dl; then
alias ytdl="youtube-dl $@ -x --audio-format mp3 --audio-quality 0 -c -o '%(title)s.%(ext)s'"
fi
if ex wemux; then
alias tux="wemux"
elif ex tmux; then
alias tux="tmux a || tmux"
fi
if ex git; then
alias g="git"
fi
alias stdns="sudo sh -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'"
alias fvim="vim -u NONE +\"so ~/.vim/plugged/flappyvird-vim/plugin/flappyvird.vim\" +\"so ~/.vim/plugged/flappyvird-vim/autoload/flappyvird.vim\" +\":FlappyVird\" +\":q\""
alias fk='k `fzf --no-mouse -m -1 -x`'
#alias susp="sudo true&&((slock;sleep 2;nmcli radio wifi off;nmcli radio wifi on)&echo mem | sudo tee /sys/power/state >/dev/null);sudo -k"
alias susp="sudo true && (slock&until echo mem|sudo tee /sys/power/state>/dev/null;do sleep 1;done;sleep 4;nmcli radio wifi off;sleep 3;nmcli radio wifi on)"
if ex sudo; then
alias s='sudo -Hu'
fi
alias -g PA='2>&1 | paste'
if ex rsync; then
alias -g c='rsync --no-inc-recursive --partial -ha --info=progress2 "$@"'
alias -g cfat='rsync --no-inc-recursive --partial -hrlc --info=progress2 "$@"'
alias cp='rsync --no-inc-recursive --partial -ha --info=progress2 "$@"'
fi
alias -g nify=" > /dev/null 2>&1 &"
alias -g nifyd=" > /dev/null 2>&1 & disown"
alias -g L="2>&1|less"
if ex rg; then
alias -g G='|& rg'
alias rg='rg -i'
# I'm so sorry ggreer
alias ag=rg
elif ex ag; then
alias -g G='|& ag'
elif ex egrep; then
alias -g G='|& egrep'
elif ex grep; then
alias -g G='|& grep'
fi
timer() {
for i in {1.."$1"}; do
sleep 1
echo
done | pv -Sptels "$1" >/dev/null
}
fixsh(){
sed -i -e $1"d" ~/.ssh/known_hosts
}
mv() { /bin/mv -v "$@" }
m() { mv "$@" }
compdef _cp c cfat m mv cp adb apush apull
paste() {
local PRIVATE=0
if [[ ! -z "$1" ]] && [[ "$1" -eq "-p" ]]; then
PRIVATE=1
shift
fi
local NAME="-d title=Command run at $(date '+%d/%h/%y %H:%M:%S') on $(hostname)"
if [[ ! -z "$1" ]]; then
NAME="-d title=$1"
fi
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" | curl --data-urlencode text@- $NAME -d name=$USER -d expire="40320" -d private="$PRIVATE" https://austenwares.com/paste/api/create
}
linx() {
if [[ -z "$1" ]]; then
curl -T- -H "Linx-Randomize: yes" -H "Linx-Expiry: 2592000" https://linx.austenwares.com/upload | perl -pe 's/https:\/\/linx.austenwares.com\/(\w+)/https:\/\/linx.austenwares.com\/selif\/\1/'
elif (( $# == 1 )) && [[ -f "$1" ]]; then
linx < "$1"
else
tar -cf - $* | linx
fi
}
grename() {
echo incomplete
return
FILES=($*)
REGEX='s///'
echo -n "Command (frneVVVq): "
while read input; do
case $input in
f)
echo "File list:"
printf '%s\n' $FILES
;;
r)
echo "Regex:"
echo "$REGEX"
;;
n)
echo "Simulated replacement:"
perl-rename -n "$REGEX" $FILES
;;
e)
echo "Editing regex..."
TEMPFILE=$(tempfile)
(cat <(printf '%s\n' $FILES);echo;echo "$REGEX") > $TEMPFILE
vim $TEMPFILE +'normal G$h'
REGEX=$(tac $TEMPFILE|grep -m1 '.')
rm $TEMPFILE
;;
VVV)
echo "Actual results:"
perl-rename -v $REGEX $FILES
return
;;
q)
return
;;
esac
echo -n "Command (frneVVVq): "
done
}
bp(){
echo '\a'
}
ltar(){
tar -cf - $@|pv -WcN tar|xz|pv -WcN lzma
#tar -cf - $@|pv -WcN tar -s $(echo $(du -sb $@|awk '{print $1}'|tr '\n' '+')0|bc)|gzip|pv -WcN dest
#tar -cf - $@|pv -WcN tar -s $(echo $(du -sb $@|awk '{print $1}'|tr '\n' '+')0|bc)|gzip|pv -WcN dest
}
ctar(){
tar -cf - $@|pv -WcN tar|gzip|pv -WcN gzip
}
offline(){
if [ ! -z "$@" ] ; then
sudo unshare -n -- sudo -u $USER zsh -c "$@"
else
sudo unshare -n -- sudo -u $USER LP_MARK_PREFIX=" $(tput setaf 1)(offline)$(tput sgr0) " zsh
fi
}
dnstest(){
echo "resolv.conf:"
cat /etc/resolv.conf
echo "Testing DNS:"
dig google.com
echo "Testing ping:"
ping -c 2 8.8.8.8
echo "Testing IP curl:"
curl -L 178.33.250.62
echo
echo "Testing DNS"
curl -L portquiz.net
}
tsh(){
ssh -X $*
if which ponysay >/dev/null; then
ponysay "Connection closed!"
else
echo "\n\n\n\n\n\n\n\n\n\nSESSION CLOSED\n\n\n\n\n\n\n\n\n\n"
fi
}
compdefas () {
local a
a="$1"
shift
compdef "$_comps[$a]" "${(@)*}=$a"
}
compdefas ssh tsh
compdefas mv m mv
mcl(){
mkdir -p $1
cd $1
}
create-repo(){
PRIVATE="true"
while getopts ":p" opt; do
case $opt in
p)
echo "-p was used, making public"
PRIVATE="false"
shift
;;
esac
done
if [ -z "$1" ]; then
echo "No repo name" >&2
return 2
fi
echo -n "Username: "
read username
echo -n "Password: "
read -s password
curl --user "$username:$password" -d name="$1" -d private="$PRIVATE" https://gitea.austenwares.com/api/v1/user/repos
}
hsh(){
FILE="$1"
ARGS=""
while (( $# > 0 )); do
if [[ "md5" = "$1" ]] || [[ "md5sum" = "$1" ]] || [[ "m" = "$1" ]]; then
ARGS="$ARGS "md5sum
elif [[ "sha1" = "$1" ]] || [[ "sha1sum" = "$1" ]] || [[ "s" = "$1" ]]; then
ARGS="$ARGS "sha1sum
elif [[ "sha2" = "$1" ]] || [[ "sha256sum" = "$1" ]]; then
ARGS="$ARGS "sha256sum
elif [[ "sha512" = "$1" ]] || [[ "sha512sum" = "$1" ]]; then
ARGS="$ARGS "sha512sum
fi
shift
done
ARGS=$(echo "$ARGS"|xargs)
echo "Calculating ($ARGS) of \"$FILE\""
echo pv "$FILE" \| pee $ARGS
pv "$FILE" | pee $(echo $ARGS)
}
rc(){
case $1 in
z) vim ~/.zshrc;;
v) vim ~/.vimrc;;
i) vim ~/.i3/config;;
use) sudo vim /etc/portage/package.use/package.use;;
make) sudo vim /etc/portage/make.conf;;
unmask) sudo vim /etc/portage/package.unmask/package.unmask;;
mask) sudo vim /etc/portage/package.mask/package.mask;;
accept_keywords) sudo vim /etc/portage/package.accept_keywords/package.accept_keywords;;
keywords) sudo vim /etc/portage/package.keywords/package.keywords;;
license) sudo vim /etc/portage/package.license/package.license;;
*) echo "Opts:\nz v i\nuse make unmask mask accept_keywords keywords license"
esac
}
pub-git-rm(){
if (( $# == 0 )) ; then
git remote rm local
git remote rm ncsu
git remote rm gitlab
git remote rm aws
fi
while (( $# > 0 )) ; do
git remote rm "$1"
shift
done
}
pub-git-push(){
if (( $# == 0 )) ; then
git push local --all && git push local --tags
git push ncsu --all && git push ncsu --tags
git push gitlab --all && git push gitlab --tags
git push aws --all && git push aws --tags
fi
while (( $# > 0 )) ; do
git push "$1" --all && git push "$1" --tags
shift
done
}
k(){
#More than 1 arguement
if [[ $# > 1 ]] ; then
vim $@
elif [ -d "$@" ] ; then
#cd then ls
cd "$@" && ls
elif [[ "$@" == "-" ]] ; then
#Because if this isn't here, k - won't work
cd - && ls
elif [ -f "$@" ] ; then
#Extract if it's extractable
case $1 in
# Images
*.png|*.jpg|*.gif) feh "$1" ;;
# Documents
*.pdf|*.ps) okular "$1" ;;
*.odt|*.doc|*.docx) libreoffice "$1" ;;
*.odp|*.ppt|*.pptx) libreoffice "$1" ;;
*.ods|*.xls|*.xlsx) libreoffice "$1" ;;
# Compressed files
*.tar.xz) pv "$1"|tar -xJf - ;;
*.txz) pv "$1"|tar -xJf - ;;
*.tar.bz2) pv "$1"|tar -xjf - ;;
*.tar.gz) pv "$1"|tar -xzf - ;;
*.tar) pv "$1"|tar -xf - ;;
*.tbz) pv "$1"|tar -xjf - ;;
*.tbz2) pv "$1"|tar -xjf - ;;
*.tgz) pv "$1"|tar -xzf - ;;
*.lzma) pv "$1"|tar --lzma -xf - ;;
*.xz) pv "$1"|tar -xJf - ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*.lrz) lrzuntar "$1" ;;
*) vim "$1"
esac
else
#Edit with vim
echo -n "vim? "
read a
vim "$@"
fi
}
if (( $+TMUX )) || [[ "$TERM" = "screen-256color" ]] || [[ "$TERM" = "screen.xterm-256color" ]]; then
unset zle_bracketed_paste
fi
#(( $+TMUX )) && unset zle_bracketed_paste
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
if ex fasd; then
eval "$(fasd --init auto)"
fi
#Old config options that are no longer in use
#alias pg="pcregrep -M"
#if command -v greadlink 2>&1 >/dev/null; then
# alias readlink='greadlink'
#fi
#alias steamo='sudo kill -9 `pidof steam`;sudo unshare -n -- sh -c "ifconfig lo up;sudo -u $USER steam" > /dev/null 2>&1 & disown'
#alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"'
#alias aoeu='setxkbmap -layout us -option "'
#alias asdf='setxkbmap -layout dvorak -option ""'
#alias sudo='sudo -H'
echo -ne '[# ]\r'
source ~/.zsh-git/lpr/liquidprompt
source ~/.zsh-git/omg/base.sh
source ~/.zsh-git/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh-git/oh-my-git-themes/af-magic.zsh-theme
if [[ -f ~/.zsh-git/zshrc ]]; then
source ~/.zsh-git/zshrc
fi
echo -e '[##]'
#zprof