1
0
Fork 0

zsh: rewrite config using zinit

This commit is contained in:
Luca Bilke 2024-11-11 18:41:26 +01:00
parent ffb371b3a6
commit 9db246b524
Signed by: luca
GPG key ID: F6E11C9BAA7C82F5
19 changed files with 227 additions and 177 deletions

9
.gitmodules vendored
View file

@ -1,6 +1,3 @@
[submodule "common/.config/zsh/plugins/fzf-tab"]
path = common/.config/zsh/plugins/fzf-tab
url = https://github.com/Aloxaf/fzf-tab
[submodule "common/.config/zsh/plugins/zsh-defer"]
path = common/.config/zsh/plugins/zsh-defer
url = https://github.com/romkatv/zsh-defer
[submodule "common/.local/share/zsh/zinit/zinit.git"]
path = common/.local/share/zsh/zinit/zinit.git
url = https://github.com/zdharma-continuum/zinit/

View file

@ -1,9 +1,4 @@
#!/bin/zsh
set +a
# profile file. Runs on login. Environmental variables are set here.
# If you don't want this in your home directory, execute this command and move this file
# echo 'export ZDOTDIR="$HOME/.config/zsh"' | sudo tee -a /etc/zsh/zshenv
export EDITOR="nvim"
export TERMINAL="st"
@ -12,7 +7,7 @@ export OPENER="opener"
export BROWSER="firefox"
export PAGER="less"
# Locale
# NOTE: Locale
export LANGUAGE="en_US"
export LANG="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
@ -28,7 +23,8 @@ export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="de_DE.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
export LC_ALL=
# Settings
# NOTE: Settings
export VIRTUAL_ENV_DISABLE_PROMPT=1
export FZF_DEFAULT_OPTS="\
--preview-window nowrap \
@ -48,13 +44,6 @@ export LESS_TERMCAP_us=$(tput setaf 2)
export LESS_TERMCAP_ue=$(tput sgr0)
export LESS_TERMCAP_so=$(tput smso)
export LESS_TERMCAP_se=$(tput rmso)
# dotfiles management
export STOW_DIR="$XDG_DATA_HOME/stow"
export STOW_REPO="git@git.snaile.de:luca/dotfiles"
export STOW_BRANCH="main"
# Color palette for console dialogs in tools such as nmtui and whiptail
export NEWT_COLORS='
root=white,black
border=black,lightgray
@ -81,18 +70,18 @@ export NEWT_COLORS='
roottext=lightgrey,black
'
# Home Dir Cleanup
# NOTE: dotfiles management
export STOW_DIR="$XDG_DATA_HOME/stow"
export STOW_REPO="git@git.snaile.de:luca/dotfiles"
export STOW_BRANCH="main"
# NOTE: Home Dir Cleanup
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_STATE_HOME="$HOME/.local/state"
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
set -a
source $XDG_CONFIG_HOME/user-dirs.dirs
set +a
set -a; source $XDG_CONFIG_HOME/user-dirs.dirs; set +a
export ANDROID_HOME="$XDG_DATA_HOME/android"
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy"
export ANSIBLE_GALAXY_TOKEN_PATH="$XDG_DATA_HOME/ansible/galaxy_token"
@ -124,7 +113,7 @@ export W3M_DIR="$XDG_DATA_HOME/w3m"
export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
export WORKON_HOME="$XDG_DATA_HOME/virtualenv"
export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # WARN: This line can break some display managers
export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority"
export XBPS_DISTDIR="$XDG_DOCUMENTS_DIR/dev/server/void-packages"
export ZK_NOTEBOOK_DIR="$XDG_DOCUMENTS_DIR/notes"
export ZSH_COMPDUMP="$XDG_CACHE_HOME/zcompdump"

View file

@ -1,18 +1,8 @@
#!/bin/zsh
PROMPT='%B%F{blue}%n%F{cyan}@%F{blue}%m %F{magenta}[%F{white}%3~%F{magenta}] %(?.%F{green}.%F{red})»%f%b '
RPROMPT='%(?..%F{red}%?) $(venv_prompt)'
source "$ZDOTDIR"/plugins/zsh-defer/zsh-defer.plugin.zsh
source "${ZDOTDIR}/config/plugins.zsh"
for f in \
"$ZDOTDIR"/plugins/*/*.plugin.zsh \
/usr/share/zsh/plugins/*/*.plugin.zsh \
/usr/share/fzf/*.zsh
do
[ "$f" != "${ZDOTDIR}/plugins/zsh-defer.plugin.zsh" ] && zsh-defer source $f
for f in "functions" "aliases" "hashes" "options" "bindings" "completions" "widgets" "host"; do
source "${ZDOTDIR}/config/${f}.zsh"
done
for f in "$ZDOTDIR"/configs/*; do
source "$f"
done
export GPG_TTY="$(tty)"
gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1

View file

@ -1,9 +1,5 @@
#!/bin/zsh
# shellcheck disable=SC2142
# sudo not required for some system commands
for command in mount umount pvs vgs lvs xbps-install xbps-remove su shutdown poweroff reboot; do
# shellcheck disable=SC2139
command -v $command 1>/dev/null 2>&1 && alias $command="sudo $command"
done
unset command

View file

@ -1,7 +1,3 @@
#!/bin/zsh
WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
# vi mode
bindkey -v
@ -51,25 +47,27 @@ global_keybinds=(
"$key_info[Delete]" delete-char
"$key_info[ControlLeft]" backward-word
"$key_info[ControlRight]" forward-word
"$key_info[Control]E" lf-wrap
"$key_info[Control]G" lazygit-wrap
"$key_info[Control]S" toggle-fzf-tab
"$key_info[Control]Z" fancy-ctrl-z
)
local -A viins_keybinds
viins_keybinds=(
"$key_info[Backspace]" backward-delete-char
"$key_info[Control]W" backward-kill-word
"$key_info[Backspace]" backward-delete-char
"$key_info[ControlLeft]" vi-backward-word
"$key_info[ControlRight]" vi-forward-word
"$key_info[Control]E" lfwrap
"$key_info[Control]G" lg
"$key_info[Control]S" toggle-fzf-tab
)
local -A vicmd_keybinds
vicmd_keybinds=(
"$key_info[Control]V" edit-command-line
"$key_info[Delete]" delete-char
"$key_info[ControlLeft]" vi-backward-word
"$key_info[ControlRight]" vi-forward-word
"$key_info[Control]V" edit-command-line
"$key_info[Escape]" sudo-command-line
)
for key bind in ${(kv)global_keybinds} ${(kv)viins_keybinds}; do
@ -79,4 +77,3 @@ done
for key bind in ${(kv)global_keybinds} ${(kv)vicmd_keybinds}; do
bindkey -M vicmd "$key" "$bind"
done

View file

@ -0,0 +1,25 @@
WORDCHARS='*?_-.[]~&;!#$%^(){}<>'
zstyle '*' single-ignored show
zstyle ':completion:*' special-dirs true
zstyle ':completion:*' list-colors "${(s/:/)LS_COLORS}"
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' menu no
zstyle ':completion:*' use-cache yes
zstyle ':completion:*' cache-path "${XDG_CACHE_HOME}/zsh/.zcompcache"
zstyle ':completion:*:git-checkout:*' sort false
zstyle ':completion:*:descriptions' format '[%d]'
zstyle ':completion:*:*:*:*:processes' command "ps -u $USERNAME -o pid,user,comm -ww"
zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \
clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \
gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \
ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \
operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \
usbmux uucp vcsa wwwrun xfs '_*'
zmodload zsh/complist
_comp_options+=(globdots)

View file

@ -0,0 +1,27 @@
function clipcopy() {
cat "${1:-/dev/stdin}" | xsel --clipboard --input
}
function clippaste() {
xsel --clipboard --output
}
function xsi() {
xpkg -a | \
fzf -q ${1:-""} -m --preview \
"xq {1} | grep -e pkgver -e license -e short_desc -e installed_size -e maintainer -e repository -e homepage" \
--preview-window=right:66%:wrap | xargs -ro xi
}
function ntfy() {
"$@" && {
notify-send "$1 completed successfully"
return
}
notify-send -u critical "$1 failed! " "exited with code: $?"
}
function whed() {
script=$(which "$1")
[ -e "$script" ] && $EDITOR $(which "$script")
}

View file

@ -0,0 +1,38 @@
# NOTE: History
[ ! -f "$XDG_DATA_HOME/zsh/history" ] &&
mkdir -p "$XDG_DATA_HOME/zsh" &&
touch "$XDG_DATA_HOME/zsh/history"
HISTFILE="$XDG_DATA_HOME/zsh/history"
HISTSIZE=10000000
SAVEHIST=10000000
setopt \
BANG_HIST \
HIST_FIND_NO_DUPS \
HIST_IGNORE_ALL_DUPS \
HIST_IGNORE_DUPS \
HIST_IGNORE_SPACE \
HIST_REDUCE_BLANKS \
HIST_SAVE_NO_DUPS \
HIST_VERIFY \
SHARE_HISTORY
# NOTE: Other
KEYTIMEOUT=1
setopt \
AUTO_CD \
HASH_LIST_ALL \
INTERACTIVE_COMMENTS \
LONG_LIST_JOBS \
NOTIFY \
PROMPT_SUBST \
GLOB_DOTS
unsetopt \
FLOW_CONTROL \
NOMATCH
zle_highlight+=(paste:none)

View file

@ -0,0 +1,56 @@
typeset -gAH ZINIT;
ZINIT[HOME_DIR]=$HOME/.local/share/zsh/zinit
ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git
ZINIT[OPTIMIZE_OUT_DISK_ACCESSES]=1
ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions
ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets
ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump
ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins
source "${ZINIT[BIN_DIR]}/zinit.zsh"
function turbo() {
zinit ice wait lucid "${@}"
}
function zload() {
zinit load "${@}"
}
function zsnippet() {
zinit snippet "${@}"
}
# NOTE: virtualenv wrapper
turbo
zsnippet https://raw.githubusercontent.com/python-virtualenvwrapper/virtualenvwrapper/refs/heads/main/virtualenvwrapper.sh
# NOTE: fzf completion menu
turbo
zload Aloxaf/fzf-tab
# NOTE: prox
turbo as:"program" from:"gitlab.tralios.de" pick:"prox"
zload "software/tralios-prox"
turbo as:"completion" from:"gitlab.tralios.de" pick:"_prox"
zload "software/tralios-prox"
# NOTE: kube program
turbo as:"program" from:"gitlab.tralios.de" pick:"kube"
zload "software/tralios-kube"
turbo as:"completion" from:"gitlab.tralios.de" pick:"_kube"
zload "software/tralios-kube"
# NOTE: autosuggest
turbo atload:"_zsh_autosuggest_start"
zload /usr/share/zsh/plugins/zsh-autosuggestions
export ZSH_AUTOSUGGEST_USE_ASYNC=1
export ZSH_AUTOSUGGEST_MANUAL_REBIND=1
# NOTE: syntax highlighting
turbo atinit:"zicompinit; zicdreplay;"
zload /usr/share/zsh/plugins/zsh-syntax-highlighting
for f in zload zsnippet turbo; do
unset -f "$f"
done

View file

@ -1,19 +1,64 @@
#!/bin/zsh
autoload -Uz add-zsh-hook
autoload -Uz colors && colors
autoload -Uz edit-command-line && zle -N edit-command-line
function venv_prompt() {
[[ -n ${VIRTUAL_ENV} ]] || return
echo -e "%F{yellow}%f ${VIRTUAL_ENV:t:gs/%/%%}"
}
function write_title_wd() {
echo -ne "\033]0;$(print -P "%n@%m [%3~]")\007"
# Cursor Shape
function zle-keymap-select() {
case $KEYMAP in
vicmd) echo -ne '\e[1 q';;
viins|main) echo -ne '\e[5 q';;
esac
}
zle -N zle-keymap-select
function zle-line-init() {
echo -ne "\e[5 q"
}
zle -N zle-line-init
function write_title_wd() {
echo -ne "\e]0;$(print -P "%n@%m [%3~]")\007"
}
add-zsh-hook precmd write_title_wd
function reset_beam() {
echo -ne '\e[5 q'
}
add-zsh-hook preexec reset_beam
function lfwrap() {
fancy-ctrl-z () {
if [[ $#BUFFER -eq 0 ]]; then
BUFFER="fg"
zle accept-line -w
else
zle push-input -w
zle clear-screen -w
fi
}
zle -N fancy-ctrl-z
sudo-command-line() {
[[ -z $BUFFER ]] && zle up-history
if [[ $BUFFER == sudo\ * ]]; then
LBUFFER="${LBUFFER#sudo }"
elif [[ $BUFFER == $EDITOR\ * ]]; then
LBUFFER="${LBUFFER#$EDITOR }"
LBUFFER="sudoedit $LBUFFER"
elif [[ $BUFFER == sudoedit\ * ]]; then
LBUFFER="${LBUFFER#sudoedit }"
LBUFFER="$EDITOR $LBUFFER"
else
LBUFFER="sudo $LBUFFER"
fi
}
zle -N sudo-command-line
function lf-wrap() {
LF_DIRFILE="$(mktemp -u)"
env lfX -last-dir-path="$LF_DIRFILE" \
@ -29,55 +74,17 @@ function lfwrap() {
fi
zle reset-prompt
zle redisplay
write_title_wd
reset_beam
}
zle -N lf-wrap
zle -N lfwrap
# Cursor Shape
function zle-keymap-select() {
case $KEYMAP in
vicmd) echo -ne '\e[1 q';; # block
viins|main) echo -ne '\e[5 q';; # beam
esac
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q"
}
zle -N zle-line-init
# CMDLine Edit
zle -N edit-command-line
# Lazygit
function lg() {
function lazygit-wrap() {
[ ! -d "$(pwd)/.git" ] && [[ $(read -erk "?Not in a git repository. Create a new git repository? (y/n): ") =~ ^[Yy]$ ]] && git init
[ -d "$(pwd)/.git" ] && lazygit -p "$(pwd)"
zle reset-prompt
}
zle -N lg
# Useful functions for usage in the shell
function xsi() {
xpkg -a | \
fzf -q ${1:-""} -m --preview \
"xq {1} | \grep -e pkgver -e license -e short_desc -e installed_size -e maintainer -e repository -e homepage" \
--preview-window=right:66%:wrap | xargs -ro xi
}
function ntfy() {
"$@" && { notify-send "$1 completed successfully"; return; }
notify-send -u critical "$1 failed! " "exited with code: $?"
}
function whed() {
script=$(which "$1")
[ -e "$script" ] && $EDITOR $(which "$script")
}
zle -N lazygit-wrap
function workon_cwd() {
local PROJECT_ROOT="${PWD}"
@ -111,3 +118,4 @@ function workon_cwd() {
deactivate && unset CD_VIRTUAL_ENV
}
}
add-zsh-hook chpwd workon_cwd

View file

@ -1,71 +0,0 @@
#!/bin/zsh
export PROMPT='%B%F{blue}%n%F{cyan}@%F{blue}%m %F{magenta}[%F{white}%3~%F{magenta}] %(?.%F{green}.%F{red})»%f%b '
export RPROMPT='%(?..%F{red}%?) $(venv_prompt)'
export HISTSIZE=10000000
export SAVEHIST=10000000
export HISTFILE="$XDG_DATA_HOME/zsh/history"
export KEYTIMEOUT=1
[ ! -f $XDG_DATA_HOME/zsh/history ] && mkdir -p $XDG_DATA_HOME/zsh && touch $XDG_DATA_HOME/zsh/history
fpath=($XDG_CONFIG_HOME/zsh/completions $fpath)
setopt \
AUTO_CD \
BANG_HIST \
HASH_LIST_ALL \
HIST_IGNORE_DUPS \
HIST_IGNORE_ALL_DUPS \
HIST_FIND_NO_DUPS \
HIST_SAVE_NO_DUPS \
HIST_REDUCE_BLANKS \
HIST_VERIFY \
HIST_IGNORE_SPACE \
INTERACTIVE_COMMENTS \
LONG_LIST_JOBS \
NO_FLOW_CONTROL \
NO_NOMATCH \
NOTIFY \
PROMPT_SUBST \
SHARE_HISTORY
autoload -Uz colors && colors
autoload -Uz edit-command-line && zle -N edit-command-line
autoload -Uz add-zsh-hook
autoload -Uz compinit
autoload -U add-zsh-hook
zstyle ':completion:*:git-checkout:*' sort false
zstyle ':completion:*:descriptions' format '[%d]'
zstyle ':completion:*' list-colors "${(s/:/)LS_COLORS}"
zstyle ':completion:*' menu no
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "${XDG_CACHE_HOME}/zsh/.zcompcache"
zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup
zstyle ':fzf-tab:*' switch-group '<' '>'
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -lhpANX --color=always --group-directories-first $realpath'
zmodload zsh/complist
compinit
_comp_options+=(globdots)
zle_highlight+=(paste:none)
# Set the titlestring
add-zsh-hook precmd write_title_wd
add-zsh-hook preexec reset_beam
add-zsh-hook chpwd workon_cwd
# Virtualenvwrapper Setup
source "$(which virtualenvwrapper_lazy.sh)"
type workon >/dev/null 2>&1
[ -z "$WORKON_HOME" ] && {
echo "$WORKON_HOME unset!"
return 1
}
# switch to virtualenv if terminal is started outside of home directory
[ "$PWD" != ~ ] && workon_cwd

@ -1 +0,0 @@
Subproject commit b6e1b22458a131f835c6fe65bdb88eb45093d2d2

@ -1 +0,0 @@
Subproject commit 53a26e287fbbe2dcebb3aa1801546c6de32416fa

View file

@ -1,6 +1,6 @@
#!/bin/sh
zsh=${ZDOTDIR}/configs/hashes
zsh=${ZDOTDIR}/config/hashes.zsh
lf=${XDG_CONFIG_HOME}/lf/shortcuts
nvim=${XDG_CONFIG_HOME}/nvim/lua/config/shortcuts.lua

@ -0,0 +1 @@
Subproject commit c3469496455ea8b8ba184426c558e54817825bef

View file

@ -1 +0,0 @@
../../../../../../../Documents/dev/tralios/tralios-kube/_kube

View file

@ -1,6 +1,6 @@
export VAULT_ADDR=https://vault.tralios.de
export NETBOX_TOKEN="<#netbox_apikey#>"
export NETBOX_TOKEN="1c4027b2d0458ce051a5833c3be34aff9af55883"
export NETBOX_URL="https://netbox.tralios.de"
export KUBECONFIG_DIRS="

View file