mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
Joe Groocock
521f462141
This moves loading of the environment variables out of the normal service startup flow and has systemd load the variables early. Shim ZSH to load the environment.d configuration when running without systemd. Signed-off-by: Joe Groocock <me@frebib.net>
177 lines
6.0 KiB
Bash
177 lines
6.0 KiB
Bash
# Config and cache directory paths
|
|
ZSH_DIR="$XDG_CONFIG_HOME/zsh"
|
|
LOG_DIR="$XDG_DATA_HOME/logs"
|
|
HISTFILE="$XDG_DATA_HOME/zsh/history"
|
|
HISTSIZE=999999
|
|
SAVEHIST=999999
|
|
|
|
mkdir -p "$LOG_DIR" "$(dirname "$HISTFILE")"
|
|
|
|
exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; }
|
|
|
|
# Only set tty if running interactively
|
|
if exists tty && tty -s; then
|
|
# Resolve at shell runtime
|
|
export GPG_TTY="$(tty)"
|
|
fi
|
|
|
|
# Configure less and add colours
|
|
export LESS="-RI --mouse --wheel-lines=3"
|
|
export PAGER="less"
|
|
export MANPAGER="less -+N"
|
|
export SYSTEMD_PAGER="less $LESS"
|
|
# Disable histfile
|
|
export LESSHISTFILE=-
|
|
# Use .local/share for z instead of ~/.z
|
|
export _Z_DATA="$XDG_DATA_HOME/z"
|
|
|
|
if exists tput; then
|
|
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
|
|
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
|
|
export LESS_TERMCAP_me=$(tput sgr0)
|
|
export LESS_TERMCAP_so=$(tput bold; tput setaf 4) # blue
|
|
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
|
|
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
|
|
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
|
|
export LESS_TERMCAP_mr=$(tput rev)
|
|
export LESS_TERMCAP_mh=$(tput dim)
|
|
export LESS_TERMCAP_ZN=$(tput ssubm)
|
|
export LESS_TERMCAP_ZV=$(tput rsubm)
|
|
export LESS_TERMCAP_ZO=$(tput ssupm)
|
|
export LESS_TERMCAP_ZW=$(tput rsupm)
|
|
fi
|
|
|
|
# Set some useful ZSH/Bash options
|
|
setopt sharehistory histignorealldups histignorespace histreduceblanks
|
|
setopt pathdirs autocd autopushd extendedglob nullglob alwaystoend interactivecomments dvorak
|
|
|
|
zstyle ':completion:*:sudo|_::' environ PATH="/sbin:/usr/sbin:$PATH" HOME="/root"
|
|
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*'
|
|
zstyle ':completion:*' rehash true
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
|
|
zstyle ':compinstall' filename "${ZDOTDIR:-~}/.zshrc"
|
|
|
|
# Pre-load vi-mode edit-command-line before antigen plugins are loaded
|
|
autoload -z edit-command-line
|
|
zle -N edit-command-line
|
|
|
|
export WORDCHARS='*?_[]~=&;!#$%^(){}'
|
|
x-bash-backward-kill-word(){ WORDCHARS='' zle kill-word; }
|
|
zle -N x-bash-backward-kill-word
|
|
|
|
# Load antigen & plugins
|
|
ANTIGEN_LOG="$LOG_DIR/antigen-$(date -u --iso-8601=seconds | cut -d+ -f1).log"
|
|
antigen_src="$ADOTDIR/antigen.zsh"
|
|
if [ ! -f "$antigen_src" ]; then
|
|
git clone https://github.com/zsh-users/antigen.git "$ADOTDIR"
|
|
fi
|
|
source "$antigen_src"
|
|
|
|
antigen bundle zsh-users/zsh-completions
|
|
antigen bundle zsh-users/zsh-autosuggestions
|
|
antigen bundle zsh-users/zsh-syntax-highlighting@feature/redrawhook
|
|
antigen bundle mafredri/zsh-async
|
|
antigen bundle agkozak/zsh-z
|
|
|
|
antigen apply
|
|
|
|
# Vim mode!
|
|
bindkey -v
|
|
export KEYTIMEOUT=25
|
|
|
|
# Set some key-binds
|
|
bindkey "^[[1;3C" forward-word
|
|
bindkey "^[[1;5C" forward-word
|
|
bindkey "^[[1;3D" backward-word
|
|
bindkey "^[[1;5D" backward-word
|
|
bindkey "^[[7~" beginning-of-line
|
|
bindkey "^[[8~" end-of-line
|
|
bindkey "^[[3~" delete-char
|
|
bindkey "^[[3;3~" delete-word
|
|
bindkey '^[^[[3~' x-bash-backward-kill-word
|
|
bindkey '^[^[[3^' x-bash-backward-kill-word
|
|
bindkey '^[[A' fzf-history-widget # Up (fzf)
|
|
bindkey '^[[B' fzf-history-widget # Down (fzf)
|
|
bindkey '^F' fzf-file-widget # Ctrl+F file search (fzf)
|
|
|
|
bindkey "^F" fzf-file-widget
|
|
bindkey -M vicmd "^W" backward-delete-word
|
|
|
|
bindkey -M vicmd d vi-backward-char
|
|
bindkey -M vicmd h vi-down-line-or-history
|
|
bindkey -M vicmd t vi-up-line-or-history
|
|
bindkey -M vicmd n vi-forward-char
|
|
bindkey -M vicmd k vi-delete
|
|
bindkey -M vicmd K vi-kill-eol
|
|
bindkey -M vicmd j vi-find-next-char-skip
|
|
bindkey -M vicmd l vi-repeat-search
|
|
|
|
# Backspace across newlines when in vi-mode
|
|
bindkey -v '^?' backward-delete-char
|
|
|
|
ZSH_AUTOSUGGEST_USE_ASYNC=true
|
|
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=128
|
|
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}")
|
|
|
|
default='fg=12'
|
|
prog='fg=blue'
|
|
ZSH_HIGHLIGHT_STYLES=()
|
|
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets root line)
|
|
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
|
|
ZSH_HIGHLIGHT_STYLES[default]=$default
|
|
ZSH_HIGHLIGHT_STYLES[arg0]=$prog
|
|
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
|
|
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow'
|
|
ZSH_HIGHLIGHT_STYLES[alias]=$prog
|
|
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=green'
|
|
ZSH_HIGHLIGHT_STYLES[builtin]='fg=4'
|
|
ZSH_HIGHLIGHT_STYLES[function]=$prog
|
|
ZSH_HIGHLIGHT_STYLES[command]=$prog
|
|
ZSH_HIGHLIGHT_STYLES[precommand]='fg=4'
|
|
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'
|
|
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[path_separator]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=208'
|
|
ZSH_HIGHLIGHT_STYLES[globbing]='fg=red'
|
|
ZSH_HIGHLIGHT_STYLES[comment]='fg=7'
|
|
ZSH_HIGHLIGHT_STYLES[history-expansion]=$default
|
|
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=$default
|
|
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=$default
|
|
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=magenta'
|
|
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow'
|
|
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
|
|
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=yellow'
|
|
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan'
|
|
ZSH_HIGHLIGHT_STYLES[assign]='fg=green'
|
|
ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan,bold'
|
|
|
|
source "$XDG_CONFIG_HOME/aliases"
|
|
|
|
# Source secret keys and values into environment
|
|
if [ -f "$XDG_CONFIG_HOME/secrets" ]; then
|
|
set -o allexport
|
|
source $XDG_CONFIG_HOME/secrets
|
|
set +o allexport
|
|
fi
|
|
|
|
# Load some manual plugins
|
|
source "$ZSH_DIR/plugins/sudo.zsh"
|
|
source "$ZSH_DIR/plugins/fish-theme.zsh"
|
|
source "$ZSH_DIR/plugins/git-rprompt.zsh"
|
|
[ -f '/usr/share/fzf/key-bindings.zsh' ] && source /usr/share/fzf/key-bindings.zsh
|
|
[ -f '/usr/share/doc/pkgfile/command-not-found.zsh' ] && source /usr/share/doc/pkgfile/command-not-found.zsh
|
|
|
|
# Completion initialisation
|
|
autoload -U compinit bashcompinit
|
|
compinit
|
|
bashcompinit
|
|
|
|
# gopass completion
|
|
if exists gopass; then
|
|
source <(gopass completion bash)
|
|
fi
|