summaryrefslogtreecommitdiff
path: root/config/essentials/zsh
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2023-11-19 16:30:21 +0100
committerRaymaekers Luca <raymaekers.luca@gmail.com>2023-11-19 16:30:21 +0100
commitac82416ba14d4cfc2f47ab1d607501bfd899781f (patch)
treeac0ecd986284f5ae73b413143739281b9f8577bd /config/essentials/zsh
parentff3a8bb2d62f5a7e1759eb3d9e0834f4396e833d (diff)
parent822f8dbf4db697c7a2bfbd675374bfaa7080ce82 (diff)
Merge branch 'main' of /var/git/dotfiles
Diffstat (limited to 'config/essentials/zsh')
-rw-r--r--config/essentials/zsh/.zshrc49
-rw-r--r--config/essentials/zsh/aliases.sh60
-rw-r--r--config/essentials/zsh/functions.zsh32
3 files changed, 114 insertions, 27 deletions
diff --git a/config/essentials/zsh/.zshrc b/config/essentials/zsh/.zshrc
index 76ff87f..c590d54 100644
--- a/config/essentials/zsh/.zshrc
+++ b/config/essentials/zsh/.zshrc
@@ -15,13 +15,56 @@ autoload -U select-word-style
autoload -z edit-command-line
zle -N edit-command-line
zstyle ':compinstall' filename '/home/aluc/.zshrc'
+
+### Completion
+# cache
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path "$ZDOTDIR/zcompcache"
+
+# completers
+zstyle ':completion:*' completer _extensions _complete
+
+# format
+zstyle ':completion:*:*:*:*:descriptions' format '%F{blue}-- %D%d --%f'
+zstyle ':completion:*:*:*:*:messages' format '%F{purple}-- %d --%f'
+zstyle ':completion:*:*:*:*:warnings' format '%F{red}-- no matches found --%f'
+zstyle ':completion:*:default' list-prompt '%S%M matches%s'
+# show a 'ls -a' like outptut when listing files
+zstyle ':completion:*:*:*:*:default' list-colors ${(s.:.)LS_COLORS}
+
+# Group completions by categories
+zstyle ':completion:*' group-name ''
+zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands
+
+zstyle ':completion:*' squeeze-slashes true
+
+# Prefer completing for an option (think cd -)
+zstyle ':completion:*' complete-options true
+
+# keep prefix when completing
+zstyle ':completion:*' keep-prefix true
+
+# ui
zstyle ':completion:*' menu select
-autoload -Uz compinit
+# Move around using h j k l in completion menu
+zmodload zsh/complist
+bindkey -M menuselect 'h' vi-backward-char
+bindkey -M menuselect 'k' vi-up-line-or-history
+bindkey -M menuselect 'j' vi-down-line-or-history
+bindkey -M menuselect 'l' vi-forward-char
+bindkey -M menuselect '^xg' clear-screen
+# interactive mode
+bindkey -M menuselect '^xi' vi-insert
+bindkey -M menuselect '^xh' accept-and-hold # Hold
+bindkey -M menuselect '^xn' accept-and-infer-next-history # Next
+bindkey -M menuselect '^xu' undo # Undo
+
+autoload -Uz compinit; compinit
+
autoload -Uz surround
zle -N delete-surround surround
zle -N add-surround surround
zle -N change-surround surround
-compinit
# Source files
. $ZDOTDIR/functions.zsh
@@ -110,7 +153,7 @@ command_not_found_handler () {
}
# prompt
-PS1=' %B%(#.%F{1}.%F{13})[%n%b%f@%B%F{6}%m]%b%f %3~ '
+PS1=' %B%(#.%F{1}.%F{13})%n%b%f@%B%F{6}%m%b%f %3~ '
RPROMPT='%F{blue}$(parse_git_remote)%f%F{red}$(parse_git_status)%f%F{green}$(parse_git_branch)%f%(?.. %?)'
setopt prompt_subst
diff --git a/config/essentials/zsh/aliases.sh b/config/essentials/zsh/aliases.sh
index e9c7e2f..3d23cf4 100644
--- a/config/essentials/zsh/aliases.sh
+++ b/config/essentials/zsh/aliases.sh
@@ -17,18 +17,13 @@ then
alias calc='bc <<<'
- if [ "$WAYLAND_DISPLAY" ]
- then
- alias -g clipp='wl-copy -n'
- alias -g clipo='wl-paste -n'
- else
+ if [ -z "$WAYLAND_DISPLAY" ]
+ then
if which devour > /dev/null 2>&1
then
alias mpv='devour mpv'
alias zathura='devour zathura'
fi
- alias -g clipp='xclip -selection clipboard -r'
- alias -g clipo='xclip -o -selection clipboard -r'
fi
alias clipic='clipo > /tmp/pic.png'
@@ -174,9 +169,7 @@ 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 smc='systemctl'
-alias dsmc='doas systemctl'
-alias smcu='smc --user'
+
alias zsr='source ${ZDOTDIR:-~}/.zshrc && rehash'
alias rh='rehash'
alias wf='doas wipefs -a'
@@ -187,9 +180,40 @@ 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} | supd'
-alias nextdeadline='sed -n "/$(grep '\''^#'\'' ~/docs/filios/deadlines | sort -t '\''/'\'' -k 3 -k 2 -k 1 -n | head -n 1 | sed '\''s@/@.@g'\'')/,/^#\|^$/p" ~/docs/filios/deadlines | head -n -1'
+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'
@@ -244,21 +268,27 @@ 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 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 ytdl='yt-dlp --restrict-filenames --embed-chapters -f "b" -S "res:1080" -P "$HOME/vids/youtube/" -o "%(channel)s/%(title)s.%(ext)s"'
+
+# emacs aliases
+alias emacsd='emacs --daemon'
+alias emacsdbg='emacs --debug-init'
+alias e='emacsclient -c -a "emacs"'
# docker aliases
alias dcb='docker build'
@@ -279,6 +309,7 @@ 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'
@@ -318,6 +349,7 @@ 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'
diff --git a/config/essentials/zsh/functions.zsh b/config/essentials/zsh/functions.zsh
index 9783794..8bf6c43 100644
--- a/config/essentials/zsh/functions.zsh
+++ b/config/essentials/zsh/functions.zsh
@@ -242,10 +242,17 @@ pacsize()
mime-default ()
{
- logn "Setting '$1' as default for its mimetypes"
- grep "MimeType=" /usr/share/applications/"$1".desktop |
+ local mime
+ [ "${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 "$1".desktop "{}"
+ xargs -0I{} xdg-mime default "$mime".desktop "{}"
logn "Done."
}
@@ -270,13 +277,13 @@ fpass() {
muttmail()
{
- log "email set: "
- ls $HOME/.config/mutt/configs |
- fzf |
- tee /dev/stderr |
- xargs -I {} ln -sf "$HOME/.config/mutt/configs/{}" $HOME/.config/mutt/muttrc
- log 'Press [Enter to login]'
- read && mutt
+ local config
+ local mail
+ 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()
@@ -292,3 +299,8 @@ edit_in_dir() {
[ -f "$file" ] || return 1
$EDITOR "$file"
}
+
+to_webm()
+{
+ ffmpeg -y -i "$1" -vcodec libvpx -cpu-used -12 -deadline realtime "${1%.*}".webm
+}