193 lines
5.1 KiB
Bash
193 lines
5.1 KiB
Bash
#!/bin/bash
|
|
|
|
# aliases common to bash and zsh
|
|
|
|
# shellcheck source=../../secrets
|
|
source /home/*/setup-cockpit/secrets
|
|
alias lime2connect='ssh $SSH_REPO'
|
|
|
|
# TALISMAN
|
|
export TALISMAN_HOME="$HOME/.talisman/bin"
|
|
alias talisman=$TALISMAN_HOME/talisman_linux_amd64
|
|
export TALISMAN_INTERACTIVE=true
|
|
|
|
# color support
|
|
if [ -x /usr/bin/dircolors ]; then
|
|
if [ -r ~/.dircolors ]; then
|
|
eval "$(dircolors -b ~/.dircolors)"
|
|
else
|
|
eval "$(dircolors -b)"
|
|
fi
|
|
alias ls='ls --color=auto'
|
|
alias grep='grep --color=auto'
|
|
alias fgrep='fgrep --color=auto'
|
|
alias egrep='egrep --color=auto'
|
|
alias diff='diff --color=auto'
|
|
alias ip='ip --color=auto'
|
|
fi
|
|
|
|
alias rm='rm -I --preserve-root'
|
|
|
|
# Add an "alert" alias for long running commands. Use like so:
|
|
# sleep 10; alert
|
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
|
|
|
alias weather='curl wttr.in'
|
|
|
|
alias ll='ls -lh'
|
|
alias lla='ls -lArth'
|
|
alias la='ls -A'
|
|
alias l='ls -CF'
|
|
|
|
alias envactivate='source .env/bin/activate'
|
|
alias visudo='export EDITOR=$EDITOR && sudo -E visudo'
|
|
|
|
if [ -x /usr/bin/nvim ]; then
|
|
alias vim='nvim'
|
|
fi
|
|
|
|
# "fuzzy" open a file
|
|
fvim() {
|
|
if [ -x /usr/bin/nvim ]; then
|
|
find . -name "$1" -exec /usr/bin/nvim {} \;
|
|
else
|
|
find . -name "$1" -exec /usr/bin/vim {} \;
|
|
fi
|
|
}
|
|
|
|
# For common errors
|
|
alias :q=' exit'
|
|
alias :x=' exit'
|
|
alias cd..='cd ..'
|
|
|
|
pw() {
|
|
export PASSWORD_STORE_CLIP_TIME=8
|
|
pass -c2 "$1"; sleep 5; pass -c3 "$1"; sleep 5; pass -c "$1"
|
|
unset PASSWORD_STORE_CLIP_TIME
|
|
}
|
|
|
|
clitip() {
|
|
curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
|
|
sed '/cowsay[.]png/d' |
|
|
pandoc -f markdown -t html |
|
|
xmlstarlet fo --html --dropdtd |
|
|
xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
|
|
xmlstarlet unesc | fmt -80 | iconv -t US
|
|
}
|
|
|
|
system-update() {
|
|
# Don't update if its a kernel update that will require reboot
|
|
if checkupdates >/dev/null 2>&1; then
|
|
case "$(checkupdates | grep linux && echo)" in
|
|
*linux*)
|
|
echo "Not performing update"
|
|
;;
|
|
*)
|
|
sudo pacman -Syu
|
|
esac
|
|
fi
|
|
}
|
|
|
|
aur-update() {
|
|
local start_dir="$PWD"
|
|
local aur_packages=($(find ~/builds -name .git -type d -exec dirname {} \;))
|
|
for repo in "${aur_packages[@]}"; do
|
|
cd && cd "$repo" && git fetch -q
|
|
local unpulled=$(git log --pretty=format:'%h' '..@{u}' | wc -c)
|
|
if [ "$unpulled" -eq 0 ]; then
|
|
echo "$(basename "$repo") is up to date"
|
|
else
|
|
git pull && git log --no-merges --oneline --stat '@{1}..' -p
|
|
echo -n "Update $repo? [y/N] "
|
|
read -r answer
|
|
if [ ! "$answer" = 'y' ]; then
|
|
continue
|
|
else
|
|
makepkg -cirs
|
|
fi
|
|
fi
|
|
done
|
|
cd "$start_dir" || exit 1
|
|
}
|
|
|
|
git-pull-from-repos() {
|
|
local start_dir="$PWD"
|
|
local git_repos=($(find ~ -name .git -type d -not -path '*/.vim/*' -and -not -path '*/.local/*' -and -not -path '*/builds/*' -exec dirname {} \;))
|
|
for repo in "${git_repos[@]}"; do
|
|
echo "Pulling from $repo..."
|
|
cd "$repo" && git pull
|
|
done
|
|
cd "$start_dir" || exit 1
|
|
}
|
|
|
|
git-check-unpushed() {
|
|
local start_dir="$PWD"
|
|
local unpushed_repos='false'
|
|
local git_repos=($(find ~ -name .git -type d -not -path '*/.vim/*' -and -not -path '*/.local/*' -and -not -path '*/builds/*' -exec dirname {} \;))
|
|
for repo in "${git_repos[@]}"; do
|
|
cd "$repo" || exit 1
|
|
local unpushed=$(git log --pretty=format:'%h' '@{u}..' 2>/dev/null | wc -c)
|
|
if [ "$unpushed" -ne 0 ]; then
|
|
echo "Unpushed changes in $repo"
|
|
local unpushed_repos='true'
|
|
fi
|
|
done
|
|
cd "$start_dir" || exit 1
|
|
if [ "$unpushed_repos" = 'true' ]; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
hello() {
|
|
if command -v protonvpn >/dev/null 2>&1; then
|
|
sudo protonvpn c --cc NL
|
|
fi
|
|
system-update
|
|
|
|
echo -n "Do you want to pull from you git repos? [y/N] "
|
|
local answer
|
|
read -r answer
|
|
case "$answer" in
|
|
y)
|
|
git-pull-from-repos
|
|
;;
|
|
*)
|
|
echo "Not pulling from git repos."
|
|
esac
|
|
}
|
|
|
|
bye() {
|
|
git-check-unpushed || return 1
|
|
if command -v protonvpn >/dev/null 2>&1; then
|
|
sudo protonvpn d
|
|
fi
|
|
sudo shutdown now
|
|
}
|
|
|
|
alias reboot='sudo protonvpn d; sudo reboot'
|
|
|
|
# Open a map with location after using whois
|
|
whois-firefox() {
|
|
mkfifo pipe; cat pipe &
|
|
coords=$(whois "$1" | tee pipe | grep geoloc | sed -r 's/^geoloc:\s+//' | sort | uniq)
|
|
slash_coords=${coords// /\/}
|
|
firefox "https://osm.org/search?query=$coords#map=16/$slash_coords"
|
|
rm pipe
|
|
}
|
|
|
|
# Search the Arch Wiki
|
|
aw() {
|
|
firefox "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search=$1" &
|
|
}
|
|
|
|
# Search Arch Packages
|
|
pkg() {
|
|
firefox "https://www.archlinux.org/packages/?sort=&maintainer=&flagged=&q=$1" &
|
|
}
|
|
|
|
# Search AUR Packages
|
|
aur() {
|
|
firefox "https://aur.archlinux.org/packages/?O=0&SeB=nd&outdated=&SB=n&SO=a&PP=50&K=$*" &
|
|
}
|