# vim: ft=zsh


_d() { true ; }
_f() { true ; }
_a() { true ; }


alias ls='ls --classify=auto --human-readable'
alias ll='ls -l'
alias la='ls --almost-all'
alias lla='ls -l --almost-all'
alias l.='ls --almost-all --ignore="*"'
alias ll.='ls -l --almost-all --ignore="*"'

if command -v eza &>/dev/null; then
    alias eza='eza --classify=auto'
    alias ls='eza'
    alias ll='eza --group --long'
    alias la='eza --all'
    alias lla='eza --long --all --group'
    alias l.='_d() ( cd "${1:-.}" && eza --list-dirs .* ; ); _d'
    alias ll.='_d() ( cd "${1:-.}" && eza --long --group --all --list-dirs .* ; ); _d'

    alias tree='eza --tree'
fi

GREP_OPTIONS=(
    --color=auto
    --binary-files=without-match
    --exclude-dir=.git
    --exclude-dir=.svn
)

alias grep='grep $GREP_OPTIONS'
alias g='noglob grep $GREP_OPTIONS --dereference-recursive --line-number'

alias f='_f() { find . -name "*${1}*" }; noglob _f'

alias _='sudo'
alias root='sudo --login TMOUT=450'

alias rm='rm --interactive=once --verbose --recursive --one-file-system'
alias mkdir='mkdir --parents --verbose'
alias md='mkdir --parents --verbose'

alias q='exit 0'

alias path='echo -e ${PATH//:/\\n}'

alias dh='dirs -v'
alias pd='popd'

# shorts
alias c='clear'
alias h='history -d -D 0'
alias j='jobs -l'

alias zshrc='source "${ZDOTDIR}/.zshrc" >/dev/null'

if command -v colordiff &>/dev/null; then
    alias diff='colordiff'
fi

alias tar-it='tar -czf "../${PWD##*/}.tar.gz" .'
alias man='MANWIDTH=$((COLUMNS > 80 ? 80 : COLUMNS)) man'

# time
alias now='date +"%T"'
alias nowdate='date +"%d-%m-%Y"'
alias cal='cal --monday'
alias beeptime='beep -D 400 -l 400 -r "$(date +%I)" -f 440 -n -D 1000 -l 0 -n -D 800 -l 200 -f 880 -r "$(($(date +%M)/15+1))"'

# vim
alias vi='nvim'
alias svi="sudo --preserve-env nvim"

# git
for al in s d di co col cob ds u ps pst pl pr hs last lastd df amend br fuck sw swl swc swb
do
    alias "g${al}"="git ${al}"
done


# net
alias ports='ss -tlnp'
alias wget='wget -c'
alias ip='ip -c'
alias fastping='ping -c 100 -i 0.1'

alias www='serveit'

# hardware
alias reboot='sudo /sbin/reboot'
alias poweroff='sudo /sbin/poweroff'
alias suspend='sudo systemctl suspend'
alias halt='sudo /sbin/halt'
alias shutdown='sudo /sbin/shutdown now'

alias meminfo='free -mlth'

# python
alias pipir='pip install -r requirements.txt'
alias pipar='pip list --not-required --format freeze | tee requirements.txt'
alias vd='deactivate'


# docker
alias dc='docker compose'
alias dcl='docker compose logs -f'
alias drmc='docker container prune'
alias drmi='docker image prune'
alias dpsa='docker ps -a'

alias gb='gobuild'


# tmux
alias dt='tmux detach'

# x11
alias caps='xdotool key Caps_Lock'
alias CAPS='xdotool key Caps_Lock'

alias colors='for i in {0..255}; do printf "\x1b[38;5;${i}mcolor${i} - ██████████\n"; done'


alias paste.thek4n.ru='curl --data-binary @- "https://paste.thek4n.ru/" 2>/dev/null'
alias pastewww='paste.thek4n.ru'

alias cleanup-downloads='cleanup-directory-log "${XDG_DOWNLOAD_DIR}"'

alias copy='tee /dev/stderr | \copy'

alias ssh='TERM=xterm-256color ssh'
alias sshn='ssh -S none'

alias black='magick canvas:none PNG:- | feh --class black -YFx -'
alias ex='extract'

# Notes
alias notes='note'
alias n='note'
alias ns='note sync'
alias ne='note edit'
alias nfe='note fe'
alias nfg='note fg'
alias ng='note git'
alias sn='mdpreview --browser --host localhost --port 0 "$(note --prefix)"'
alias nr="trynafail note random"


# Cargo
alias cr='cargo run'
alias crr='cargo run --release'
alias cb='cargo build'
alias cbr='cargo build --release'
alias ct='cargo test'
alias cf='cargo fmt'
alias cl='cargo clippy --release'


alias p='player'

# :)
alias PINK='beep -f 233 -l 440 -n -f 349 -l 440 -n -f 196 -l 440 -n -f 330 -l 650'

alias -g L='2>&1 | $PAGER'
alias -g H='| head'
alias -g T='| tail'
alias -g HL='| highlight -O ansi -S '
alias -g JSON='| json HL json'
alias -g DI='| diff'
alias -g ?='| grep -i'
alias -g G='| grep -i'
alias -g C='| wc -l'

alias -g CO='--color=always'

alias -g ...='../..'
alias -g ....='../../..'
alias -g .3='../../..'
alias -g .....='../../../..'
alias -g .4='../../../..'
alias -g ......='../../../../..'
alias -g .5='../../../../..'

alias -g D="DISPLAY=:0.0"
alias -g XT="TERM=xterm"
alias -g GP="GOPROXY=direct"

alias -g DN=">/dev/null"
alias -g 2DN="2>/dev/null"
alias -g ADN="&>/dev/null"
alias -g BG="&>/dev/null &"  # background

alias -g RED='2> >(while read line; do printf "\033[0;31m${line}\033[0m\n"; done)'

alias -g BEEP='&& beep -f 800 -l 250 -n -f 1000 -l 500 || beep -f 800 -l 250 -n -f 500 -l 500'

if [[ "${OSTYPE}" == "linux-android"* ]]; then
    alias -g BEEP='&& termux-notification --sound --vibrate 500,1000,200'
fi

alias -g WAKE='BEEP; notify-send --urgency normal Wake'


alias -g PROXY='http_proxy="socks5://${SOCKS5_SERVER:-localhost}"'
