feat(zsh): split config

This commit is contained in:
winston 2023-01-04 13:33:34 +01:00
parent 7545c840f2
commit 91a01ec1e3
Signed by: winston
GPG key ID: 3786770EDBC2B481
10 changed files with 162 additions and 133 deletions

View file

@ -0,0 +1,10 @@
alias cm='chezmoi'
alias cma='chezmoi add'
alias cmap='chezmoi apply'
alias cmcd='cd $(chezmoi source-path)'
alias cmd='chezmoi diff'
alias cme='chezmoi edit'
alias cmm='chezmoi merge'
alias cmrm='chezmoi remove'
alias cmst='chezmoi status'
alias cmup='chezmoi update'

View file

@ -0,0 +1,13 @@
if [ -x "$(command -v lsd)" ]; then
# add a bit more space between the file icon & name
alias ls='lsd'
alias l='lsd'
alias ll='lsd -l'
alias la='lsd -la'
alias lt='lsd -l --total-size' alias lat='lsd -lA --total-size'
alias tree='lsd --tree'
else
alias l='ls'
alias ll='ls -l'
alias la='ls -lA'
fi

View file

@ -0,0 +1,10 @@
if [ -x "$(command -v colordiff)" ] && [ -x "$(command -v diff-so-fancy)" ]; then
function diff() {
colordiff -N -u "$@" | diff-so-fancy
}
function kdiff() {
KUBECTL_EXTERNAL_DIFF="colordiff -N -u"
kubectl diff "$@" | diff-so-fancy
}
fi

View file

@ -0,0 +1,64 @@
local MAPPINGS='
video/3gpp,3gp
video/3gpp2,3g2
video/MP2T,mpegts
video/MP2T,mpegtsraw
video/mp4,mp4
video/mpeg,mpeg
video/ogg,ogv
video/quicktime,mov
video/webm,webm
'
# format=$(echo "$MAPPINGS" | grep "$headers" | cut -d "," -f2-)
function icat() {
function display() {
if [[ "$TERM_PROGRAM" == "WezTerm" ]]; then
cat - | wezterm imgcat
elif [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
cat - | $(alias imgcat | cut -d "=" -f2-)
elif [[ "$TERM" = "xterm-kitty" ]]; then
cat - | kitty +kitten icat
else
echo "No image viewer defined for this terminal" && return 1
fi
return 0
}
function displaySVG() {
[[ ! -x "$(command -v convert)" ]] && echo "convert not found, install imagemagick" && return 1
convert -background none -density 192 - png:- | display
}
function displayVID() {
ffmpeg -loglevel fatal -hide_banner -i "$1" -vf scale=720:-1 -r 10 -f image2pipe -vcodec ppm pipe:1 | \
convert -delay 10 -loop 1 - gif:- | \
display
}
if [ ! -t 0 ]; then
input="$(cat - | base64)"
headers="$(echo "$input" | base64 -d | file - --mime-type | cut -d " " -f2-)"
case $headers in
*svg*) echo "$input" | base64 -d | displaySVG ;;
*video*) echo "haven't figured this part out yet" && return 1;;
*image*) echo "$input" | base64 -d | display ;;
*) echo "Unknown file type" && return 1 ;;
esac
elif [[ "$1" == http* ]]; then
case "$(curl -sSLI "$1" | grep -i "^content-type:")" in
*svg*) curl -fsSL "$1" | displaySVG ;;
*video*) echo "haven't figured this part out yet" && return 1;;
*image*) curl -fsSL "$1" | display ;;
*) echo "Unknown file type" && return 1 ;;
esac
else
[[ -z "$1" ]] && echo "Usage: icat <file|url>" && return 1
[[ ! -f "$1" ]] && echo "File not found: $1" && return 1
case "$(file -b --mime-type "$1")" in
*svg*) cat "$1" | displaySVG ;;
*video*) displayVID $1 ;;
*image*) cat "$1" | display ;;
*) echo "Unknown file type" && return 1 ;;
esac
fi
}

View file

@ -0,0 +1,25 @@
# if we're not on mac, exit
[[ "$(uname)" != "Darwin" ]] && exit 0
function twm() {
case "$1" in
"start")
brew services start skhd
brew services start yabai
;;
"stop")
brew services stop skhd
brew services stop yabai
;;
"restart")
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.skhd"
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"
;;
*)
echo "Usage: twm <start|restart|stop>"
return 1
;;
esac
}
alias sbks='launchctl kickstart -k "gui/${UID}/homebrew.mxcl.sketchybar"'

View file

@ -0,0 +1,16 @@
# omz
ohmyzsh/ohmyzsh path:lib
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
ohmyzsh/ohmyzsh path:plugins/colorize
ohmyzsh/ohmyzsh path:plugins/docker-compose
ohmyzsh/ohmyzsh path:plugins/git
ohmyzsh/ohmyzsh path:plugins/gpg-agent
ohmyzsh/ohmyzsh path:plugins/kubectl
jeffreytse/zsh-vi-mode
greymd/docker-zsh-completion
zsh-users/zsh-autosuggestions
zsh-users/zsh-completions
zsh-users/zsh-syntax-highlighting

View file

@ -32,6 +32,9 @@ export KUBECACHEDIR="$XDG_CACHE_HOME/kube"
export KREW_ROOT="$XDG_DATA_HOME/krew" export KREW_ROOT="$XDG_DATA_HOME/krew"
[ -d "$KREW_ROOT" ] && export PATH="$KREW_ROOT/bin:$PATH" [ -d "$KREW_ROOT" ] && export PATH="$KREW_ROOT/bin:$PATH"
export MINIKUBE_HOME="$XDG_DATA_HOME/minikube" export MINIKUBE_HOME="$XDG_DATA_HOME/minikube"
export HOMEBREW_INSTALL_BADGE="☕️"
export HOMEBREW_CLEANUP_MAX_AGE_DAYS=30
export HOMEBREW_AUTOREMOVE=1
#}}} #}}}
### python {{{ ### python {{{
export PYENV_ROOT="$XDG_DATA_HOME/pyenv" export PYENV_ROOT="$XDG_DATA_HOME/pyenv"

View file

@ -2,42 +2,13 @@
# load starship # load starship
[[ -x "$(command -v starship)" ]] && eval "$(starship init zsh)" [[ -x "$(command -v starship)" ]] && eval "$(starship init zsh)"
### plugins via antigen {{{ ### plugins via antidote {{{
# don't pollute $HOME with antigen autoload -Uz compinit && compinit
ADOTDIR="$XDG_DATA_HOME/antigen" zstyle ':antidote:bundle' use-friendly-names 'yes'
# bootstrap antigen antidote_dir="${ZDOTDIR:-$HOME}/antidote"
if [[ ! -d "$ADOTDIR" ]]; then [ ! -d "$antidote_dir" ] && git clone --depth=1 https://github.com/mattmc3/antidote.git "$antidote_dir"
mkdir -p "$ADOTDIR" source "$antidote_dir/antidote.zsh"
curl -L https://git.io/antigen > "$ADOTDIR/antigen.zsh" antidote load
chmod +x "$ADOTDIR/antigen.zsh"
fi
# load antigen
source "$ADOTDIR/antigen.zsh"
antigen use oh-my-zsh
antigen bundle colored-man-pages
antigen bundle colorize
antigen bundle docker-compose
antigen bundle git
antigen bundle gpg-agent
antigen bundle kubectl
# omz's vi-mode doesn't vibe with starship
antigen bundle jeffreytse/zsh-vi-mode
antigen bundle greymd/docker-zsh-completion
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply
# https://github.com/ohmyzsh/ohmyzsh/issues/10728
if [[ ! -d "$ZSH_CACHE_DIR/completions" ]]; then
mkdir -p "$ZSH_CACHE_DIR/completions"
fi
# }}} # }}}
### basics {{{ ### basics {{{
@ -48,117 +19,35 @@ export SAVEHIST=10000
setopt HIST_IGNORE_ALL_DUPS setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_DUPS setopt HIST_IGNORE_DUPS
# use fuck if available [ -x "$(command -v thefuck)" ] && eval "$(thefuck --alias)"
[[ -x "$(command -v thefuck)" ]] && eval $(thefuck --alias) [ -x "$(command -v zoxide)" ] && eval "$(zoxide init zsh)"
bindkey -r "^R"
[ -x "$(command -v mcfly)" ] && eval "$(mcfly init zsh)"
# }}} # }}}
### aliases & functions {{{ ### aliases & functions {{{
## basics {{{ ## basics {{{
if [ -x "$(command -v vivid)" ]; then [ -f "$ZDOTDIR/lscolors" ] && export LS_COLORS="$(cat "$ZDOTDIR/lscolors")"
export LS_COLORS="$(vivid generate catppuccin-mocha)"
fi
if [ -x "$(command -v lsd)" ]; then
# add a bit more space between the file icon & name
alias ls='lsd'
alias l='lsd'
alias ll='lsd -l'
alias la='lsd -la'
alias lt='lsd -l --total-size' alias lat='lsd -lA --total-size'
alias tree='lsd --tree'
else
alias l='ls'
alias ll='ls -l'
alias la='ls -lA'
fi
# both names for bat # both names for bat
export BAT_THEME="catppuccin-mocha" export BAT_THEME="catppuccin-mocha"
if [ -x "$(command -v batcat)" ]; then [ -x "$(command -v batcat)" ] && alias cat='batcat'
alias cat='batcat' [ -x "$(command -v bat)" ] && alias cat='bat'
elif [ -x "$(command -v bat)" ]; then [ -x "$(command -v nvim)" ] && alias vim='nvim' alias wiki='nvim -c VimwikiIndex'
alias cat='bat' [ -x "$(command -v taskwarrior-tui)" ] && alias tt='taskwarrior-tui'
fi
[[ -x "$(command -v zoxide)" ]] && eval "$(zoxide init zsh)"
# use neovim as vim, if installed
if [[ -x "$(command -v nvim)" ]]; then
alias vim='nvim'
# open vimwiki
alias wiki='nvim -c VimwikiIndex'
fi
[[ -x "$(command -v taskwarrior-tui)" ]] && alias tt='taskwarrior-tui'
# switch between yubikeys for the same GPG key # switch between yubikeys for the same GPG key
alias switch_yubikeys='gpg-connect-agent "scd serialno" "learn --force" /bye' alias switch_yubikeys='gpg-connect-agent "scd serialno" "learn --force" /bye'
# list tty devices on macOS, useful for Arduino & other boards # list tty devices on macOS, useful for Arduino & other boards
alias lstty='ls /dev | grep -E "^(tty\.|cu\.)" --color=never' alias lstty='ls /dev | grep -E "^(tty\.|cu\.)" --color=never'
## }}}
## OS-dependent tweaks {{{
# manage yabai & ecosystem easier
function twm() {
case "$1" in
"start")
brew services start skhd
brew services start yabai
;;
"stop")
brew services stop skhd
brew services stop yabai
;;
"restart")
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.skhd"
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"
;;
*)
echo "Usage: twm <start|restart|stop>"
return 1
;;
esac
}
alias sbks='launchctl kickstart -k "gui/${UID}/homebrew.mxcl.sketchybar"'
alias onefetch='onefetch --true-color=never' alias onefetch='onefetch --true-color=never'
alias mbsync='mbsync --config ~/.config/mbsyncrc' alias mbsync='mbsync --config ~/.config/mbsyncrc'
function icat() {
if [ "$TERM_PROGRAM" = "WezTerm" ]; then
wezterm imgcat "$@"
elif [ "$TERM" = "xterm-kitty" ]; then
kitty +kitten icat "$@"
else
echo 'No image viewer defined for this terminal'
fi
}
## }}} ## }}}
## development {{{ for conf in "$ZDOTDIR"/config.d/**/*.zsh; do
# use the combination of colordiff & diff-so-fancy source "${conf}"
if [ -x "$(command -v colordiff)" ] && [ -x "$(command -v diff-so-fancy)" ]; then done
function diff() { unset conf
colordiff -N -u "$@" | diff-so-fancy
}
function kdiff() {
KUBECTL_EXTERNAL_DIFF="colordiff -N -u"
kubectl diff "$@" | diff-so-fancy
}
fi
## chezmoi
alias cm='chezmoi'
alias cma='chezmoi add'
alias cmap='chezmoi apply'
alias cmcd='cd $(chezmoi source-path)'
alias cmd='chezmoi diff'
alias cme='chezmoi edit'
alias cmm='chezmoi merge'
alias cmrm='chezmoi remove'
alias cmst='chezmoi status'
alias cmup='chezmoi update'
## }}}
function debugnvim() { function debugnvim() {
cd $(mktemp -d) cd $(mktemp -d)
@ -171,10 +60,8 @@ function debugnvim() {
### languages & frameworks {{{ ### languages & frameworks {{{
# python, my old friend # python, my old friend
[[ -x "$(command -v pyenv)" ]] && eval "$(pyenv init -)" [[ -x "$(command -v pyenv)" ]] && eval "$(pyenv init -)"
# ruby # ruby
[[ -x "$(command -v rbenv)" ]] && eval "$(rbenv init - zsh)" [[ -x "$(command -v rbenv)" ]] && eval "$(rbenv init - zsh)"
# node # node
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# }}} # }}}

1
dot_config/zsh/lscolors Normal file

File diff suppressed because one or more lines are too long