Compare commits

..

3 commits
master ... zim

Author SHA1 Message Date
crater2150
e18474d56b Fix quoting in fzf-widget settings, switch to active fork 2023-01-13 11:38:12 +01:00
crater2150
45678c7037 Migrate from zplug to zim 2022-12-13 17:43:38 +01:00
crater2150
92bc3d7f21 Add shome shortcuts 2022-12-13 16:45:40 +01:00
50 changed files with 165 additions and 1218 deletions

2
.gitignore vendored
View file

@ -3,5 +3,3 @@ aliases/private_functions
modules/vcs/filter modules/vcs/filter
*.zwc *.zwc
.zcompdump .zcompdump
env/*_local_*
local.zsh

View file

@ -1,6 +0,0 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace

16
.zimrc
View file

@ -1,6 +1,4 @@
zmodule zsh-users/zsh-completions zmodule jreese/zsh-titles
zmodule jreese/zsh-titles -n titles
zmodule SmartFinn/fzf-widgets zmodule SmartFinn/fzf-widgets
zmodule crater2150-zsh/conf zmodule crater2150-zsh/conf
@ -8,20 +6,10 @@ zmodule crater2150-zsh/chroma-z
zmodule $ZDOTDIR/plugins/tmpsrc zmodule $ZDOTDIR/plugins/tmpsrc
zmodule $ZDOTDIR/plugins/pyenv zmodule $ZDOTDIR/plugins/pyenv
zmodule $ZDOTDIR/plugins/cs-java-home
zmodule $ZDOTDIR/plugins/atuin
zmodule $ZDOTDIR/plugins/nvm
zmodule $ZDOTDIR/plugins/cdup
zmodule $ZDOTDIR/plugins/highlight-config zmodule $ZDOTDIR/plugins/highlight-config
zmodule zsh-users/zsh-syntax-highlighting zmodule zsh-users/zsh-syntax-highlighting
zmodule ohmyzsh/ohmyzsh --root plugins/ng --fpath ./ zmodule ohmyzsh/ohmyzsh --root plugins/ng
zmodule ohmyzsh/ohmyzsh --root plugins/direnv
zmodule carlosedp/mill-zsh-completions
zmodule zsh-users/zsh-autosuggestions
zmodule $ZDOTDIR/plugins/fzf
zmodule chitoku-k/fzf-zsh-completions
zmodule urbainvaes/fzf-marks zmodule urbainvaes/fzf-marks

View file

@ -1 +0,0 @@
zshenv

View file

@ -4,14 +4,9 @@ crater's zsh config
Installation: Installation:
------------- -------------
Set the `ZDOTDIR` environment variable to the directory of this repo. Note that From the checked out repo:
this environment variable must be set before the user configuration files of zsh
are read.
One way to do this is to set it in the global zsh configuration in
`/etc/zsh/zshenv`, e.g. to use the XDG basedir spec with this repo at
`~/.config/zsh`:
``` ```
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}"/zsh ln -s $PWD/zshenv $HOME/.zshenv
``` ```
The zshenv file sets the location to the rest of the config (`$ZDOTDIR`)
automatically, based on the link target.

View file

@ -9,18 +9,7 @@ grep -iq 'ID_LIKE=debian' /etc/os-release || \
return return
alias xq="apt-cache search" alias xq="apt-cache search"
alias xi="sudo apt-get install" alias xi="apt-get install"
alias xowner="dpkg -S" alias xowner="dpkg -S"
alias xfiles="dpkg -L" alias xfiles="dpkg -L"
alias sv="systemctl" alias sv="systemctl"
xupdate() {
sudo -v
echo "\e[1;32mUpdating package cache...\e[0m"
if sudo apt update 2>&1 | grep -q 'apt list --upgradable'; then
echo "\e[1;92mUpgrades available:\e[0m"
apt list --upgradable
echo "\e[1;92mRun upgrades?\e[0m"
read -q && sudo apt upgrade -y
fi
}

View file

@ -1,5 +0,0 @@
if exists /usr/bin/node && exists github-copilot-cli; then
eval "$(github-copilot-cli alias -- "$0")"
elif exists gh && gh extension list | grep copilot -q; then
eval "$(gh copilot alias -- zsh)"
fi

View file

@ -1,6 +0,0 @@
ignore() {
printf "%s\n" $@ >> .gitignore
git add .gitignore
}
alias ignore="noglob ignore"

10
aliases/fork_by_default Executable file
View file

@ -0,0 +1,10 @@
#!/bin/zsh
local forkprogs=(
geeqie
feh
)
for i in $forkprogs; do
alias $i="fork $i"
done

View file

@ -13,39 +13,25 @@ alias :q="exit"
alias rget="rsync -rP --append-verify --inplace" alias rget="rsync -rP --append-verify --inplace"
alias 7zu="7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on" alias 7zu="7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on"
alias cronmail="mutt -f $MAIL -F <(grep -v 'set folder' ~/.config/mutt/neomuttrc | grep -v 'mailboxes'; echo 'mailboxes $MAIL\nset folder=$MAIL')"
alias d="dragon-drop -a -x -T"
if ! command -v fd >/dev/null; then if ! command -v fd >/dev/null; then
if command -v fdfind >/dev/null; then
alias fd="fdfind"
autoload -Uz _fd
compdef _fd fdfind
else
fd() { fd() {
if [[ "$1" =~ "^-" ]]; then if [[ "$1" =~ "-*" ]]; then
echo "fd not installed. shell alias supports only basic operation" echo "fd not installed. shell alias supports only basic operation"
return 1 return 1
fi fi
noglob find . -iname "*${*}*" noglob find . -iname "*${*}*"
} }
fi fi
fi
alias sudo="sudo " alias sudo="sudo "
alias S='sudo $(history -n -1)' alias S='sudo $(history -n -1)'
alias rm="rm -I" alias rm="rm -I"
if exists rifle; then
alias v=rifle
else
function v() { function v() {
for file in $@; do for file in $@; do
xdg-open $file &| xdg-open $file &|
done done
} }
fi
alias vmemcache="vmtouch -l -m 12G -v" alias vmemcache="vmtouch -l -m 12G -v"
@ -54,8 +40,8 @@ fork() {
"$@" &>/dev/null &| "$@" &>/dev/null &|
} }
alias en="pipx run dict.cc.py de en" alias en="dict.cc.py de en"
alias de="pipx run dict.cc.py en de" alias de="dict.cc.py en de"
su() { su() {
if [[ -z "$@" ]]; then if [[ -z "$@" ]]; then
@ -94,7 +80,7 @@ E() {
# edit and refresh aliases # edit and refresh aliases
aliases() { aliases() {
$EDITOR $(zdotfile aliases/${1:-functions}) $EDITOR $(zdotfile aliases/${1:-functions})
source $(zdotfile aliases)/* . $(zdotfile aliases)/*
} }
# per directory configuration # per directory configuration
@ -117,7 +103,7 @@ cd(){
# count files in current or given directory # count files in current or given directory
count() { count() {
find $1 -mindepth 1 \( ! -path '*/.*' \) | wc -l find $1 \( ! -path '*/.*' \) | wc -l
} }
pumount() { pumount() {
@ -147,6 +133,7 @@ send-subvolume() { btrfs property set $1 ro true; btrfs send -v $1 | pv | nc -c
################################################################################# #################################################################################
# filename manipulation # filename manipulation
##############################################################################{{{ ##############################################################################{{{
alias cleanspaces="renamexm -s/\ /_/g -R"
# prefix all given files with first argument to this function # prefix all given files with first argument to this function
prefix() { prefix() {
@ -264,8 +251,7 @@ btrfs-subvolume-force-delete() {
# lazy shortcuts # lazy shortcuts
alias -g G="| grep" alias -g G="| grep"
alias -g L="| ${PAGER:-less}" alias -g L="| less"
alias -g LE="2>&1 | ${PAGER:-less}"
alias -g T="| tail" alias -g T="| tail"
# xclipboard # xclipboard
@ -281,8 +267,17 @@ alias -s log=vimpager
# various small scripts # various small scripts
##############################################################################{{{ ##############################################################################{{{
alias urldecode="python3 -c 'import sys; from urllib import parse; print(parse.unquote_plus(sys.stdin.read().strip()))'" urlencode() {
alias urlencode="python3 -c 'import sys; from urllib import parse; print(parse.quote_plus(sys.stdin.read().strip()))'" local input
setopt extendedglob
if [ -n "$1" ]; then
input="$*"
else
input=$(</dev/stdin)
fi
# by jkramer, source: http://stackoverflow.com/a/187853/928769
echo "${${(j: :)input}//(#b)(?)/%$[[##16]##${match[1]}]}"
}
#}}} #}}}
@ -315,80 +310,10 @@ alias luarocks="luarocks --local"
alias icat="kitty +kitten icat" alias icat="kitty +kitten icat"
local function hour-float-to-time() { # vim: foldmethod=marker
printf "%d:%02dh" $1 $(( $1 * 60 % 60 ))
}
batstat() {
for bat in /sys/class/power_supply/BAT*; do
local energy_full=$(<$bat/energy_full)
local energy_now=$(<$bat/energy_now)
local power_now=$(<$bat/power_now)
local bat_status=$(<$bat/status)
local remain_text
local remain
case $bat_status in
Charging)
remain=$(((energy_full - energy_now) / power_now))
remain_text=", $(hour-float-to-time $remain) until full"
;;
Discharging)
remain=$((energy_now / power_now))
remain_text=", $(hour-float-to-time $remain) left"
;;
*)
remain_text=""
;;
esac
printf "%s: %.1f %%, %s%s\n" \
${bat:t} \
$(( energy_now * 100.0 / energy_full )) \
$bat_status \
$remain_text
done
}
if [[ $DISPLAY ]] && exists xinput && exists xrandr && \
xinput | grep -q Wacom && xrandr | grep -q eDP1; then
xrandr() {
command xrandr $@
for dev in $(xinput | grep Wacom | grep -oP '(?<=id=)\d*'); do
xinput map-to-output $dev eDP1
done
}
fi
function lastdl() { function lastdl() {
echo ~/downloads/*(oc.[1]) echo ~/downloads/*(oc.[1])
} }
alias mpvu="noglob mpv" alias mpvu="noglob mpv"
# copilot
function gh-copilot-cli() {
local tpe="$1"; shift
gh copilot suggest -t $tpe "$*"
}
alias C="gh-copilot-cli shell"
alias Cgit="gh-copilot-cli git"
alias Cgh="gh-copilot-cli gh"
alias e="nvim -c 'lua require(\"telescope.builtin\").fd { cwd = require(\"findroot\")(require(\"telescope.utils\").buffer_dir()) } '"
if [[ -e ${XDG_CONFIG_HOME}/broot/launcher/bash/br ]]; then
source ${XDG_CONFIG_HOME}/broot/launcher/bash/br
fi
duplicates() {
sort | uniq -c | grep -v '^\s*1'
}
alias rg="RIPGREP_CONFIG_PATH=$XDG_CONFIG_HOME/ripgreprc rg"
if exists gron; then
jgrep() {
gron | grep "$@" | gron -u
}
fi

View file

@ -47,7 +47,7 @@ gls() {
for i in $gitignore $globalgitignore; do for i in $gitignore $globalgitignore; do
if [[ -e $i ]]; then if [[ -e $i ]]; then
for ignore in "${(f)mapfile[$i]}"; do for ignore in "${(f)mapfile[$i]}"; do
ignores+="--ignore=${ignore%/}" ignores+="--ignore=$ignore"
done done
fi fi
done done
@ -88,16 +88,3 @@ gclone() {
git clone $url "$@" git clone $url "$@"
} }
gwt() {
local current_tree line prefix
typeset -A trees
prefix=$(git rev-parse --show-prefix)
git worktree list --porcelain | while read line; do
if [[ $line = worktree* ]]; then current_tree=${line##worktree }
elif [[ $line = branch* ]]; then trees[${line##branch refs/heads/}]=$current_tree
fi
done
local target=$(for k v in ${(kv)trees}; do echo "$k $v"; done | column -t | fzf ${1:+-q} ${1} -1| awk '{print $2}')
[[ -n $target ]] && cd $target/$prefix
}

View file

@ -1,23 +1,5 @@
#!/bin/zsh #!/bin/zsh
mpd-host() {
case "$1" in
set)
echo "MPD_HOST='$2';MPD_PORT='$3'" > ~/.cache/mpd-host.zsh
;;
get)
if [ ! -f ~/.cache/mpd-host.zsh ]; then
echo "MPD_HOST='localhost';MPD_PORT='6600'" > ~/.cache/mpd-host.zsh
fi
cat ~/.cache/mpd-host.zsh
;;
*)
echo "Usage: mpd-host set HOST PORT"
echo " mpd-host get"
;;
esac
}
mpc() { mpc() {
eval $(mpd-host get) eval $(mpd-host get)
export MPD_HOST export MPD_HOST

View file

@ -1,4 +0,0 @@
#!/bin/zsh
matrix() {
curl --header "Authorization: Bearer $(pass servers/matrix/matrix.qwertyuiop.de_admintoken)" -X $1 "https://qwertyuiop.de:8448/${2#/}"
}

View file

@ -23,13 +23,11 @@ xqn() {
alias xfiles="xbps-query -f" alias xfiles="xbps-query -f"
xbps-install() { xbps-install() {
local logfile=$(mktemp) sudo script --return --quiet -c "/usr/bin/xbps-install $*" /dev/null \
sudo script --return --quiet -c "/usr/bin/xbps-install $*" $logfile | tee /dev/stderr \
local ret=$? | grep -oP ".*(?=: post-install message)" \
grep -oP ".*(?=: post-install message)" < $logfile \
| ifne xargs -L 1 xbps-query -p install-msg | ifne xargs -L 1 xbps-query -p install-msg
hash -r hash -r
return $ret
} }
xupdate() { xupdate() {
@ -41,7 +39,6 @@ xupdate() {
fi fi
else else
xbps-install -SA "$@" xbps-install -SA "$@"
xcheckupdates
fi fi
} }
@ -52,46 +49,25 @@ xowner() {
sv() { sv() {
command sv "$@" command sv "$@"
ret=$?
if [[ "$1" == "up" ]]; then if [[ "$1" == "up" ]]; then
shift shift
sleep 0.5 sleep 0.5
command sv check "$@" command sv check "$@"
fi fi
return $ret
} }
sv-manage() { sv-manage() {
local action service svdir
zparseopts -D -E d:=dir -dir:=dir
svdir=${dir[2]:-${SVDIR:-/var/service}}
if [[ -z $1 ]]; then
action=list
else
action=$1 action=$1
shift shift
fi
case "$action" in case "$action" in
add) add)
for service in "$@"; do for service in "$@"; do
ln -s ${SVDIR_TEMPLATES:-/etc/sv}/${service:s#/##} ${svdir} ln -s /etc/sv/${service:s#/##} /var/service
done done
;; ;;
remove|rm) remove|rm)
for service in "$@"; do for service in "$@"; do
rm ${svdir}/${service:s#/##} rm /var/service/${service:s#/##}
done
;;
list|ls)
sv status ${svdir}/* | sed "
s@${svdir}/@@
s@run@\x1b[1;92mrun\x1b[0m@g
s@down@\x1b[1;31mdown\x1b[0m@g
" | column -t
;;
status)
for service in ${SVDIR:-/var/service}/*/supervise; do
sv status ${service:h}
done done
;; ;;
esac esac

View file

@ -1,2 +0,0 @@
#!/bin/zsh
alias adb='HOME="$XDG_DATA_HOME"/android adb'

View file

@ -1,70 +0,0 @@
typeset -a __yank_buffer __cut_buffer
fyank() {
__yank_buffer=()
for i in "$@"; do
__yank_buffer+=("${i:a}")
done
}
fcut() {
__cut_buffer=()
for i in "$@"; do
__cut_buffer+=("${i:a}")
done
}
fyankadd() {
for i in "$@"; do
__yank_buffer+=("${i:a}")
done
}
fcutadd() {
for i in "$@"; do
__cut_buffer+=("${i:a}")
done
}
fpasteclear() {
__yank_buffer=()
__cut_buffer=()
}
fpastelist() {
if [[ -n $__yank_buffer ]]; then
echo "Copying ${#__yank_buffer[@]} files:"
printf " %s\n" ${__yank_buffer[@]}
fi
if [[ -n $__cut_buffer ]]; then
echo "Moving ${#__cut_buffer[@]} files"
printf " %s\n" ${__cut_buffer[@]}
fi
}
fpaste() {
if [[ -n $__yank_buffer ]]; then
echo "Copying ${#__yank_buffer[@]} files"
fi
if [[ -n $__cut_buffer ]]; then
echo "Moving ${#__cut_buffer[@]} files"
fi
if [[ -n $__cut_buffer || -n $__yank_buffer ]]; then
echo -n "Continue? [y/N] "
read -q || return
else
echo "Error: No files to paste. Use fyank or fcut first"
return 1
fi
local target=${1:-$PWD}
for file in "${__yank_buffer[@]}"; do
cp -r "$file" "$target"
done
for file in "${__cut_buffer[@]}"; do
mv "$file" "$target"
done
fpasteclear
}
# vim: set ft=zsh:

View file

@ -1,21 +0,0 @@
_az_python_argcomplete() {
local IFS=$'\013'
local SUPPRESS_SPACE=0
if compopt +o nospace 2> /dev/null; then
SUPPRESS_SPACE=1
fi
COMPREPLY=( $(IFS="$IFS" \
COMP_LINE="$COMP_LINE" \
COMP_POINT="$COMP_POINT" \
COMP_TYPE="$COMP_TYPE" \
_ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS" \
_ARGCOMPLETE=1 \
_ARGCOMPLETE_SUPPRESS_SPACE=$SUPPRESS_SPACE \
"$1" 8>&1 9>&2 1>/dev/null 2>/dev/null) )
if [[ $? != 0 ]]; then
unset COMPREPLY
elif [[ $SUPPRESS_SPACE == 1 ]] && [[ "$COMPREPLY" =~ [=/:]$ ]]; then
compopt -o nospace
fi
}
complete -o nospace -o default -o bashdefault -F _az_python_argcomplete "az"

View file

@ -1,5 +1,4 @@
#!/bin/zsh #!/bin/zsh
fpath=( "${ZDOTDIR:+$ZDOTDIR/widgets}" $fpath )
bindkey -v bindkey -v
@ -32,9 +31,7 @@ bindkey " " magic-space # Do history expansion on space.
bindkey $'\177' backward-delete-char # backspace bindkey $'\177' backward-delete-char # backspace
bindkey $'\10' backward-delete-word # C-backspace bindkey $'\10' backward-delete-word # C-backspace
autoload -U edit-command-line-split bindkey -M vicmd ! edit-command-line-tmux
zle -N edit-command-line-split
bindkey -M vicmd ! edit-command-line-split
#unicode input #unicode input
autoload -U insert-unicode-char autoload -U insert-unicode-char
@ -98,17 +95,11 @@ bindkey "\ev" zle-venv
# Map widgets to key # Map widgets to key
bindkey "\ec" fzf-change-directory bindkey "\ec" fzf-change-directory
bindkey "^r" fzf-insert-history
bindkey "^xf" fzf-insert-files bindkey "^xf" fzf-insert-files
bindkey "^xd" fzf-insert-directory bindkey "^xd" fzf-insert-directory
bindkey "^xn" fzf-insert-named-directory bindkey "^xn" fzf-insert-named-directory
if [[ $+commands[atuin] == 1 ]]; then
bindkey -M viins '^r' atuin-search-viins
bindkey -M vicmd '/' atuin-search
else
bindkey "^r" fzf-insert-history
fi
FZF_CHANGE_DIR_FIND_COMMAND="fd -t d" FZF_CHANGE_DIR_FIND_COMMAND="fd -t d"
FZF_INSERT_DIR_COMMAND="fd -t d" FZF_INSERT_DIR_COMMAND="fd -t d"
FZF_INSERT_FILES_COMMAND="fd -t f" FZF_INSERT_FILES_COMMAND="fd -t f"

View file

@ -1,11 +1,3 @@
#compdef conf #compdef conf
_arguments "1:Commands:(${(k)conf_locations})"
_conf_locations() {
_alternative \
"configs:Configs:(${(k)conf_locations})" \
"dirs:XDG configs:_files -/ -W ${XDG_CONFIG_HOME:-$HOME/.config}/ -S '' -F '*/*'"
}
_conf_locations

View file

@ -1,6 +0,0 @@
#compdef _cs cs
function _cs {
eval "$(cs complete zsh-v1 $CURRENT $words[@])"
}

View file

@ -1,5 +0,0 @@
#compdef _scala-cli scala-cli
function _scala-cli {
eval "$(scala-cli complete zsh-v1 $CURRENT $words[@])"
}

View file

@ -1,7 +1,7 @@
#compdef sv #compdef sv
# completion for runit sv(1) # completion for runit sv(1)
# Leah Neukirchen <leah@vuxu.org> # Christian Neukirchen <chneukirchen@gmail.com>
# runit 2.1.1, services in /var/service are completed by default # runit 2.1.1, services in /var/service are completed by default
local ret=1 services local ret=1 services
@ -35,9 +35,7 @@ cmds)
check check
ret=0;; ret=0;;
args) args)
if [[ $BUFFER == "sudo "* if [[ $BUFFER == sudo* ]] then
|| $BUFFER == "doas "*
|| $BUFFER == "su "*-c* ]] then
services=( /var/service/*(-/N:t) ) services=( /var/service/*(-/N:t) )
else else
services=( ${SVDIR:-/var/service}/*(-/N:t) ) services=( ${SVDIR:-/var/service}/*(-/N:t) )

View file

@ -5,4 +5,4 @@ local context state line
_arguments \ _arguments \
"1:Action:(add rm remove)"\ "1:Action:(add rm remove)"\
"*:service:_files -W ${SVDIR_TEMPLATES:-/etc/sv}" "*:service:_files -W /etc/sv"

View file

@ -1,7 +1,5 @@
# autoload completions # autoload completions
fpath=( "${XDG_DATA_HOME:-$HOME/.local/share}/zsh/site-functions" "/usr/share/zsh/site-functions" "${ZDOTDIR:+$ZDOTDIR/compdef}" "/etc/zsh/compdef" $fpath ) fpath=( "${ZDOTDIR:+$ZDOTDIR/compdef}" "/etc/zsh/compdef" $fpath )
fpath=("$XDG_DATA_HOME/scalacli/completions/zsh" $fpath)
fpath=(/opt/vagrant/embedded/gems/gems/vagrant-2.4.3/contrib/zsh $fpath)
[[ -n $(echo /etc/zsh/compdef/*(N:t)) ]] && autoload -U /etc/zsh/compdef/*(N:t) [[ -n $(echo /etc/zsh/compdef/*(N:t)) ]] && autoload -U /etc/zsh/compdef/*(N:t)
[[ -n $(echo $ZDOTDIR/compdef/*(N:t)) ]] && autoload -U $ZDOTDIR/compdef/*(N:t) [[ -n $(echo $ZDOTDIR/compdef/*(N:t)) ]] && autoload -U $ZDOTDIR/compdef/*(N:t)
@ -12,14 +10,12 @@ mkdir -p ${ZSH_COMPDUMP_LOCATION:h}
autoload -Uz compinit autoload -Uz compinit
if [[ ${UID} -eq 0 ]] && [[ -n ${SUDO_USER} ]]; then if [[ ${UID} -eq 0 ]] && [[ -n ${SUDO_USER} ]]; then
compinit -u -d $ZSH_COMPDUMP_LOCATION compinit -u -d $ZSH_COMPDUMP_LOCATION
elif [[ -n ${ZSH_COMPDUMP_LOCATION}(#qN.mh+24) ]]; then
compinit -d $ZSH_COMPDUMP_LOCATION
else else
compinit -C -d $ZSH_COMPDUMP_LOCATION compinit -d $ZSH_COMPDUMP_LOCATION
fi fi
unset ZSH_COMPDUMP_LOCATION
autoload -U +X bashcompinit && bashcompinit autoload -U +X bashcompinit && bashcompinit
try-source $ZDOTDIR/bashcomp/*(N)
zstyle ':completion:*:descriptions' format %B%d%b zstyle ':completion:*:descriptions' format %B%d%b
zstyle ':completion:*:messages' format %d zstyle ':completion:*:messages' format %d

3
confs
View file

@ -11,7 +11,7 @@ nvim-plug $XDG_CONFIG_HOME/nvim/packages.vim
offlineimap $XDG_CONFIG_HOME/offlineimap/config offlineimap $XDG_CONFIG_HOME/offlineimap/config
qutebrowser $XDG_CONFIG_HOME/qutebrowser/ qutebrowser $XDG_CONFIG_HOME/qutebrowser/
qutebrowser-scripts $XDG_DATA_HOME/qutebrowser/userscripts qutebrowser-scripts $XDG_DATA_HOME/qutebrowser/userscripts
ssh $HOME/.ssh/ ssh $HOME/.ssh/config
vdirsyncer $XDG_CONFIG_HOME/vdirsyncer/config vdirsyncer $XDG_CONFIG_HOME/vdirsyncer/config
vim $XDG_CONFIG_HOME/vim vim $XDG_CONFIG_HOME/vim
xd $XDG_CONFIG_HOME/xd.conf xd $XDG_CONFIG_HOME/xd.conf
@ -19,4 +19,3 @@ xd $XDG_CONFIG_HOME/xd.conf
zsh $ZDOTDIR zsh $ZDOTDIR
kitty $XDG_CONFIG_HOME/kitty/kitty.conf kitty $XDG_CONFIG_HOME/kitty/kitty.conf
kitty-sessions $XDG_CONFIG_HOME/kitty/sessions kitty-sessions $XDG_CONFIG_HOME/kitty/sessions
atuin $XDG_CONFIG_HOME/atuin/config.toml

4
env/00_xdg.zsh vendored
View file

@ -1,4 +0,0 @@
XDG_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config}
XDG_DATA_HOME=${XDG_DATA_HOME:-${HOME}/.local/share}
XDG_STATE_HOME=${XDG_STATE_HOME:-${HOME}/.local/state}

18
env/01_xdg-fixes.zsh vendored
View file

@ -1,18 +0,0 @@
export ANDROID_USER_HOME="$XDG_DATA_HOME"/android
export ANSIBLE_HOME="$XDG_DATA_HOME"/ansible
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
export CARGO_HOME="$XDG_DATA_HOME"/cargo
export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks
export GNUPGHOME=$XDG_CONFIG_HOME/gnupg
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
export TERMINFO="$XDG_DATA_HOME"/terminfo
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
export TEXMFCONFIG=$XDG_CONFIG_HOME/texlive/texmf-config
export TEXMFHOME=$XDG_DATA_HOME/texmf
export TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var
export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc

13
env/15_basic.zsh vendored
View file

@ -1,13 +0,0 @@
local function first-command() {
while [[ -n $1 ]]; do
if command -v $1 > /dev/null; then
echo $1
return 0
fi
shift
done
return 1
}
export PAGER=${PAGER:-$(first-command nvimpager vimpager less)}
export MANPAGER=${PAGER}

6
env/20_services.zsh vendored
View file

@ -1,9 +1,3 @@
if [[ $DISPLAY && $UID != 0 ]]; then if [[ $DISPLAY && $UID != 0 ]]; then
export SVDIR="$HOME/.local/session_service" export SVDIR="$HOME/.local/session_service"
export SVDIR_TEMPLATES="$HOME/.service-available"
elif [[ $UID != 0 ]]; then
export SVDIR=$HOME/.service
export SVDIR_TEMPLATES="$HOME/.service-available"
else
export SVDIR_TEMPLATES="/etc/sv"
fi fi

4
env/50_bun.zsh vendored
View file

@ -1,4 +0,0 @@
export BUN_INSTALL="$HOME/.local/share/bun"
if [[ -d $BUN_INSTALL ]]; then
path+="$BUN_INSTALL/bin"
fi

1
env/50_nodejs.zsh vendored
View file

@ -1,4 +1,3 @@
export NPM_PACKAGES="${XDG_DATA_HOME}/npm-packages" export NPM_PACKAGES="${XDG_DATA_HOME}/npm-packages"
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
export PATH="$PATH:$NPM_PACKAGES/bin" export PATH="$PATH:$NPM_PACKAGES/bin"
export MANPATH="${MANPATH}:$NPM_PACKAGES/share/man"

5
env/50_rust.zsh vendored
View file

@ -1,6 +1,3 @@
export RUSTUP_HOME="${XDG_DATA_HOME}/rustup" if which rustup &>/dev/null && [[ -n $(rustup show active-toolchain) ]]; then
export CARGO_HOME="${XDG_DATA_HOME}/cargo"
export PATH="${CARGO_HOME}/bin:${PATH}"
if [[ $- == *i* ]] && which rustup &>/dev/null && [[ -n $(rustup show active-toolchain) ]]; then
export RUST_SRC_PATH=$(rustup run stable rustc --print sysroot)/lib/rustlib/src/rust/src export RUST_SRC_PATH=$(rustup run stable rustc --print sysroot)/lib/rustlib/src/rust/src
fi fi

1
env/50_scala.zsh vendored
View file

@ -1 +0,0 @@
export SBT_OPTS="-Xmx10G"

1
env/90_pass.zsh vendored
View file

@ -1 +0,0 @@
export PASSWORD_STORE_ENABLE_EXTENSIONS=true

View file

@ -1,15 +0,0 @@
[[ $- == *i* ]] || return 0
local SOCKET_CACHE=$XDG_CACHE_HOME/zsh-podman-socket
if command -v podman &>/dev/null; then
local podman_socket
if [[ ! -e $SOCKET_CACHE ]]; then
podman system info -f '{{.Host.RemoteSocket.Path}}' > $SOCKET_CACHE
else
podman_socket=$(<$SOCKET_CACHE)
fi
if [[ -e $podman_socket ]]; then
export DOCKER_SOCKET=$podman_socket
export DOCKER_HOST=unix://$DOCKER_SOCKET
fi
fi

View file

@ -1,41 +0,0 @@
## vim:ft=zsh
## Written by Frank Terbeck <ft@bewatermyfriend.org>
## Distributed under the same BSD-ish license as zsh itself.
# Helper function for VCS_INFO_detect_*
#
# Usage:
# vcs_comm[detect_need_file]=FILENAMES VCS_INFO_bydir_detect DIRNAME
# where DIRNAME is a directory name and FILENAMES is a space-separated list
# of filenames.
#
# If any parent directory of the current working directory, other than the root
# directory, contains a subdirectory named DIRNAME that contains a file whose name
# is in FILENAMES, set vcs_comm[basedir] to the path of that parent directory and
# return true. Otherwise, return false.
setopt localoptions NO_shwordsplit
local dirname=$1
local basedir="." file
basedir=$(realpath ${basedir})
while [[ ${basedir} != '/' ]]; do
[[ -r ${basedir} ]] || return 1
if [[ -n ${vcs_comm[detect_need_file]} ]] ; then
[[ -d ${basedir}/${dirname} ]] && {
for file in ${(s: :)${vcs_comm[detect_need_file]}}; do
[[ -e ${basedir}/${dirname}/${file} ]] && break 2
done
}
else
[[ -d ${basedir}/${dirname} ]] && break
fi
basedir=${basedir:h}
done
[[ ${basedir} == "/" ]] && return 1
vcs_comm[basedir]=${basedir}
# TODO: Would the following be correct? ---
# rrn=${vcs_comm[basedir]:t}
return 0

View file

@ -1,5 +0,0 @@
local FOUND_ATUIN=$+commands[atuin]
if [[ $FOUND_ATUIN -eq 1 ]]; then
source <(atuin init zsh --disable-up-arrow)
fi

View file

@ -1,20 +0,0 @@
_cdup() {
local dir=$1; shift
local targets=("$@")
for target in $targets; do
if [[ -e $dir/$target ]]; then
cd $dir
return 0
fi
done
if [[ $dir == "/" ]]; then return 1
else _cdup ${dir:h} ${targets[@]}
fi
}
cdup() {
if [[ ${#@} -gt 0 ]]; then _cdup ${PWD:h} "$@"
else _cdup ${PWD:h} .git .hg package.json build.sbt
fi
}

View file

@ -1,5 +0,0 @@
#compdef set-jvm
_set-jvm() {
compadd $(cs java --available)
}

View file

@ -1,52 +0,0 @@
typeset -a chpwd_functions __chromaz_extra_left
fpath+=("${0:A:h}")
SYSTEM_JAVA_HOME=${CS_FORMER_JAVA_HOME:-$JAVA_HOME}
local cs_jvm_id
local cs_java_home
remove-from-path() {
for elem in $@; do
path=("${(@)path:#$elem}")
done
}
cs-set-java-home() {
local dir=${1:-${PWD:a}}
if [[ $dir == / ]]; then
export JAVA_HOME=${SYSTEM_JAVA_HOME}
remove-from-path $cs_java_home/bin
cs_jvm_id=
return
fi
if [[ -e $dir/.jvm ]]; then
cs_jvm_id=$(<$dir/.jvm)
#echo "Setting Java version to ${cs_jvm_id}"
cs_java_home=$(cs java-home --jvm ${cs_jvm_id})
path=( $cs_java_home/bin $path )
export JAVA_HOME=${cs_java_home}
else
cs-set-java-home ${dir:h}
fi
#
}
cs-current-java() {
echo ${cs_jvm_id:+JVM: }${cs_jvm_id}
}
set-jvm() {
if [[ -z $1 ]]; then
echo 'Usage: set-jvm VERSION'
return 1
fi
cs java --jvm $1 --env && echo $1 > .jvm
cs-set-java-home
}
chpwd_functions+=cs-set-java-home
__chromaz_extra_left+=cs-current-java
cs-set-java-home

View file

@ -1,524 +0,0 @@
### key-bindings.zsh ###
# ____ ____
# / __/___ / __/
# / /_/_ / / /_
# / __/ / /_/ __/
# /_/ /___/_/ key-bindings.zsh
#
# - $FZF_TMUX_OPTS
# - $FZF_CTRL_T_COMMAND
# - $FZF_CTRL_T_OPTS
# - $FZF_CTRL_R_OPTS
# - $FZF_ALT_C_COMMAND
# - $FZF_ALT_C_OPTS
# Key bindings
# ------------
# The code at the top and the bottom of this file is the same as in completion.zsh.
# Refer to that file for explanation.
if 'zmodload' 'zsh/parameter' 2>'/dev/null' && (( ${+options} )); then
__fzf_key_bindings_options="options=(${(j: :)${(kv)options[@]}})"
else
() {
__fzf_key_bindings_options="setopt"
'local' '__fzf_opt'
for __fzf_opt in "${(@)${(@f)$(set -o)}%% *}"; do
if [[ -o "$__fzf_opt" ]]; then
__fzf_key_bindings_options+=" -o $__fzf_opt"
else
__fzf_key_bindings_options+=" +o $__fzf_opt"
fi
done
}
fi
'builtin' 'emulate' 'zsh' && 'builtin' 'setopt' 'no_aliases'
{
if [[ -o interactive ]]; then
__fzf_defaults() {
# $1: Prepend to FZF_DEFAULT_OPTS_FILE and FZF_DEFAULT_OPTS
# $2: Append to FZF_DEFAULT_OPTS_FILE and FZF_DEFAULT_OPTS
echo "--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore $1"
command cat "${FZF_DEFAULT_OPTS_FILE-}" 2> /dev/null
echo "${FZF_DEFAULT_OPTS-} $2"
}
# CTRL-T - Paste the selected file path(s) into the command line
__fzf_select() {
setopt localoptions pipefail no_aliases 2> /dev/null
local item
FZF_DEFAULT_COMMAND=${FZF_CTRL_T_COMMAND:-} \
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --walker=file,dir,follow,hidden --scheme=path" "${FZF_CTRL_T_OPTS-} -m") \
FZF_DEFAULT_OPTS_FILE='' $(__fzfcmd) "$@" < /dev/tty | while read -r item; do
echo -n -E "${(q)item} "
done
local ret=$?
echo
return $ret
}
__fzfcmd() {
[ -n "${TMUX_PANE-}" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; } &&
echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf"
}
fzf-file-widget() {
LBUFFER="${LBUFFER}$(__fzf_select)"
local ret=$?
zle reset-prompt
return $ret
}
if [[ "${FZF_CTRL_T_COMMAND-x}" != "" ]]; then
zle -N fzf-file-widget
bindkey -M emacs '^T' fzf-file-widget
bindkey -M vicmd '^T' fzf-file-widget
bindkey -M viins '^T' fzf-file-widget
fi
# ALT-C - cd into the selected directory
fzf-cd-widget() {
setopt localoptions pipefail no_aliases 2> /dev/null
local dir="$(
FZF_DEFAULT_COMMAND=${FZF_ALT_C_COMMAND:-} \
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --walker=dir,follow,hidden --scheme=path" "${FZF_ALT_C_OPTS-} +m") \
FZF_DEFAULT_OPTS_FILE='' $(__fzfcmd) < /dev/tty)"
if [[ -z "$dir" ]]; then
zle redisplay
return 0
fi
zle push-line # Clear buffer. Auto-restored on next prompt.
BUFFER="builtin cd -- ${(q)dir:a}"
zle accept-line
local ret=$?
unset dir # ensure this doesn't end up appearing in prompt expansion
zle reset-prompt
return $ret
}
if [[ "${FZF_ALT_C_COMMAND-x}" != "" ]]; then
zle -N fzf-cd-widget
bindkey -M emacs '\ec' fzf-cd-widget
bindkey -M vicmd '\ec' fzf-cd-widget
bindkey -M viins '\ec' fzf-cd-widget
fi
# CTRL-R - Paste the selected command from history into the command line
fzf-history-widget() {
local selected
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases noglob nobash_rematch 2> /dev/null
# Ensure the associative history array, which maps event numbers to the full
# history lines, is loaded, and that Perl is installed for multi-line output.
if zmodload -F zsh/parameter p:history 2>/dev/null && (( ${#commands[perl]} )); then
selected="$(printf '%s\t%s\000' "${(kv)history[@]}" |
perl -0 -ne 'if (!$seen{(/^\s*[0-9]+\**\t(.*)/s, $1)}++) { s/\n/\n\t/g; print; }' |
FZF_DEFAULT_OPTS=$(__fzf_defaults "" "-n2..,.. --scheme=history --bind=ctrl-r:toggle-sort --wrap-sign '\t↳ ' --highlight-line ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m --read0") \
FZF_DEFAULT_OPTS_FILE='' $(__fzfcmd))"
else
selected="$(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' |
FZF_DEFAULT_OPTS=$(__fzf_defaults "" "-n2..,.. --scheme=history --bind=ctrl-r:toggle-sort --wrap-sign '\t↳ ' --highlight-line ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m") \
FZF_DEFAULT_OPTS_FILE='' $(__fzfcmd))"
fi
local ret=$?
if [ -n "$selected" ]; then
if [[ $(awk '{print $1; exit}' <<< "$selected") =~ ^[1-9][0-9]* ]]; then
zle vi-fetch-history -n $MATCH
else # selected is a custom query, not from history
LBUFFER="$selected"
fi
fi
zle reset-prompt
return $ret
}
zle -N fzf-history-widget
bindkey -M emacs '^R' fzf-history-widget
bindkey -M vicmd '^R' fzf-history-widget
bindkey -M viins '^R' fzf-history-widget
fi
} always {
eval $__fzf_key_bindings_options
'unset' '__fzf_key_bindings_options'
}
### end: key-bindings.zsh ###
### completion.zsh ###
# ____ ____
# / __/___ / __/
# / /_/_ / / /_
# / __/ / /_/ __/
# /_/ /___/_/ completion.zsh
#
# - $FZF_TMUX (default: 0)
# - $FZF_TMUX_OPTS (default: empty)
# - $FZF_COMPLETION_TRIGGER (default: '**')
# - $FZF_COMPLETION_OPTS (default: empty)
# - $FZF_COMPLETION_PATH_OPTS (default: empty)
# - $FZF_COMPLETION_DIR_OPTS (default: empty)
# Both branches of the following `if` do the same thing -- define
# __fzf_completion_options such that `eval $__fzf_completion_options` sets
# all options to the same values they currently have. We'll do just that at
# the bottom of the file after changing options to what we prefer.
#
# IMPORTANT: Until we get to the `emulate` line, all words that *can* be quoted
# *must* be quoted in order to prevent alias expansion. In addition, code must
# be written in a way works with any set of zsh options. This is very tricky, so
# careful when you change it.
#
# Start by loading the builtin zsh/parameter module. It provides `options`
# associative array that stores current shell options.
if 'zmodload' 'zsh/parameter' 2>'/dev/null' && (( ${+options} )); then
# This is the fast branch and it gets taken on virtually all Zsh installations.
#
# ${(kv)options[@]} expands to array of keys (option names) and values ("on"
# or "off"). The subsequent expansion# with (j: :) flag joins all elements
# together separated by spaces. __fzf_completion_options ends up with a value
# like this: "options=(shwordsplit off aliases on ...)".
__fzf_completion_options="options=(${(j: :)${(kv)options[@]}})"
else
# This branch is much slower because it forks to get the names of all
# zsh options. It's possible to eliminate this fork but it's not worth the
# trouble because this branch gets taken only on very ancient or broken
# zsh installations.
() {
# That `()` above defines an anonymous function. This is essentially a scope
# for local parameters. We use it to avoid polluting global scope.
'local' '__fzf_opt'
__fzf_completion_options="setopt"
# `set -o` prints one line for every zsh option. Each line contains option
# name, some spaces, and then either "on" or "off". We just want option names.
# Expansion with (@f) flag splits a string into lines. The outer expansion
# removes spaces and everything that follow them on every line. __fzf_opt
# ends up iterating over option names: shwordsplit, aliases, etc.
for __fzf_opt in "${(@)${(@f)$(set -o)}%% *}"; do
if [[ -o "$__fzf_opt" ]]; then
# Option $__fzf_opt is currently on, so remember to set it back on.
__fzf_completion_options+=" -o $__fzf_opt"
else
# Option $__fzf_opt is currently off, so remember to set it back off.
__fzf_completion_options+=" +o $__fzf_opt"
fi
done
# The value of __fzf_completion_options here looks like this:
# "setopt +o shwordsplit -o aliases ..."
}
fi
# Enable the default zsh options (those marked with <Z> in `man zshoptions`)
# but without `aliases`. Aliases in functions are expanded when functions are
# defined, so if we disable aliases here, we'll be sure to have no pesky
# aliases in any of our functions. This way we won't need prefix every
# command with `command` or to quote every word to defend against global
# aliases. Note that `aliases` is not the only option that's important to
# control. There are several others that could wreck havoc if they are set
# to values we don't expect. With the following `emulate` command we
# sidestep this issue entirely.
'builtin' 'emulate' 'zsh' && 'builtin' 'setopt' 'no_aliases'
# This brace is the start of try-always block. The `always` part is like
# `finally` in lesser languages. We use it to *always* restore user options.
{
# The 'emulate' command should not be placed inside the interactive if check;
# placing it there fails to disable alias expansion. See #3731.
if [[ -o interactive ]]; then
# To use custom commands instead of find, override _fzf_compgen_{path,dir}
#
# _fzf_compgen_path() {
# echo "$1"
# command find -L "$1" \
# -name .git -prune -o -name .hg -prune -o -name .svn -prune -o \( -type d -o -type f -o -type l \) \
# -a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@'
# }
#
# _fzf_compgen_dir() {
# command find -L "$1" \
# -name .git -prune -o -name .hg -prune -o -name .svn -prune -o -type d \
# -a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@'
# }
###########################################################
__fzf_defaults() {
# $1: Prepend to FZF_DEFAULT_OPTS_FILE and FZF_DEFAULT_OPTS
# $2: Append to FZF_DEFAULT_OPTS_FILE and FZF_DEFAULT_OPTS
echo "--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore $1"
command cat "${FZF_DEFAULT_OPTS_FILE-}" 2> /dev/null
echo "${FZF_DEFAULT_OPTS-} $2"
}
__fzf_comprun() {
if [[ "$(type _fzf_comprun 2>&1)" =~ function ]]; then
_fzf_comprun "$@"
elif [ -n "${TMUX_PANE-}" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; }; then
shift
if [ -n "${FZF_TMUX_OPTS-}" ]; then
fzf-tmux ${(Q)${(Z+n+)FZF_TMUX_OPTS}} -- "$@"
else
fzf-tmux -d ${FZF_TMUX_HEIGHT:-40%} -- "$@"
fi
else
shift
fzf "$@"
fi
}
# Extract the name of the command. e.g. foo=1 bar baz**<tab>
__fzf_extract_command() {
local token tokens
tokens=(${(z)1})
for token in $tokens; do
token=${(Q)token}
if [[ "$token" =~ [[:alnum:]] && ! "$token" =~ "=" ]]; then
echo "$token"
return
fi
done
echo "${tokens[1]}"
}
__fzf_generic_path_completion() {
local base lbuf cmd compgen fzf_opts suffix tail dir leftover matches
base=$1
lbuf=$2
cmd=$(__fzf_extract_command "$lbuf")
compgen=$3
fzf_opts=$4
suffix=$5
tail=$6
setopt localoptions nonomatch
if [[ $base = *'$('* ]] || [[ $base = *'<('* ]] || [[ $base = *'>('* ]] || [[ $base = *':='* ]] || [[ $base = *'`'* ]]; then
return
fi
eval "base=$base" 2> /dev/null || return
[[ $base = *"/"* ]] && dir="$base"
while [ 1 ]; do
if [[ -z "$dir" || -d ${dir} ]]; then
leftover=${base/#"$dir"}
leftover=${leftover/#\/}
[ -z "$dir" ] && dir='.'
[ "$dir" != "/" ] && dir="${dir/%\//}"
matches=$(
export FZF_DEFAULT_OPTS
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse --scheme=path" "${FZF_COMPLETION_OPTS-}")
unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS_FILE
if declare -f "$compgen" > /dev/null; then
eval "$compgen $(printf %q "$dir")" | __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover"
else
if [[ $compgen =~ dir ]]; then
walker=dir,follow
rest=${FZF_COMPLETION_DIR_OPTS-}
else
walker=file,dir,follow,hidden
rest=${FZF_COMPLETION_PATH_OPTS-}
fi
__fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" --walker "$walker" --walker-root="$dir" ${(Q)${(Z+n+)rest}} < /dev/tty
fi | while read -r item; do
item="${item%$suffix}$suffix"
echo -n -E "${(q)item} "
done
)
matches=${matches% }
if [ -n "$matches" ]; then
LBUFFER="$lbuf$matches$tail"
fi
zle reset-prompt
break
fi
dir=$(dirname "$dir")
dir=${dir%/}/
done
}
_fzf_path_completion() {
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_path \
"-m" "" " "
}
_fzf_dir_completion() {
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_dir \
"" "/" ""
}
_fzf_feed_fifo() {
command rm -f "$1"
mkfifo "$1"
cat <&0 > "$1" &|
}
_fzf_complete() {
setopt localoptions ksh_arrays
# Split arguments around --
local args rest str_arg i sep
args=("$@")
sep=
for i in {0..${#args[@]}}; do
if [[ "${args[$i]-}" = -- ]]; then
sep=$i
break
fi
done
if [[ -n "$sep" ]]; then
str_arg=
rest=("${args[@]:$((sep + 1)):${#args[@]}}")
args=("${args[@]:0:$sep}")
else
str_arg=$1
args=()
shift
rest=("$@")
fi
local fifo lbuf cmd matches post
fifo="${TMPDIR:-/tmp}/fzf-complete-fifo-$$"
lbuf=${rest[0]}
cmd=$(__fzf_extract_command "$lbuf")
post="${funcstack[1]}_post"
type $post > /dev/null 2>&1 || post=cat
_fzf_feed_fifo "$fifo"
matches=$(
FZF_DEFAULT_OPTS=$(__fzf_defaults "--reverse" "${FZF_COMPLETION_OPTS-} $str_arg") \
FZF_DEFAULT_OPTS_FILE='' \
__fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ')
if [ -n "$matches" ]; then
LBUFFER="$lbuf$matches"
fi
command rm -f "$fifo"
}
# To use custom hostname lists, override __fzf_list_hosts.
# The function is expected to print hostnames, one per line as well as in the
# desired sorting and with any duplicates removed, to standard output.
if ! declare -f __fzf_list_hosts > /dev/null; then
__fzf_list_hosts() {
setopt localoptions nonomatch
command cat <(command tail -n +1 ~/.ssh/config ~/.ssh/config.d/* /etc/ssh/ssh_config 2> /dev/null | command grep -i '^\s*host\(name\)\? ' | awk '{for (i = 2; i <= NF; i++) print $1 " " $i}' | command grep -v '[*?%]') \
<(command grep -oE '^[[a-z0-9.,:-]+' ~/.ssh/known_hosts 2> /dev/null | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \
<(command grep -v '^\s*\(#\|$\)' /etc/hosts 2> /dev/null | command grep -Fv '0.0.0.0' | command sed 's/#.*//') |
awk '{for (i = 2; i <= NF; i++) print $i}' | sort -u
}
fi
_fzf_complete_telnet() {
_fzf_complete +m -- "$@" < <(__fzf_list_hosts)
}
# The first and the only argument is the LBUFFER without the current word that contains the trigger.
# The current word without the trigger is in the $prefix variable passed from the caller.
_fzf_complete_ssh() {
local -a tokens
tokens=(${(z)1})
case ${tokens[-1]} in
-i|-F|-E)
_fzf_path_completion "$prefix" "$1"
;;
*)
local user
[[ $prefix =~ @ ]] && user="${prefix%%@*}@"
_fzf_complete +m -- "$@" < <(__fzf_list_hosts | awk -v user="$user" '{print user $0}')
;;
esac
}
_fzf_complete_export() {
_fzf_complete -m -- "$@" < <(
declare -xp | sed 's/=.*//' | sed 's/.* //'
)
}
_fzf_complete_unset() {
_fzf_complete -m -- "$@" < <(
declare -xp | sed 's/=.*//' | sed 's/.* //'
)
}
_fzf_complete_unalias() {
_fzf_complete +m -- "$@" < <(
alias | sed 's/=.*//'
)
}
_fzf_complete_kill() {
_fzf_complete -m --header-lines=1 --no-preview --wrap -- "$@" < <(
command ps -eo user,pid,ppid,start,time,command 2> /dev/null ||
command ps -eo user,pid,ppid,time,args 2> /dev/null || # For BusyBox
command ps --everyone --full --windows # For cygwin
)
}
_fzf_complete_kill_post() {
awk '{print $2}'
}
fzf-completion() {
local tokens cmd prefix trigger tail matches lbuf d_cmds
setopt localoptions noshwordsplit noksh_arrays noposixbuiltins
# http://zsh.sourceforge.net/FAQ/zshfaq03.html
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
tokens=(${(z)LBUFFER})
if [ ${#tokens} -lt 1 ]; then
zle ${fzf_default_completion:-expand-or-complete}
return
fi
cmd=$(__fzf_extract_command "$LBUFFER")
# Explicitly allow for empty trigger.
trigger=${FZF_COMPLETION_TRIGGER-'**'}
[ -z "$trigger" -a ${LBUFFER[-1]} = ' ' ] && tokens+=("")
# When the trigger starts with ';', it becomes a separate token
if [[ ${LBUFFER} = *"${tokens[-2]-}${tokens[-1]}" ]]; then
tokens[-2]="${tokens[-2]-}${tokens[-1]}"
tokens=(${tokens[0,-2]})
fi
lbuf=$LBUFFER
tail=${LBUFFER:$(( ${#LBUFFER} - ${#trigger} ))}
# Trigger sequence given
if [ ${#tokens} -gt 1 -a "$tail" = "$trigger" ]; then
d_cmds=(${=FZF_COMPLETION_DIR_COMMANDS-cd pushd rmdir})
[ -z "$trigger" ] && prefix=${tokens[-1]} || prefix=${tokens[-1]:0:-${#trigger}}
if [[ $prefix = *'$('* ]] || [[ $prefix = *'<('* ]] || [[ $prefix = *'>('* ]] || [[ $prefix = *':='* ]] || [[ $prefix = *'`'* ]]; then
return
fi
[ -n "${tokens[-1]}" ] && lbuf=${lbuf:0:-${#tokens[-1]}}
if eval "type _fzf_complete_${cmd} > /dev/null"; then
prefix="$prefix" eval _fzf_complete_${cmd} ${(q)lbuf}
zle reset-prompt
elif [ ${d_cmds[(i)$cmd]} -le ${#d_cmds} ]; then
_fzf_dir_completion "$prefix" "$lbuf"
else
_fzf_path_completion "$prefix" "$lbuf"
fi
# Fall back to default completion
else
zle ${fzf_default_completion:-expand-or-complete}
fi
}
[ -z "$fzf_default_completion" ] && {
binding=$(bindkey '^I')
[[ $binding =~ 'undefined-key' ]] || fzf_default_completion=$binding[(s: :w)2]
unset binding
}
zle -N fzf-completion
bindkey '^I' fzf-completion
fi
} always {
# Restore the original options.
eval $__fzf_completion_options
'unset' '__fzf_completion_options'
}
### end: completion.zsh ###

View file

@ -1,7 +1,6 @@
typeset -gA ZSH_HIGHLIGHT_STYLES typeset -gA ZSH_HIGHLIGHT_STYLES
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern) ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/)
if [[ "`tput colors`" == "256" ]] || [[ "`tput colors`" == "88" ]] ; then if [[ "`tput colors`" == "256" ]] || [[ "`tput colors`" == "88" ]] ; then

View file

@ -1,51 +0,0 @@
typeset -a chpwd_functions __chromaz_extra_left
# fnm
FNM_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/fnm"
if [ -d "$FNM_PATH" ]; then
export PATH="$FNM_PATH:$PATH"
eval "$(fnm env --use-on-cd --version-file-strategy recursive)"
FNM_DEFAULT=${$(readlink $FNM_PATH/aliases/default):h:t}
_prompt_fnm_version() {
local node_version=$(fnm current)
[[ $node_version == $FNM_DEFAULT ]] && return
echo "nodejs: ${node_version}"
}
__chromaz_extra_left+=_prompt_fnm_version
elif [ -d "$HOME/.nvm" ]; then
export NVM_DIR="$HOME/.nvm"
nvm() {
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm "$@"
}
find-nvmrc-version() {
local dir=${1:-${PWD:a}}
if [[ $dir == / ]]; then return 1; fi
if [[ -e $dir/.nvmrc ]]; then
< $dir/.nvmrc
else
find-nvmrc-version ${dir:h}
fi
}
chpwd-set-nvm() {
if vers=$(find-nvmrc-version); then
if [[ $vers != ${NVM_BIN:h:t} ]]; then
nvm use
fi
fi
}
chpwd-set-nvm &>/dev/null
chpwd_functions+=chpwd-set-nvm
_prompt_nvm_version() {
[[ -z $NVM_BIN ]] && return
echo "nodejs: ${NVM_BIN:h:t}"
}
__chromaz_extra_left+=_prompt_nvm_version
else
return
fi

View file

@ -18,11 +18,6 @@ else
pyenv() { pyenv() {
echo -n "pyenv is not installed. Install now? [yn] "; read -q || return echo -n "pyenv is not installed. Install now? [yn] "; read -q || return
git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT
git clone https://github.com/pyenv/pyenv-update.git $PYENV_ROOT/plugins/pyenv-update
git clone https://github.com/pyenv/pyenv-virtualenv.git $PYENV_ROOT/plugins/pyenv-virtualenv
git clone https://github.com/jawshooah/pyenv-default-packages.git $PYENV_ROOT/plugins/pyenv-default-packages
git clone https://github.com/fizista/pyenv-choice.git $PYENV_ROOT/plugins/pyenv-choice
echo ptpython > $PYENV_ROOT/default-packages
_init_pyenv _init_pyenv
} }
fi fi

View file

@ -1,16 +0,0 @@
local tmpfile=${TMPPREFIX:-/tmp/zsh}ecl$$
print -R - "$PREBUFFER$BUFFER" >$tmpfile
exec </dev/tty
if [[ $KITTY_WINDOW_ID ]]; then
kitty @launch --type overlay vim -c 'set laststatus=0 showtabline=0 ft=zsh' $tmpfile
tail -f --pid=$(pgrep -f "vim.*${tmpfile}") /dev/null &> /dev/null
else
${=${VISUAL:-${EDITOR:-vi}}} $tmpfile
fi
print -Rz - "$(<$tmpfile)"
command rm -f $tmpfile
zle send-break # Force reload from the buffer stack
# vim:ft=zsh

View file

@ -0,0 +1,18 @@
ECLHEIGHT=${ECLHEIGHT:-5}
edit-command-line-tmux() {
local tmpfile=${TMPPREFIX:-/tmp/zsh}ecl$$
print -R - "$PREBUFFER$BUFFER" >$tmpfile
exec </dev/tty
if [ -n "$TMUX" ] && [ "$UID" -ne 0 ]; then
tmux splitw -v -l $ECLHEIGHT "vim -c 'set laststatus=0 showtabline=0 ft=zsh' $tmpfile"
pid=$(ps -ef | awk "/[0-9] vim.*${tmpfile:t}/ { print \$2 }")
wait_on_pid $pid
else
${=${VISUAL:-${EDITOR:-vi}}} $tmpfile
fi
print -Rz - "$(<$tmpfile)"
command rm -f $tmpfile
zle send-break # Force reload from the buffer stack
}

57
zplug.zsh Normal file
View file

@ -0,0 +1,57 @@
export ZPLUG_HOME=$ZDOTDIR/zplug
source $(zdotfile zplug/init.zsh)
zplug 'zplug/zplug', hook-build:'zplug --self-manage'
zplug "MichaelAquilina/zsh-you-should-use"
zplug 'jreese/zsh-titles'
zplug 'crater2150-zsh/fzf-widgets'
zplug 'crater2150-zsh/conf'
zplug 'crater2150-zsh/chroma-z', as:theme
zplug $ZDOTDIR/plugins/highlight-config, from:local, defer:3
#zplug $ZDOTDIR/plugins/bundled-compdefs, from:local
zplug $ZDOTDIR/plugins/tmpsrc, from:local
zplug $ZDOTDIR/plugins/pyenv, from:local
zplug 'molovo/revolver', \
as:command, \
use:revolver
zplug 'zunit-zsh/zunit', \
as:command, \
use:zunit, \
hook-build:'./build.zsh'
zplug "zsh-users/zsh-syntax-highlighting", defer:2
zplug "plugins/ng", from:oh-my-zsh
zplug "zpm-zsh/colors"
zplug "urbainvaes/fzf-marks"
zplug "crater2150-zsh/tmsu-fzf", as:plugin
zplug load
if zplug check 'crater2150-zsh/fzf-widgets'; then
# Map widgets to key
bindkey '\ec' fzf-change-directory
bindkey '^r' fzf-insert-history
bindkey '^xf' fzf-insert-files
bindkey '^xd' fzf-insert-directory
bindkey '^xn' fzf-insert-named-directory
# Start fzf in a tmux pane
FZF_WIDGET_TMUX=1
# use fd for finding directories and files
FZF_CHANGE_DIR_FIND_COMMAND="fd -t d"
FZF_INSERT_DIR_COMMAND="fd -t d"
FZF_INSERT_FILES_COMMAND="fd -t f"
FZF_EDIT_FILES_COMMAND="fd -t f"
# modify history command to remove duplicates
FZF_HISTORY_COMMAND="fc -l 1 | sed 's/ *[0-9]* //g' | awk '!seen[\$0]++'"
fi

View file

@ -1,15 +1,6 @@
# /etc/zsh/zprofile # /etc/zsh/zprofile
# $Header: /var/cvsroot/gentoo-x86/app-shells/zsh/files/zprofile-1,v 1.1 2010/08/15 12:21:56 tove Exp $ # $Header: /var/cvsroot/gentoo-x86/app-shells/zsh/files/zprofile-1,v 1.1 2010/08/15 12:21:56 tove Exp $
append_path () {
case ":$PATH:" in
*:"$1":*)
;;
*)
PATH="${PATH:+$PATH:}$1"
esac
}
# Load environment settings from profile.env, which is created by # Load environment settings from profile.env, which is created by
# env-update from the files in /etc/env.d # env-update from the files in /etc/env.d
if [ -e /etc/profile.env ] ; then if [ -e /etc/profile.env ] ; then
@ -39,7 +30,6 @@ shopts=$-
set -$shopts set -$shopts
unset sh shopts unset sh shopts
if [[ $TTY == /dev/tty1 && -e $HOME/.xsession ]]; then if [[ $TTY == /dev/tty1 ]]; then
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
exec startx :1 exec startx :1
fi fi

7
zshenv
View file

@ -1,6 +1,5 @@
if [ -z "$ZDOTDIR" ]; then export ZDOTDIR="${$(readlink $HOME/.zshenv):h:a}"
export ZDOTDIR=$HOME/.config/zsh
fi
exists() { command -v "$@" >/dev/null } exists() { command -v "$@" >/dev/null }
function(){ function(){
local i local i
@ -8,4 +7,4 @@ function(){
. $i . $i
done done
} }
skip_global_compinit=1

47
zshrc
View file

@ -1,13 +1,6 @@
#zmodload zsh/zprof
typeset -U path typeset -U path
HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile HISTFILE=~/.histfile
if [[ ! -d ${HISTFILE:h} ]]; then
mkdir -p ${HISTFILE:h}
fi
if [[ ! -e $HISTFILE && -e ~/.histfile ]]; then
mv ~/.histfile $HISTFILE
fi
HISTSIZE=100000 HISTSIZE=100000
SAVEHIST=100000 SAVEHIST=100000
unsetopt histsavenodups unsetopt histsavenodups
@ -19,26 +12,22 @@ setopt hist_ignore_space share_history
#setopt hist_ignore_all_dups #setopt hist_ignore_all_dups
setopt no_auto_remove_slash auto_param_slash setopt no_auto_remove_slash auto_param_slash
setopt completeinword setopt completeinword
#setopt chase_links setopt chase_links
setopt short_loops setopt short_loops
setopt cdable_vars setopt cdable_vars
WORDCHARS=${WORDCHARS//\/} WORDCHARS=${WORDCHARS//\/}
cdpath+=$HOME cdpath+=$HOME
export ZDOTDIR=${ZDOTDIR:-$HOME/.zsh} export ZDOTDIR=${ZDOTDIR:-$HOME/.zsh}
fpath=($ZDOTDIR/functions $fpath)
function exists { command -v "$@" >/dev/null } function exists { command -v "$@" >/dev/null }
# get a file from ZDOTDIR, return file in /etc/zsh if it does not exist. If both # get a file from ZDOTDIR, return file in /etc/zsh if it does not exist
# don't exist, return the first of them.
zdotfile() { zdotfile() {
if [[ -e $ZDOTDIR/$1 ]]; then if [[ -e $ZDOTDIR/$1 ]]; then
echo $ZDOTDIR/$1 echo $ZDOTDIR/$1
elif [[ -e /etc/zsh/$1 ]]; then
echo /etc/zsh/$1
else else
echo $ZDOTDIR/$1 echo /etc/zsh/$1
fi fi
} }
try-source() { try-source() {
@ -68,12 +57,6 @@ function(){
try-source $(zdotfile dirs) try-source $(zdotfile dirs)
} }
try-source $(zdotfile local.zsh)
if [[ ! -z $ZDOTDIR/plugins/fzf/fzf.plugin.zsh ]] && exists fzf; then
mkdir -p $ZDOTDIR/plugins/fzf
fzf --zsh 2>/dev/null > $ZDOTDIR/plugins/fzf/fzf.plugin.zsh || true
fi
ZIM_HOME=${XDG_CACHE_HOME:-$HOME/.cache}/zim ZIM_HOME=${XDG_CACHE_HOME:-$HOME/.cache}/zim
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
@ -87,6 +70,8 @@ source ${ZIM_HOME}/init.zsh
. $(zdotfile completion.zsh) . $(zdotfile completion.zsh)
#source $(zdotfile zplug.zsh)
. $(zdotfile bindings.zsh) . $(zdotfile bindings.zsh)
stty -ixon stty -ixon
@ -112,24 +97,8 @@ exists thefuck && eval $(thefuck --alias)
if [[ -e $HOME/.calendars ]]; then if [[ -e $HOME/.calendars ]]; then
_prompt_todos() { _prompt_todos() {
local todos=( ${(u)$( rg -l '^STATUS:NEEDS-ACTION' $HOME/.calendars ):t} ) local todos=$(rg -l '^STATUS:NEEDS-ACTION' $HOME/.calendars | wc -l)
[[ $#todos -gt 0 ]] && echo "Todos: $#todos" [[ $todos -gt 0 ]] && echo "Todos: $todos"
} }
__chromaz_extra_left+=_prompt_todos __chromaz_extra_left+=_prompt_todos
fi fi
if exists mail; then
MAILCHECK=0
_prompt_cron_mails() {
[[ ! -e $MAIL ]] && return
local newmails=$(mail -Hf $MAIL | grep -c '^.N')
[[ $newmails -gt 0 ]] && echo "Cron Notifications: $newmails"
}
__chromaz_extra_left+=_prompt_cron_mails
fi
tabs -4
#zprof
# bun completions
[ -s "/home/crater2150/.bun/_bun" ] && source "/home/crater2150/.bun/_bun"