#!/bin/zsh function venv_prompt() { [[ -n ${VIRTUAL_ENV} ]] || return echo -e "%F{yellow}%f ${VIRTUAL_ENV:t:gs/%/%%}" } function write_title_wd() { echo -ne "\033]0;$(print -P "%n@%m [%3~]")\007" } function reset_beam() { echo -ne '\e[5 q' } function lfwrap() { LF_DIRFILE="$(mktemp -u)" env lfX -last-dir-path="$LF_DIRFILE" \ -command "set promptfmt \"$(${HOME}/.local/libexec/lf_prompt)\"" dir="$(cat "$LF_DIRFILE")" rm "$LF_DIRFILE" &>/dev/null if [ -d "$dir" ]; then if [ "$dir" != "$(pwd)" ]; then cd "$dir" fi fi zle reset-prompt zle redisplay write_title_wd reset_beam } zle -N lfwrap # Cursor Shape function zle-keymap-select() { case $KEYMAP in vicmd) echo -ne '\e[1 q';; # block viins|main) echo -ne '\e[5 q';; # beam esac } zle -N zle-keymap-select zle-line-init() { zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) echo -ne "\e[5 q" } zle -N zle-line-init # CMDLine Edit zle -N edit-command-line # Lazygit function lg() { [ ! -d "$(pwd)/.git" ] && [[ $(read -erk "?Not in a git repository. Create a new git repository? (y/n): ") =~ ^[Yy]$ ]] && git init [ -d "$(pwd)/.git" ] && lazygit -p "$(pwd)" zle reset-prompt } zle -N lg # Useful functions for usage in the shell function xsi() { xpkg -a | \ fzf -q ${1:-""} -m --preview \ "xq {1} | \grep -e pkgver -e license -e short_desc -e installed_size -e maintainer -e repository -e homepage" \ --preview-window=right:66%:wrap | xargs -ro xi } function ntfy() { "$@" && { notify-send "$1 completed successfully"; return; } notify-send -u critical "$1 failed! " "exited with code: $?" } function whed() { script=$(which "$1") [ -e "$script" ] && $EDITOR $(which "$script") } function workon_cwd() { local PROJECT_ROOT="${PWD}" while [ "$PROJECT_ROOT" != "/" ] && [ ! -e "$PROJECT_ROOT/.venv" ] && [ ! -d "$PROJECT_ROOT/.git" ]; do local PROJECT_ROOT="$(dirname "$PROJECT_ROOT")" done if [ -r "$PROJECT_ROOT/.venv" ]; then local ENV_NAME="$(cat $PROJECT_ROOT/.venv)" else local ENV_NAME="$(basename "$PROJECT_ROOT")" fi [ -n "$CD_VIRTUAL_ENV" ] && [ "$ENV_NAME" != "$CD_VIRTUAL_ENV" ] && { [ -n "$VIRTUAL_ENV" ] && deactivate unset CD_VIRTUAL_ENV } [ -n "$ENV_NAME" ] && [ ! "$(realpath "$VIRTUAL_ENV" 2>/dev/null)" = "$(realpath "$WORKON_HOME/$ENV_NAME")" ] && { if [ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]; then workon -n "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME" elif [ -e "$ENV_NAME/bin/activate" ]; then source "$ENV_NAME/bin/activate" && export CD_VIRTUAL_ENV="$ENV_NAME" else local ENV_NAME="" fi } [ -z "$ENV_NAME" ] && [ -n "$CD_VIRTUAL_ENV" ] && [ -n "$VIRTUAL_ENV" ] && { deactivate && unset CD_VIRTUAL_ENV } }