diff options
author | Matt Singleton <matt@xcolour.net> | 2024-04-11 16:21:15 -0500 |
---|---|---|
committer | Matt Singleton <matt@xcolour.net> | 2024-04-11 16:21:15 -0500 |
commit | f2dfde23f8157da1532a2b2e236af529fed47713 (patch) | |
tree | d5eabb0eb33d100304ee16596b2a43dfb4a68d1c /stow/zsh | |
parent | 7f67d28e18760154778f20da43772838c36734ed (diff) |
replace janky deploy script with stow and make
re-orgs all the console oriented dotfiles to be stowable
makefile to deploy everything
move from vimplug to native vim packages
cleanup script for blowing away old symlinks
Diffstat (limited to 'stow/zsh')
-rw-r--r-- | stow/zsh/.config/zsh/.zprofile | 4 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/.zshrc | 4 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/20-appearance.zsh | 79 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/30-behavior.zsh | 54 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/40-key-bindings.zsh | 6 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/50-completion.zsh | 27 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/60-graphical-session.zsh | 8 | ||||
-rw-r--r-- | stow/zsh/.config/zsh/99-function-overrides.zsh | 8 | ||||
-rw-r--r-- | stow/zsh/.zshenv | 1 |
9 files changed, 191 insertions, 0 deletions
diff --git a/stow/zsh/.config/zsh/.zprofile b/stow/zsh/.config/zsh/.zprofile new file mode 100644 index 0000000..68b0ec4 --- /dev/null +++ b/stow/zsh/.config/zsh/.zprofile @@ -0,0 +1,4 @@ +if [ "$(uname)" = "Darwin" ]; then + # disable Apple Terminal's annoying session restore feature + SHELL_SESSIONS_DISABLE=1 +fi diff --git a/stow/zsh/.config/zsh/.zshrc b/stow/zsh/.config/zsh/.zshrc new file mode 100644 index 0000000..f33ca44 --- /dev/null +++ b/stow/zsh/.config/zsh/.zshrc @@ -0,0 +1,4 @@ +for f in $ZDOTDIR/*.zsh +do + source "${f}" +done diff --git a/stow/zsh/.config/zsh/20-appearance.zsh b/stow/zsh/.config/zsh/20-appearance.zsh new file mode 100644 index 0000000..fa3c3cc --- /dev/null +++ b/stow/zsh/.config/zsh/20-appearance.zsh @@ -0,0 +1,79 @@ +# +# colorize shell programs + +if ls -Z . &>/dev/null 2>&1; then + # gnu coreutils? + alias ls='ls --color=auto' + eval `dircolors ${XDG_CONFIG_HOME:-${HOME}/.config}/dircolors.conf` +elif (( $+commands[gls] )); then + # prefixed gnu coreutils? + alias ls='gls --color=auto' + eval `gdircolors ${XDG_CONFIG_HOME:-${HOME}/.config}/dircolors.conf` +else + # assume bsd ls + alias ls='ls -G' + export LSCOLORS="exgxbxdxcxegedxbxgxcxd" +fi + +# grep +alias grep='grep --color=auto' +alias egrep='egrep --color=auto' +alias fgrep='fgrep --color=auto' + +# less +export LESS_TERMCAP_mb=$'\e[1;31m' # begin blinking - bold red +export LESS_TERMCAP_md=$'\e[1;36m' # begin bold - bold cyan +export LESS_TERMCAP_me=$'\e[0m' # end mode +export LESS_TERMCAP_so=$'\e[33;47m' # begin standout mode - yellow on light gray ("white") +export LESS_TERMCAP_se=$'\e[0m' # end standout mode +export LESS_TERMCAP_us=$'\e[4;35m' # begin underline - magenta underline +export LESS_TERMCAP_ue=$'\e[0m' # end underline +export MANROFFOPT="-c" + +# +# make a sweet prompt + +autoload colors; colors; +setopt prompt_subst # expansion of color codes, etc. in the prompt + +# print the fully resolved shell command with time stamp +# to be run from zsh's builtin 'preexec' with all arguments passed through ($*) +function theme_preexec () { + echo "($fg[magenta]`date +%r`$reset_color) $fg[cyan]$3$reset_color" +} + +# print the prompt char in red if the last command exited non-zero +function prompt_char { + echo "%(?.$.%{$fg[red]%}$%{$reset_color%})" +} + +function repo_prompt_info { + # git + ref=$(git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null) + if [ $? -eq 0 ]; then + #repo=$(basename $(git rev-parse --show-toplevel)) + echo "%{$fg[cyan]%}${ref#refs/heads/}%{$reset_color%}" + return + fi +} + +function workspace_prompt_info { + repo=$(repo_prompt_info) + if [ "$repo" ]; then + echo "[$repo] " + return + fi +} + +# print the hostname in green if local, else red +function hostname_info { + if [[ $ZSH_LOCAL_ENV == "true" ]]; then + echo "%{$fg[green]%}%{$ZSH_HOST_PREFIX%}%m%{$ZSH_HOST_SUFFIX%}%{$reset_color%}" + else + echo "%{$fg[red]%}%{$ZSH_HOST_PREFIX%}%m%{$ZSH_HOST_SUFFIX%}%{$reset_color%}" + fi +} + +# a colorful multiline prompt using the above defined functions +PROMPT=$'%{$fg[yellow]%}%n%{$reset_color%}@$(hostname_info):%{$fg[blue]%}%~%{$reset_color%} +$(workspace_prompt_info)$(prompt_char)%{$reset_color%} ' diff --git a/stow/zsh/.config/zsh/30-behavior.zsh b/stow/zsh/.config/zsh/30-behavior.zsh new file mode 100644 index 0000000..6b2b2c2 --- /dev/null +++ b/stow/zsh/.config/zsh/30-behavior.zsh @@ -0,0 +1,54 @@ +# +# execution + +setopt rm_star_wait # wait 10 seconds before accepting 'rm *' confirmation +export REPORTTIME=5 # report timing for any command longer than 5 seconds +unsetopt flowcontrol # disable ^s from freezing the terminal + +# +# history + +HISTFILE="${XDG_DATA_HOME:-${HOME}/.local/share}/zsh/history" +HISTSIZE=10000 +SAVEHIST=10000 + +setopt hist_ignore_all_dups # ignore dups including non-sequential ones +setopt share_history # share command history data between sessions +setopt hist_verify # load hist into command buffer rather than exec immediately + +# +# term support + +# make sure $TERM is installed +# if not, fall back on xterm-256color +infocmp "$TERM" > /dev/null 2>&1 || export TERM=xterm-256color + +# set term title appropriately based on term type +# user@host:current_dir (current_command) +case "$TERM" in + xterm*|rxvt*|screen*|alacritty*|foot) + term_preexec () { + printf '\e]0;%s (%s)\a' ${(%):-'%n@%m:%~'} "$1" + } + term_precmd () { + printf '\e]0;%s\a' ${(%):-'%n@%m:%~'} + } + ;; +esac + +# +# draw a horizontal separator + +function hr { + printf "$bg[red]${(l:$COLUMNS:: :)}$reset_color\n" + printf "$bg[yellow]${(l:$COLUMNS:: :)}\n" + printf "$bg[green]${(l:$COLUMNS:: :)}\n" + printf "$bg[cyan]${(l:$COLUMNS:: :)}\n" + printf "$bg[blue]${(l:$COLUMNS:: :)}\n" + printf "$bg[magenta]${(l:$COLUMNS:: :)}$reset_color\n" +} + +# +# less + +export LESS=-i diff --git a/stow/zsh/.config/zsh/40-key-bindings.zsh b/stow/zsh/.config/zsh/40-key-bindings.zsh new file mode 100644 index 0000000..4deac62 --- /dev/null +++ b/stow/zsh/.config/zsh/40-key-bindings.zsh @@ -0,0 +1,6 @@ +bindkey -e # use emacs mode +bindkey '^r' history-incremental-search-backward # ctrl-r +bindkey '^[[Z' reverse-menu-complete # shift-tab + +bindkey '\e[3~' delete-char # make sure delete key works +bindkey ' ' magic-space # also do history expansion on space diff --git a/stow/zsh/.config/zsh/50-completion.zsh b/stow/zsh/.config/zsh/50-completion.zsh new file mode 100644 index 0000000..23cb052 --- /dev/null +++ b/stow/zsh/.config/zsh/50-completion.zsh @@ -0,0 +1,27 @@ +# initialize the completion system +autoload -U compinit +compinit -d "${XDG_CACHE_HOME:-${HOME}/.cache}/zsh/zcompdump" +zmodload zsh/complist + +# complete only after the second consecutive tab +setopt auto_menu + +# use GNU ls color specification for completion menu +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} + +# use menu selection by default +zstyle ':completion:*:default' menu select + +# disable named-directories autocompletion +zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories +cdpath=(.) + +# don't autocomplete local users for (ssh|ftp|scp|rsync) +zstyle ':completion:*:*:(ssh|ftp|scp|rsync):*' users + +# Use caching so that commands like apt and dpkg complete are useable +zstyle ':completion::complete:*' use-cache 1 +zstyle ':completion:*' cache-path "${XDG_CACHE_HOME:-${HOME}/.cache}/zsh/zcompcache" + +# always rehash commands list +zstyle ':completion:*:commands' rehash 1 diff --git a/stow/zsh/.config/zsh/60-graphical-session.zsh b/stow/zsh/.config/zsh/60-graphical-session.zsh new file mode 100644 index 0000000..3d4b53a --- /dev/null +++ b/stow/zsh/.config/zsh/60-graphical-session.zsh @@ -0,0 +1,8 @@ +if [ -n "$XDG_SESSION_DESKTOP" ] && command -v gnome-keyring-daemon > /dev/null; then + # load the keyring daemon into the environment if: + # - we're in a graphical session + # - the daemon is installed + # starts the daemon if it hasn't been started already, + # otherwise just exports the auth socket of the existing daemon + export $(gnome-keyring-daemon --start 2> /dev/null) +fi diff --git a/stow/zsh/.config/zsh/99-function-overrides.zsh b/stow/zsh/.config/zsh/99-function-overrides.zsh new file mode 100644 index 0000000..8b233e5 --- /dev/null +++ b/stow/zsh/.config/zsh/99-function-overrides.zsh @@ -0,0 +1,8 @@ +preexec () { + type term_preexec &> /dev/null && term_preexec $* + type theme_preexec &> /dev/null && theme_preexec $* +} + +precmd () { + type term_precmd &> /dev/null && term_precmd +} diff --git a/stow/zsh/.zshenv b/stow/zsh/.zshenv new file mode 100644 index 0000000..a573065 --- /dev/null +++ b/stow/zsh/.zshenv @@ -0,0 +1 @@ +export ZDOTDIR="${XDG_CONFIG_HOME:-${HOME}/.config}/zsh" |