Compare commits
44 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cfe15e5e1b | ||
![]() |
cfa828ec19 | ||
![]() |
3cb6a1da7e | ||
![]() |
9793f10c97 | ||
![]() |
c5548aaa22 | ||
![]() |
88a70e9bd4 | ||
![]() |
761fa84261 | ||
![]() |
54133a240b | ||
![]() |
c7e72c3cb9 | ||
![]() |
c8c6e801f8 | ||
![]() |
2cceb7b489 | ||
![]() |
6a8412428b | ||
![]() |
c79950ce02 | ||
![]() |
f7a90b0364 | ||
![]() |
67b66fdeed | ||
![]() |
16e5256542 | ||
![]() |
b578fc04d9 | ||
![]() |
224d877fbb | ||
![]() |
b5deb6e21f | ||
![]() |
85ec31479e | ||
![]() |
cc847b5c32 | ||
![]() |
0937e73ed9 | ||
![]() |
e73ce2bd18 | ||
![]() |
205558b999 | ||
![]() |
b3758b0c8e | ||
![]() |
c9aaa44561 | ||
![]() |
0663ffc9af | ||
![]() |
8a7dc568b8 | ||
![]() |
c87430681f | ||
![]() |
f51a7136e6 | ||
![]() |
b6f49344f3 | ||
![]() |
615ff845fa | ||
![]() |
986347debf | ||
![]() |
0cae13e4c1 | ||
![]() |
2f45a347ac | ||
![]() |
d86ef1c7b9 | ||
![]() |
77214e5f5e | ||
![]() |
2ae1f05e82 | ||
![]() |
f50b7bf277 | ||
![]() |
e181014465 | ||
![]() |
29829e9c36 | ||
![]() |
bae17dfdc5 | ||
![]() |
b8a9b90447 | ||
![]() |
887ffcf598 |
6
.pre-commit-config.yaml
Normal file
6
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
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
Normal file
16
.zimrc
Normal file
|
@ -0,0 +1,16 @@
|
|||
zmodule jreese/zsh-titles -n titles
|
||||
|
||||
zmodule SmartFinn/fzf-widgets
|
||||
zmodule crater2150-zsh/conf
|
||||
zmodule crater2150-zsh/chroma-z
|
||||
|
||||
zmodule $ZDOTDIR/plugins/tmpsrc
|
||||
zmodule $ZDOTDIR/plugins/pyenv
|
||||
zmodule $ZDOTDIR/plugins/cs-java-home
|
||||
|
||||
zmodule $ZDOTDIR/plugins/highlight-config
|
||||
zmodule zsh-users/zsh-syntax-highlighting
|
||||
|
||||
zmodule ohmyzsh/ohmyzsh --root plugins/ng --fpath ./
|
||||
|
||||
zmodule carlosedp/mill-zsh-completions
|
13
README.md
13
README.md
|
@ -4,9 +4,14 @@ crater's zsh config
|
|||
Installation:
|
||||
-------------
|
||||
|
||||
From the checked out repo:
|
||||
Set the `ZDOTDIR` environment variable to the directory of this repo. Note that
|
||||
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`:
|
||||
|
||||
```
|
||||
ln -s $PWD/zshenv $HOME/.zshenv
|
||||
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}"/zsh
|
||||
```
|
||||
The zshenv file sets the location to the rest of the config (`$ZDOTDIR`)
|
||||
automatically, based on the link target.
|
||||
|
|
3
aliases/copilot.zsh
Normal file
3
aliases/copilot.zsh
Normal file
|
@ -0,0 +1,3 @@
|
|||
if exists /usr/bin/node && exists github-copilot-cli; then
|
||||
eval "$(github-copilot-cli alias -- "$0")"
|
||||
fi
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/zsh
|
||||
|
||||
local forkprogs=(
|
||||
geeqie
|
||||
feh
|
||||
)
|
||||
|
||||
for i in $forkprogs; do
|
||||
alias $i="fork $i"
|
||||
done
|
|
@ -13,25 +13,37 @@ alias :q="exit"
|
|||
alias rget="rsync -rP --append-verify --inplace"
|
||||
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 fdfind >/dev/null; then
|
||||
alias fd="fdfind"
|
||||
else
|
||||
fd() {
|
||||
if [[ "$1" =~ "-*" ]]; then
|
||||
if [[ "$1" =~ "^-" ]]; then
|
||||
echo "fd not installed. shell alias supports only basic operation"
|
||||
return 1
|
||||
fi
|
||||
noglob find . -iname "*${*}*"
|
||||
}
|
||||
fi
|
||||
fi
|
||||
|
||||
alias sudo="sudo "
|
||||
alias S='sudo $(history -n -1)'
|
||||
|
||||
alias rm="rm -I"
|
||||
function v() {
|
||||
if exists rifle; then
|
||||
alias v=rifle
|
||||
else
|
||||
function v() {
|
||||
for file in $@; do
|
||||
xdg-open $file &|
|
||||
done
|
||||
}
|
||||
}
|
||||
fi
|
||||
|
||||
alias vmemcache="vmtouch -l -m 12G -v"
|
||||
|
||||
|
@ -40,8 +52,8 @@ fork() {
|
|||
"$@" &>/dev/null &|
|
||||
}
|
||||
|
||||
alias en="dict.cc.py de en"
|
||||
alias de="dict.cc.py en de"
|
||||
alias en="pipx run dict.cc.py de en"
|
||||
alias de="pipx run dict.cc.py en de"
|
||||
|
||||
su() {
|
||||
if [[ -z "$@" ]]; then
|
||||
|
@ -80,7 +92,7 @@ E() {
|
|||
# edit and refresh aliases
|
||||
aliases() {
|
||||
$EDITOR $(zdotfile aliases/${1:-functions})
|
||||
. $(zdotfile aliases)/*
|
||||
source $(zdotfile aliases)/*
|
||||
}
|
||||
|
||||
# per directory configuration
|
||||
|
@ -103,7 +115,7 @@ cd(){
|
|||
|
||||
# count files in current or given directory
|
||||
count() {
|
||||
find $1 \( ! -path '*/.*' \) | wc -l
|
||||
find $1 -mindepth 1 \( ! -path '*/.*' \) | wc -l
|
||||
}
|
||||
|
||||
pumount() {
|
||||
|
@ -251,13 +263,16 @@ btrfs-subvolume-force-delete() {
|
|||
|
||||
# lazy shortcuts
|
||||
alias -g G="| grep"
|
||||
alias -g L="| less"
|
||||
alias -g L="| ${PAGER:-less}"
|
||||
alias -g LE="2>&1 | ${PAGER:-less}"
|
||||
alias -g T="| tail"
|
||||
|
||||
# xclipboard
|
||||
alias -g XS='$(xclip -o -selection primary)'
|
||||
alias -g XC='$(xclip -o -selection clipboard)'
|
||||
|
||||
alias -g GITROOT='$(git rev-parse --show-toplevel)'
|
||||
|
||||
alias -s log=vimpager
|
||||
#}}}
|
||||
|
||||
|
@ -308,10 +323,64 @@ alias luarocks="luarocks --local"
|
|||
|
||||
alias icat="kitty +kitten icat"
|
||||
|
||||
# vim: foldmethod=marker
|
||||
local function hour-float-to-time() {
|
||||
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() {
|
||||
echo ~/downloads/*(oc.[1])
|
||||
}
|
||||
|
||||
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()) } '"
|
||||
|
|
|
@ -47,7 +47,7 @@ gls() {
|
|||
for i in $gitignore $globalgitignore; do
|
||||
if [[ -e $i ]]; then
|
||||
for ignore in "${(f)mapfile[$i]}"; do
|
||||
ignores+="--ignore=$ignore"
|
||||
ignores+="--ignore=${ignore%/}"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
|
18
aliases/mpd
18
aliases/mpd
|
@ -1,5 +1,23 @@
|
|||
#!/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() {
|
||||
eval $(mpd-host get)
|
||||
export MPD_HOST
|
||||
|
|
4
aliases/server
Executable file
4
aliases/server
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/zsh
|
||||
matrix() {
|
||||
curl --header "Authorization: Bearer $(pass servers/matrix/matrix.qwertyuiop.de_admintoken)" -X $1 "https://qwertyuiop.de:8448/${2#/}"
|
||||
}
|
34
aliases/void
34
aliases/void
|
@ -23,11 +23,13 @@ xqn() {
|
|||
alias xfiles="xbps-query -f"
|
||||
|
||||
xbps-install() {
|
||||
sudo script --return --quiet -c "/usr/bin/xbps-install $*" /dev/null \
|
||||
| tee /dev/stderr \
|
||||
| grep -oP ".*(?=: post-install message)" \
|
||||
local logfile=$(mktemp)
|
||||
sudo script --return --quiet -c "/usr/bin/xbps-install $*" $logfile
|
||||
local ret=$?
|
||||
grep -oP ".*(?=: post-install message)" < $logfile \
|
||||
| ifne xargs -L 1 xbps-query -p install-msg
|
||||
hash -r
|
||||
return $ret
|
||||
}
|
||||
|
||||
xupdate() {
|
||||
|
@ -39,6 +41,7 @@ xupdate() {
|
|||
fi
|
||||
else
|
||||
xbps-install -SA "$@"
|
||||
xcheckupdates
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -49,25 +52,46 @@ xowner() {
|
|||
|
||||
sv() {
|
||||
command sv "$@"
|
||||
ret=$?
|
||||
if [[ "$1" == "up" ]]; then
|
||||
shift
|
||||
sleep 0.5
|
||||
command sv check "$@"
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
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
|
||||
shift
|
||||
fi
|
||||
case "$action" in
|
||||
add)
|
||||
for service in "$@"; do
|
||||
ln -s /etc/sv/${service:s#/##} /var/service
|
||||
ln -s ${SVDIR_TEMPLATES:-/etc/sv}/${service:s#/##} ${svdir}
|
||||
done
|
||||
;;
|
||||
remove|rm)
|
||||
for service in "$@"; do
|
||||
rm /var/service/${service:s#/##}
|
||||
rm ${svdir}/${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
|
||||
;;
|
||||
esac
|
||||
|
|
2
aliases/xdg
Normal file
2
aliases/xdg
Normal file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/zsh
|
||||
alias adb='HOME="$XDG_DATA_HOME"/android adb'
|
70
aliases/yank-paste
Executable file
70
aliases/yank-paste
Executable file
|
@ -0,0 +1,70 @@
|
|||
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:
|
20
bindings.zsh
20
bindings.zsh
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
fpath=( "${ZDOTDIR:+$ZDOTDIR/widgets}" $fpath )
|
||||
|
||||
bindkey -v
|
||||
|
||||
|
@ -31,7 +32,9 @@ bindkey " " magic-space # Do history expansion on space.
|
|||
bindkey $'\177' backward-delete-char # backspace
|
||||
bindkey $'\10' backward-delete-word # C-backspace
|
||||
|
||||
bindkey -M vicmd ! edit-command-line-tmux
|
||||
autoload -U edit-command-line-split
|
||||
zle -N edit-command-line-split
|
||||
bindkey -M vicmd ! edit-command-line-split
|
||||
|
||||
#unicode input
|
||||
autoload -U insert-unicode-char
|
||||
|
@ -92,3 +95,18 @@ fi
|
|||
zle-venv() { zle push-line; BUFFER="venv"; zle accept-line }
|
||||
zle -N zle-venv
|
||||
bindkey "\ev" zle-venv
|
||||
|
||||
# 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
|
||||
|
||||
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]++'"
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
#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
|
||||
|
|
6
compdef/_cs
Normal file
6
compdef/_cs
Normal file
|
@ -0,0 +1,6 @@
|
|||
#compdef _cs cs
|
||||
|
||||
function _cs {
|
||||
eval "$(cs complete zsh-v1 $CURRENT $words[@])"
|
||||
}
|
||||
|
5
compdef/_scala-cli
Normal file
5
compdef/_scala-cli
Normal file
|
@ -0,0 +1,5 @@
|
|||
#compdef _scala-cli scala-cli
|
||||
|
||||
function _scala-cli {
|
||||
eval "$(scala-cli complete zsh-v1 $CURRENT $words[@])"
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
#compdef sv
|
||||
|
||||
# completion for runit sv(1)
|
||||
# Christian Neukirchen <chneukirchen@gmail.com>
|
||||
# Leah Neukirchen <leah@vuxu.org>
|
||||
# runit 2.1.1, services in /var/service are completed by default
|
||||
|
||||
local ret=1 services
|
||||
|
@ -35,7 +35,9 @@ cmds)
|
|||
check
|
||||
ret=0;;
|
||||
args)
|
||||
if [[ $BUFFER == sudo* ]] then
|
||||
if [[ $BUFFER == "sudo "*
|
||||
|| $BUFFER == "doas "*
|
||||
|| $BUFFER == "su "*-c* ]] then
|
||||
services=( /var/service/*(-/N:t) )
|
||||
else
|
||||
services=( ${SVDIR:-/var/service}/*(-/N:t) )
|
||||
|
|
|
@ -5,4 +5,4 @@ local context state line
|
|||
|
||||
_arguments \
|
||||
"1:Action:(add rm remove)"\
|
||||
"*:service:_files -W /etc/sv"
|
||||
"*:service:_files -W ${SVDIR_TEMPLATES:-/etc/sv}"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# autoload completions
|
||||
fpath=( "${ZDOTDIR:+$ZDOTDIR/compdef}" "/etc/zsh/compdef" $fpath )
|
||||
fpath=( "${XDG_DATA_HOME:-$HOME/.local/share}/zsh/site-functions" "${ZDOTDIR:+$ZDOTDIR/compdef}" "/etc/zsh/compdef" $fpath )
|
||||
fpath=("$XDG_DATA_HOME/scalacli/completions/zsh" $fpath)
|
||||
|
||||
[[ -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)
|
||||
|
|
2
confs
2
confs
|
@ -11,7 +11,7 @@ nvim-plug $XDG_CONFIG_HOME/nvim/packages.vim
|
|||
offlineimap $XDG_CONFIG_HOME/offlineimap/config
|
||||
qutebrowser $XDG_CONFIG_HOME/qutebrowser/
|
||||
qutebrowser-scripts $XDG_DATA_HOME/qutebrowser/userscripts
|
||||
ssh $HOME/.ssh/config
|
||||
ssh $HOME/.ssh/
|
||||
vdirsyncer $XDG_CONFIG_HOME/vdirsyncer/config
|
||||
vim $XDG_CONFIG_HOME/vim
|
||||
xd $XDG_CONFIG_HOME/xd.conf
|
||||
|
|
2
dirs
2
dirs
|
@ -1 +1,3 @@
|
|||
m=/run/media/$USER/
|
||||
j=${XDG_DATA_HOME}/jails
|
||||
rc=${j}/webapp-rocketchat/Downloads
|
||||
|
|
4
env/00_xdg.zsh
vendored
Normal file
4
env/00_xdg.zsh
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
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}
|
19
env/01_xdg-fixes.zsh
vendored
Normal file
19
env/01_xdg-fixes.zsh
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
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
|
||||
export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java"
|
13
env/15_basic.zsh
vendored
Normal file
13
env/15_basic.zsh
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
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}
|
3
env/20_dockerhost.zsh
vendored
Normal file
3
env/20_dockerhost.zsh
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
if [[ -e $XDG_RUNTIME_DIR/podman/podman.sock ]]; then
|
||||
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
|
||||
fi
|
6
env/20_services.zsh
vendored
6
env/20_services.zsh
vendored
|
@ -1,3 +1,9 @@
|
|||
if [[ $DISPLAY && $UID != 0 ]]; then
|
||||
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
|
||||
|
|
1
env/50_nodejs.zsh
vendored
1
env/50_nodejs.zsh
vendored
|
@ -1,3 +1,4 @@
|
|||
export NPM_PACKAGES="${XDG_DATA_HOME}/npm-packages"
|
||||
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
|
||||
export PATH="$PATH:$NPM_PACKAGES/bin"
|
||||
export MANPATH="${MANPATH}:$NPM_PACKAGES/share/man"
|
||||
|
|
3
env/50_rust.zsh
vendored
3
env/50_rust.zsh
vendored
|
@ -1,3 +1,6 @@
|
|||
export RUSTUP_HOME="${XDG_DATA_HOME}/rustup"
|
||||
export CARGO_HOME="${XDG_DATA_HOME}/cargo"
|
||||
export PATH="${CARGO_HOME}/bin:${PATH}"
|
||||
if 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
|
||||
fi
|
||||
|
|
1
env/50_scala.zsh
vendored
Normal file
1
env/50_scala.zsh
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=10G -Xmx10G"
|
1
env/90_pass.zsh
vendored
Normal file
1
env/90_pass.zsh
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
|
4
env/90_podman-socket.zsh
vendored
Normal file
4
env/90_podman-socket.zsh
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
if command -v podman &>/dev/null; then
|
||||
export DOCKER_SOCKET=$(podman system info -f '{{.Host.RemoteSocket.Path}}')
|
||||
export DOCKER_HOST=unix://$DOCKER_SOCKET
|
||||
fi
|
41
functions/VCS_INFO_bydir_detect
Normal file
41
functions/VCS_INFO_bydir_detect
Normal file
|
@ -0,0 +1,41 @@
|
|||
## 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
|
41
plugins/cs-java-home/cs-java-home.plugin.zsh
Normal file
41
plugins/cs-java-home/cs-java-home.plugin.zsh
Normal file
|
@ -0,0 +1,41 @@
|
|||
typeset -a chpwd_functions __chromaz_extra_left
|
||||
|
||||
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}
|
||||
}
|
||||
|
||||
chpwd_functions+=cs-set-java-home
|
||||
__chromaz_extra_left+=cs-current-java
|
||||
cs-set-java-home
|
|
@ -1,3 +1,5 @@
|
|||
typeset -gA ZSH_HIGHLIGHT_STYLES
|
||||
|
||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
|
||||
|
||||
if [[ "`tput colors`" == "256" ]] || [[ "`tput colors`" == "88" ]] ; then
|
||||
|
|
|
@ -18,6 +18,11 @@ else
|
|||
pyenv() {
|
||||
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-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
|
||||
}
|
||||
fi
|
||||
|
|
16
widgets/edit-command-line-split
Normal file
16
widgets/edit-command-line-split
Normal file
|
@ -0,0 +1,16 @@
|
|||
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
|
|
@ -1,18 +0,0 @@
|
|||
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
|
||||
}
|
1
zplug
1
zplug
|
@ -1 +0,0 @@
|
|||
Subproject commit 18cfcd4f761eceaf2ca63a291d11782d0f8b590e
|
57
zplug.zsh
57
zplug.zsh
|
@ -1,57 +0,0 @@
|
|||
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
|
10
zprofile
10
zprofile
|
@ -1,6 +1,15 @@
|
|||
# /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 $
|
||||
|
||||
append_path () {
|
||||
case ":$PATH:" in
|
||||
*:"$1":*)
|
||||
;;
|
||||
*)
|
||||
PATH="${PATH:+$PATH:}$1"
|
||||
esac
|
||||
}
|
||||
|
||||
# Load environment settings from profile.env, which is created by
|
||||
# env-update from the files in /etc/env.d
|
||||
if [ -e /etc/profile.env ] ; then
|
||||
|
@ -31,5 +40,6 @@ set -$shopts
|
|||
unset sh shopts
|
||||
|
||||
if [[ $TTY == /dev/tty1 ]]; then
|
||||
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
|
||||
exec startx :1
|
||||
fi
|
||||
|
|
3
zshenv
3
zshenv
|
@ -1,5 +1,3 @@
|
|||
export ZDOTDIR="${$(readlink $HOME/.zshenv):h:a}"
|
||||
|
||||
exists() { command -v "$@" >/dev/null }
|
||||
function(){
|
||||
local i
|
||||
|
@ -7,4 +5,3 @@ function(){
|
|||
. $i
|
||||
done
|
||||
}
|
||||
|
||||
|
|
38
zshrc
38
zshrc
|
@ -1,4 +1,12 @@
|
|||
HISTFILE=~/.histfile
|
||||
typeset -U path
|
||||
|
||||
HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile
|
||||
if [[ ! -d ${HISTFILE:h} ]]; then
|
||||
mkdir -p ${HISTFILE:h}
|
||||
fi
|
||||
if [[ ! -e $HISTFILE && -e ~/.histfile ]]; then
|
||||
mv ~/.histfile $HISTFILE
|
||||
fi
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=100000
|
||||
unsetopt histsavenodups
|
||||
|
@ -10,13 +18,14 @@ setopt hist_ignore_space share_history
|
|||
#setopt hist_ignore_all_dups
|
||||
setopt no_auto_remove_slash auto_param_slash
|
||||
setopt completeinword
|
||||
setopt chase_links
|
||||
#setopt chase_links
|
||||
setopt short_loops
|
||||
setopt cdable_vars
|
||||
WORDCHARS=${WORDCHARS//\/}
|
||||
cdpath+=$HOME
|
||||
|
||||
export ZDOTDIR=${ZDOTDIR:-$HOME/.zsh}
|
||||
fpath=($ZDOTDIR/functions $fpath)
|
||||
|
||||
function exists { command -v "$@" >/dev/null }
|
||||
|
||||
|
@ -55,10 +64,19 @@ function(){
|
|||
try-source $(zdotfile dirs)
|
||||
}
|
||||
|
||||
|
||||
ZIM_HOME=${XDG_CACHE_HOME:-$HOME/.cache}/zim
|
||||
if [[ ! -e ${ZIM_HOME}/zimfw.zsh ]]; then
|
||||
curl -fsSL --create-dirs -o ${ZIM_HOME}/zimfw.zsh \
|
||||
https://github.com/zimfw/zimfw/releases/latest/download/zimfw.zsh
|
||||
fi
|
||||
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
|
||||
source ${ZIM_HOME}/zimfw.zsh init -q
|
||||
fi
|
||||
source ${ZIM_HOME}/init.zsh
|
||||
|
||||
|
||||
. $(zdotfile completion.zsh)
|
||||
|
||||
source $(zdotfile zplug.zsh)
|
||||
|
||||
. $(zdotfile bindings.zsh)
|
||||
|
||||
stty -ixon
|
||||
|
@ -89,3 +107,13 @@ if [[ -e $HOME/.calendars ]]; then
|
|||
}
|
||||
__chromaz_extra_left+=_prompt_todos
|
||||
fi
|
||||
|
||||
if exists mail; then
|
||||
_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
|
||||
|
|
Loading…
Reference in a new issue