summaryrefslogtreecommitdiff
path: root/config/essentials/zsh
diff options
context:
space:
mode:
Diffstat (limited to 'config/essentials/zsh')
-rw-r--r--config/essentials/zsh/.zshrc59
-rw-r--r--config/essentials/zsh/aliases.sh18
-rw-r--r--config/essentials/zsh/functions.zsh19
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"
+}