diff options
Diffstat (limited to 'config/essentials/zsh')
-rw-r--r-- | config/essentials/zsh/.zshrc | 12 | ||||
-rw-r--r-- | config/essentials/zsh/aliases.sh | 81 | ||||
-rw-r--r-- | config/essentials/zsh/functions.zsh | 145 |
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 && |