diff options
Diffstat (limited to 'config/essentials/zsh')
-rw-r--r-- | config/essentials/zsh/.zshrc | 59 | ||||
-rw-r--r-- | config/essentials/zsh/aliases.sh | 18 | ||||
-rw-r--r-- | config/essentials/zsh/functions.zsh | 19 |
3 files changed, 58 insertions, 38 deletions
diff --git a/config/essentials/zsh/.zshrc b/config/essentials/zsh/.zshrc index 1260bb0..414a7d7 100644 --- a/config/essentials/zsh/.zshrc +++ b/config/essentials/zsh/.zshrc @@ -18,31 +18,26 @@ zle -N edit-command-line zstyle ':compinstall' filename '/home/aluc/.zshrc' zstyle ':completion:*' menu select autoload -Uz compinit -compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION autoload -Uz surround zle -N delete-surround surround zle -N add-surround surround zle -N change-surround surround compinit -if grep -qi "debian\|ubuntu" /usr/lib/os-release /etc/os-release 2>/dev/null -then - sfiles=( - /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh - /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh - ) -else - sfiles=( - /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh - /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh) -fi -sfiles+=( - ~/.config/zsh/functions.zsh - ~/.config/zsh/aliases.sh -) -for f in "${sfiles[@]}"; do - test -f "$f" && source "$f" +# Source files +. $ZDOTDIR/functions.zsh +. $ZDOTDIR/aliases.sh + +local PLUGPATH +for file in /etc/os-release /usr/lib/os-release +do [ -f "$file" ] && . "$file" && break done +case "${ID:=unknown}" in + debian|ubuntu) PLUGPATH=/usr/share/ ;; + *) PLUGPATH=/usr/share/zsh/plugins ;; +esac +. $PLUGPATH/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +. $PLUGPATH/zsh-autosuggestions/zsh-autosuggestions.zsh bindkey -v bindkey -a cs change-surround @@ -121,14 +116,9 @@ 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 "^*" | cut -f2 -d'[' | cut -f1 -d' ')" - if [ "$b" = "behind" ] - then - printf "↓ " - elif [ "$b" = "ahead" ] - then - printf "↑ " - fi + git branch -v 2>/dev/null | + grep '^\*' | cut -f2 -d'[' | cut -f1 -d' ' | + sed 's/ahead/↑ /;s/behind/↓ /;s/\*//' } parse_git_branch() { git symbolic-ref --short HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null @@ -137,6 +127,23 @@ parse_git_status() { git status --short 2> /dev/null | head -n1 | awk '{print $1 " "}' } +# Completion +_dotnet_zsh_complete() +{ + local completions=("$(dotnet complete "$words")") + + # If the completion list is empty, just continue with filename selection + if [ -z "$completions" ] + then + _arguments '*::arguments: _normal' + return + fi + + # This is not a variable assignment, don't remove spaces! + _values = "${(ps:\n:)completions}" +} +compdef _dotnet_zsh_complete dotnet + export REPORTTIME=2 export TIMEFMT="-> %*E" # override built-in time command diff --git a/config/essentials/zsh/aliases.sh b/config/essentials/zsh/aliases.sh index ea1c719..4aff77e 100644 --- a/config/essentials/zsh/aliases.sh +++ b/config/essentials/zsh/aliases.sh @@ -121,7 +121,6 @@ alias trclipo='transmission-remote debuc.com -a "$(clipo)"' alias grub-update='doas grub-mkconfig -o /boot/grub/grub.cfg' # vim -alias scr='nvim +"setlocal buftype=nofile bufhidden=hide noswapfile filetype=txt" scratch' alias vimp="vim '+PlugInstall'" alias nvimp="nvim '+PackerSync'" alias nvg='git status > /dev/null 2>&1 && nvim "+Git"' @@ -173,7 +172,7 @@ alias pipreq='pip install -r requirements.txt' alias ch='chown ${USER}:${USER} -R' alias kll='killall' -alias pi='ping archlinux.org -c4' +alias pi='ping 9.9.9.9 -c4' alias sba='source env/bin/activate || source bin/activate' alias smc='systemctl' alias dsmc='doas systemctl' @@ -206,13 +205,16 @@ 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 ~/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 ~/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/' @@ -239,17 +241,21 @@ alias czo='cd ~/zot/' alias cdpw='cd ${PASSWORD_STORE_DIR:-~/.password-store}' alias cdng='cd /etc/nginx' alias cdrs='cd /srv/' +alias god='cd "$(find . -mindepth 1 -maxdepth 1 -type d | fzf)"' # fzf aliases -alias ppj='cd ~/proj/personal/"$(find ~/proj/personal -mindepth 1 -maxdepth 1 -type d -printf "%f\n"| fzf)"' -alias fil='$EDITOR ~/docs/filios/"$(find ~/docs/filios -type f -printf "%f\n" | fzf)"' -alias cfg='find -L ~/src/dotfiles -type f 2> /dev/null | fzf | xargs -r $EDITOR' +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 cfg='edit_in_dir ~/src/dotfiles' 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:=~/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 dcb='docker build' alias dcbt='docker build -t' @@ -265,6 +271,8 @@ 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 gitdotf='GIT_WORK_TREE=~/src/dotfiles/ GIT_DIR=~/src/dotfiles/.git' +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' diff --git a/config/essentials/zsh/functions.zsh b/config/essentials/zsh/functions.zsh index 35aaf58..85efda4 100644 --- a/config/essentials/zsh/functions.zsh +++ b/config/essentials/zsh/functions.zsh @@ -32,6 +32,7 @@ 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" @@ -65,6 +66,7 @@ oclip() { printf "\033]52;c;$(echo -n "$@" | 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() { @@ -99,9 +101,7 @@ clip() { } unzipp() { - file=$1 - shift - unzip $file $@ || exit 1 + unzip -- "$(readlink -f -- "$1")" || return 1 rm $file } @@ -243,10 +243,9 @@ pacsize() mime-default () { 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" "{}" + grep "MimeType=" /usr/share/applications/"$1".desktop | + cut -d '=' -f 2- | tr ';' '\0' | + xargs -0I{} xdg-mime default "$1".desktop "{}" logn "Done." } @@ -287,3 +286,9 @@ resize() 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" +} |