switching from zsh to yash

This commit is contained in:
Rudis Muiznieks 2025-03-18 15:36:51 -05:00
parent e4a26077c8
commit b1aa6d93b2
Signed by: rudism
GPG key ID: CABF2F86EF7884F9
11 changed files with 815 additions and 678 deletions

42
yash/_yashrc Normal file
View file

@ -0,0 +1,42 @@
# yash config
set --brace-expand
set --extended-glob
set --no-clobber
set --unset
set --hist-space
set --notify-le
set --le-no-conv-meta
set --le-predict
! [ -d ~/.cache/yash ] && mkdir -p ~/.cache/yash
HISTFILE=~/.cache/yash/history
HISTSIZE=100000
PS1P="\fi"
FCEDIT=hx
# prompt
. ~/skynet/yash/polyglot.sh
# environment setup
export PURE_GIT_PULL=0
GPG_TTY=$(tty); export GPG_TTY
export XDG_CURRENT_DESKTOP=sway
export MOZ_ENABLE_WAYLAND=1
export ELECTRON_OZONE_PLATFORM_HINT=wayland
export QT_QPA_PLATFORMTHEME=qt6ct
export DOTNET_ROOT=$HOME/dotnet
export LD_LIBRARY_PATH=$HOME/.local/lib:${LD_LIBRARY_PATH-}
export PATH=$HOME/.local/bin:$HOME/dotnet:$HOME/.dotnet/tools:$HOME/go/bin:$HOME/.cargo/bin:$HOME/node/node_modules/.bin:$PATH
export MANPATH=$HOME/.local/share/man:${MANPATH-}
# command replacements
if type lsd >/dev/null 2>/dev/null; then
ls() { command lsd "$@"; }
fi
if type bat >/dev/null 2>/dev/null; then
cat() { command bat "$@"; }
fi
# aliases
if [ -f ~/.yash_alias ]; then
. ~/.yash_alias
fi

9
yash/alias_borges Normal file
View file

@ -0,0 +1,9 @@
alias ~api='cd /home/rudism/mri/cosmic/api'
alias ~oot='cd /home/rudism/mri/cosmic/nasa/oot/api'
alias dockerrm='docker stop $(docker ps -aq); docker rm $(docker ps -aq); docker system prune -f; docker volume prune -af'
alias webcamfix='sudo modprobe v4l2loopback devices=1 video_nr=9 card_label=VirtualCam exclusive_caps=1 && ffmpeg -f video4linux2 -framerate 25 -video_size 1280x720 -input_format mjpeg -i /dev/video0 -f v4l2 -pix_fmt yuv420p /dev/video9; sudo rmmod v4l2loopback'
alias syncmusic='rsync -av --size-only --times --no-perms --no-owner --no-group --delete /mnt/agrajag/music/'
alias watchsync='watch -d grep -e Dirty: -e Writeback: /proc/meminfo'
alias win='dbus-run-session sway --unsupported-gpu'
alias clearb="printf '\033[2J\033[3J\033[1;1H'"

764
yash/polyglot.sh Normal file
View file

@ -0,0 +1,764 @@
# _ _ _
# _ __ ___ | |_ _ __ _| | ___ | |_
# | '_ \ / _ \| | | | |/ _` | |/ _ \| __|
# | |_) | (_) | | |_| | (_| | | (_) | |_
# | .__/ \___/|_|\__, |\__, |_|\___/ \__|
# |_| |___/ |___/
#
# Polyglot Prompt
#
# A dynamic color Git prompt for zsh, bash, ksh93, mksh, pdksh, oksh, dash,
# yash,busybox ash, and osh
#
#
# Source this file from a relevant dotfile (e.g. .zshrc, .bashrc, .shrc, .kshrc,
# .mkshrc, .yashrc, or ~/.config/oil/oshrc) thus:
#
# . /path/to/polyglot.sh
#
# Set $POLYGLOT_PROMPT_DIRTRIM to the number of directory elements you would
# like to have displayed in your prompt (the default is 2). For example,
#
# POLYGLOT_PROMPT_DIRTRIM=3
#
# results in
#
# ~/foo/bar/bat/quux
#
# displaying as
#
# ~/.../bar/bat/quux
#
#
# Copyright 2017-2024 Alexandros Kozak
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
#
#
# https://github.com/agkozak/polyglot
#
# shellcheck shell=ksh
# shellcheck disable=SC2016,SC2034,SC2088,SC3024
# Only run in interactive shells
case $- in
*i*) ;;
*) return ;;
esac
# Bail if the shell doesn't have command
if ! type command > /dev/null 2>&1; then
printf '%s\n' 'Polyglot Prompt does not support your shell.' >&2
return 1
fi
# Don't let virtual env active scripts alter prompt
VIRTUAL_ENV_DISABLE_PROMPT=1
############################################################
# Display non-zero exit status
#
# Arguments:
# $1 exit status of last command (always $?)
############################################################
_polyglot_exit_status() {
case $1 in
0) return ;;
*) printf '(%d) ' "$1" ;;
esac
}
###########################################################
# Is the user connected via SSH?
###########################################################
_polyglot_is_ssh() {
[ -n "${SSH_CONNECTION-}${SSH_CLIENT-}${SSH_TTY-}" ]
}
###########################################################
# Provide the effective user ID
###########################################################
_polyglot_euid() {
case ${POLYGLOT_UNAME:=$(uname -s)} in
SunOS) /usr/xpg4/bin/id -u ;;
*) id -u ;;
esac
}
###########################################################
# Is the user a superuser?
###########################################################
_polyglot_is_superuser() {
# shellcheck disable=SC3028
[ ${EUID:-$(_polyglot_euid)} -eq 0 ]
}
###########################################################
# Does the terminal support enough colors?
###########################################################
_polyglot_has_colors() {
[ -n "$ZSH_VERSION" ] && setopt LOCAL_OPTIONS NO_WARN_CREATE_GLOBAL
# The DragonFly BSD system console has trouble displaying colors in pdksh
case ${POLYGLOT_UNAME:=$(uname -s)} in
DragonFly)
case $(who am i) in *ttyv*) return 1 ;; esac
;;
esac
case $TERM in
*-256color) POLYGLOT_TERM_COLORS=256 ;;
vt100|dumb) POLYGLOT_TERM_COLORS=-1 ;;
*)
if command -v tput > /dev/null 2>&1; then
case ${POLYGLOT_UNAME:=$(uname -s)} in
FreeBSD|DragonFly) POLYGLOT_TERM_COLORS=$(tput Co) ;;
UWIN*) POLYGLOT_TERM_COLORS=$(tput cols) ;;
*) POLYGLOT_TERM_COLORS=$(tput colors) ;;
esac
else
POLYGLOT_TERM_COLORS=-1
fi
;;
esac
if [ "${POLYGLOT_TERM_COLORS:-0}" -ge 8 ]; then
unset POLYGLOT_TERM_COLORS
return 0
else
unset POLYGLOT_TERM_COLORS
return 1
fi
}
############################################################
# Emulation of bash's PROMPT_DIRTRIM for all other shells
# and for bash before v4.0
#
# In $PWD, substitute $HOME with ~; if the remainder of the
# $PWD has more than a certain number of directory elements
# to display (default: 2), abbreviate it with '...', e.g.
#
# $HOME/dotfiles/polyglot/img
#
# will be displayed as
#
# ~/.../polyglot/img
#
# If $1 is 0, no abbreviation will occur other than that
# $HOME will be displayed as ~.
#
# Arguments:
# $1 Number of directory elements to display
############################################################
_polyglot_prompt_dirtrim() {
# Necessary for set -- $1 to undergo field separation in zsh
[ -n "$ZSH_VERSION" ] && setopt LOCAL_OPTIONS SH_WORD_SPLIT \
NO_WARN_CREATE_GLOBAL NO_WARN_NESTED_VAR 2> /dev/null
POLYGLOT_DIRTRIM_ELEMENTS="${1:-2}"
# If root has / as $HOME, print /, not ~
[ "$PWD" = '/' ] && printf '%s' '/' && return
[ "$PWD" = "$HOME" ] && printf '%s' '~' && return
case $HOME in
/) POLYGLOT_PWD_MINUS_HOME="$PWD" ;; # In case root's $HOME is /
*) POLYGLOT_PWD_MINUS_HOME="${PWD#"$HOME"}" ;;
esac
if [ "$POLYGLOT_DIRTRIM_ELEMENTS" -eq 0 ]; then
[ "$HOME" = '/' ] && printf '%s' "$PWD" && return
case $PWD in
${HOME}*) printf '~%s' "$POLYGLOT_PWD_MINUS_HOME" ;;
*) printf '%s' "$PWD" ;;
esac
else
# Calculate the part of $PWD that will be displayed in the prompt
POLYGLOT_OLD_IFS="$IFS"
IFS='/'
# shellcheck disable=SC2086
set -- $POLYGLOT_PWD_MINUS_HOME
shift # Discard empty first field preceding /
# Discard path elements > $POLYGLOT_PROMPT_DIRTRIM
while [ $# -gt "$POLYGLOT_DIRTRIM_ELEMENTS" ]; do
shift
done
# Reassemble the remaining path elements with slashes
while [ $# -ne 0 ]; do
POLYGLOT_ABBREVIATED_PATH="${POLYGLOT_ABBREVIATED_PATH}/$1"
shift
done
IFS="$POLYGLOT_OLD_IFS"
# If the working directory has not been abbreviated, display it thus
if [ "$POLYGLOT_ABBREVIATED_PATH" = "${POLYGLOT_PWD_MINUS_HOME}" ]; then
if [ "$HOME" = '/' ]; then
printf '%s' "$PWD"
else
case $PWD in
${HOME}*) printf '~%s' "${POLYGLOT_PWD_MINUS_HOME}" ;;
*) printf '%s' "$PWD" ;;
esac
fi
# Otherwise include an ellipsis to show that abbreviation has taken place
else
if [ "$HOME" = '/' ]; then
printf '...%s' "$POLYGLOT_ABBREVIATED_PATH"
else
case $PWD in
${HOME}*) printf '~/...%s' "$POLYGLOT_ABBREVIATED_PATH" ;;
*) printf '...%s' "$POLYGLOT_ABBREVIATED_PATH" ;;
esac
fi
fi
fi
unset POLYGLOT_DIRTRIM_ELEMENTS POLYGLOT_PWD_MINUS_HOME POLYGLOT_OLD_IFS \
POLYGLOT_ABBREVIATED_PATH
}
###########################################################
# Display current branch name, followed by symbols
# representing changes to the working copy
#
# Arguments:
# $1 If ksh, escape ! as !!
#
# shellcheck disable=SC2120
###########################################################
_polyglot_branch_status() {
[ -n "$ZSH_VERSION" ] && setopt LOCAL_OPTIONS NO_WARN_CREATE_GLOBAL \
NO_WARN_NESTED_VAR > /dev/null 2>&1
POLYGLOT_REF="$(env git symbolic-ref --quiet HEAD 2> /dev/null)"
case $? in # See what the exit code is.
0) ;; # $POLYGLOT_REF contains the name of a checked-out branch.
128) return ;; # No Git repository here.
# Otherwise, see if HEAD is in a detached state.
*) POLYGLOT_REF="$(env git rev-parse --short HEAD 2> /dev/null)" || return ;;
esac
if [ -n "$POLYGLOT_REF" ]; then
if [ "${POLYGLOT_SHOW_UNTRACKED:-1}" -eq 0 ]; then
POLYGLOT_GIT_STATUS=$(LC_ALL=C GIT_OPTIONAL_LOCKS=0 env git status -uno 2>&1)
else
POLYGLOT_GIT_STATUS=$(LC_ALL=C GIT_OPTIONAL_LOCKS=0 env git status 2>&1)
fi
POLYGLOT_SYMBOLS=''
case $POLYGLOT_GIT_STATUS in
*' have diverged,'*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}&*" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'Your branch is behind '*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}&" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'Your branch is ahead of '*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}*" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'new file: '*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}+" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'deleted: '*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}x" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'modified: '*)
if [ "$1" = 'ksh' ]; then
POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}!!"
else
POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}!"
fi
;;
esac
case $POLYGLOT_GIT_STATUS in
*'renamed: '*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}>" ;;
esac
case $POLYGLOT_GIT_STATUS in
*'Untracked files:'*) POLYGLOT_SYMBOLS="${POLYGLOT_SYMBOLS}?" ;;
esac
[ -n "$POLYGLOT_SYMBOLS" ] && POLYGLOT_SYMBOLS=" $POLYGLOT_SYMBOLS"
printf ' (%s%s)' "${POLYGLOT_REF#refs/heads/}" "$POLYGLOT_SYMBOLS"
fi
unset POLYGLOT_REF POLYGLOT_GIT_STATUS POLYGLOT_SYMBOLS
}
###########################################################
# Native sh alternative to basename. See
# https://github.com/dylanaraps/pure-sh-bible
#
# Arguments:
# $1 Filename
# $2 Suffix
###########################################################
_polyglot_basename() {
POLYGLOT_BASENAME_DIR=${1%"${1##*[!/]}"}
POLYGLOT_BASENAME_DIR=${POLYGLOT_BASENAME_DIR##*/}
POLYGLOT_BASENAME_DIR=${POLYGLOT_BASENAME_DIR%"$2"}
printf '%s\n' "${POLYGLOT_BASENAME_DIR:-/}"
unset POLYGLOT_BASENAME_DIR
}
###########################################################
# Tests to see if the current shell is busybox ash
###########################################################
_polyglot_is_busybox() {
case $(help 2> /dev/null) in
'Built-in commands:'*) return 0 ;;
*) return 1 ;;
esac
}
###########################################################
# Test to see if the current shell is pdksh or oksh
###########################################################
_polyglot_is_pdksh() {
case $KSH_VERSION in
*'PD KSH'*)
if [ "${POLYGLOT_UNAME:=$(uname -s)}" = 'OpenBSD' ] ||
[ "${0#-}" = 'oksh' ]; then
POLYGLOT_KSH_BANG='ksh'
fi
return 0
;;
*) return 1 ;;
esac
}
###########################################################
# Test to see if the current shell is dtksh (Desktop Korn
# Shell).
###########################################################
_polyglot_is_dtksh() {
case ${0#-} in
*dtksh) return 0 ;;
*) return 1 ;;
esac
}
###########################################################
# Test to see if sh is really dash
###########################################################
_polyglot_sh_is_dash() {
case $(ls -l "$(command -v "${0#-}")") in
*dash*) return 0 ;;
*) return 1 ;;
esac
}
_polyglot_is_yash()
{
case "${0#-}" in
*yash) return 0 ;;
*) return 1 ;;
esac
}
###########################################################
# Output virtual environment name
###########################################################
_polyglot_venv() {
# pipenv/poetry: when the virtualenv is in the project directory
if [ "${VIRTUAL_ENV##*/}" = '.venv' ]; then
POLYGLOT_VENV=${VIRTUAL_ENV%/.venv}
POLYGLOT_VENV=${POLYGLOT_VENV##*/}
# pipenv
elif [ -n "$PIPENV_ACTIVE" ]; then
POLYGLOT_VENV=${VIRTUAL_ENV%-*}
POLYGLOT_VENV=${POLYGLOT_VENV##*/}
# virtualenv/venv
elif [ -n "$VIRTUAL_ENV" ]; then
POLYGLOT_VENV=${VIRTUAL_ENV##*/}
# conda
elif [ -n "$CONDA_DEFAULT_ENV" ]; then
POLYGLOT_VENV=$CONDA_DEFAULT_ENV
fi
[ -n "$POLYGLOT_VENV" ] && printf '(%s) ' "$POLYGLOT_VENV"
unset POLYGLOT_VENV
}
#####################################################################
# zsh
#####################################################################
# Make sure that ZSH is not emulating ksh or bash
if [ -n "$ZSH_VERSION" ] && [ "${0#-}" != 'ksh' ] &&
[ "${0#-}" != 'bash' ] && [ "${0#-}" != 'sh' ]; then
setopt PROMPT_SUBST
###########################################################
# Runs right before the prompt is displayed
# Imitates bash's PROMPT_DIRTRIM behavior and calculates
# working branch and working copy status
###########################################################
_polyglot_precmd() {
psvar[2]=$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")
psvar[3]=$(_polyglot_branch_status)
psvar[5]=$(_polyglot_venv)
PS1=''
# The ZSH vi mode indicator won't work in Emacs shell (but it does in term
# and ansi-term)
if [ "$TERM" != 'dumb' ]; then
PS1+='%(4V.:.+)'
fi
if _polyglot_has_colors; then
PS1+='%(?..%B%F{red}(%?%)%b%f )'
PS1+='%5v'
PS1+='%(!.%S.%B%F{green})%n%1v%(!.%s.%f%b) '
PS1+='%B%F{blue}%2v%f%b'
PS1+='%F{yellow}%3v%f %# '
else
PS1+='%(?..(%?%) )'
PS1+='%5v'
PS1+='%(!.%S.)%n%1v%(!.%s.) '
PS1+='%2v'
PS1+='%3v %# '
fi
}
###########################################################
# Redraw the prompt when the vi mode changes
#
# Whn in vi mode, the prompt will use a bash 4.3-style
# mode indicator at the beginniing of the line: '+' for
# insert mode; ':' for command mode
#
# Underscores are used in this function's name to keep
# dash from choking on hyphens
###########################################################
_polyglot_zle_keymap_select() {
[ "$KEYMAP" = 'vicmd' ] && psvar[4]='vicmd' || psvar[4]=''
zle reset-prompt
zle -R
}
zle -N _polyglot_zle_keymap_select
zle -A _polyglot_zle_keymap_select zle-keymap-select
zle -A _polyglot_zle_keymap_select zle-line-init
###########################################################
# Redraw prompt when terminal size changes
###########################################################
TRAPWINCH() {
zle && zle -R
}
# TODO: add-zsh-hook was added in ZSH v4.3.4. It would be nice to be
# compatible with even earlier versions of ZSH, but that seems to require
# use of array syntax that is incompatible with ash.
autoload add-zsh-hook
add-zsh-hook precmd _polyglot_precmd
# Only display the $HOSTNAME for an ssh connection, except for a superuser
if _polyglot_is_ssh || _polyglot_is_superuser; then
psvar[1]="@${HOST%%\.*}"
else
psvar[1]=''
fi
unset RPROMPT # Clean up detritus from previously loaded prompts
#####################################################################
# bash
#####################################################################
elif [ -n "$BASH_VERSION" ]; then
###########################################################
# Create the bash $PROMPT_COMMAND
#
# If $1 is 0, bash's PROMPT_DIRTRIM abbreviations will be
# disabled; the only abbreviation that will occur is that
# $HOME will be displayed as ~.
#
# Arguments:
# $1 Number of directory elements to display
###########################################################
_polyglot_prompt_command() {
# $POLYGLOT_PROMPT_DIRTRIM must be greater than 0 and defaults to 2
[ "$1" ] && PROMPT_DIRTRIM=$1 || PROMPT_DIRTRIM=2
if ! _polyglot_is_superuser; then
if _polyglot_has_colors; then
PS1="\[\e[01;31m\]\$(_polyglot_exit_status \$?)\[\e[0m\]"
PS1+="\$(_polyglot_venv)"
PS1+="\[\e[01;32m\]\u$(printf '%s' "$POLYGLOT_HOSTNAME_STRING")\[\e[0m\] "
case $BASH_VERSION in
# bash, before v4.0, did not have $PROMPT_DIRTRIM
1.*|2.*|3.*)
PS1+="\[\e[01;34m\]\$(_polyglot_prompt_dirtrim \$POLYGLOT_PROMPT_DIRTRIM)\[\e[0m\]"
;;
*) PS1+="\[\e[01;34m\]\w\[\e[0m\]" ;;
esac
PS1+="\[\e[33m\]\$(_polyglot_branch_status)\[\e[0m\] \$ "
else
PS1="\$(_polyglot_exit_status \$?)"
PS1+="\$(_polyglot_venv)"
PS1+="\u$(printf '%s' "$POLYGLOT_HOSTNAME_STRING") "
case $BASH_VERSION in
1.*|2.*|3.*)
PS1="\$(_polyglot_prompt_dirtrim \$POLYGLOT_PROMPT_DIRTRIM)"
;;
*) PS1+="\w" ;;
esac
PS1+="\$(_polyglot_branch_status) \$ "
fi
else # Superuser
if _polyglot_has_colors; then
PS1="\[\e[01;31m\]\$(_polyglot_exit_status \$?)\[\e[0m\]"
PS1+="\$(_polyglot_venv)"
PS1+="\[\e[7m\]\u@\h\[\e[0m\] "
case $BASH_VERSION in
1.*|2.*|3.*)
PS1+="\[\e[01;34m\]\$(_polyglot_prompt_dirtrim \$POLYGLOT_PROMPT_DIRTRIM)\[\e[0m\]"
;;
*) PS1+="\[\e[01;34m\]\w\[\e[0m\]" ;;
esac
PS1+="\[\e[33m\]\$(_polyglot_branch_status)\[\e[0m\] # "
else
PS1="\$(_polyglot_exit_status \$?)"
PS1+="\$(_polyglot_venv)"
PS1+="\[\e[7m\]\u@\h\[\e[0m\] "
case $BASH_VERSION in
1.*|2.*|3.*)
PS1+="\$(_polyglot_prompt_dirtrim \$POLYGLOT_PROMPT_DIRTRIM)"
;;
*) PS1+="\w" ;;
esac
PS1+="\$(_polyglot_branch_status) # "
fi
fi
}
# Only display the $HOSTNAME for an ssh connection
if _polyglot_is_ssh; then
POLYGLOT_HOSTNAME_STRING='@\h'
else
POLYGLOT_HOSTNAME_STRING=''
fi
PROMPT_COMMAND='_polyglot_prompt_command $POLYGLOT_PROMPT_DIRTRIM'
# vi command mode
if [ "$TERM" != 'dumb' ]; then # Line editing not enabled in Emacs shell
bind 'set show-mode-in-prompt' # Since bash 4.3
bind 'set vi-ins-mode-string "+"'
bind 'set vi-cmd-mode-string ":"'
fi
#####################################################################
# ksh93, mksh, and zsh in bash, ksh, and sh emulation mode
#####################################################################
elif [ -n "$KSH_VERSION" ] || _polyglot_is_dtksh || [ -n "$ZSH_VERSION" ] &&
! _polyglot_is_pdksh ; then
# Only display the $HOSTNAME for an ssh connection
if _polyglot_is_ssh || _polyglot_is_superuser; then
POLYGLOT_HOSTNAME_STRING=$(hostname)
POLYGLOT_HOSTNAME_STRING="@${POLYGLOT_HOSTNAME_STRING%%\.*}"
else
POLYGLOT_HOSTNAME_STRING=''
fi
if [ "${0#-}" = 'bash' ] || [ "${0#-}" = 'sh' ]; then
POLYGLOT_KSH_BANG=''
else
case $KSH_VERSION in
*MIRBSD*) POLYGLOT_KSH_BANG='' ;;
*) POLYGLOT_KSH_BANG='ksh' ;;
esac
fi
case $KSH_VERSION in
*MIRBSD*)
# To know how long the prompt is, and thus to know how far it is to the
# edge of the screen, mksh requires an otherwise unused character (in this
# case \001) followed by a carriage return at the beginning of the
# prompt, which is then used to mark off escape sequences as zero-length.
# See https://www.mirbsd.org/htman/i386/man1/mksh.htm
if ! _polyglot_is_superuser; then
if _polyglot_has_colors; then
PS1=$(print "\001\r\001\E[31;1m\001")
PS1+='$(_polyglot_exit_status $?)'
PS1+=$(print "\001\E[0m")
PS1+='$(_polyglot_venv)'
PS1+=$(print "\E[32;1m\001")
PS1+='${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING'
PS1+=$(print "\001\E[0m\001")
PS1+=' '
PS1+=$(print "\001\E[34;1m\001")
PS1+='$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")'
PS1+=$(print "\001\E[0m\E[33m\001")
PS1+='$(_polyglot_branch_status $POLYGLOT_KSH_BANG)'
PS1+=$(print "\001\E[0m\001")
PS1+=' \$ '
else
PS1='$(_polyglot_exit_status $?)'
PS1+='$(_polyglot_venv)'
PS1+='${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING '
PS1+='$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")'
PS1+='$(_polyglot_branch_status $POLYGLOT_KSH_BANG)'
PS1+=' \$ '
fi
else # Superuser
if _polyglot_has_colors; then
PS1=$(print "\001\r\001\E[31;1m\001")
PS1+='$(_polyglot_exit_status $?)'
PS1+=$(print "\001\E[0m")
PS1+='$(_polyglot_venv)'
PS1+=$(print "\E[7m\001")
PS1+='${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING'
PS1+=$(print "\001\E[0m\001")
PS1+=' '
PS1+=$(print "\001\E[34;1m\001")
PS1+='$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")'
PS1+=$(print "\001\E[0m\E[33m\001")
PS1+='$(_polyglot_branch_status $POLYGLOT_KSH_BANG)'
PS1+=$(print "\001\E[0m\001")
PS1+=' # '
else
PS1=$(print "\001\r")
PS1+='$(_polyglot_exit_status $?)'
PS1+='$(_polyglot_venv)'
PS1+=$(print "\001\E[7m\001")
PS1+='${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING'
PS1+=$(print "\001\E[0m\001")
PS1+=' '
PS1+='$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")'
PS1+='$(_polyglot_branch_status $POLYGLOT_KSH_BANG)'
PS1+=' # '
fi
fi
;;
*)
if ! _polyglot_is_superuser; then
# zsh emulating other shells doesn't handle colors well
if _polyglot_has_colors && [ -z "$ZSH_VERSION" ]; then
# FreeBSD sh chokes on ANSI C quoting, so I'll avoid it
PS1="$(print '\E[31;1m$(_polyglot_exit_status $?)\E[0m$(_polyglot_venv)\E[32;1m${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING\E[0m \E[34;1m$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")\E[0m\E[33m$(_polyglot_branch_status $POLYGLOT_KSH_BANG)\E[0m \$ ')"
else
PS1='$(_polyglot_exit_status $?)$(_polyglot_venv)${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING $(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")$(_polyglot_branch_status $POLYGLOT_KSH_BANG) \$ '
fi
else # Superuser
if _polyglot_has_colors && [ -z "$ZSH_VERSION" ]; then
PS1="$(print '\E[31;1m$(_polyglot_exit_status $?)\E[0m$(_polyglot_venv)\E[7m${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING\E[0m \E[34;1m$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")\E[0m\E[33m$(_polyglot_branch_status $POLYGLOT_KSH_BANG)\E[0m\E[0m # ')"
else
PS1="$(print '$(_polyglot_exit_status $?)$(_polyglot_venv)\E[7m${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING\E[0m $(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")$(_polyglot_branch_status $POLYGLOT_KSH_BANG) # ')"
fi
fi
;;
esac
####################################################################
# pdksh, oksh, dash, busybox ash, yash, osh,
# and zsh in sh emulation mode
####################################################################
elif _polyglot_is_pdksh || [ "${0#-}" = 'dash' ] || _polyglot_is_busybox ||
_polyglot_is_yash || _polyglot_sh_is_dash || [ "${0#-}" = 'osh' ]; then
# Only display the $HOSTNAME for an ssh connection
if _polyglot_is_ssh || _polyglot_is_superuser; then
POLYGLOT_HOSTNAME_STRING=$(hostname)
POLYGLOT_HOSTNAME_STRING="@${POLYGLOT_HOSTNAME_STRING%%\.*}"
else
POLYGLOT_HOSTNAME_STRING=''
fi
# pdksh uses an arbitrary non-printing character to delimit color escape
# sequences in the prompt. In practice, however, it is impossible to find
# one single non-printing character that will work with all operating systems
# and terminals. The Polyglot Prompt defaults to \021 for OpenBSD/NetBSD
# and \016 for everything else. If you want to specify your own non-printing
# character, do so thus:
#
# POLYGLOT_NP="\016" # Set this variable to whatever value you like
#
# Or set POLYGLOT_PDKSH_COLORS=0 to disable color entirely in pdksh.
case ${POLYGLOT_UNAME} in
NetBSD*|OpenBSD*) POLYGLOT_NP=${POLYGLOT_NP:-"\021"} ;;
*) POLYGLOT_NP=${POLYGLOT_NP:-"\016"} ;;
esac
if _polyglot_is_pdksh &&
_polyglot_has_colors &&
[ ${POLYGLOT_PDKSH_COLORS:-1} -ne 0 ]; then
PS1=$(print "$POLYGLOT_NP\r")
case $POLYGLOT_UNAME in
NetBSD*|OpenBSD*) PS1=$PS1$(print "$POLYGLOT_NP") ;;
esac
PS1=$PS1$(print "\033[31;1m$POLYGLOT_NP")
PS1=$PS1'$(_polyglot_exit_status $?)'
PS1=$PS1$(print "$POLYGLOT_NP\033[0m$POLYGLOT_NP")
PS1=$PS1'$(_polyglot_venv)'
if ! _polyglot_is_superuser; then
PS1=$PS1$(print "$POLYGLOT_NP\033[32;1m$POLYGLOT_NP")
else
PS1=$PS1$(print "$POLYGLOT_NP\033[7m$POLYGLOT_NP")
fi
PS1=$PS1'${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING'
PS1=$PS1$(print "$POLYGLOT_NP\033[0m$POLYGLOT_NP")
PS1=$PS1' '
PS1=$PS1$(print "$POLYGLOT_NP\033[34;1m$POLYGLOT_NP")
PS1=$PS1'$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")'
PS1=$PS1$(print "$POLYGLOT_NP\033[0m\033[33m$POLYGLOT_NP")
PS1=$PS1'$(_polyglot_branch_status $POLYGLOT_KSH_BANG)'
PS1=$PS1$(print "$POLYGLOT_NP\033[0m$POLYGLOT_NP")
PS1=$PS1' \$ '
elif _polyglot_is_yash || [ "${0#-}" = 'osh' ] && _polyglot_has_colors; then
PS1='\[\e[01;31m\]$(_polyglot_exit_status $?)\[\e[0m\]'
PS1=$PS1'$(_polyglot_venv)'
if ! _polyglot_is_superuser; then
PS1=$PS1'\[\e[01;32m\]${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING\[\e[0m\] '
else
PS1=$PS1'\[\e[7m\]${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING\[\e[0m\] '
fi
PS1=$PS1'\[\e[01;34m\]$(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")\[\e[0m\]'
PS1=$PS1'\[\e[33m\]$(_polyglot_branch_status $POLYGLOT_KSH_BANG)\[\e[0m\] \$ '
else
PS1='$(_polyglot_exit_status $?)$(_polyglot_venv)${LOGNAME:-$(logname)}$POLYGLOT_HOSTNAME_STRING $(_polyglot_prompt_dirtrim "$POLYGLOT_PROMPT_DIRTRIM")$(_polyglot_branch_status $POLYGLOT_KSH_BANG) '
if ! _polyglot_is_superuser; then
PS1=$PS1'$ '
else
PS1=$PS1'# '
fi
fi
else
printf '%s\n' 'Polyglot Prompt does not support your shell.' >&2
fi
# Clean up environment
unset -f _polyglot_is_ssh _polyglot_basename _polyglot_is_busybox \
_polyglot_is_dtksh _polyglot_is_pdksh _polyglot_sh_is_dash
# vim: ts=2:et:sts=2:sw=2

View file

@ -1,74 +0,0 @@
# Catppuccin Mocha Theme (for zsh-syntax-highlighting)
#
# Paste this files contents inside your ~/.zshrc before you activate zsh-syntax-highlighting
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main cursor)
typeset -gA ZSH_HIGHLIGHT_STYLES
# Main highlighter styling: https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md
#
## General
### Diffs
### Markup
## Classes
## Comments
ZSH_HIGHLIGHT_STYLES[comment]='fg=#585b70'
## Constants
## Entitites
## Functions/methods
ZSH_HIGHLIGHT_STYLES[alias]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[global-alias]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[function]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[command]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[precommand]='fg=#a6e3a1,italic'
ZSH_HIGHLIGHT_STYLES[autodirectory]='fg=#fab387,italic'
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#fab387'
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#fab387'
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=#cba6f7'
## Keywords
## Built ins
ZSH_HIGHLIGHT_STYLES[builtin]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#a6e3a1'
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=#a6e3a1'
## Punctuation
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#f38ba8'
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-unquoted]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]='fg=#f38ba8'
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=#f38ba8'
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=#f38ba8'
## Serializable / Configuration Languages
## Storage
## Strings
ZSH_HIGHLIGHT_STYLES[command-substitution-quoted]='fg=#f9e2af'
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-quoted]='fg=#f9e2af'
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#f9e2af'
ZSH_HIGHLIGHT_STYLES[single-quoted-argument-unclosed]='fg=#e64553'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#f9e2af'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument-unclosed]='fg=#e64553'
ZSH_HIGHLIGHT_STYLES[rc-quote]='fg=#f9e2af'
## Variables
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument-unclosed]='fg=#e64553'
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[assign]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[named-fd]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[numeric-fd]='fg=#cdd6f4'
## No category relevant in spec
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#e64553'
ZSH_HIGHLIGHT_STYLES[path]='fg=#cdd6f4,underline'
ZSH_HIGHLIGHT_STYLES[path_pathseparator]='fg=#f38ba8,underline'
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=#cdd6f4,underline'
ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]='fg=#f38ba8,underline'
ZSH_HIGHLIGHT_STYLES[globbing]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#cba6f7'
#ZSH_HIGHLIGHT_STYLES[command-substitution]='fg=?'
#ZSH_HIGHLIGHT_STYLES[command-substitution-unquoted]='fg=?'
#ZSH_HIGHLIGHT_STYLES[process-substitution]='fg=?'
#ZSH_HIGHLIGHT_STYLES[arithmetic-expansion]='fg=?'
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-unclosed]='fg=#e64553'
ZSH_HIGHLIGHT_STYLES[redirection]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[arg0]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[default]='fg=#cdd6f4'
ZSH_HIGHLIGHT_STYLES[cursor]='fg=#cdd6f4'

View file

@ -1,445 +0,0 @@
# ____ ____
# / __/___ / __/
# / /_/_ / / /_
# / __/ / /_/ __/
# /_/ /___/_/ completion.zsh
#
# - $FZF_TMUX (default: 0)
# - $FZF_TMUX_OPTS (default: '-d 40%')
# - $FZF_COMPLETION_TRIGGER (default: '**')
# - $FZF_COMPLETION_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.
'emulate' 'zsh' '-o' '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.
{
# Bail out if not interactive shell.
[[ -o interactive ]] || return 0
# To use custom commands instead of find, override _fzf_compgen_{path,dir}
if ! declare -f _fzf_compgen_path > /dev/null; then
_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@^\./@@'
}
fi
if ! declare -f _fzf_compgen_dir > /dev/null; then
_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@^\./@@'
}
fi
###########################################################
__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
eval "base=$base"
[[ $base = *"/"* ]] && dir="$base"
while [ 1 ]; do
if [[ -z "$dir" || -d ${dir} ]]; then
leftover=${base/#"$dir"}
leftover=${leftover/#\/}
[ -z "$dir" ] && dir='.'
[ "$dir" != "/" ] && dir="${dir/%\//}"
matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-}" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do
item="${item%$suffix}$suffix"
echo -n "${(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="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ')
if [ -n "$matches" ]; then
LBUFFER="$lbuf$matches"
fi
command rm -f "$fifo"
}
_fzf_complete_telnet() {
_fzf_complete +m -- "$@" < <(
command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0' |
awk '{if (length($2) > 0) {print $2}}' | sort -u
)
}
_fzf_complete_ssh() {
_fzf_complete +m -- "$@" < <(
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 | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \
<(command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0') |
awk '{if (length($2) > 0) {print $2}}' | sort -u
)
}
_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 --preview 'echo {}' --preview-window down:3:wrap --min-height 15 -- "$@" < <(
command ps -eo user,pid,ppid,start,time,command 2> /dev/null ||
command ps -eo user,pid,ppid,time,args # For BusyBox
)
}
_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}}
[ -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
} always {
# Restore the original options.
eval $__fzf_completion_options
'unset' '__fzf_completion_options'
}
# ____ ____
# / __/___ / __/
# / /_/_ / / /_
# / __/ / /_/ __/
# /_/ /___/_/ 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
'emulate' 'zsh' '-o' 'no_aliases'
{
[[ -o interactive ]] || return 0
# CTRL-T - Paste the selected file path(s) into the command line
__fsel() {
local cmd="${FZF_CTRL_T_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \
-o -type f -print \
-o -type d -print \
-o -type l -print 2> /dev/null | cut -b3-"}"
setopt localoptions pipefail no_aliases 2> /dev/null
local item
eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_CTRL_T_OPTS-}" $(__fzfcmd) -m "$@" | while read item; do
echo -n "${(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}$(__fsel)"
local ret=$?
zle reset-prompt
return $ret
}
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
# ALT-C - cd into the selected directory
fzf-cd-widget() {
local cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \
-o -type d -print 2> /dev/null | cut -b3-"}"
setopt localoptions pipefail no_aliases 2> /dev/null
local dir="$(eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_ALT_C_OPTS-}" $(__fzfcmd) +m)"
if [[ -z "$dir" ]]; then
zle redisplay
return 0
fi
zle push-line # Clear buffer. Auto-restored on next prompt.
BUFFER="builtin cd -- ${(q)dir}"
zle accept-line
local ret=$?
unset dir # ensure this doesn't end up appearing in prompt expansion
zle reset-prompt
return $ret
}
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
# CTRL-R - Paste the selected command from history into the command line
fzf-history-widget() {
local selected num
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null
selected=( $(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' |
FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
local ret=$?
if [ -n "$selected" ]; then
num=$selected[1]
if [ -n "$num" ]; then
zle vi-fetch-history -n $num
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
} always {
eval $__fzf_key_bindings_options
'unset' '__fzf_key_bindings_options'
}

View file

@ -1,3 +0,0 @@
#!/usr/bin/env zsh
zsh <(curl -s https://raw.githubusercontent.com/zap-zsh/zap/master/install.zsh)

View file

@ -1,39 +0,0 @@
#!/usr/bin/env zsh
# path aliases
hash -d r2=/mnt/external/rudism
hash -d api=/home/rudism/mri/cosmic/api
hash -d gql=/home/rudism/mri/cosmic/graphql-server
hash -d as2=/home/rudism/mri/appdat/as2
hash -d oot=/home/rudism/mri/cosmic/nasa/oot/api
hash -d risk=/home/rudism/mri/cosmic/nasa/risk/api
hash -d og=/home/rudism/mri/cosmic/nasa/og
hash -d schema=/home/rudism/mri/cosmic/api-schema
hash -d a=/mnt/agrajag
hash -d b=/mnt/beeblebrox
hash -d c=/mnt/constantmown
# command aliases
alias nasavpn='/home/rudism/src/nasavpn/nasavpn'
alias dockerrm='docker stop $(docker ps -aq); docker rm $(docker ps -aq); docker system prune -f'
alias webcamfix='sudo modprobe v4l2loopback devices=1 video_nr=9 card_label=VirtualCam exclusive_caps=1 && ffmpeg -f video4linux2 -framerate 25 -video_size 1280x720 -input_format mjpeg -i /dev/video0 -f v4l2 -pix_fmt yuv420p /dev/video9; sudo rmmod v4l2loopback'
alias syncmusic='rsync -av --size-only --times --no-perms --no-owner --no-group --delete /mnt/agrajag/music/ /mnt/usb/Music'
alias watchsync='watch -d grep -e Dirty: -e Writeback: /proc/meminfo'
alias localai='COMPOSE_FILE=~/.local/share/local-ai/docker-compose.yaml docker compose up -d --force-recreate'
alias win='dbus-run-session sway --unsupported-gpu'
alias transcrilium='/home/rudism/src/transcrilium/transcrilium /mnt/usb/PRIVATE/SONY/REC_FILE/Voice\ Notes01'
alias clearb="printf '\033[2J\033[3J\033[1;1H'"
alias airplay="pactl unload-module module-raop-discover; pactl load-module module-raop-discover"
# llm aliases that use aichat
if command -v aichat >/dev/null; then
alias ask='f() { echo "$@" | aichat };f'
alias define='f() { echo "briefly define $1" | aichat };f'
alias synonym='f() { echo "list some synonyms of $1" | aichat };f'
fi
# The next line updates PATH for the Google Cloud SDK.
if [ -f '/home/rudism/.local/share/google-cloud-sdk/path.zsh.inc' ]; then . '/home/rudism/.local/share/google-cloud-sdk/path.zsh.inc'; fi
# The next line enables shell command completion for gcloud.
if [ -f '/home/rudism/.local/share/google-cloud-sdk/completion.zsh.inc' ]; then . '/home/rudism/.local/share/google-cloud-sdk/completion.zsh.inc'; fi

View file

@ -1,4 +0,0 @@
#!/usr/bin/env zsh
alias vim='nvim'
export PATH=/home/rudism/.local/bin:$PATH

View file

@ -1,12 +0,0 @@
#!/usr/bin/env zsh
setopt re_match_pcre
# path aliases
hash -d dl=/data/data/com.termux/files/home/storage/downloads
# command aliases
alias hxx='hx -c ~/.config/helix/config-md.toml'
# path additions
export PATH=/data/data/com.termux/files/home/go/bin:/data/data/com.termux/files/home/.cargo/bin:$PATH

View file

@ -1,28 +0,0 @@
#!/usr/bin/env zsh
# GRC colorizes nifty unix tools all over the place
unalias grc 2> /dev/null
GRC=`command -v grc 2> /dev/null`
if [ "$TERM" != dumb ] && [ -n "$GRC" ]; then
alias as='colorify as'
alias colorify="$GRC -es --colour=auto"
alias configure='colorify ./configure'
alias df='colorify df -kh'
alias diff='colorify diff'
alias dig='colorify dig'
alias docker='colorify docker'
alias du='colorify du'
alias g++='colorify g++'
alias gas='colorify gas'
alias gcc='colorify gcc'
alias ld='colorify ld'
alias make='colorify make'
alias mount='colorify mount'
alias mtr='colorify mtr'
alias netstat='colorify netstat'
alias ping6='colorify ping6'
alias ping='colorify ping'
alias ps='colorify ps'
alias traceroute='colorify /usr/sbin/traceroute'
fi

View file

@ -1,73 +0,0 @@
# set up environment
export PURE_GIT_PULL=0
export GPG_TTY=$(tty)
export HISTSIZE=100000
export HISTFILE="$HOME/.zsh_history"
export SAVEHIST=$HISTSIZE
# wayland env
export XDG_CURRENT_DESKTOP=sway
export MOZ_ENABLE_WAYLAND=1
export ELECTRON_OZONE_PLATFORM_HINT=wayland
export QT_QPA_PLATFORMTHEME=qt6ct
# set zsh options and features
setopt autocd
autoload -Uz compinit && compinit
setopt extended_history
setopt inc_append_history
setopt share_history
setopt rmstarsilent
# load zsh plugins
[ -f "$HOME/.local/share/zap/zap.zsh" ] && source "$HOME/.local/share/zap/zap.zsh"
function zvm_after_init() {
plug "zap-zsh/fzf"
typeset -A key
key[Home]=${terminfo[khome]}
key[End]=${terminfo[kend]}
key[Delete]=${terminfo[kdch1]}
zvm_bindkey viins "${key[Home]}" beginning-of-line
zvm_bindkey vicmd "${key[Home]}" beginning-of-line
zvm_bindkey viins "${key[End]}" end-of-line
zvm_bindkey vicmd "${key[End]}" end-of-line
zvm_bindkey viins "${key[Delete]}" delete-char
zvm_bindkey vicmd "${key[Delete]}" delete-char
}
plug "mafredri/zsh-async"
plug "sindresorhus/pure"
plug "zsh-users/zsh-autosuggestions"
plug "zsh-users/zsh-syntax-highlighting"
plug "zpm-zsh/ls"
ZAP_GIT_PREFIX="https://code.sitosis.com/" plug "rudism/zsh-bat"
plug "lukechilds/zsh-nvm"
plug "jeffreytse/zsh-vi-mode"
# source external stuff
eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
source ~/skynet/zsh/catppuccin_mocha-zsh-syntax-highlighting.zsh
source ~/skynet/zsh/zsh-grc
# env and path
export DOTNET_ROOT=$HOME/dotnet
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
export PATH=$HOME/.local/bin:$HOME/dotnet:$HOME/.dotnet/tools:$HOME/go/bin:$HOME/.cargo/bin:$HOME/node/node_modules/.bin:$PATH
export MANPATH=$MANPATH:$HOME/.local/share/man
# keybindings
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
bindkey "^[[3~" delete-char
# set up directory hashes
if [ -f ~/.zalias ]; then
source ~/.zalias
fi
if [ -d "$HOME/.config/plasma-workspace/env" ]; then
for sh in $HOME/.config/plasma-workspace/env/*.sh; do
source "$sh"
done
fi