From f09fce4ff51ff3e26a4d77b23ca34950c9162fc0 Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Tue, 12 Dec 2023 17:21:11 +0100 Subject: use seperate shell folder that works cross shells --- config/essentials/shell/aliases.sh | 500 +++++++++++++++++++++++++++++++++++ config/essentials/shell/functions.sh | 306 +++++++++++++++++++++ 2 files changed, 806 insertions(+) create mode 100644 config/essentials/shell/aliases.sh create mode 100644 config/essentials/shell/functions.sh (limited to 'config/essentials/shell') diff --git a/config/essentials/shell/aliases.sh b/config/essentials/shell/aliases.sh new file mode 100644 index 0000000..157e7aa --- /dev/null +++ b/config/essentials/shell/aliases.sh @@ -0,0 +1,500 @@ +#!/bin/sh +# s/alias \([^-]\)/alias -g \1 + +# The most important one +alias vi='emacsclient -nw' + +# Zsh specific aliases +if [ $SHELL = "/bin/zsh" ] +then + # googoo aliases + alias o~='o $HOME' + alias o/='o /' + alias o/s='o /srv' + alias go~='go $HOME' + alias go/='go /' + alias go/s='go /srv' + alias ogo~='ogo $HOME' + alias ogo/='ogo /' + alias ogo/s='ogo /srv' + + alias calc='bc <<<' + + if [ -z "$WAYLAND_DISPLAY" ] + then + if which devour > /dev/null 2>&1 + then + alias mpv='devour mpv' + alias zathura='devour zathura' + fi + fi + alias clipic='clipo > /tmp/pic.png' + + alias -g '...'='../..' + alias -g '....'='../../..' + alias -g bg='&; disown' + alias -g hl='--help |& less -r' +fi + + +if grep -qi "debian\|ubuntu" /etc/os-release 2> /dev/null +then + alias aptup='apt update && apt upgrade -y' + alias ufwd='while echo y | ufw delete "$(ufw status numbered | tail -n +5 | fzf | cut -f2 -d'\''['\'' | cut -f1 -d'\'']'\'')" > /dev/null 2>&1 && >&2 echo "deleted."; do :; done' +fi + +# Programs +alias nb='newsboat' +alias sr='surfraw' +alias ccu='calcurse' +alias pf='profanity' + +alias gurk='pgrep gurk > /dev/null && printf "Already Running.\n" || gurk' + +alias arduino-cli='arduino-cli --config-file $XDG_CONFIG_HOME/arduino15/arduino-cli.yaml' + +if [ -x /usr/bin/dircolors ] || [ -x $HOME/../usr/bin/dircolors ] +then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + # alias ls='ls -h --color --group-directories-first' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' + alias ip='ip -color=auto' + alias ipa='ip -br a' +fi + +alias l='ls -l' +alias l1='ls -1' +alias ll='ls -la' +alias la='ls -aF' +alias lst='ls --tree' +alias lst1='ls --tree -L1' +alias lst2='ls --tree -L2' +alias lst3='ls --tree -L3' +alias ls.='ls -dl .*' +which exa >/dev/null 2>&1 && + alias ls='exa --sort extension --group-directories-first' || + alias ls='ls --color --group-directories-first --sort=extension' + +# pacman aliases +alias pac='pacman' +alias pacsi='pac -Si' +alias pacs='pac -Ss' +alias pacq='pac -Q' +alias pacql='pac -Ql' +alias pacqs='pac -Qs' +alias paci='pac -Qi' + +alias pacup='dopac -Syu' +alias dopac='doas pacman' +alias orpac='pacman -Qtdq | dopac -Rns - 2> /dev/null || echo "No orphans."' +alias dopacs='dopac -S' +alias dopacc='dopac -Sc' +alias doprm='dopac -Rns' + +alias mpkg='makepkg -si' + +which pikaur > /dev/null 2>&1 && + alias yay='pikaur' +alias yup='yay -Syu' +alias ysi='yay -Si' +alias yss='yay -Ss' +alias yqs='yay -Qs' +alias yql='yay -Ql' +alias yays='yay -S' +alias yrm='yay -Rns' + +alias pkb='pkgfile -b' + +# transmission +alias trr='transmission-remote debuc.com' +alias trls='transmission-remote debuc.com -t all -l' +alias tradd='transmission-remote debuc.com -a' +alias trclipo='transmission-remote debuc.com -a "$(clipo)"' + +alias grub-update='doas grub-mkconfig -o /boot/grub/grub.cfg' + +# vim +alias vimp="vim '+PlugInstall'" +alias nvimp="nvim '+PackerSync'" +alias nvg='git status > /dev/null 2>&1 && nvim "+Git"' +alias nvn='nvim "+Telekasten panel"' + +alias xrandr-rpgmaker='xrandr --auto --output VGA-1 --mode 1024x768 --left-of HDMI-1 && ~/.fehbg' +alias xrandr-default='xrandr --auto --output VGA-1 --mode 1920x1080 --left-of HDMI-1 --output HDMI-1 --mode 1920x1080 && ~/.fehbg' + +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 sxt='sxiv -t' +alias wgsh='wget --quiet --show-progress' +alias wgc='wgsh "$(clipo)"' +alias ss4='ss -tln4p' +alias mdb='mariadb -u admin -ppass admindb' +alias mdbw='mariadb -h 0.0.0.0 -u padmin -pbulbizarre padmindb' +alias mdbwa='mariadb -h 10.3.50.5 -u padmin -pbulbizarre padmindb' +alias tmux='tmux a || tmux' + +# 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' +alias webcam='v4l2-ctl --set-fmt-video=width=1280,height=720; mpv --demuxer-lavf-format=video4linux2 --demuxer-lavf-o-set=input_format=mjpeg av://v4l2:/dev/video0 --profile=low-latency --untimed --no-resume-playback' +alias capture='echo "Y" | wf-recorder -o "$(hyprctl -j monitors | jq -r '\''.[].name'\'' | fzf)" --codec=vp8_vaapi --device=/dev/dri/renderD128 -f output.webm -D' +alias qrclipo='qrencode -s 16 "$(clipo)" -o - | imv -w "imv - $(clipo)" -' +alias airpods='bluetoothctl connect 60:93:16:24:00:10' +alias hotpsot='nmcli dev wifi hotspot ifname wlan0 ssid wiefie password "peepeepoopoo"' +alias wtip='wt ip -c -brief addr' +alias fusephone='sshfs myphone: /media/phone' +alias ttyper='ttyper -l english1000 -w 100' + +alias wgup='doas wg-quick up wg0' +alias wgdown='doas wg-quick down wg0' + +# NPM +alias npi="npm init --yes" + +# Python +alias penv='python3 -m venv env' +alias phttp='python3 -m http.server' +alias pipreq='pip install -r requirements.txt' + +alias ch='chown ${USER}:${USER} -R' +alias kll='killall' +alias pi='ping 9.9.9.9 -c4' +alias sba='source env/bin/activate || source bin/activate' + +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-%T' +alias tpid='tail -f /dev/null --pid' +alias pwdcp='pwd | clipp' +alias gw="grep -ri" +alias srcsupd='echo ~/src/{installdrier,dotfiles,password-store} ~/.config/emacs | supd' + +# systemctl aliases +alias smc='systemctl' +alias smcs='systemctl status' +alias smcst='systemctl start' +alias smcS='systemctl stop' +alias smcr='systemctl restart' +alias smcrl='systemctl reload' +alias smcd='systemctl daemon-reload' +alias smce='systemctl edit' +alias smcen='systemctl enable' +#user +alias smcu='systemctl --user' +alias smcus='systemctl --user status' +alias smcust='systemctl --user start' +alias smcuS='systemctl --user stop' +alias smcur='systemctl --user restart' +alias smcurl='systemctl --user reload' +alias smcud='systemctl --user daemon-reload' +alias smcue='systemctl --user edit' +alias smcuen='systemctl --user enable' +#doas +alias dsmc='doas systemctl' +alias dsmcs='doas systemctl status' +alias dsmcst='doas systemctl start' +alias dsmcS='doas systemctl stop' +alias dsmcr='doas systemctl restart' +alias dsmcrl='doas systemctl reload' +alias dsmcd='doas systemctl daemon-reload' +alias dsmce='doas systemctl edit' +alias dsmcen='doas systemctl enable' + +# virtualbox aliases +alias vbm='vboxmanage' +alias vbls='vbm list vms' +alias vblsr='vbm list runningvms' +alias vb='vbm startvm' + +# quick config +alias ez='$EDITOR ${ZDOTDIR:-~}/.zshrc' +alias eza='$EDITOR $HOME/.config/shell/aliases.sh' +alias ezf='$EDITOR $HOME/.config/shell/functions.sh' +alias eto='$EDITOR ~/sync/TODO' +alias edw='$EDITOR ~/proj/suckless/dwm/config.def.h' +alias edm='$EDITOR ~/proj/suckless/dmenu/config.def.h' +alias ehst='$EDITOR $ZDOTDIR/histfile' +alias ezh=' $EDITOR $HISTFILE' +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 ehyb='$EDITOR ~/.config/hypr/binds.conf' +alias ewbj='$EDITOR ~/.config/waybar/config.jsonc' +alias ewbs='$EDITOR ~/.config/waybar/style.css' +alias cfd='$EDITOR config.def.h' +# /# quick cd jV}k:!sort -t "'" -k 2 +alias cdl='cd ~/dl' +alias cdoc='cd ~/docs' +alias czk='cd ~/docs/zk' +alias cda='cd ~/docs/android/projects' +alias csv='cd ~/docs/school/Vakken' +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/' +alias cdv='cd ~/vids' +alias god='cd "$(find . -mindepth 1 -maxdepth 1 -type d | fzf)"' +alias gov='go ~/vids d' + +# fzf aliases +alias ppj='cd ~/proj/personal/"$(find ~/proj/personal -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | fzf)"' +alias ppjs='cd ~/proj/personal/scripts/"$(find ~/proj/personal/scripts -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | fzf)"' +alias scr='edit_in_dir ~/proj/personal/scripts/' +alias fil='edit_in_dir ~/docs/filios/' +alias fzps='ps aux | tail +2 | fzf | tee /dev/stderr | awk '\''{print $2}'\'' | clipp' +alias asf='alias | fzf' +alias fzh="fzf --tac < $HISTFILE | 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:=~/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 ytdl='yt-dlp --restrict-filenames --embed-chapters -f "b" -S "res:1080" -P "$HOME/vids/youtube/" -o "%(channel)s/%(title)s.%(ext)s"' +alias ytplay='mpv "$(ytlink)"' + +# emacs aliases +alias emacsd='emacs --daemon' +alias emacsdbg='emacs --debug-init' +alias e='emacsclient -c -a "emacs"' + +# docker aliases +alias dcb='docker build' +alias dcbt='docker build -t' +alias dce='docker exec' +alias dcet='docker exec -it' +alias dcmp='docker compose up -d' + +# dotnet aliases +alias dncns='dotnet new console --use-program-main -o' + +# debuc aliases +alias dbadd='ssh db dladd "'\''$(clipo)'\''"' +alias dbcons='ssh -t db dlcons' +alias dbinf='ssh db dlinfo' +alias sshdb='ssh -t db "tmux a || tmux"' +alias dbsmu='rsync -aPz db:/media/basilisk/music/ /media/kilimanjaro/music' + +# oh-my-zsh git aliases +alias config='GIT_WORK_TREE=~/src/dotfiles/ GIT_DIR=~/src/dotfiles/.git' +alias cfg='$EDITOR ~/src/dotfiles/"$(config git ls-files | fzf || exit)"' +alias gmod='git status --short | sed '\''/^\s*M/!d;s/^\s*M\s*//'\'' | fzf | xargs $EDITOR' +alias g='git' +alias ga='git add' +alias gaa='git add --all' +alias gapa='git add --patch' +alias gau='git add --update' +alias gav='git add --verbose' +alias gap='git apply' +alias gapt='git apply --3way' +alias gb='git branch' +alias gba='git branch --all' +alias gbd='git branch --delete' +alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null' +alias gbD='git branch --delete --force' +alias gbg='git branch -vv | grep ": gone\]"' +alias gbgd='local res=$(gbg | awk '"'"'{print $1}'"'"') && [[ $res ]] && echo $res | xargs git branch -d' +alias gbgD='local res=$(gbg | awk '"'"'{print $1}'"'"') && [[ $res ]] && echo $res | xargs git branch -D' +alias gbl='git blame -b -w' +alias gbnm='git branch --no-merged' +alias gbr='git branch --remote' +alias gbs='git bisect' +alias gbsb='git bisect bad' +alias gbsg='git bisect good' +alias gbsr='git bisect reset' +alias gbss='git bisect start' +alias gc='git commit --verbose' +alias gc!='git commit --verbose --amend' +alias gcn!='git commit --verbose --no-edit --amend' +alias gca='git commit --verbose --all' +alias gca!='git commit --verbose --all --amend' +alias gcan!='git commit --verbose --all --no-edit --amend' +alias gcans!='git commit --verbose --all --signoff --no-edit --amend' +alias gcam='git commit --all --message' +alias gcsm='git commit --signoff --message' +alias gcas='git commit --all --signoff' +alias gcasm='git commit --all --signoff --message' +alias gcb='git checkout -b' +alias gcf='git config --list' +alias gcl='git clone' +alias gclc='git clone "$(clipo)"' +alias gclr='git clone --recurse-submodules' +alias gc1='git clone --depth 1' +alias gclean='git clean --interactive -d' +alias gpristine='git reset --hard && git clean --force -dfx' +alias grsf='git reset --soft HEAD~' +alias gcm='git checkout $(git_main_branch)' +alias gcd='git checkout $(git_develop_branch)' +alias gcmsg='git commit --message' +alias gco='git checkout' +alias gcor='git checkout --recurse-submodules' +alias gcount='git shortlog --summary --numbered' +alias gcp='git cherry-pick' +alias gcpa='git cherry-pick --abort' +alias gcpc='git cherry-pick --continue' +alias gcs='git commit --gpg-sign' +alias gcss='git commit --gpg-sign --signoff' +alias gcssm='git commit --gpg-sign --signoff --message' +alias gd='git diff' +alias gdca='git diff --cached' +alias gdcw='git diff --cached --word-diff' +alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' +alias gds='git diff --staged' +alias gdt='git diff-tree --no-commit-id --name-only -r' +alias gdup='git diff @{upstream}' +alias gdw='git diff --word-diff' +alias gdl='git diff HEAD^ HEAD' +alias gf='git fetch' +alias gfo='git fetch origin' +alias gfg='git ls-files | grep' +alias gg='git gui citool' +alias gga='git gui citool --amend' +alias ggpur='ggu' +alias ggpull='git pull origin "$(git_current_branch)"' +alias ggpush='git push origin "$(git_current_branch)"' +alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' +alias gpsup='git push --set-upstream origin $(git_current_branch)' +alias ghh='git help' +alias gignore='git update-index --assume-unchanged' +alias gignored='git ls-files -v | grep "^[[:lower:]]"' +alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' +alias gk='\gitk --all --branches &!' +alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!' +alias gl='git pull' +alias glg='git log --stat' +alias glgp='git log --stat --patch' +alias glgg='git log --graph' +alias glgga='git log --graph --decorate --all' +alias glgm='git log --graph --max-count=10' +alias glo='git log --oneline --decorate' +alias glol="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'" +alias glols="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat" +alias glod="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'" +alias glods="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short" +alias glola="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all" +alias glog='git log --oneline --decorate --graph' +alias gloga='git log --oneline --decorate --graph --all' +alias glp="_git_log_prettily" +alias gm='git merge' +alias gmom='git merge origin/$(git_main_branch)' +alias gmtl='git mergetool --no-prompt' +alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' +alias gmum='git merge upstream/$(git_main_branch)' +alias gma='git merge --abort' +alias gp='git push' +alias gpd='git push --dry-run' +alias gpf!='git push --force' +alias gpoat='git push origin --all && git push origin --tags' +alias gpod='git push origin --delete' +alias gpr='git pull --rebase' +alias gpu='git push upstream' +alias gpv='git push --verbose' +alias gr='git remote' +alias gra='git remote add' +alias grb='git rebase' +alias grba='git rebase --abort' +alias grbc='git rebase --continue' +alias grbd='git rebase $(git_develop_branch)' +alias grbi='git rebase --interactive' +alias grbm='git rebase $(git_main_branch)' +alias grbom='git rebase origin/$(git_main_branch)' +alias grbo='git rebase --onto' +alias grbs='git rebase --skip' +alias grev='git revert' +alias grh='git reset' +alias grhh='git reset --hard' +alias groh='git reset origin/$(git_current_branch) --hard' +alias grm='git rm' +alias grmc='git rm --cached' +alias grmv='git remote rename' +alias grrm='git remote remove' +alias grs='git restore' +alias grset='git remote set-url' +alias grss='git restore --source' +alias grst='git restore --staged' +alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' +alias gru='git reset --' +alias grup='git remote update' +alias grv='git remote --verbose' +alias gsb='git status --short --branch' +alias gsd='git svn dcommit' +alias gsh='git show' +alias gsi='git submodule init' +alias gsps='git show --pretty=short --show-signature' +alias gsr='git svn rebase' +alias gss='git status --short' +alias gst='git status' +alias gstaa='git stash apply' +alias gstc='git stash clear' +alias gstd='git stash drop' +alias gstl='git stash list' +alias gstp='git stash pop' +alias gsts='git stash show --text' +alias gstu='gsta --include-untracked' +alias gstall='git stash --all' +alias gsu='git submodule update' +alias gsw='git switch' +alias gswc='git switch --create' +alias gswm='git switch $(git_main_branch)' +alias gswd='git switch $(git_develop_branch)' +alias gts='git tag --sign' +alias gtv='git tag | sort -V' +alias gtl='gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl' +alias gunignore='git update-index --no-assume-unchanged' +alias gunwip='git log --max-count=1 | grep -q -c "\--wip--" && git reset HEAD~1' +alias gup='git pull --rebase' +alias gupv='git pull --rebase --verbose' +alias gupa='git pull --rebase --autostash' +alias gupav='git pull --rebase --autostash --verbose' +alias gupom='git pull --rebase origin $(git_main_branch)' +alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' +alias glum='git pull upstream $(git_main_branch)' +alias gluc='git pull upstream $(git_current_branch)' +alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' +alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' +alias gwt='git worktree' +alias gwta='git worktree add' +alias gwtls='git worktree list' +alias gwtmv='git worktree move' +alias gwtrm='git worktree remove' +alias gam='git am' +alias gamc='git am --continue' +alias gams='git am --skip' +alias gama='git am --abort' +alias gamscp='git am --show-current-patch' diff --git a/config/essentials/shell/functions.sh b/config/essentials/shell/functions.sh new file mode 100644 index 0000000..37e471c --- /dev/null +++ b/config/essentials/shell/functions.sh @@ -0,0 +1,306 @@ +#!/bin/sh + +log() { >&2 printf '%s' "$@"; } +logn() { >&2 printf '%s\n' "$@"; } + +vmp() { + col -b | \ + vim -MR \ + -c 'set ft=man nolist nonu nornu' +} +nvf() { + cache="$HOME/.cache/nvf" + match="$(grep -m1 "$1$" "$cache" 2> /dev/null)" + if test ! -f "$match" + then + logn "resetting cache..." + match="$(goo f "$HOME" | tee "$cache" | grep -m 1 "$1$" 2> /dev/null)" + # # Alternative: + # match="$(goo | grep -m 1 "$1" 2> /dev/null | tee -a | "$cache")" + fi + if test -f "$match" + then + $EDITOR "$match" && return + else + logn "no match." && return 1 + fi +} + +nnn() { test -z "$NNNLVL" && /usr/bin/nnn "$@" || exit; } +ranger() { test -z "$RANGER_LEVEL" && /usr/bin/ranger "$@" || exit; } + +# googoo aliases +_googoo_fzf_opt() +{ + unset dest opt + if [ "$1" ] + then + [ -d "$1" ] && dest="$1" || opt="-q $1" + fi +} +o() +{ + _googoo_fzf_opt "$1" + f="$(goo f "$dest" | fzf $opt)" + test "$1" && shift + test -f "$f" && $EDITOR $@ "$f" +} +go() +{ + _googoo_fzf_opt "$1" + cd "$(goo d "$dest" | fzf $opt)" +} +ogo() +{ + _googoo_fzf_opt "$1" + cd "$(dirname "$(goo f "$dest" | fzf $opt)")" +} + +# Onelineres +awnk() { awk "{print \$$1}"; } +vimh() { vi -c "help $1" -c 'call feedkeys("\o")'; } +dgo() { cd "$(goo d ~ | fzf --filter "$@" | head -n 1)"; } +open() { $EDITOR "$(goo f ~ | fzf --filter "$@" | head -n 1)"; } +pkbs() { doas pacman -Sy "$(pkgfile -b "$1" | tee /dev/stderr)"; } +oclip() { printf "\033]52;c;$(printf '%s' "$@" | base64)\a"; } +sms() { ssh -t phone sendmsg "$1" "'$2'"; } +trcp() { scp "$1" db:/media/basilisk/downloads/transmission/torrents/; } +rln() { ln -s "$(readlink -f "$1")" "$2"; } +getgit() { git clone git@db:"$1"; } + +ipc() +{ + if [ "$(ip link show eno1 | awk -F, 'NR=1 {print $3}')" = "UP" ] + then + doas ip link set eno1 down + else + doas ip link set eno1 up + fi +} + +psgrep() +{ + [ $# -eq 0 ] && return 1 + pgrep "$@" | xargs ps +} + +unique() { + f="$(mktemp)" + awk '!x[$0]++' "$1" > "$f" + mv "$f" "$1" +} + +clip() { + if [ "$WAYLAND_DISPLAY" ] + then + echo -n "$@" | wl-copy + else + echo -n "$@" | xclip -selection clipboard -rmlastnl + fi +} + +unzipp() { + unzip -- "$(readlink -f -- "$1")" || return 1 + rm -- "$1" +} + +# fix long waiting time +__git_files() { + _wanted files expl 'local files' _files +} + +esc() { + $EDITOR "$(which $1)" +} + +delfile() { + curl "${2:-https://upfast.cronyakatsuki.xyz/delete/$1}" +} +upfile() { + curl -F "file=@\"$1\"" ${2:-https://0x0.st} +} + +# git +sgd() { + d="$PWD" + find $HOME/src -maxdepth 1 -mindepth 1 -type d | + while read -r dir + do + cd "$dir" + git status > /dev/null 2>&1 || continue + git fetch > /dev/null 2>&1 + printf "$PWD" + test "$(git status --short 2>/dev/null | grep -v "??" | head -1)" && + printf " \e[1;31m*changes\e[0m" | sed "s#$HOME#~#" >&2 + test "$(parse_git_remote)" && + printf " \e[0;32m*push/pull\e[0m" | sed "s#$HOME#~#" >&2 + printf "\n" + done + cd "$d" + unset d +} + +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 +git_current_branch() +{ + command git rev-parse --git-dir > /dev/null 2>&1 || return + git branch --show-current +} + +# Check if main exists and use instead of master +git_main_branch() +{ + command git rev-parse --git-dir > /dev/null 2>&1 || return + for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default} + do + if command git show-ref -q --verify $ref; then + echo ${ref:t} + return + fi + done + echo master +} + +# Check for develop and similarly named branches +function git_develop_branch() { + command git rev-parse --git-dir > /dev/null 2>&1 || return + for branch in dev devel development + do + if command git show-ref -q --verify refs/heads/$branch + then + echo $branch + return + fi + done + echo develop +} + +# gpg backup +gpg_backup() +{ + # $1: option + # $2: output file (without .asc) + gpg_command() { gpg "$1" --armor > "$2".asc; } + gpg_command --export-secret-keys "private" + gpg_command --export "public" + gpg_command --export-ownertrust "trust" + tar -czvf gpg_backup.tar.gz public.asc private.asc trust.asc + shred -uz public.asc private.asc trust.asc +} + +gpg_import() +{ + tar xf $1 + shred -uz $1 + gpg --import public.asc + gpg --import-ownertrust trust.asc + gpg --import private.asc + shred -uz public.asc private.asc trust.asc +} + +ngenable() +{ + ln -sf /etc/nginx/sites-available/$1 /etc/nginx/sites-enabled/ +} + +vbsr() +{ + vboxmanage snapshot "$1" restore "$2" && + vboxmanage startvm "$1" || + vboxmanage controlvm "$1" poweroff +} +vbsrr() +{ + vbsr "$1" "$2" + sleep 3 + vbsr "$1" "$2" +} +vbst() +{ + vboxmanage snapshot "$1" take "$2" +} + +pacsize() +{ + if test -n "$1"; then + packages="$@" + elif test ! -t 0; then + packages="$(cat)" + else + echo "No data provided..." + return 1 + fi + echo $packages | + expac '%m %n' - | + numfmt --to=iec-i --suffix=B --format="%.2f" +} + +mime-default () +{ + [ "${mime:=$1}" ] || + mime="$(find /usr/share/applications/ -iname '*.desktop' -printf '%f\n' | + sed 's/\.desktop$//' | + fzf)" + + logn "Setting '$mime' as default for its mimetypes" + [ "$mime" ] || exit 1 + grep "MimeType=" /usr/share/applications/"$mime".desktop | + cut -d '=' -f 2- | tr ';' '\0' | + xargs -0I{} xdg-mime default "$mime".desktop "{}" + logn "Done." +} + +addedkeys() { + find ~/.ssh -iname "*.pub" | while read key + do + fingerprint="$(ssh-keygen -lf "$key" 2>/dev/null)" + if ssh-add -l | grep -q "$fingerprint" + then + echo "$key" + fi + done | sed "s,$HOME/.ssh/,," +} + +fpass() { + find $HOME/.password-store -type f -not -path ".git" | + grep "\.gpg$" | + sed "s,$HOME/.password-store/,,;s,\.gpg$,," | + fzf | + xargs pass show -c +} + +muttmail() +{ + config="$HOME/.config/mutt" + mail="$(find "$config"/configs -type f -printf '%f\n' | fzf)" + [ "$mail" ] || return 1 + ln -sf "$config/configs/$mail" "$config"/muttrc + mutt +} + +resize() +{ + test $# -lt 2 && + printf "usage: %s [out]\n" "$0" >&2 && + return 1 + convert -resize $1^ -gravity center -crop $1+0+0 -- "$2" "${3:-$1}" +} + +edit_in_dir() { + file="$1/$(goo f "$1" | sed "s@^$1@@" | fzf)" + [ -f "$file" ] || return 1 + $EDITOR "$file" +} + +to_webm() +{ + ffmpeg -y -i "$1" -vcodec libvpx -cpu-used -12 -deadline realtime "${1%.*}".webm +} -- cgit v1.2.3