forked from ublue-os/bluefin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add more zsh configs (ublue-os#966)
Co-authored-by: Brian Ketelsen <bketelsen@gmail.com> Co-authored-by: Jorge O. Castro <jorge.castro@gmail.com>
- Loading branch information
1 parent
983c04e
commit a08d817
Showing
5 changed files
with
280 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#!/usr/bin/env zsh | ||
# vim:syntax=zsh | ||
# vim:filetype=zsh | ||
|
||
# Execute code in the background to not affect the current session | ||
( | ||
# <https://github.com/zimfw/zimfw/blob/master/login_init.zsh> | ||
setopt LOCAL_OPTIONS EXTENDED_GLOB | ||
autoload -U zrecompile | ||
local ZSHCONFIG="${ZDOTDIR:-$HOME}/.zsh" | ||
|
||
# Compile zcompdump, if modified, to increase startup speed. | ||
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump" | ||
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then | ||
zrecompile -pq "$zcompdump" | ||
fi | ||
# zcompile .zshrc | ||
zrecompile -pq ${ZDOTDIR:-${HOME}}/.zshrc | ||
zrecompile -pq ${ZDOTDIR:-${HOME}}/.zprofile | ||
zrecompile -pq ${ZDOTDIR:-${HOME}}/.zshenv | ||
# recompile all zsh or sh | ||
for f in $ZSHCONFIG/**/*.*sh | ||
do | ||
zrecompile -pq $f | ||
done | ||
) &! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/usr/bin/env zsh | ||
# vim:syntax=zsh | ||
# vim:filetype=zsh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# vim:syntax=zsh | ||
# vim:filetype=zsh | ||
|
||
# | ||
# Executes commands at login before zshrc. | ||
# | ||
if [[ -z "$LANG" ]]; then | ||
export LANG='en_US.UTF-8' | ||
export LANGUAGE=en_US.UTF-8 | ||
fi | ||
|
||
export LC_COLLATE=en_US.UTF-8 | ||
export LC_CTYPE=en_US.UTF-8 | ||
export LC_MESSAGES=en_US.UTF-8 | ||
export LC_MONETARY=en_US.UTF-8 | ||
export LC_NUMERIC=en_US.UTF-8 | ||
export LC_TIME=en_US.UTF-8 | ||
export LC_ALL=en_US.UTF-8 | ||
export LESSCHARSET=utf-8 | ||
|
||
# eliminates duplicates in *paths | ||
typeset -gU cdpath fpath path | ||
|
||
# Zsh search path for executable | ||
path=( | ||
/usr/local/{bin,sbin} | ||
$path | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/usr/bin/env zsh | ||
# vim:syntax=zsh | ||
# vim:filetype=zsh | ||
|
||
# https://blog.patshead.com/2011/04/improve-your-oh-my-zsh-startup-time-maybe.html | ||
skip_global_compinit=1 | ||
|
||
# http://disq.us/p/f55b78 | ||
setopt noglobalrcs | ||
|
||
export SYSTEM=$(uname -s) | ||
|
||
# https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv | ||
# Ensure that a non-login, non-interactive shell has a defined environment. | ||
if [[ ("$SHLVL" -eq 1 && ! -o LOGIN) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then | ||
source "${ZDOTDIR:-$HOME}/.zprofile" | ||
fi | ||
|
||
export PATH=$PATH:${HOME}/.bin | ||
export PATH=$HOME/bin:/usr/local/bin:$PATH | ||
export XDG_DATA_DIRS="$HOME/.nix-profile/share:/nix/var/nix/profiles/default/share:$XDG_DATA_DIRS" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,218 @@ | ||
#!/usr/bin/env zsh | ||
# vim:syntax=zsh | ||
# vim:filetype=zsh | ||
|
||
# | ||
# .zshrc is sourced in interactive shells. | ||
# It should contain commands to set up aliases, | ||
# functions, options, key bindings, etc. | ||
# | ||
|
||
if [[ -o interactive ]]; then | ||
if command -v brew >/dev/null 2>&1; then | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | ||
fi | ||
# for profiling zsh | ||
# https://unix.stackexchange.com/a/329719/27109 | ||
# | ||
# zmodload zsh/zprof | ||
|
||
# Load and initialize the completion system ignoring insecure directories with a | ||
# cache time of 20 hours, so it should almost always regenerate the first time a | ||
# shell is opened each day. | ||
autoload -Uz compinit | ||
_comp_path="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump" | ||
# #q expands globs in conditional expressions | ||
if [[ $_comp_path(#qNmh-20) ]]; then | ||
# -C (skip function check) implies -i (skip security check). | ||
compinit -C -d "$_comp_path" | ||
else | ||
mkdir -p "$_comp_path:h" | ||
compinit -i -d "$_comp_path" | ||
# Keep $_comp_path younger than cache time even if it isn't regenerated. | ||
touch "$_comp_path" | ||
fi | ||
unset _comp_path | ||
|
||
# | ||
# Completions | ||
# | ||
|
||
# load brew autocomplete | ||
if [ -d "/home/linuxbrew/.linuxbrew/share/zsh/site-functions" ]; then | ||
fpath+=(/home/linuxbrew/.linuxbrew/share/zsh/site-functions) | ||
fi | ||
|
||
# | ||
# Options | ||
# | ||
|
||
autoload -U compinit | ||
compinit | ||
setopt INC_APPEND_HISTORY # To save every command before it is executed | ||
setopt SHARE_HISTORY # Share history between all sessions. | ||
setopt APPEND_HISTORY # Append history to the history file. | ||
setopt COMPLETE_IN_WORD # Complete from both ends of a word. | ||
setopt ALWAYS_TO_END # Move cursor to the end of a completed word. | ||
setopt PATH_DIRS # Perform path search even on command names with slashes. | ||
setopt AUTO_MENU # Show completion menu on a successive tab press. | ||
setopt AUTO_LIST # Automatically list choices on ambiguous completion. | ||
setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. | ||
setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit. | ||
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. | ||
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. | ||
setopt interactivecomments # Allow inline comments | ||
setopt AUTO_CD # Auto changes to a directory without typing cd. | ||
|
||
#allow tab completion in the middle of a word | ||
setopt COMPLETE_IN_WORD | ||
# | ||
# Variables | ||
# | ||
|
||
export ZSHCONFIG=${ZDOTDIR:-$HOME}/.zsh | ||
|
||
## keep background processes at full speed | ||
#setopt NOBGNICE | ||
## restart running processes on exit | ||
#setopt HUP | ||
ZSH_THEME="spaceship" | ||
|
||
# Standard style used by default for 'list-colors' | ||
LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'} | ||
|
||
# | ||
# Styles | ||
# | ||
|
||
# Defaults. | ||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} | ||
zstyle ':completion:*:default' list-prompt '%S%M matches%s' | ||
|
||
# Use caching to make completion for commands such as dpkg and apt usable. | ||
zstyle ':completion::complete:*' use-cache on | ||
zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache" | ||
|
||
# Case-insensitive (all), partial-word, and then substring completion. | ||
if zstyle -t ':prezto:module:completion:*' case-sensitive; then | ||
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' | ||
setopt CASE_GLOB | ||
else | ||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' | ||
unsetopt CASE_GLOB | ||
fi | ||
|
||
## history | ||
setopt APPEND_HISTORY | ||
## for sharing history between zsh processes | ||
setopt INC_APPEND_HISTORY | ||
setopt SHARE_HISTORY | ||
# Group matches and describe. | ||
zstyle ':completion:*:*:*:*:*' menu select | ||
zstyle ':completion:*:matches' group 'yes' | ||
zstyle ':completion:*:options' description 'yes' | ||
zstyle ':completion:*:options' auto-description '%d' | ||
zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f' | ||
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f' | ||
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f' | ||
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f' | ||
zstyle ':completion:*' format ' %F{yellow}-- %d --%f' | ||
zstyle ':completion:*' group-name '' | ||
zstyle ':completion:*' verbose yes | ||
|
||
## never ever beep ever | ||
#setopt NO_BEEP | ||
# Fuzzy match mistyped completions. | ||
zstyle ':completion:*' completer _complete _match _approximate | ||
zstyle ':completion:*:match:*' original only | ||
zstyle ':completion:*:approximate:*' max-errors 1 numeric | ||
|
||
## automatically decide when to page a list of completions | ||
#LISTMAX=0 | ||
# Increase the number of errors based on the length of the typed word. But make | ||
# sure to cap (at 7) the max-errors to avoid hanging. | ||
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)' | ||
|
||
## disable mail checking | ||
#MAILCHECK=0 | ||
# Don't complete unavailable commands. | ||
zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' | ||
|
||
# Array completion element sorting. | ||
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters | ||
|
||
# Directories | ||
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories | ||
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select | ||
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' | ||
zstyle ':completion:*' squeeze-slashes true | ||
|
||
# History | ||
zstyle ':completion:*:history-words' stop yes | ||
zstyle ':completion:*:history-words' remove-all-dups yes | ||
zstyle ':completion:*:history-words' list false | ||
zstyle ':completion:*:history-words' menu yes | ||
|
||
# Environment Variables | ||
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} | ||
|
||
# Populate hostname completion. But allow ignoring custom entries from static | ||
# */etc/hosts* which might be uninteresting. | ||
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores' | ||
|
||
zstyle -e ':completion:*:hosts' hosts 'reply=( | ||
${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } | ||
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*} | ||
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} | ||
)' | ||
|
||
# Don't complete uninteresting users... | ||
zstyle ':completion:*:*:*:users' ignored-patterns \ | ||
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ | ||
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ | ||
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ | ||
mailman mailnull mldonkey mysql nagios \ | ||
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ | ||
operator pcap postfix postgres privoxy pulse pvm quagga radvd \ | ||
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*' | ||
|
||
# Ignore multiple entries. | ||
zstyle ':completion:*:(rm|kill|diff):*' ignore-line other | ||
zstyle ':completion:*:rm:*' file-patterns '*:all-files' | ||
|
||
# Kill | ||
zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' | ||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' | ||
zstyle ':completion:*:*:kill:*' menu yes select | ||
zstyle ':completion:*:*:kill:*' force-list always | ||
zstyle ':completion:*:*:kill:*' insert-ids single | ||
|
||
# Man | ||
zstyle ':completion:*:manuals' separate-sections true | ||
zstyle ':completion:*:manuals.(^1*)' insert-sections true | ||
|
||
# Media Players | ||
zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' | ||
zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' | ||
zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories' | ||
zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories' | ||
|
||
# Mutt | ||
if [[ -s "$HOME/.mutt/aliases" ]]; then | ||
zstyle ':completion:*:*:mutt:*' menu yes select | ||
zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*} | ||
fi | ||
|
||
# SSH/SCP/RSYNC | ||
zstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' | ||
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr | ||
zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr | ||
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost | ||
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*' | ||
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*' | ||
|
||
autoload -U colors | ||
colors | ||
colors | ||
|
||
##################### | ||
# Sourcing | ||
##################### | ||
|
||
# Brew | ||
if [[ -o interactive ]] && [[ -d /home/linuxbrew/.linuxbrew ]]; then | ||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | ||
fi | ||
|
||
# Starship | ||
if type "starship" > /dev/null; then | ||
eval "$(starship init zsh)" | ||
fi | ||
|
||
##################### | ||
# User configuration | ||
##################### | ||
|
||
# Load user zsh scripts | ||
if [ -d $ZSHCONFIG ]; then | ||
for f in $ZSHCONFIG/**/*.*sh | ||
do | ||
source "$f" | ||
done | ||
fi |