summaryrefslogtreecommitdiff
path: root/config/essentials/zsh
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2023-08-30 08:23:45 +0200
committerRaymaekers Luca <raymaekers.luca@gmail.com>2023-08-30 08:23:45 +0200
commit3f8594ee04d2a3d9b40a259daf3b564a53b510fa (patch)
tree66ed50643cdc81af813b5771a99732d0f78bb618 /config/essentials/zsh
parent45d39ae0c67bb086f4df0c366b251e06c888408d (diff)
parent333aaf38c66a1e4ba41d3acea38b21613c0075b2 (diff)
Merge branch 'main' of db:dotfiles
Diffstat (limited to 'config/essentials/zsh')
-rw-r--r--config/essentials/zsh/.zshrc12
-rw-r--r--config/essentials/zsh/aliases.sh81
-rw-r--r--config/essentials/zsh/functions.zsh145
3 files changed, 120 insertions, 118 deletions
diff --git a/config/essentials/zsh/.zshrc b/config/essentials/zsh/.zshrc
index d8675d4..eeb4439 100644
--- a/config/essentials/zsh/.zshrc
+++ b/config/essentials/zsh/.zshrc
@@ -5,9 +5,9 @@ then
clear
if [ "/dev/tty1" = "$TTY" ]
then
- startw > /dev/null 2>&1
+ exec startw > /dev/null 2>&1
else
- startx > /dev/null 2>&1
+ exec startx > /dev/null 2>&1
fi
exit
fi
@@ -89,7 +89,7 @@ rehash_precmd() {
# window title hooks
add-zsh-hook -Uz precmd rehash_precmd
set_wt_action () {
- print -Pn '\e]0;$1\a'
+ print -Pn "\e]0;$1\a\033[0m"
}
add-zsh-hook -Uz preexec set_wt_action
set_wt () {
@@ -121,13 +121,13 @@ RPROMPT='%F{blue}$(parse_git_remote)%f%F{red}$(parse_git_status)%f%F{green}$(par
setopt prompt_subst
parse_git_remote() {
- b="$(git branch -v 2> /dev/null | grep "^*" | sed 's/.\+\[\([^ ]\+\).*$/\1/')"
+ b="$(git branch -v 2>/dev/null | grep "^*" | cut -f2 -d'[' | cut -f1 -d' ')"
if [ "$b" = "behind" ]
then
- echo -n "↓ "
+ printf "↓ "
elif [ "$b" = "ahead" ]
then
- echo -n "↑ "
+ printf "↑ "
fi
}
parse_git_branch() {
diff --git a/config/essentials/zsh/aliases.sh b/config/essentials/zsh/aliases.sh
index 6df28e3..6ac39d5 100644
--- a/config/essentials/zsh/aliases.sh
+++ b/config/essentials/zsh/aliases.sh
@@ -5,9 +5,6 @@
if [ $SHELL = "/bin/zsh" ]
then
# googoo aliases
- alias o.='o .'
- alias go.='go .'
- alias ogo.='ogo .'
alias o/='o /'
alias o/s='o /srv'
alias go/='go /'
@@ -15,6 +12,8 @@ then
alias ogo/='ogo /'
alias ogo/s='ogo /srv'
+ alias calc='bc <<<'
+
if [ "$WAYLAND_DISPLAY" ]
then
alias -g clipp='wl-copy -n'
@@ -40,6 +39,7 @@ fi
if grep -qi "debian\|ubuntu" /etc/os-release 2> /dev/null
then
alias aptup='apt update && apt upgrade -y'
+ alias ufwd='echo y | ufw delete "$(ufw status numbered | tail -n +5 | fzf | cut -f2 -d'\''['\'' | cut -f1 -d'\'']'\'')" > /dev/null 2>&1 && >&2 echo "deleted."'
fi
# Programs
@@ -128,12 +128,9 @@ alias xrandr-default='xrandr --auto --output VGA-1 --mode 1920x1080 --left-of HD
alias d='du -d 0 -h'
alias dud='du .* * -d 0 -h 2>/dev/null | sort -h'
alias df='df -h'
+alias diff='diff -u --color'
alias shred='shred -uz'
alias lsblk='lsblk -o name,type,fsused,fsavail,size,fstype,label,mountpoint'
-alias floc='doas find / -type "f" 2> /dev/null | grep'
-alias dloc='doas find / -type "d" 2> /dev/null | grep'
-alias fif='find . -type "f" | grep'
-alias fid='find . -type "d" | grep'
alias sxt='sxiv -t'
alias wgsh='wget --quiet --show-progress'
alias wgc='wgsh "$(clipo)"'
@@ -144,7 +141,6 @@ alias mdbwa='mariadb -h 10.3.50.5 -u padmin -pbulbizarre padmindb'
# ssh
alias sha='ssh-add'
alias sshs='eval "$(ssh-agent)" && ssh-add'
-
alias vidlen='ffprobe -show_entries format=duration -v quiet -of csv="p=0" -i'
alias whatsmyip='curl -s "ifconfig.co"'
alias icognito='unset HISTFILE'
@@ -173,16 +169,17 @@ alias kll='killall'
alias pi='ping archlinux.org -c4'
alias sba='source env/bin/activate || source bin/activate'
alias smc='systemctl'
-alias ssc='doas systemctl'
+alias dsmc='doas systemctl'
alias smcu='smc --user'
-alias zsr='source ${ZDOTDIR:-$HOME}/.zshrc && rehash'
+alias zsr='source ${ZDOTDIR:-~}/.zshrc && rehash'
alias rh='rehash'
alias wf='doas wipefs -a'
alias dmci="doas make clean install"
alias rmd='rm -f *.{orig,rej}'
alias cdzot='mkdir -p /tmp/zottesite && cd /tmp/zottesite'
-alias gdate="date +%y%m%d_%H%M%S"
+alias gdate='date +%y_%m_%d-%T'
alias tpid='tail -f /dev/null --pid'
+alias pwdcp='pwd | clipp'
alias vbm='vboxmanage'
alias vbls='vbm list vms'
@@ -190,7 +187,7 @@ alias vblsr='vbm list runningvms'
alias vb='vbm startvm'
# quick config
-alias ez='$EDITOR ${ZDOTDIR:-$HOME}/.zshrc'
+alias ez='$EDITOR ${ZDOTDIR:-~}/.zshrc'
alias eza='$EDITOR ${ZDOTDIR}/aliases.sh'
alias ezf='$EDITOR ${ZDOTDIR}/functions.zsh'
alias eto='$EDITOR ~/sync/TODO'
@@ -202,43 +199,48 @@ alias est='$EDITOR ~/proj/suckless/st/config.def.h'
alias esl='$EDITOR ~/proj/suckless/slock/config.def.h'
alias esls='$EDITOR ~/proj/suckless/slstatus/config.def.h'
alias ehy='$EDITOR ~/.config/hypr/hyprland.conf'
+alias ewbj='$EDITOR ~/src/dotfiles/config/hyprland/waybar/config.jsonc'
+alias ewbs='$EDITOR ~/src/dotfiles/config/hyprland/waybar/style.css'
alias cfd='$EDITOR config.def.h'
# /# quick cd jV}k:!sort -t "'" -k 2
-alias cdl='cd $HOME/dl'
-alias cdoc='cd $HOME/docs'
-alias cda='cd $HOME/docs/android/projects'
-alias cdm='cd $HOME/music'
-alias cdp='cd $HOME/pics'
-alias cdpa='cd $HOME/pics/ai-outputs/'
-alias cdpp='cd $HOME/proj/personal/'
-alias chom='cd $HOME/proj/personal/homepage'
-alias lov='cd $HOME/proj/personal/lola'
-alias cdsw='cd $HOME/proj/personal/WheelAdvisor'
-alias cddm='cd $HOME/proj/suckless/dmenu'
-alias cdw='cd $HOME/proj/suckless/dwm'
-alias cdslo='cd $HOME/proj/suckless/slock'
-alias cdsl='cd $HOME/proj/suckless/slstatus'
-alias cdst='cd $HOME/proj/suckless/st'
-alias cdsta='cd $HOME/proj/suckless/stable-diffusion-webui'
-alias cdsu='cd $HOME/proj/suckless/surf'
-alias cds='cd $HOME/src/'
-alias cdsb='cd $HOME/src/build'
-alias cdsc='cd $HOME/src/comfyui/'
-alias cdo='cd $HOME/src/dotfiles'
-alias cdi='cd $HOME/src/installdrier'
-alias cdia='cd $HOME/src/installdrier/arch'
-alias cdib='cd $HOME/src/installdrier/deb'
-alias czo='cd $HOME/zot/'
-alias cdpw='cd ${PASSWORD_STORE_DIR:-$HOME/.password-store}'
+alias cdl='cd ~/dl'
+alias cdoc='cd ~/docs'
+alias cda='cd ~/docs/android/projects'
+alias cdm='cd ~/music'
+alias cdp='cd ~/pics'
+alias cdpa='cd ~/pics/ai-outputs/'
+alias cdpp='cd ~/proj/personal/'
+alias chom='cd ~/proj/personal/homepage'
+alias lov='cd ~/proj/personal/lola'
+alias cdsh='~/proj/personal/scheduler'
+alias cdsw='cd ~/proj/personal/WheelAdvisor'
+alias cddm='cd ~/proj/suckless/dmenu'
+alias cdw='cd ~/proj/suckless/dwm'
+alias cdslo='cd ~/proj/suckless/slock'
+alias cdsl='cd ~/proj/suckless/slstatus'
+alias cdst='cd ~/proj/suckless/st'
+alias cdsta='cd ~/proj/suckless/stable-diffusion-webui'
+alias cdsu='cd ~/proj/suckless/surf'
+alias cds='cd ~/src/'
+alias cdsb='cd ~/src/build'
+alias cdsc='cd ~/src/comfyui/'
+alias cdo='cd ~/src/dotfiles'
+alias cdi='cd ~/src/installdrier'
+alias cdia='cd ~/src/installdrier/arch'
+alias cdib='cd ~/src/installdrier/deb'
+alias czo='cd ~/zot/'
+alias cdpw='cd ${PASSWORD_STORE_DIR:-~/.password-store}'
alias cdng='cd /etc/nginx'
alias cdrs='cd /srv/'
# fzf aliases
+alias ppj='cd ~/proj/personal/"$(find ~/proj/personal -mindepth 1 -maxdepth 1 -type d -printf "%f\n"| fzf)"'
+alias cfg='find -L ~/src/dotfiles -type f | fzf | xargs -r $EDITOR'
alias fzps='ps aux | tail +2 | fzf | tee /dev/stderr | awk '\''{print $2}'\'' | clipp'
alias asf='alias | fzf'
alias fzh="tac $HISTFILE | fzf | tee /dev/stderr | clipp"
alias ffwin='hyprctl clients -j | jq '\''.[].pid'\'' | fzf --preview "hyprctl clients -j | jq '\''.[] | select(.pid == {}) | {class, title, workspace, xwayland}'\''"'
-alias pff='find ${PASSWORD_STORE_DIR:=$HOME/src/password-store/} -name "*.gpg" | sed -e "s@$PASSWORD_STORE_DIR/@@" -e '\''s/\.gpg$//'\'' | fzf | xargs pass show -c'
+alias pff='find ${PASSWORD_STORE_DIR:=~/src/password-store/} -name "*.gpg" | sed -e "s@$PASSWORD_STORE_DIR/@@" -e '\''s/\.gpg$//'\'' | fzf | xargs pass show -c'
alias fzps='fzf --print0 | xargs -0I{}'
alias dcb='docker build'
@@ -254,7 +256,6 @@ alias dbinf='ssh db dlinfo'
alias sshdb='ssh -t db tmux a'
alias dbsmu='rsync -aPz db:/media/basilisk/music/ /media/kilimanjaro/music'
-alias cfg='git --git-dir=$HOME/src/dotfiles/.git --work-tree=$HOME/src/dotfiles'
# oh-my-zsh git aliases
alias g='git'
alias ga='git add'
diff --git a/config/essentials/zsh/functions.zsh b/config/essentials/zsh/functions.zsh
index 671e6fb..22a8fbe 100644
--- a/config/essentials/zsh/functions.zsh
+++ b/config/essentials/zsh/functions.zsh
@@ -1,28 +1,19 @@
#!/bin/zsh
-die ()
-{
- echo "$@" >&2
-}
-
-awnk() {
- awk "{print \$$1}"
-}
+log() { >&2 printf '%s' "$@"; }
+logn() { >&2 printf '%s\n' "$@"; }
vmp() {
col -b | \
vim -MR \
-c 'set ft=man nolist nonu nornu'
}
-vimh() {
- vim -c "help $1" -c 'call feedkeys("\<c-w>o")'
-}
nvf() {
local cache="$HOME/.cache/nvf"
local match="$(grep -m1 "$1$" "$cache" 2> /dev/null)"
if test ! -f "$match"
then
- die "resetting cache..."
+ logn "resetting cache..."
match="$(goo | tee "$cache" | grep -m 1 "$1$" 2> /dev/null)"
# # Alternative:
# match="$(goo | grep -m 1 "$1" 2> /dev/null | tee -a | "$cache")"
@@ -31,7 +22,7 @@ nvf() {
then
$EDITOR "$match" && return
else
- die "no match." && return 1
+ logn "no match." && return 1
fi
}
@@ -39,27 +30,43 @@ nnn() { test -z "$NNNLVL" && /usr/bin/nnn "$@" || exit }
ranger() { test -z "$RANGER_LEVEL" && /usr/bin/ranger "$@" || exit }
# googoo aliases
-ff () { goo f "$1" | fzf }
-fd () { goo d "$1" | fzf }
-fdf () { goo f "$1" | fzf | xargs -I {} dirname "{}" }
-o ()
+_googoo_fzf_opt()
+{
+ if [ "$1" ]
+ then
+ [ -d "$1" ] && dest="$1" || opt="-q $1"
+ fi
+}
+o()
{
- f="$(ff $1)"
+ _googoo_fzf_opt "$1"
+ f="$(goo f "$dest" | fzf $opt)"
test "$1" && shift
- test -n "$f" && $EDITOR $@ "$f"
+ test -f "$f" && $EDITOR $@ "$f"
}
-go ()
+go()
{
- d="$(fd $1)"
- test -d "$d" && cd "$d"
+ _googoo_fzf_opt "$1"
+ cd "$(goo d "$dest" | fzf $opt)"
}
-ogo ()
+ogo()
{
- d="$(fdf $1)"
- test -d "$d" && cd "$d"
+ _googoo_fzf_opt "$1"
+ cd "$(dirname "$(goo f "$dest" | fzf $opt)")"
}
-ipc ()
+# Onelineres
+awnk() { awk "{print \$$1}"; }
+vimh() { vi -c "help $1" -c 'call feedkeys("\<c-w>o")'; }
+dgo() { cd "$(goo d ~ | fzf --filter "$@" | head -n 1)"; }
+open() { $EDITOR "$(goo f ~ | fzf --filter "$@" | head -n 1)"; }
+pkbs() { pkgfile -b "$1" | tee /dev/stderr | doas pacman -S -; }
+oclip() { printf "\033]52;c;$(echo -n "$@" | base64)\a"; }
+sms() { ssh phone sendmsg "$1" "'$2'"; }
+trcp() { scp "$1" db:/media/basilisk/downloads/transmission/torrents/; }
+rln() { ln -s "$(readlink -f "$1")" "$2"; }
+
+ipc()
{
if [[ "$(ip link show eno1 | awk -F, 'NR=1 {print $3}')" == "UP" ]]
then
@@ -69,16 +76,20 @@ ipc ()
fi
}
-calc () { echo "$@" | bc -l }
+psgrep()
+{
+ [ $# -eq 0 ] && return 1
+ pgrep "$@" | xargs ps
+}
-unique () {
+unique() {
local f
f="$(mktemp)"
awk '!x[$0]++' "$1" > "$f"
mv "$f" "$1"
}
-clip () {
+clip() {
if [ "$WAYLAND_DISPLAY" ]
then
echo -n "$@" | wl-copy
@@ -87,7 +98,7 @@ clip () {
fi
}
-unzipp () {
+unzipp() {
file=$1
shift
unzip $file $@ || exit 1
@@ -95,22 +106,23 @@ unzipp () {
}
# fix long waiting time
-__git_files () {
+__git_files() {
_wanted files expl 'local files' _files
}
-esc () {
+esc() {
$EDITOR "$(which $1)"
}
-delfile () {
+delfile() {
curl "${2:-https://upfast.cronyakatsuki.xyz/delete/$1}"
}
-upfile () {
+upfile() {
curl -F "file=@\"$1\"" ${2:-https://upfast.cronyakatsuki.xyz}
}
-sgd () {
+# git
+sgd() {
d="$PWD"
find $HOME/src -maxdepth 1 -mindepth 1 -type d |
while read -r dir
@@ -129,16 +141,24 @@ sgd () {
unset d
}
-# Git functions
+ginit()
+{
+ [ "$1" ] || return 1
+ ssh db /var/git/initdir.sh "$1"
+ git remote add origin git@db:"$1.git"
+ git push --set-upstream origin $(git_current_branch)
+}
+
# Returns current branch
-function git_current_branch()
+git_current_branch()
{
command git rev-parse --git-dir &>/dev/null || return
git branch --show-current
}
# Check if main exists and use instead of master
-function git_main_branch() {
+git_main_branch()
+{
command git rev-parse --git-dir &>/dev/null || return
local ref
for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default}; do
@@ -164,7 +184,7 @@ function git_develop_branch() {
}
# gpg backup
-gpg_backup ()
+gpg_backup()
{
gpg --export-secret-keys --armor > private.asc
gpg --export --armor > public.asc
@@ -173,7 +193,7 @@ gpg_backup ()
shred -uz {public,private,trust}.asc
}
-gpg_import ()
+gpg_import()
{
tar xf $1
shred -uz $1
@@ -183,29 +203,29 @@ gpg_import ()
shred -uz {public,private,trust}.asc
}
-ngenable ()
+ngenable()
{
ln -sf /etc/nginx/sites-available/$1 /etc/nginx/sites-enabled/
}
-vbsr ()
+vbsr()
{
vboxmanage snapshot "$1" restore "$2" &&
vboxmanage startvm "$1" ||
vboxmanage controlvm "$1" poweroff
}
-vbsrr ()
+vbsrr()
{
vbsr "$1" "$2"
sleep 3
vbsr "$1" "$2"
}
-vbst ()
+vbst()
{
vboxmanage snapshot "$1" take "$2"
}
-pacsize ()
+pacsize()
{
if test -n "$1"; then
packages="$@"
@@ -219,22 +239,18 @@ pacsize ()
expac '%m %n' - |
numfmt --to=iec-i --suffix=B --format="%.2f"
}
-pkbs ()
-{
- pkgfile -b "$1" | tee /dev/stderr | doas pacman -S -
-}
mime-default ()
{
- die "Setting '$1' as default for its mimetypes"
+ logn "Setting '$1' as default for its mimetypes"
grep "MimeType=" /usr/share/applications/"$1" |
cut -d '=' -f 2- |
tr ';' '\n' |
xargs -I {} xdg-mime default "$1" "{}"
- die "Done."
+ logn "Done."
}
-addedkeys () {
+addedkeys() {
find ~/.ssh -iname "*.pub" | while read key
do
local fingerprint="$(ssh-keygen -lf "$key" 2>/dev/null)"
@@ -245,7 +261,7 @@ addedkeys () {
done | sed "s,$HOME/.ssh/,,"
}
-fpass () {
+fpass() {
find $HOME/.password-store -type f -not -path ".git" |
grep "\.gpg$" |
sed "s,$HOME/.password-store/,,;s,\.gpg$,," |
@@ -253,33 +269,18 @@ fpass () {
xargs pass show -c
}
-oclip ()
-{
- printf "\033]52;c;$(echo -n "$@" | base64)\a"
-}
-
-sms ()
-{
- ssh phone sendmsg "$1" "'$2'"
-}
-
-trcp ()
-{
- scp "$1" db:/media/basilisk/downloads/transmission/torrents/
-}
-
-muttmail ()
+muttmail()
{
- die -n "email set: "
+ log "email set: "
ls $HOME/.config/mutt/configs |
fzf |
tee /dev/stderr |
xargs -I {} ln -sf "$HOME/.config/mutt/configs/{}" $HOME/.config/mutt/muttrc
- die -n 'Press [Enter to login]'
+ log 'Press [Enter to login]'
read && mutt
}
-resize ()
+resize()
{
test $# -lt 2 &&
printf "usage: %s <format> <file> [out]\n" "$0" >&2 &&