dotfiles/_home/private_dot_local/bin/executable_load-zellij

78 lines
2.7 KiB
Bash

#! /usr/bin/env bash
# Helper function
is_sourced() {
if [ -n "$ZSH_VERSION" ]; then
case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac
else # Add additional POSIX-compatible shell names here, if needed.
case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac
fi
return 1; # NOT sourced.
}
BASE_0=${BASE_0:-$0}
BASE_SHELL=$(basename "$SHELL")
if is_sourced; then
zellij-cleanup() {
which zellij > /dev/null && which zellij | grep -E "^$HOME" | ${SUDO:-} xargs -tr rm
[[ -d "$HOME/.cache/zellij" ]] && echo "$HOME/.cache/zellij" | ${SUDO:-} xargs -tr rm -fR
find /tmp -maxdepth 1 -mindepth 1 -type d -name 'zellij*' -print0 | ${SUDO:-} xargs -r0t rm -fR
if [[ -d "$HOME/.cache/zellij" ]]; then
printf 'Zellij cleanup failed to remove the cache directory, you might still have a zellij session active.\n'
else
printf 'Zellij has been cleaned up, you can now reinstall it.\n'
unset zellij-cleanup
fi
}
refresh-zellij() {
if [ -z "$(which zellij)" ] && ! [ -x ~/.local/bin/zellij ]; then
if [[ ! -r /tmp/zellij/bootstrap/zellij ]]; then
printf "Grabbing zellij from the web!\n"
bash <(curl -sL zellij.dev/launch) "--help" > /dev/null 2>&1 || true
fi
if [[ -r /tmp/zellij/bootstrap/zellij ]]; then
mv /tmp/zellij/bootstrap/zellij ~/.local/bin/zellij
rm -fR /tmp/zellij
fi
fi
refresh-zellij() { :; }
}
zellij() {
refresh-zellij
if [[ $# -eq 0 ]]; then
env zellij attach -c $USER@$(hostname)
else
env zellij "${@}"
fi
}
zellij-completion() {
if [[ "${BASE_SHELL}" == "zsh" ]]; then
. <( env zellij setup --generate-completion zsh | sed -Ee 's/^(_(zellij) ).*/compdef \1\2/' )
else
. <( env zellij setup --generate-completion "$BASE_SHELL" )
fi
}
${SET:-:} -x
if [[ -n "$(which zellij)" ]]; then
zellij-completion
fi
${SET:-:} -x
# Was needed when zsh would load
# . <( zellij setup --generate-completion "$BASE_SHELL" | sed -ne '/^function/,$p' )
if [[ -z "$ZELLIJ_SESSION_NAME" ]]; then
zellij attach -c $USER@$(hostname)
fi
elif [[ "$1" == '-' ]]; then
cat "${BASH_SOURCE[0]}"
else
SCRIPT_NAME="$BASE_0"
printf '%s\n' \
"It seems $SCRIPT_NAME was invoked as a script. It should be sourced instead." \
'The easiest way is to call it like this:' \
" $ . <( $SCRIPT_NAME - ) # Note the '-' after the script's name" \
''
fi