Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

179 lines
4.3 KiB

#!/usr/bin/zsh
count() {
echo -n $1 | wc -c
}
dec() {
echo "obase=10; ibase=16; $(echo "$1" | tr a-z A-Z)" | bc
}
hex() {
echo "obase=16; ibase=10; $1" | bc
}
colors() {
color=1;
count=0;
space=" ";
while [ $color -lt 256 ]; do
if [[ $color == 10 ]]
then
space=" "
fi
if [[ $color == 100 ]]
then
space=" "
fi
echo -en "$color:$space\\033[38;5;${color}myeet\\033[48;5;${color}mworld\\033[0m"
echo -n " "
if [[ $count == 7 ]]
then
echo -en "\n";
count=-1
fi
((color++));
((count++))
done
echo ""
}
# TMATE Functions
TMATE_PAIR_NAME="$(whoami)-pair"
TMATE_SOCKET_LOCATION="$XDG_RUNTIME_DIR/tmate-pair.sock"
TMATE_TMUX_SESSION="$XDG_RUNTIME_DIR/tmate-tmux-session"
# Get current tmate connection url
tmate-url() {
url="$(tmate -S $TMATE_SOCKET_LOCATION display -p '#{tmate_ssh}')"
echo "$url" | tr -d '\n' | xclip -selection clipboard
echo "Copied tmate url for $TMATE_PAIR_NAME:"
echo "$url"
}
# Get current tmate connection url
tmate-url-ro() {
url="$(tmate -S $TMATE_SOCKET_LOCATION display -p '#{tmate_ssh_ro}')"
echo "$url" | tr -d '\n' | xclip -selection clipboard
echo "Copied tmate url for $TMATE_PAIR_NAME:"
echo "$url"
}
# Start a new tmate pair session if one doesn't already exist
# If creating a new session, the first argument can be an existing TMUX session to connect to automatically
tmate-attach() {
if [ -n "$1" ]; then
tmux has-session -t $1 2>/dev/null
if [ $? != 0 ]; then
echo "Tmux session not found... Creating"
tmux new-session -d -s $1
sleep 1
fi
echo "Attaching tmate to tmux session $1";
echo $1 > $TMATE_TMUX_SESSION
tmate -S "$TMATE_SOCKET_LOCATION" send -t "$TMATE_PAIR_NAME" "TMUX='' tmux attach-session -t $1; tmate-unpair" ENTER
fi
}
tmate-pair() {
if [ -z "$(pass show "AppPass/tmate.com/api-key")" ]; then
echo "You need an api key."
return
fi
if [ ! -e "$TMATE_SOCKET_LOCATION" ]; then
tmate -k $(pass show "AppPass/tmate.com/api-key") -r "sharedProgramming" -S "$TMATE_SOCKET_LOCATION" -f "$HOME/.tmate.conf" new-session -d -s "$TMATE_PAIR_NAME"
tmate -S $TMATE_SOCKET_LOCATION display -p '#{tmate_ssh_ro}'
while [ -z "$url" ]; do
url="$(tmate -S $TMATE_SOCKET_LOCATION display -p '#{tmate_ssh_ro}')"
done
echo "$url" | tr -d '\n' | xclip -selection clipboard
echo "Copied tmate url for $TMATE_PAIR_NAME:"
echo "$url"
tmate -S "$TMATE_SOCKET_LOCATION" send -t "$TMATE_PAIR_NAME" "q" ENTER
sleep 1
tmate-attach $1
sleep 2
fi
tmate -S "$TMATE_SOCKET_LOCATION" attach-session -t "$TMATE_PAIR_NAME"
}
# Colored man
man() {
LESS_TERMCAP_md=$'\e[01;31m' \
LESS_TERMCAP_me=$'\e[0m' \
LESS_TERMCAP_so=$'\e[01;44;33m' \
LESS_TERMCAP_se=$'\e[0m' \
LESS_TERMCAP_us=$'\e[01;32m' \
LESS_TERMCAP_ue=$'\e[0m' \
command man "$@"
}
genccls() {
cat > .ccls << EOF
-I
../include
-I
../vendor/include
-std=c++14
-stdlib=libc++
-fPIC
EOF
}
# Close the pair because security
tmate-unpair() {
if [ -e "$TMATE_SOCKET_LOCATION" ]; then
if [ -e "$TMATE_SOCKET_LOCATION" ]; then
tmux detach -s $(cat $TMATE_TMUX_SESSION)
rm -f $TMATE_TMUX_SESSION
fi
tmate -S "$TMATE_SOCKET_LOCATION" kill-session -t "$TMATE_PAIR_NAME"
echo "Killed session $TMATE_PAIR_NAME"
else
echo "Session already killed"
fi
}
transfer() {
curl --upload-file "$1" "https://transfer.sh/$1"
}
rawurlencode() {
local string="${1}:$(cat -)"
local strlen=${#string}
local encoded=""
local pos c o
for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}" # You can either set a return variable (FASTER)
REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
}
rawurldecode() {
printf -v REPLY '%b' "${1//%/\\x}" # You can either set a return variable (FASTER)
echo "${REPLY}" #+or echo the result (EASIER)... or both... :p
}
pdfcomp(){
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${2}" "${1}"
}