sync/shells/zshrc

470 lines
15 KiB
Bash
Raw Normal View History

2015-12-08 18:26:30 -05:00
echo -ne '[ ]\r'
2015-07-31 16:55:11 -04:00
for config (~/.zsh/*.zsh) source $config
ZSH_THEME="af-magic"
2015-06-01 14:41:41 -04:00
source "$HOME/.antigen/antigen.zsh"
2015-06-23 10:24:46 -04:00
setopt INTERACTIVECOMMENTS
2016-03-19 23:02:25 -04:00
setopt EXTENDED_GLOB
2014-08-29 09:46:43 -04:00
setopt HIST_EXPIRE_DUPS_FIRST
2016-05-22 13:52:20 -04:00
export HIST_STAMPS="dd.mm.yyyy"
export HISTSIZE=12000
export SAVEHIST=10000000
export HISTFILE=$HOME/.zsh_history
setopt APPEND_HISTORY
2014-08-29 09:46:43 -04:00
setopt EXTENDED_HISTORY
2015-03-02 11:20:59 -05:00
setopt APPEND_HISTORY SHARE_HISTORY HISTIGNOREALLDUPS
2015-03-25 14:25:22 -04:00
export DISABLE_AUTO_TITLE=true
2014-08-29 09:46:43 -04:00
export EDITOR='vim'
2016-05-22 13:52:20 -04:00
export FZF_COMPLETION_OPTS='--no-mouse -m -1 -x'
2016-01-26 13:47:55 -05:00
# For pasting in commands that start with $
$ () {
$*
}
2016-05-22 13:52:20 -04:00
# A service implementation
2016-04-03 11:18:56 -04:00
sv () {
2016-03-30 13:29:12 -04:00
command="${@: -1}"
while (( $# > 1 )); do
if [[ "$command" == "r" ]]; then
echo "Restarting $1"
sudo service "$1" restart
elif [[ "$command" == "s" ]]; then
echo "Starting $1"
sudo service "$1" start
elif [[ "$command" == "x" ]]; then
echo "Stopping $1"
sudo service "$1" stop
elif [[ "$command" == "i" ]]; then
echo "Status of $1"
service "$1" status
fi
shift
done
}
2016-04-03 11:18:56 -04:00
compdef _services sv
2016-05-22 13:52:20 -04:00
# Run gui application as root by copying xauth credentials
2016-01-26 13:47:55 -05:00
asroot(){
2015-08-21 20:38:19 -04:00
# Use temporary file for added security
TEMPFILE=$(tempfile)
xauth extract $TEMPFILE $DISPLAY
sudo zsh -c "xauth merge $TEMPFILE;(srm $TEMPFILE||rm $TEMPFILE)&'$@';"
}
2016-05-22 02:08:21 -04:00
# De-symlink
2016-01-22 02:47:34 -05:00
dsl() {
while (( $# > 0 )); do
readlink $1 2>&1 >/dev/null && mv $(readlink $1) $1
shift
done
}
2016-05-22 13:52:20 -04:00
# Remove directory by removing subdirectories up a level
2016-01-26 13:47:55 -05:00
dedir(){
2016-05-22 02:08:21 -04:00
chronic rmdir "$1" -v && return
name=$(uuidgen)
# Move it to a random name without clobbering, this prevents things like
# files/files
# From erroring because you can't move files/files to .
chronic mv -n "$1" "$name" || return 5
chronic mv "$name"/*(D) .
chronic rmdir -v "$name"
2016-01-10 16:41:13 -05:00
}
2016-04-14 13:23:57 -04:00
alias afci='git x ./autoformat.sh;git add --all;git commit -m "Autoformatted"'
2016-01-06 08:33:57 -05:00
alias eix="eix -F"
alias mouse1="xmodmap <(echo pointer = 1 2 3)"
alias mouse2="xmodmap <(echo pointer = 3 2 1)"
alias ocp="ocp -vs0 -dcurses"
2015-07-18 18:43:40 -04:00
alias con='git x php app/console'
alias srm='srm -dv'
alias disphost='export DISPLAY=:0.0'
2015-12-09 15:12:43 -05:00
alias ll='ls -AlhF'
alias la='ls -A'
2015-01-16 11:11:49 -05:00
alias l='ls -CF'
alias logout='sudo pkill -u $USER'
alias tmux='tmux -2'
2015-01-20 07:43:44 -05:00
alias less='less -R'
alias tree='tree -C'
alias skim="(head -5; tail -5) <"
2015-09-17 13:21:37 -04:00
alias cp='rsync --partial -ha --info=progress2 "$@"'
alias resource='. ~/.zshrc'
if [ "$(uname)" != "Darwin" ]; then
2015-07-30 03:24:10 -04:00
# Not Mac
2016-05-18 02:56:59 -04:00
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$(readlink -e ~/bin)"
alias ls='ls --color=always -F'
alias matlab='matlab -glnx86'
2016-05-22 13:52:20 -04:00
alias where="readlink -m"
2016-05-18 02:56:59 -04:00
else
2016-05-22 13:52:20 -04:00
# It is a mac
2016-05-18 02:56:59 -04:00
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/bin"
2016-05-22 13:52:20 -04:00
alias where="echo Can't find mac readlink!"
2015-07-30 03:24:10 -04:00
fi
2015-07-31 16:52:21 -04:00
if test -f /etc/gentoo-release; then
# Gentoo
2016-05-22 13:52:20 -04:00
alias etup='sudo etc-update'
2015-07-30 03:24:10 -04:00
ins(){
echo "args: $*"
2016-03-13 22:05:07 -04:00
# Beep, verbose, ask
sudo zsh -c "emerge --autounmask-write -Ava $*"
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
2016-03-19 23:02:25 -04:00
echo sudo emerge "$EMERGE_ARGS""$X"
sudo emerge "$EMERGE_ARGS""$X"
echo "\a"
}
2016-01-26 13:47:55 -05:00
update(){
2015-08-25 10:14:40 -04:00
# If this is a server computer
if [ "$(hostname|cut -b1)" = "S" ] ; then
echo "You're a server. Exiting"
return
2015-08-25 10:14:40 -04:00
fi
cd /usr/portage >/dev/null
sudo zsh -c "git up&&echo Done pulling&&eix-update&&echo Done with eix"
cd ->/dev/null
echo '\a'
2015-08-25 10:14:40 -04:00
}
2016-03-28 12:36:55 -04:00
alias upgrade='sudo emerge --update --newuse --with-bdeps=y --deep --verbose --tree --keep-going=y --verbose-conflicts --alert --ask @world;echo \\a'
2015-07-31 16:52:21 -04:00
elif test -f /etc/lsb-release; then
# Ubuntu
alias install='sudo apt-get --show-progress install'
alias remove='sudo apt-get --show-progress remove'
alias update='sudo apt-get update'
alias upgrade='sudo apt-get --show-progress upgrade'
alias autoremove='sudo apt-get --show-progress autoremove'
alias updateall='sudo sh -c "apt-get update;apt-get upgrade -y;apt-get dist-upgrade -y;apt-get autoremove -y"'
2016-05-22 13:52:20 -04:00
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 ../../../../../../../../../../../../../..'
alias ytdl="youtube-dl $@ -x --audio-format mp3 --audio-quality 0 -c -o '%(title)s.%(ext)s'"
alias tux="wemux"
2016-05-22 13:52:20 -04:00
alias g="git"
2015-04-18 23:12:55 -04:00
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\""
2014-09-28 11:45:17 -04:00
alias fk='k `fzf --no-mouse -m -1 -x`'
2015-09-17 13:21:37 -04:00
alias susp="sudo true&&(slock&echo mem | sudo tee /sys/power/state >/dev/null)"
2016-04-21 14:09:55 -04:00
alias -g PA='2>&1 | paste'
alias s='sudo -Hu'
2016-05-22 13:52:20 -04:00
alias -g c='rsync --partial -ha --info=progress2 "$@"'
alias -g cfat='rsync --partial -hrlc --info=progress2 "$@"'
alias -g nify=" > /dev/null 2>&1 &"
alias -g nifyd=" > /dev/null 2>&1 & disown"
alias -g L="2>&1|less"
alias -g G='|& ag'
fixsh(){
sed -i -e $1"d" ~/.ssh/known_hosts
}
mv() { /bin/mv -v "$@" }
m() { mv "$@" }
compdef _cp c cfat m mv cp
paste() {
2016-05-26 18:58:40 -04:00
NAME="-d title=Command run at $(date '+%d/%h/%y %H:%M:%S')"
if [[ ! -z "$1" ]]; then
NAME="-d title=$1"
fi
2016-05-22 22:02:04 -04:00
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" https://austenwares.com/paste/api/create
}
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'
}
apush(){
adb push $* & pv -d $!
}
2016-03-28 12:36:55 -04:00
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
2015-02-23 13:12:42 -05:00
}
2016-03-28 12:36:55 -04:00
ctar(){
tar -cf - $@|pv -WcN tar|gzip|pv -WcN gzip
}
2016-01-26 13:47:55 -05:00
offline(){
2016-01-21 12:20:18 -05:00
if [ ! -z "$@" ] ; then
sudo unshare -n -- sudo -u stonewareslord zsh -c "$@"
else
2016-01-22 13:47:57 -05:00
sudo unshare -n -- sudo -u stonewareslord LP_MARK_PREFIX=" $(tput setaf 1)(offline)$(tput sgr0) " zsh
2016-01-21 12:20:18 -05:00
fi
}
2016-01-26 13:47:55 -05:00
dnstest(){
echo "resolv.conf:"
cat /etc/resolv.conf
echo "Testing DNS:"
dig google.com
2014-08-29 09:46:43 -04:00
echo "Testing ping:"
ping -c 2 8.8.8.8
2014-08-29 09:46:43 -04:00
echo "Testing IP curl:"
curl -k http://98.26.78.121/b/
echo
2014-08-29 09:46:43 -04:00
echo "Testing DNS"
2014-09-20 23:09:10 -04:00
curl ifconfig.me
2014-08-29 09:46:43 -04:00
}
2016-01-26 13:47:55 -05:00
tsh(){
2016-02-21 13:50:30 -05:00
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
}
2016-05-22 01:15:43 -04:00
compdefas () {
local a
a="$1"
shift
compdef "$_comps[$a]" "${(@)*}=$a"
}
compdefas ssh tsh
compdefas mv m mv
2016-01-26 13:47:55 -05:00
mcl(){
2015-07-22 16:28:39 -04:00
mkdir -p $1
2015-06-10 17:01:47 -04:00
cd $1
}
create-repo(){
PRIVATE="true"
while getopts ":p" opt; do
case $opt in
p)
echo "-p was used, making public"
PRIVATE="false"
shift
;;
\?)
echo "Usage: create-repo [-p] name" >&2
return 1
;;
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://austenwares.com/gogs/api/v1/user/repos
}
2016-01-26 13:47:55 -05:00
rc(){
2015-08-18 18:38:07 -04:00
case $1 in
z) vim ~/.zshrc;;
v) vim ~/.vimrc;;
i) vim ~/.i3/config;;
2015-08-23 11:44:31 -04:00
use) sudo vim /etc/portage/package.use/package.use;;
make) sudo vim /etc/portage/make.conf;;
2016-02-08 10:48:11 -05:00
unmask) sudo vim /etc/portage/package.unmask/package.unmask;;
2015-08-23 11:44:31 -04:00
mask) sudo vim /etc/portage/package.mask/package.mask;;
accept_keywords) sudo vim /etc/portage/package.accept_keywords/package.accept_keywords;;
2016-02-05 00:18:49 -05:00
license) sudo vim /etc/portage/package.license/package.license;;
2016-02-14 13:55:10 -05:00
*) echo "Opts:\nz v i\nuse make unmask mask accept_keywords license"
2015-08-23 11:44:31 -04:00
esac
}
2016-01-26 13:47:55 -05:00
pub-git-init(){
2015-12-29 23:51:16 -05:00
# Get the project name
2015-12-31 12:55:30 -05:00
branch=$(git remote -v | ag '^origin\s+' | sed -e 's/^origin\s*//' | cut -d\ -f1 | sed -r -e 's/^.+\///' -e 's/#.+$//' -e 's/\.git$//' | head -n1)
echo "Branch: $branch"
2015-12-29 23:51:16 -05:00
# Get the hashed project name
2015-12-31 12:55:30 -05:00
enc_branch=$(echo "$branch" | sha512sum | cut -d\ -f1)
git remote add local "gcrypt::git@localhost:stonewareslord/79a79b1a6e37813d9226872c6428aca29eec9f6111558109861cb0dcd2f0ffc8198deea4e361f84e170989212452fdfb21e0ef690da2ad399c03ce308d79dcfe#$enc_branch"
2015-12-29 23:51:16 -05:00
git remote add ncsu "gcrypt::git@github.ncsu.edu:agadler/a86a0f8757772be2ec617b395a0716679bfce51c1bfdeb8da6127feebd84facde645e9e30188318344eb458f5834e3d86800.git#$enc_branch"
git remote add gitlab "gcrypt::git@gitlab.com:stonewareslord/e6e03ea006d55de0970a28bcb7fcf65f4c66f98f50830bd69b50c5dc502bdf1a4e4172187cfb5fcef8c32bd7fb316bdc67d7d86713ebfe232f97eb303ac316ae.git#$enc_branch"
2016-01-28 16:44:03 -05:00
git remote add aws "gcrypt::git@aws:stonewareslord/5e0701d5b5b2118127d378c084be9a1dfb33d185d3e2c5da30a3984f5118e3d5136f3f3b038462bccd538e93f9e32cb06136.git#$enc_branch"
2015-08-24 17:43:29 -04:00
git config remote.ncsu.gcrypt-participants "CCDFE3F1"
2015-12-29 23:51:16 -05:00
git config remote.gitlab.gcrypt-participants "CCDFE3F1"
2015-08-24 17:43:29 -04:00
}
2016-01-26 13:47:55 -05:00
pub-git-rm(){
2016-01-03 19:17:50 -05:00
if (( $# == 0 )) ; then
2015-12-31 12:55:30 -05:00
git remote rm local
git remote rm ncsu
git remote rm gitlab
2016-01-28 16:44:03 -05:00
git remote rm aws
2015-12-31 12:55:30 -05:00
fi
while (( $# > 0 )) ; do
git remote rm "$1"
shift
done
}
2016-01-26 13:47:55 -05:00
pub-git-push(){
2015-12-31 13:02:45 -05:00
if (( $# == 0 )) ; then
2015-12-31 12:55:30 -05:00
git push local --all && git push local --tags
git push ncsu --all && git push ncsu --tags
git push gitlab --all && git push gitlab --tags
2016-01-28 16:44:03 -05:00
git push aws --all && git push aws --tags
2015-12-31 12:55:30 -05:00
fi
while (( $# > 0 )) ; do
git push "$1" --all && git push "$1" --tags
shift
done
}
2016-01-26 13:47:55 -05:00
pub-git-clone(){
2015-12-29 23:51:16 -05:00
case $1 in
ncsu) remote="gcrypt::git@github.ncsu.edu:agadler/a86a0f8757772be2ec617b395a0716679bfce51c1bfdeb8da6127feebd84facde645e9e30188318344eb458f5834e3d86800.git#" ;;
gitlab) remote="gcrypt::git@gitlab.com:stonewareslord/e6e03ea006d55de0970a28bcb7fcf65f4c66f98f50830bd69b50c5dc502bdf1a4e4172187cfb5fcef8c32bd7fb316bdc67d7d86713ebfe232f97eb303ac316ae.git#" ;;
2015-12-31 12:55:30 -05:00
local) remote="gcrypt::git@localhost:stonewareslord/79a79b1a6e37813d9226872c6428aca29eec9f6111558109861cb0dcd2f0ffc8198deea4e361f84e170989212452fdfb21e0ef690da2ad399c03ce308d79dcfe#" ;;
2016-01-28 16:44:03 -05:00
aws) remote="gcrypt::git@aws:stonewareslord/5e0701d5b5b2118127d378c084be9a1dfb33d185d3e2c5da30a3984f5118e3d5136f3f3b038462bccd538e93f9e32cb06136.git#" ;;
2015-12-31 12:55:30 -05:00
*) echo "Opts: local ncsu gitlab" ; return 1
2015-12-29 23:51:16 -05:00
esac
shift
if [ -z "$1" ] ; then
echo "No arg2"
return 2
fi
2015-08-24 17:43:29 -04:00
branch=$(echo $1 | sha512sum | cut -d\ -f1)
2015-12-29 23:51:16 -05:00
git clone "$remote$branch" $1
2015-08-24 17:43:29 -04:00
}
2016-01-26 13:47:55 -05:00
k(){
2015-06-10 17:01:47 -04:00
#More than 1 arguement
if [[ $# > 1 ]] ; then
2015-06-10 17:01:47 -04:00
vim $@
elif [ -d "$@" ] ; then
#cd then ls
cd "$@" && ls
2014-08-11 15:14:46 -04:00
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
2015-08-23 12:38:10 -04:00
*.tar.xz) pv $1|tar -xJf - ;;
2016-05-22 13:52:20 -04:00
*.txz) pv $1|tar -xJf - ;;
2015-08-23 12:38:10 -04:00
*.tar.bz2) pv $1|tar -xjf - ;;
*.tar.gz) pv $1|tar -xzf - ;;
*.tar) pv $1|tar -xf - ;;
*.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) rar x $1 ;;
*.gz) gunzip $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*.lrz) lrzuntar $1 ;;
*) vim $1
esac
else
2015-06-10 17:01:47 -04:00
#Edit with vim
echo -n "vim? "
read a
2015-06-10 17:01:47 -04:00
vim "$@"
fi
}
2015-09-04 23:59:33 -04:00
# To resize,
# :%S/\[([# ]{9})\]/[\1 ]
2015-12-08 18:26:30 -05:00
echo -ne '[# ]\r'
2016-05-22 13:52:20 -04:00
antigen bundle https://austenwares.com/gogs/stonewareslord/omg
2015-12-08 18:26:30 -05:00
echo -ne '[## ]\r'
2016-05-22 13:52:20 -04:00
antigen theme https://austenwares.com/gogs/stonewareslord/oh-my-git-themes af-magic
2015-12-08 18:26:30 -05:00
echo -ne '[### ]\r'
2016-05-22 13:52:20 -04:00
antigen bundle https://austenwares.com/gogs/stonewareslord/lpr
2015-12-08 18:26:30 -05:00
echo -ne '[#### ]\r'
2015-06-01 14:41:41 -04:00
antigen bundle zsh-users/zsh-syntax-highlighting
2015-12-08 18:26:30 -05:00
echo -ne '[##### ]\r'
2015-06-01 14:41:41 -04:00
antigen apply
2015-12-08 18:26:30 -05:00
echo -ne '[######]\r'
2015-09-04 14:20:08 -04:00
echo
2015-12-31 12:55:30 -05:00
# OPAM configuration
. /home/stonewareslord/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true
2016-01-28 16:44:03 -05:00
(( $+TMUX )) && unset zle_bracketed_paste
2016-02-05 00:18:49 -05:00
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
2016-05-22 13:52:20 -04:00
#Old config options that are no longer in use
#alias cpatch='diff -crB'
#alias capatch='patch --dry-run -p1 -i'
#alias apatch='patch -p1 -i'
#alias pg="pcregrep -M"
#if command -v greadlink 2>&1 >/dev/null; then
# alias readlink='greadlink'
#fi
#alias dumpx="xauth extract /tmp/xauthstuff $DISPLAY"
#alias impx="xauth merge /tmp/xauthstuff;rm /tmp/xauthstuff"
#alias sudo='sudo '
#rsh(){
# if [ -z $1 ] ; then
# echo "Valid hostnames:"
# cat /home/stonewareslord/syncthing/shared/ips
# return 1
# fi
# ADDR=$(cat /home/stonewareslord/syncthing/shared/ips | sed -rne "s/^$1: //pi")
# shift
# if [ -z $ADDR ] ; then
# echo "Hostname not found"
# return 2
# fi
# echo "SSH to $ADDR..."
# tsh $ADDR $*
#}
#alias dt='date "+%F %T"'
#alias awake='disphost; while true; do xdotool mousemove 0 0; sleep 60; done'
#alias adk='/home/stonewareslord/Applications/adk/bin/studio.sh & disown'
#alias steamo='sudo kill -9 `pidof steam`;sudo unshare -n -- sh -c "ifconfig lo up;sudo -u stonewareslord steam" > /dev/null 2>&1 & disown'
#alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"'
#alias fkill='ps -ef | sed 1d | fzf --no-mouse -m -1 -x | awk "{print $2}" | xargs kill -${1:-9}'
#alias aoeu='setxkbmap -layout us -option "'
#alias asdf='setxkbmap -layout dvorak -option ""'
#alias sudo='sudo -H'
#smon(){
# timeout 1s pdsh -R ssh -w 10.0.1.196,10.0.1.207 "$@"
#}