Compare commits

..

44 commits
zim ... master

Author SHA1 Message Date
crater2150 cfe15e5e1b if node is unavailable, ignore copilot cli 2024-09-13 17:15:45 +02:00
crater2150 cfa828ec19 add plugin to set java home per directory 2024-08-28 17:55:49 +02:00
crater2150 3cb6a1da7e update aliases 2024-07-27 00:56:58 +02:00
crater2150 9793f10c97 Do not error out if xrandr or xinput is missing while DISPLAY is set 2024-07-22 17:51:14 +02:00
crater2150 c5548aaa22 Make config fully contained in xdg-dir (no ~/.zshenv) 2024-07-22 17:50:14 +02:00
crater2150 88a70e9bd4 cleanup 2024-07-16 01:30:54 +02:00
crater2150 761fa84261 env: set DOCKER_HOST to podman socket, if it exists 2024-07-16 01:06:26 +02:00
crater2150 54133a240b add server alias file 2024-07-16 01:06:04 +02:00
crater2150 c7e72c3cb9 add copilot-cli 2024-07-16 01:04:48 +02:00
crater2150 c8c6e801f8 add some xdg settings 2024-07-16 01:02:58 +02:00
crater2150 2cceb7b489 plugins and aliases 2024-07-15 12:28:33 +02:00
crater2150 6a8412428b sv-manage: add service listing 2024-07-15 12:27:39 +02:00
crater2150 c79950ce02 Add copilot aliases 2024-04-29 11:51:58 +02:00
crater2150 f7a90b0364 aliases 2024-03-13 14:14:39 +01:00
crater2150 67b66fdeed Update env 2024-03-13 14:14:39 +01:00
crater2150 16e5256542 Fix fd on ubuntu/debian 2023-12-14 16:56:10 +01:00
crater2150 b578fc04d9 Set terminal tab size to 4 2023-09-15 18:18:32 +02:00
crater2150 224d877fbb add pre-commit config to prevent trailing whitespace 2023-08-21 11:54:19 +02:00
crater2150 b5deb6e21f Fix edit-command-line-split 2023-08-21 11:53:57 +02:00
crater2150 85ec31479e env: set rust paths 2023-08-21 11:52:05 +02:00
crater2150 cc847b5c32 Add uncommitted stuff from flipper 2023-08-21 11:46:14 +02:00
crater2150 0937e73ed9 Use rifle instead of xdg-open if available 2023-08-19 15:23:37 +02:00
crater2150 e73ce2bd18 Fix return codes for some void wrapper functions 2023-08-19 15:22:39 +02:00
crater2150 205558b999 Replace tmux split editing with kitty split 2023-05-30 10:50:45 +02:00
crater2150 b3758b0c8e Fix return value of xbps-install wrapper 2023-05-30 10:50:02 +02:00
crater2150 c9aaa44561 gls: remove slashes at end 2023-04-22 09:39:04 +02:00
crater2150 0663ffc9af add mpd-host switcher 2023-03-20 12:54:18 +01:00
crater2150 8a7dc568b8 remove zplug.zsh 2023-03-20 12:54:18 +01:00
crater2150 c87430681f env 2023-03-20 12:54:18 +01:00
crater2150 f51a7136e6 Add completions for cs and scala-cli 2023-03-20 12:54:18 +01:00
crater2150 b6f49344f3 Override VCS_INFO_bydir_detect because of problems with NFS 2023-03-20 12:54:18 +01:00
crater2150 615ff845fa Updates 2023-03-20 12:54:18 +01:00
crater2150 986347debf Small fixes 2023-03-08 17:36:58 +01:00
crater2150 0cae13e4c1 pyenv: install plugins 2023-03-02 16:11:04 +01:00
crater2150 2f45a347ac Add mails from cron to prompt 2023-03-02 16:10:04 +01:00
crater2150 d86ef1c7b9 Update config, among other things improve batstat 2023-02-02 13:03:53 +01:00
crater2150 77214e5f5e Add env vars 2023-01-23 15:32:16 +01:00
crater2150 2ae1f05e82 Update _sv and _sv-manage completion 2023-01-23 15:32:16 +01:00
crater2150 f50b7bf277 Use $PAGER instead of hardcoded less 2023-01-23 15:32:16 +01:00
crater2150 e181014465 Remove autoforking aliases 2023-01-23 15:32:16 +01:00
crater2150 29829e9c36 Fix quoting in fzf-widget settings, switch to active fork 2023-01-13 11:38:39 +01:00
crater2150 bae17dfdc5 Migrate from zplug to zim 2023-01-12 11:51:27 +01:00
crater2150 b8a9b90447 Add some shortcuts 2023-01-12 11:51:21 +01:00
crater2150 887ffcf598 add dir alias 2023-01-12 11:49:56 +01:00
39 changed files with 460 additions and 140 deletions

6
.pre-commit-config.yaml Normal file
View 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

7
.zimrc
View file

@ -1,4 +1,4 @@
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
@ -6,10 +6,11 @@ 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/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 zmodule ohmyzsh/ohmyzsh --root plugins/ng --fpath ./
zmodule urbainvaes/fzf-marks zmodule carlosedp/mill-zsh-completions

View file

@ -4,9 +4,14 @@ crater's zsh config
Installation: 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
View file

@ -0,0 +1,3 @@
if exists /usr/bin/node && exists github-copilot-cli; then
eval "$(github-copilot-cli alias -- "$0")"
fi

View file

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

View file

@ -13,25 +13,37 @@ 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
fd() { if command -v fdfind >/dev/null; then
if [[ "$1" =~ "-*" ]]; then alias fd="fdfind"
echo "fd not installed. shell alias supports only basic operation" else
return 1 fd() {
fi if [[ "$1" =~ "^-" ]]; then
noglob find . -iname "*${*}*" echo "fd not installed. shell alias supports only basic operation"
} return 1
fi
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"
function v() { if exists rifle; then
for file in $@; do alias v=rifle
xdg-open $file &| else
done function v() {
} for file in $@; do
xdg-open $file &|
done
}
fi
alias vmemcache="vmtouch -l -m 12G -v" alias vmemcache="vmtouch -l -m 12G -v"
@ -40,8 +52,8 @@ fork() {
"$@" &>/dev/null &| "$@" &>/dev/null &|
} }
alias en="dict.cc.py de en" alias en="pipx run dict.cc.py de en"
alias de="dict.cc.py en de" alias de="pipx run dict.cc.py en de"
su() { su() {
if [[ -z "$@" ]]; then if [[ -z "$@" ]]; then
@ -80,7 +92,7 @@ E() {
# edit and refresh aliases # edit and refresh aliases
aliases() { aliases() {
$EDITOR $(zdotfile aliases/${1:-functions}) $EDITOR $(zdotfile aliases/${1:-functions})
. $(zdotfile aliases)/* source $(zdotfile aliases)/*
} }
# per directory configuration # per directory configuration
@ -103,7 +115,7 @@ cd(){
# count files in current or given directory # count files in current or given directory
count() { count() {
find $1 \( ! -path '*/.*' \) | wc -l find $1 -mindepth 1 \( ! -path '*/.*' \) | wc -l
} }
pumount() { pumount() {
@ -251,7 +263,8 @@ btrfs-subvolume-force-delete() {
# lazy shortcuts # lazy shortcuts
alias -g G="| grep" alias -g G="| grep"
alias -g L="| less" alias -g L="| ${PAGER:-less}"
alias -g LE="2>&1 | ${PAGER:-less}"
alias -g T="| tail" alias -g T="| tail"
# xclipboard # xclipboard
@ -310,10 +323,64 @@ alias luarocks="luarocks --local"
alias icat="kitty +kitten icat" 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() { 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()) } '"

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

View file

@ -1,5 +1,23 @@
#!/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

4
aliases/server Executable file
View 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#/}"
}

View file

@ -23,11 +23,13 @@ xqn() {
alias xfiles="xbps-query -f" alias xfiles="xbps-query -f"
xbps-install() { xbps-install() {
sudo script --return --quiet -c "/usr/bin/xbps-install $*" /dev/null \ local logfile=$(mktemp)
| tee /dev/stderr \ sudo script --return --quiet -c "/usr/bin/xbps-install $*" $logfile
| grep -oP ".*(?=: post-install message)" \ local ret=$?
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() {
@ -39,6 +41,7 @@ xupdate() {
fi fi
else else
xbps-install -SA "$@" xbps-install -SA "$@"
xcheckupdates
fi fi
} }
@ -49,25 +52,46 @@ 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() {
action=$1 local action service svdir
shift 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 case "$action" in
add) add)
for service in "$@"; do for service in "$@"; do
ln -s /etc/sv/${service:s#/##} /var/service ln -s ${SVDIR_TEMPLATES:-/etc/sv}/${service:s#/##} ${svdir}
done done
;; ;;
remove|rm) remove|rm)
for service in "$@"; do 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 done
;; ;;
esac esac

2
aliases/xdg Normal file
View file

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

70
aliases/yank-paste Executable file
View 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:

View file

@ -1,4 +1,5 @@
#!/bin/zsh #!/bin/zsh
fpath=( "${ZDOTDIR:+$ZDOTDIR/widgets}" $fpath )
bindkey -v bindkey -v
@ -31,7 +32,9 @@ 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
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 #unicode input
autoload -U insert-unicode-char autoload -U insert-unicode-char

View file

@ -1,3 +1,11 @@
#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

6
compdef/_cs Normal file
View file

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

5
compdef/_scala-cli Normal file
View file

@ -0,0 +1,5 @@
#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)
# Christian Neukirchen <chneukirchen@gmail.com> # Leah Neukirchen <leah@vuxu.org>
# 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,10 +35,12 @@ cmds)
check check
ret=0;; ret=0;;
args) args)
if [[ $BUFFER == sudo* ]] then if [[ $BUFFER == "sudo "*
services=( /var/service/*(-/N:t) ) || $BUFFER == "doas "*
|| $BUFFER == "su "*-c* ]] then
services=( /var/service/*(-/N:t) )
else else
services=( ${SVDIR:-/var/service}/*(-/N:t) ) services=( ${SVDIR:-/var/service}/*(-/N:t) )
fi fi
(( $#services )) && _values services $services && ret=0 (( $#services )) && _values services $services && ret=0
[[ $words[CURRENT] = */* ]] && _directories && ret=0 [[ $words[CURRENT] = */* ]] && _directories && ret=0

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 /etc/sv" "*:service:_files -W ${SVDIR_TEMPLATES:-/etc/sv}"

View file

@ -1,5 +1,6 @@
# autoload completions # 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 /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)

2
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/config ssh $HOME/.ssh/
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

4
env/00_xdg.zsh vendored Normal file
View 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
View 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
View 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
View 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
View file

@ -1,3 +1,9 @@
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

1
env/50_nodejs.zsh vendored
View file

@ -1,3 +1,4 @@
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"

3
env/50_rust.zsh vendored
View file

@ -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 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 export RUST_SRC_PATH=$(rustup run stable rustc --print sysroot)/lib/rustlib/src/rust/src
fi fi

1
env/50_scala.zsh vendored Normal file
View file

@ -0,0 +1 @@
export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=10G -Xmx10G"

1
env/90_pass.zsh vendored Normal file
View file

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

4
env/90_podman-socket.zsh vendored Normal file
View 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

View 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

View 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

View file

@ -18,6 +18,11 @@ 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

@ -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

View file

@ -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
}

View file

@ -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

View file

@ -1,6 +1,15 @@
# /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
@ -31,5 +40,6 @@ set -$shopts
unset sh shopts unset sh shopts
if [[ $TTY == /dev/tty1 ]]; then if [[ $TTY == /dev/tty1 ]]; then
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
exec startx :1 exec startx :1
fi fi

3
zshenv
View file

@ -1,5 +1,3 @@
export ZDOTDIR="${$(readlink $HOME/.zshenv):h:a}"
exists() { command -v "$@" >/dev/null } exists() { command -v "$@" >/dev/null }
function(){ function(){
local i local i
@ -7,4 +5,3 @@ function(){
. $i . $i
done done
} }

23
zshrc
View file

@ -1,6 +1,12 @@
typeset -U path typeset -U path
HISTFILE=~/.histfile 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 HISTSIZE=100000
SAVEHIST=100000 SAVEHIST=100000
unsetopt histsavenodups unsetopt histsavenodups
@ -12,13 +18,14 @@ 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 }
@ -70,8 +77,6 @@ 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
@ -102,3 +107,13 @@ if [[ -e $HOME/.calendars ]]; then
} }
__chromaz_extra_left+=_prompt_todos __chromaz_extra_left+=_prompt_todos
fi 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