summaryrefslogtreecommitdiff
path: root/fedora/.config/bash
diff options
context:
space:
mode:
Diffstat (limited to 'fedora/.config/bash')
-rw-r--r--fedora/.config/bash/autocomplete.bash4
-rw-r--r--fedora/.config/bash/bash_profile112
-rw-r--r--fedora/.config/bash/bashrc13
-rw-r--r--fedora/.config/bash/completions/bat.bash249
-rw-r--r--fedora/.config/bash/completions/rg.bash783
-rw-r--r--fedora/.config/bash/completions/ya.bash647
-rw-r--r--fedora/.config/bash/completions/yazi.bash66
-rw-r--r--fedora/.config/bash/completions/zoxide.bash243
-rw-r--r--fedora/.config/bash/keymaps.bash238
-rw-r--r--fedora/.config/bash/packages.bash2
-rw-r--r--fedora/.config/bash/scripts.bash354
11 files changed, 2449 insertions, 262 deletions
diff --git a/fedora/.config/bash/autocomplete.bash b/fedora/.config/bash/autocomplete.bash
index 0aeeedd..3ee6183 100644
--- a/fedora/.config/bash/autocomplete.bash
+++ b/fedora/.config/bash/autocomplete.bash
@@ -147,7 +147,7 @@ expand_alias_and_accept_line() {
# Bind Space to our function so pressing space triggers alias-expansion behavior.
# Use bind -x to call expand_alias_space (it will both expand and insert space when appropriate).
# WARNING: this overrides normal space key behavior; our function handles insertion.
-bind -x '" "':expand_alias_space
+# bind -x '" "':expand_alias_space
# optional: bind Ctrl-Space to the same (a bypass key like zsh had)
# Many terminals send "\C-@" for ctrl-space; try both common sequences:
@@ -169,7 +169,7 @@ _bash_accept_line() {
# (This is a conservative behavior to avoid interfering unexpectedly.)
return 0
}
-bind -x '"\C-m":_bash_accept_line'
+#bind -x '"\C-m":_bash_accept_line'
# ---------- helper: background starter ----------
background() {
diff --git a/fedora/.config/bash/bash_profile b/fedora/.config/bash/bash_profile
index 068e3f5..d74e372 100644
--- a/fedora/.config/bash/bash_profile
+++ b/fedora/.config/bash/bash_profile
@@ -1,34 +1,106 @@
-#!/bin/sh
+#!/bin/bash
umask 022
-#######################################################
-# EXPORTS
-#######################################################
+###################################################
+### --- DEFAULT PROGRAMS --- ###
+###################################################
+if command -v nvim >/dev/null 2>&1; then
+ export EDITOR="nvim"
+elif command -v vim >/dev/null 2>&1; then
+ export EDITOR="vim"
+else
+ export EDITOR="vi"
+fi
+# export FILE_MANAGER="lf $(lf -version)"
+export KEYTIMEOUT=10
+export SUDO_EDITOR=$EDITOR
+export TERM="xterm-256color"
+export VISUAL=$EDITOR
+export TERM="xterm-256color"
+###################################################
+### --- XDG ENV PATHES --- ###
+###################################################
+### --- XDG DEFAULT --- ###
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
+
+### --- XDG CUSTOMS --- ###
+export XDG_DOTFILES_DIR="$HOME/.dotfiles"
+export XDG_SCRIPTS_HOME="$HOME/.local/bin"
+export XDG_SOURCES_HOME="$HOME/.local/src"
+export XDG_DESKTOP_DIR="$HOME/Desktop"
+export XDG_DOCUMENTS_DIR="$HOME/Documents"
+export XDG_DOWNLOAD_DIR="$HOME/Downloads"
+export XDG_MUSIC_DIR="$HOME/Music"
+export XDG_PICTURES_DIR="$HOME/Pictures"
+export XDG_PUBLICSHARE_DIR="$HOME/Public"
+export XDG_TEMPLATES_DIR="$HOME/Templates"
+export XDG_VIDEOS_DIR="$HOME/Videos"
+
+#######################################################
+# EXPORTS
+#######################################################
+
export CLICOLOR=1
-export EDITOR="vim"
export HISTFILE="${XDG_DATA_HOME:-${HOME}/.local/share}/history/sh_history"
export INPUTRC="${XDG_CONFIG_HOME:-${HOME}/.config}/shell/inputrc"
-export LESS="R"
-export LESS_TERMCAP_mb="$(printf '%b' '')"
-export LESS_TERMCAP_md="$(printf '%b' '')"
-export LESS_TERMCAP_me="$(printf '%b' '')"
-export LESS_TERMCAP_so="$(printf '%b' '')"
-export LESS_TERMCAP_se="$(printf '%b' '')"
-export LESS_TERMCAP_us="$(printf '%b' '')"
-export LESS_TERMCAP_ue="$(printf '%b' '')"
-export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
+
+### --- MANPAGER --- ###
+([ -x "$(command -v batcat)" ] || [ -x "$(command -v batman)" ]) && {
+ export MANPAGER="sh -c 'col -bx | bat -l man -p'"
+ export MANROFFOPT="-c"
+} || {
+ export MANPAGER='less -s'
+ export LESS="R"
+ export LESS_TERMCAP_mb="$(printf '%b' '')"
+ export LESS_TERMCAP_md="$(printf '%b' '')"
+ export LESS_TERMCAP_me="$(printf '%b' '')"
+ export LESS_TERMCAP_so="$(printf '%b' '')"
+ export LESS_TERMCAP_se="$(printf '%b' '')"
+ export LESS_TERMCAP_us="$(printf '%b' '')"
+ export LESS_TERMCAP_ue="$(printf '%b' '')"
+ export LESSOPEN="| lesspipe.sh %s"
+}
+
export LS_COLORS="no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:*.xml=00;31:"
export LS_OPTIONS="--color=auto"
-export TERM="xterm-256color"
-export GVIMINIT='let $MYGVIMRC="$XDG_CONFIG_HOME/vim/gvimrc" | source $MYGVIMRC'
-export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC'
-export VISUAL=$EDITOR
+
+### --- PASSWORD STORE --- ###
+export PASSWORD_STORE_DIR="$XDG_DATA_HOME/.password-store"
+export PASSWORD_STORE_CLIP_TIME=180 # Specifies the number of seconds to wait before restoring the clipboard, by default 45 seconds.
+# export PASSWORD_STORE_GENERATED_LENGTH=18 # by default 25.
+# export PASSWORD_STORE_CHARACTER_SET='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>?'
+# export PASSWORD_STORE_CHARACTER_SET_NO_SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>?'
+export PASSWORD_STORE_ENABLE_EXTENSIONS="true"
+# export PASSWORD_STORE_EXTENSIONS_DIR="$PASSWORD_STORE_DIR/.extensions"
+# export BASH_COMPLETION_USER_DIR=$XDG_DATA_HOME/bash-completion/completions
+
+### --- TMUX --- ###
+export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
+
+### --- VIM --- ###
+# export GVIMINIT='let $MYGVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/gvimrc" : "$XDG_CONFIG_HOME/nvim/init.lua" | so $MYGVIMRC'
+# export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.lua" | so $MYVIMRC'
+
+### --- ZSH --- ###
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+export ZPLUGINDIR="$XDG_SCRIPTS_HOME/zsh"
+
+###################################################
+### --- ENV PATH --- ###
+###################################################
+# Add all directories in each subdirectory to $PATH
+[ -d ~/.local/bin ] && export PATH="$(find ~/.local/bin -path '*/.git*' -prune -o \( -type f -o -type l \) -perm -u=x -exec dirname {} \; | sort -u | paste -sd ':' -):$PATH"
+[ -d ~/.local/share/.password-store ] && export PATH="$(find ~/.local/share/.password-store -type d -name '.extensions' | paste -sd ':' -):$PATH"
+export PATH="$ASDF_DATA_DIR/shims:$PATH"
+command -v asdf >/dev/null 2>&1 && export PATH="$(find -L ~/.local/share/asdf/installs -name bin -type d -print 2>/dev/null | sort -u | paste -s -d ':' -):$PATH"
+command -v npm >/dev/null 2>&1 && export PATH="$(find -L ~/.local/share/npm -name bin -type d -print 2>/dev/null | sort -u | paste -s -d ':' -):$PATH"
+
+unsetopt PROMPT_SP 2>/dev/null
#######################################################
# Source global/local definitions
@@ -38,3 +110,7 @@ export VISUAL=$EDITOR
[ -f /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
[ -f /etc/bash/bashrc ] && . /etc/bash/bashrc
[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/bash/bashrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/bash/bashrc"
+for file in "${XDG_CONFIG_HOME:-${HOME}/.config}/bash/completions"/*.bash; do
+ [ -f "$file" ] && . "$file"
+done
+[ ! -f "$XDG_CONFIG_HOME/shell/shortcutrc" ] && setsid -f bmshortcuts >/dev/null 2>&1
diff --git a/fedora/.config/bash/bashrc b/fedora/.config/bash/bashrc
index 2c60286..ec1cc46 100644
--- a/fedora/.config/bash/bashrc
+++ b/fedora/.config/bash/bashrc
@@ -32,7 +32,6 @@ bind "set show-all-if-ambiguous on"
#######################################################
# Set command prompt
#######################################################
-alias cpu="grep 'cpu ' /proc/stat | awk '{usage=(\$2+\$4)*100/(\$2+\$4+\$5)} END {print usage}' | awk '{printf(\"%.1f\n\", \$1)}'"
function __setprompt {
local LAST_COMMAND=$? # Must come first!
@@ -164,6 +163,18 @@ bind '"\C-g":"lfcd\n"'
eval "$(dircolors)"
+[ -f "$HOME/.config/bash/git.bash" ] && . "$HOME/.config/bash/git.bash"
+[ -f "$HOME/.config/bash/p10k.bash" ] && . "$HOME/.config/bash/p10k.bash"
+[ -f "$HOME/.config/bash/autocomplete.bash" ] && . "$HOME/.config/bash/autocomplete.bash"
+[ -f "$HOME/.config/bash/scripts.bash" ] && . "$HOME/.config/bash/scripts.bash"
+[ -f "$HOME/.config/bash/keymaps.bash" ] && . "$HOME/.config/bash/keymaps.bash"
+[ -f "$HOME/.config/bash/plugins.bash" ] && . "$HOME/.config/bash/plugins.bash"
+[ -f "$HOME/.config/bash/packages.bash" ] && . "$HOME/.config/bash/packages.bash"
+[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/aliasrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/aliasrc"
+[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/git-aliasrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/git-aliasrc"
+[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/shortcutrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/shortcutrc"
+[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/shortcutenvrc" ] && . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc"
+[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/zshnameddirrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/zshnameddirrc"
[ -f "${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/bash-preexec" ] && . "${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/bash-preexec"
[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/rootshortcutrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/rootshortcutrc"
[ -f "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/rootzshnameddirrc" ] && . "${XDG_CONFIG_HOME:-${HOME}/.config}/shell/rootzshnameddirrc"
diff --git a/fedora/.config/bash/completions/bat.bash b/fedora/.config/bash/completions/bat.bash
new file mode 100644
index 0000000..fa0f712
--- /dev/null
+++ b/fedora/.config/bash/completions/bat.bash
@@ -0,0 +1,249 @@
+# shellcheck disable=SC2207
+
+# Requires https://github.com/scop/bash-completion
+
+# Macs have bash3 for which the bash-completion package doesn't include
+# _init_completion. This is a minimal version of that function.
+__bat_init_completion()
+{
+ COMPREPLY=()
+ _get_comp_words_by_ref "$@" cur prev words cword
+}
+
+__bat_escape_completions()
+{
+ # Do not escape if completing a quoted value.
+ [[ $cur == [\"\']* ]] && return 0
+ if ((
+ BASH_VERSINFO[0] > 5 || \
+ BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 3
+ )); then
+ # bash >= 5.3 has "compopt -o fullquote", which exactly does
+ # what this function tries to do.
+ compopt -o fullquote
+ elif ((
+ BASH_VERSINFO[0] > 4 || \
+ BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] > 0
+ )); then
+ # printf -v to an array index is available in bash >= 4.1.
+ # Use it if available, as -o filenames is semantically
+ # incorrect if we are not actually completing filenames, and it
+ # has side effects (e.g. adds trailing slash to candidates
+ # matching present dirs).
+ local i
+ for i in ${!COMPREPLY[*]}; do
+ printf -v "COMPREPLY[i]" %q "${COMPREPLY[i]}"
+ done
+
+ # We can use "compopt -o noquote" available in bash >= 4.3 to
+ # prevent further quoting by the shell, which would be
+ # unexpectedly applied when a quoted result matches a filename.
+ if ((
+ BASH_VERSINFO[0] > 4 || \
+ BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 3
+ )); then
+ compopt -o noquote
+ fi
+ else
+ compopt -o filenames
+ fi
+}
+
+_bat() {
+ local cur prev words split=false
+ if declare -F _init_completion >/dev/null 2>&1; then
+ _init_completion -s || return 0
+ else
+ __bat_init_completion -n "=" || return 0
+ _split_longopt && split=true
+ fi
+
+ if [[ ${words[1]-} == cache ]]; then
+ case $prev in
+ --source | --target)
+ _filedir -d
+ return 0
+ ;;
+ esac
+ COMPREPLY=($(compgen -W "
+ --build
+ --clear
+ --source
+ --target
+ --blank
+ --help
+ " -- "$cur"))
+ return 0
+ fi
+
+ case $prev in
+ -l | --language)
+ local IFS=$'\n'
+ COMPREPLY=($(compgen -W "$(
+ "$1" --list-languages | while IFS=: read -r lang _; do
+ printf "%s\n" "$lang"
+ done
+ )" -- "$cur"))
+ __bat_escape_completions
+ return 0
+ ;;
+ -H | --highlight-line | \
+ --diff-context | \
+ --tabs | \
+ --terminal-width | \
+ -m | --map-syntax | \
+ --ignored-suffix | \
+ --list-themes | \
+ --squeeze-limit | \
+ --line-range | \
+ -L | --list-languages | \
+ --lessopen | \
+ --no-paging | \
+ --diagnostic | \
+ --acknowledgements | \
+ -h | --help | \
+ -V | --version | \
+ --cache-dir | \
+ --config-dir | \
+ --config-file | \
+ --generate-config-file)
+ # argument required but no completion available, or option
+ # causes an exit
+ return 0
+ ;;
+ --file-name)
+ _filedir
+ return 0
+ ;;
+ --wrap)
+ COMPREPLY=($(compgen -W "auto never character" -- "$cur"))
+ return 0
+ ;;
+ --binary)
+ COMPREPLY=($(compgen -W "no-printing as-text" -- "$cur"))
+ return 0
+ ;;
+ --nonprintable-notation)
+ COMPREPLY=($(compgen -W "unicode caret" -- "$cur"))
+ return 0
+ ;;
+ --strip-ansi)
+ COMPREPLY=($(compgen -W "auto never always" -- "$cur"))
+ return 0
+ ;;
+ --completion)
+ COMPREPLY=($(compgen -W "bash fish zsh ps1" -- "$cur"))
+ return 0
+ ;;
+ --color | --decorations | --paging)
+ COMPREPLY=($(compgen -W "auto never always" -- "$cur"))
+ return 0
+ ;;
+ --italic-text)
+ COMPREPLY=($(compgen -W "always never" -- "$cur"))
+ return 0
+ ;;
+ --pager)
+ COMPREPLY=($(compgen -c -- "$cur"))
+ return 0
+ ;;
+ --theme)
+ local IFS=$'\n'
+ COMPREPLY=($(compgen -W "auto${IFS}auto:always${IFS}auto:system${IFS}dark${IFS}light${IFS}$("$1" --list-themes)" -- "$cur"))
+ __bat_escape_completions
+ return 0
+ ;;
+ --theme-dark | \
+ --theme-light)
+ local IFS=$'\n'
+ COMPREPLY=($(compgen -W "$("$1" --list-themes)" -- "$cur"))
+ __bat_escape_completions
+ return 0
+ ;;
+ --style)
+ # shellcheck disable=SC2034
+ local -a styles=(
+ default
+ full
+ auto
+ plain
+ changes
+ header
+ header-filename
+ header-filesize
+ grid
+ rule
+ numbers
+ snip
+ )
+ # shellcheck disable=SC2016
+ if declare -F _comp_delimited >/dev/null 2>&1; then
+ # bash-completion > 2.11
+ _comp_delimited , -W '"${styles[@]}"'
+ else
+ COMPREPLY=($(compgen -W '${styles[@]}' -- "$cur"))
+ fi
+ return 0
+ esac
+
+ $split && return 0
+
+ if [[ $cur == -* ]]; then
+ # --unbuffered excluded intentionally (no-op)
+ COMPREPLY=($(compgen -W "
+ --show-all
+ --nonprintable-notation
+ --binary
+ --plain
+ --language
+ --highlight-line
+ --file-name
+ --diff
+ --diff-context
+ --tabs
+ --wrap
+ --chop-long-lines
+ --terminal-width
+ --number
+ --color
+ --italic-text
+ --decorations
+ --force-colorization
+ --paging
+ --no-paging
+ --pager
+ --map-syntax
+ --ignored-suffix
+ --theme
+ --theme-dark
+ --theme-light
+ --list-themes
+ --squeeze-blank
+ --squeeze-limit
+ --strip-ansi
+ --style
+ --line-range
+ --list-languages
+ --lessopen
+ --completion
+ --diagnostic
+ --acknowledgements
+ --set-terminal-title
+ --help
+ --version
+ --cache-dir
+ --config-dir
+ --config-file
+ --generate-config-file
+ --no-config
+ --no-custom-assets
+ --no-lessopen
+ " -- "$cur"))
+ return 0
+ fi
+
+ _filedir
+
+ ## Completion of the 'cache' command itself is removed for better UX
+ ## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
+} && complete -F _bat bat
diff --git a/fedora/.config/bash/completions/rg.bash b/fedora/.config/bash/completions/rg.bash
new file mode 100644
index 0000000..12d1039
--- /dev/null
+++ b/fedora/.config/bash/completions/rg.bash
@@ -0,0 +1,783 @@
+_rg() {
+ local i cur prev opts cmds
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ cmd=""
+ opts=""
+
+ for i in ${COMP_WORDS[@]}; do
+ case "${i}" in
+ rg)
+ cmd="rg"
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+ case "${cmd}" in
+ rg)
+ opts="--regexp -e --file -f --after-context -A --before-context -B --binary --no-binary --block-buffered --no-block-buffered --byte-offset -b --no-byte-offset --case-sensitive -s --color --colors --column --no-column --context -C --context-separator --no-context-separator --count -c --count-matches --crlf --no-crlf --debug --dfa-size-limit --encoding -E --no-encoding --engine --field-context-separator --field-match-separator --files --files-with-matches -l --files-without-match --fixed-strings -F --no-fixed-strings --follow -L --no-follow --generate --glob -g --glob-case-insensitive --no-glob-case-insensitive --heading --no-heading --help -h --hidden -. --no-hidden --hostname-bin --hyperlink-format --iglob --ignore-case -i --ignore-file --ignore-file-case-insensitive --no-ignore-file-case-insensitive --include-zero --no-include-zero --invert-match -v --no-invert-match --json --no-json --line-buffered --no-line-buffered --line-number -n --no-line-number -N --line-regexp -x --max-columns -M --max-columns-preview --no-max-columns-preview --max-count -m --max-depth -d --max-filesize --mmap --no-mmap --multiline -U --no-multiline --multiline-dotall --no-multiline-dotall --no-config --no-ignore --ignore --no-ignore-dot --ignore-dot --no-ignore-exclude --ignore-exclude --no-ignore-files --ignore-files --no-ignore-global --ignore-global --no-ignore-messages --ignore-messages --no-ignore-parent --ignore-parent --no-ignore-vcs --ignore-vcs --no-messages --messages --no-require-git --require-git --no-unicode --unicode --null -0 --null-data --one-file-system --no-one-file-system --only-matching -o --path-separator --passthru --pcre2 -P --no-pcre2 --pcre2-version --pre --no-pre --pre-glob --pretty -p --quiet -q --regex-size-limit --replace -r --search-zip -z --no-search-zip --smart-case -S --sort --sortr --stats --no-stats --stop-on-nonmatch --text -a --no-text --threads -j --trace --trim --no-trim --type -t --type-not -T --type-add --type-clear --type-list --unrestricted -u --version -V --vimgrep --with-filename -H --no-filename -I --word-regexp -w --auto-hybrid-regex --no-auto-hybrid-regex --no-pcre2-unicode --pcre2-unicode --sort-files --no-sort-files <PATTERN> <PATH>..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
+ return 0
+ fi
+ case "${prev}" in
+
+ --regexp)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -e)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --file)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -f)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --after-context)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -A)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --before-context)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -B)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --binary)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-binary)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --block-buffered)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-block-buffered)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --byte-offset)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -b)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-byte-offset)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --case-sensitive)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -s)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --color)
+ COMPREPLY=($(compgen -W "never auto always ansi" -- "${cur}"))
+ return 0
+ ;;
+ --colors)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --column)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-column)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --context)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -C)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --context-separator)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-context-separator)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --count)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -c)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --count-matches)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --crlf)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-crlf)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --debug)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --dfa-size-limit)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --encoding)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -E)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-encoding)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --engine)
+ COMPREPLY=($(compgen -W "default pcre2 auto" -- "${cur}"))
+ return 0
+ ;;
+ --field-context-separator)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --field-match-separator)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --files)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --files-with-matches)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -l)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --files-without-match)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --fixed-strings)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -F)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-fixed-strings)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --follow)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -L)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-follow)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --generate)
+ COMPREPLY=($(compgen -W "man complete-bash complete-zsh complete-fish complete-powershell" -- "${cur}"))
+ return 0
+ ;;
+ --glob)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -g)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --glob-case-insensitive)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-glob-case-insensitive)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --heading)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-heading)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --help)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -h)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --hidden)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -.)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-hidden)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --hostname-bin)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --hyperlink-format)
+ COMPREPLY=($(compgen -W "default none cursor file grep+ kitty macvim textmate vscode vscode-insiders vscodium" -- "${cur}"))
+ return 0
+ ;;
+ --iglob)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-case)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -i)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-file)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-file-case-insensitive)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-file-case-insensitive)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --include-zero)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-include-zero)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --invert-match)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -v)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-invert-match)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --json)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-json)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --line-buffered)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-line-buffered)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --line-number)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -n)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-line-number)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -N)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --line-regexp)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -x)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --max-columns)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -M)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --max-columns-preview)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-max-columns-preview)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --max-count)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -m)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --max-depth)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -d)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --max-filesize)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --mmap)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-mmap)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --multiline)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -U)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-multiline)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --multiline-dotall)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-multiline-dotall)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-config)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-dot)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-dot)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-exclude)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-exclude)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-files)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-files)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-global)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-global)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-messages)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-messages)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-parent)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-parent)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-ignore-vcs)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --ignore-vcs)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-messages)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --messages)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-require-git)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --require-git)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-unicode)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --unicode)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --null)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -0)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --null-data)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --one-file-system)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-one-file-system)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --only-matching)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -o)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --path-separator)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --passthru)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pcre2)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -P)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-pcre2)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pcre2-version)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pre)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-pre)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pre-glob)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pretty)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -p)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --quiet)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -q)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --regex-size-limit)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --replace)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -r)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --search-zip)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -z)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-search-zip)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --smart-case)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -S)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --sort)
+ COMPREPLY=($(compgen -W "none path modified accessed created" -- "${cur}"))
+ return 0
+ ;;
+ --sortr)
+ COMPREPLY=($(compgen -W "none path modified accessed created" -- "${cur}"))
+ return 0
+ ;;
+ --stats)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-stats)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --stop-on-nonmatch)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --text)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -a)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-text)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --threads)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -j)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --trace)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --trim)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-trim)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --type)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -t)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --type-not)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -T)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --type-add)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --type-clear)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --type-list)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --unrestricted)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -u)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --version)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -V)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --vimgrep)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --with-filename)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -H)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-filename)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -I)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --word-regexp)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -w)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --auto-hybrid-regex)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-auto-hybrid-regex)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-pcre2-unicode)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --pcre2-unicode)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --sort-files)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --no-sort-files)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ esac
+ COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
+ return 0
+ ;;
+ esac
+}
+
+complete -F _rg -o bashdefault -o default rg
diff --git a/fedora/.config/bash/completions/ya.bash b/fedora/.config/bash/completions/ya.bash
new file mode 100644
index 0000000..b24e3e5
--- /dev/null
+++ b/fedora/.config/bash/completions/ya.bash
@@ -0,0 +1,647 @@
+_ya() {
+ local i cur prev opts cmd
+ COMPREPLY=()
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ cur="$2"
+ else
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ fi
+ prev="$3"
+ cmd=""
+ opts=""
+
+ for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
+ do
+ case "${cmd},${i}" in
+ ",$1")
+ cmd="ya"
+ ;;
+ ya,emit)
+ cmd="ya__emit"
+ ;;
+ ya,emit-to)
+ cmd="ya__emit__to"
+ ;;
+ ya,help)
+ cmd="ya__help"
+ ;;
+ ya,pack)
+ cmd="ya__pack"
+ ;;
+ ya,pkg)
+ cmd="ya__pkg"
+ ;;
+ ya,pub)
+ cmd="ya__pub"
+ ;;
+ ya,pub-to)
+ cmd="ya__pub__to"
+ ;;
+ ya,sub)
+ cmd="ya__sub"
+ ;;
+ ya__help,emit)
+ cmd="ya__help__emit"
+ ;;
+ ya__help,emit-to)
+ cmd="ya__help__emit__to"
+ ;;
+ ya__help,help)
+ cmd="ya__help__help"
+ ;;
+ ya__help,pack)
+ cmd="ya__help__pack"
+ ;;
+ ya__help,pkg)
+ cmd="ya__help__pkg"
+ ;;
+ ya__help,pub)
+ cmd="ya__help__pub"
+ ;;
+ ya__help,pub-to)
+ cmd="ya__help__pub__to"
+ ;;
+ ya__help,sub)
+ cmd="ya__help__sub"
+ ;;
+ ya__help__pkg,add)
+ cmd="ya__help__pkg__add"
+ ;;
+ ya__help__pkg,delete)
+ cmd="ya__help__pkg__delete"
+ ;;
+ ya__help__pkg,install)
+ cmd="ya__help__pkg__install"
+ ;;
+ ya__help__pkg,list)
+ cmd="ya__help__pkg__list"
+ ;;
+ ya__help__pkg,upgrade)
+ cmd="ya__help__pkg__upgrade"
+ ;;
+ ya__pkg,add)
+ cmd="ya__pkg__add"
+ ;;
+ ya__pkg,delete)
+ cmd="ya__pkg__delete"
+ ;;
+ ya__pkg,help)
+ cmd="ya__pkg__help"
+ ;;
+ ya__pkg,install)
+ cmd="ya__pkg__install"
+ ;;
+ ya__pkg,list)
+ cmd="ya__pkg__list"
+ ;;
+ ya__pkg,upgrade)
+ cmd="ya__pkg__upgrade"
+ ;;
+ ya__pkg__help,add)
+ cmd="ya__pkg__help__add"
+ ;;
+ ya__pkg__help,delete)
+ cmd="ya__pkg__help__delete"
+ ;;
+ ya__pkg__help,help)
+ cmd="ya__pkg__help__help"
+ ;;
+ ya__pkg__help,install)
+ cmd="ya__pkg__help__install"
+ ;;
+ ya__pkg__help,list)
+ cmd="ya__pkg__help__list"
+ ;;
+ ya__pkg__help,upgrade)
+ cmd="ya__pkg__help__upgrade"
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+ case "${cmd}" in
+ ya)
+ opts="-V -h --version --help emit emit-to pkg pack pub pub-to sub help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__emit)
+ opts="-h --help <NAME> [ARGS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__emit__to)
+ opts="-h --help <RECEIVER> <NAME> [ARGS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help)
+ opts="emit emit-to pkg pack pub pub-to sub help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__emit)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__emit__to)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__help)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pack)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg)
+ opts="add delete install list upgrade"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg__add)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg__delete)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg__install)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg__list)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pkg__upgrade)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pub)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__pub__to)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__help__sub)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pack)
+ opts="-a -d -i -l -u -h --add --delete --install --list --upgrade --help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --add)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -a)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --delete)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -d)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg)
+ opts="-h --help add delete install list upgrade help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__add)
+ opts="-h --help [IDS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__delete)
+ opts="-h --help [IDS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help)
+ opts="add delete install list upgrade help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__add)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__delete)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__help)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__install)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__list)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__help__upgrade)
+ opts=""
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__install)
+ opts="-h --help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__list)
+ opts="-h --help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pkg__upgrade)
+ opts="-h --help"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pub)
+ opts="-h --str --json --list --help <KIND>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --str)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --json)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --list)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__pub__to)
+ opts="-h --str --json --list --help <RECEIVER> <KIND>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --str)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --json)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --list)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ ya__sub)
+ opts="-h --help <KINDS>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ esac
+}
+
+if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
+ complete -F _ya -o nosort -o bashdefault -o default ya
+else
+ complete -F _ya -o bashdefault -o default ya
+fi
diff --git a/fedora/.config/bash/completions/yazi.bash b/fedora/.config/bash/completions/yazi.bash
new file mode 100644
index 0000000..ae2d3a1
--- /dev/null
+++ b/fedora/.config/bash/completions/yazi.bash
@@ -0,0 +1,66 @@
+_yazi() {
+ local i cur prev opts cmd
+ COMPREPLY=()
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ cur="$2"
+ else
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ fi
+ prev="$3"
+ cmd=""
+ opts=""
+
+ for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
+ do
+ case "${cmd},${i}" in
+ ",$1")
+ cmd="yazi"
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+ case "${cmd}" in
+ yazi)
+ opts="-V -h --cwd-file --chooser-file --clear-cache --client-id --local-events --remote-events --debug --version --help [ENTRIES]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --cwd-file)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --chooser-file)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --client-id)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --local-events)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --remote-events)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ esac
+}
+
+if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
+ complete -F _yazi -o nosort -o bashdefault -o default yazi
+else
+ complete -F _yazi -o bashdefault -o default yazi
+fi
diff --git a/fedora/.config/bash/completions/zoxide.bash b/fedora/.config/bash/completions/zoxide.bash
new file mode 100644
index 0000000..1c2ed84
--- /dev/null
+++ b/fedora/.config/bash/completions/zoxide.bash
@@ -0,0 +1,243 @@
+_zoxide() {
+ local i cur prev opts cmd
+ COMPREPLY=()
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ cur="$2"
+ else
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ fi
+ prev="$3"
+ cmd=""
+ opts=""
+
+ for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
+ do
+ case "${cmd},${i}" in
+ ",$1")
+ cmd="zoxide"
+ ;;
+ zoxide,add)
+ cmd="zoxide__add"
+ ;;
+ zoxide,edit)
+ cmd="zoxide__edit"
+ ;;
+ zoxide,import)
+ cmd="zoxide__import"
+ ;;
+ zoxide,init)
+ cmd="zoxide__init"
+ ;;
+ zoxide,query)
+ cmd="zoxide__query"
+ ;;
+ zoxide,remove)
+ cmd="zoxide__remove"
+ ;;
+ zoxide__edit,decrement)
+ cmd="zoxide__edit__decrement"
+ ;;
+ zoxide__edit,delete)
+ cmd="zoxide__edit__delete"
+ ;;
+ zoxide__edit,increment)
+ cmd="zoxide__edit__increment"
+ ;;
+ zoxide__edit,reload)
+ cmd="zoxide__edit__reload"
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+ case "${cmd}" in
+ zoxide)
+ opts="-h -V --help --version add edit import init query remove"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__add)
+ opts="-s -h -V --score --help --version <PATHS>..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --score)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ -s)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__edit)
+ opts="-h -V --help --version decrement delete increment reload"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__edit__decrement)
+ opts="-h -V --help --version <PATH>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__edit__delete)
+ opts="-h -V --help --version <PATH>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__edit__increment)
+ opts="-h -V --help --version <PATH>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__edit__reload)
+ opts="-h -V --help --version"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__import)
+ opts="-h -V --from --merge --help --version <PATH>"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --from)
+ COMPREPLY=($(compgen -W "autojump z" -- "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__init)
+ opts="-h -V --no-cmd --cmd --hook --help --version bash elvish fish nushell posix powershell tcsh xonsh zsh"
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --cmd)
+ COMPREPLY=($(compgen -f "${cur}"))
+ return 0
+ ;;
+ --hook)
+ COMPREPLY=($(compgen -W "none prompt pwd" -- "${cur}"))
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__query)
+ opts="-a -i -l -s -h -V --all --interactive --list --score --exclude --help --version [KEYWORDS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ --exclude)
+ COMPREPLY=()
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o plusdirs
+ fi
+ return 0
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ zoxide__remove)
+ opts="-h -V --help --version [PATHS]..."
+ if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ fi
+ case "${prev}" in
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+ COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
+ return 0
+ ;;
+ esac
+}
+
+if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
+ complete -F _zoxide -o nosort -o bashdefault -o default zoxide
+else
+ complete -F _zoxide -o bashdefault -o default zoxide
+fi
diff --git a/fedora/.config/bash/keymaps.bash b/fedora/.config/bash/keymaps.bash
index cf355ad..15bd7e2 100644
--- a/fedora/.config/bash/keymaps.bash
+++ b/fedora/.config/bash/keymaps.bash
@@ -11,101 +11,131 @@ PROMPT_COMMAND='echo -ne "\e[5 q"'
# ---------- helper: pre_cmd ----------
pre_cmd() {
- local txt="$1"
- if [[ -z "${READLINE_LINE+set}" ]]; then
- printf '%s ' "$txt"
- return
- fi
- local left=${READLINE_LINE:0:READLINE_POINT}
- local right=${READLINE_LINE:READLINE_POINT}
- READLINE_LINE="${left}${txt} ${right}"
- READLINE_POINT=$(( READLINE_POINT + ${#txt} + 1 ))
+ local last_cmd
+ last_cmd=$(history 1 | sed 's/^[ ]*[0-9]*[ ]*//')
+
+ if [[ $last_cmd != sudo* ]]; then
+ READLINE_LINE="sudo $last_cmd"
+ READLINE_POINT=${#READLINE_LINE}
+ fi
}
# ---------- Clipboard detection ----------
_detect_clipboard_setup() {
- if command -v pbcopy >/dev/null 2>&1 && command -v pbpaste >/dev/null 2>&1; then
- clipcopy() { cat "${1:-/dev/stdin}" | pbcopy; }
- clippaste() { pbaste; }
- return 0
- fi
- if command -v wl-copy >/dev/null 2>&1 && command -v wl-paste >/dev/null 2>&1; then
- clipcopy() { cat "${1:-/dev/stdin}" | wl-copy; }
- clippaste() { wl-paste --no-newline; }
- return 0
- fi
- if command -v xclip >/dev/null 2>&1; then
- clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard; }
- clippaste() { xclip -selection clipboard -out; }
- return 0
- fi
- if command -v xsel >/dev/null 2>&1; then
- clipcopy() { cat "${1:-/dev/stdin}" | xsel --clipboard --input; }
- clippaste() { xsel --clipboard --output; }
- return 0
- fi
- if command -v clip.exe >/dev/null 2>&1; then
- clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; }
- clippaste() { powershell.exe -noprofile -command Get-Clipboard 2>/dev/null; }
- return 0
- fi
- if command -v tmux >/dev/null 2>&1 && [ -n "${TMUX:-}" ]; then
- clipcopy() { tmux load-buffer -; }
- clippaste() { tmux save-buffer -; }
- return 0
- fi
- return 1
+ if command -v pbcopy >/dev/null 2>&1 && command -v pbpaste >/dev/null 2>&1; then
+ clipcopy() { cat "${1:-/dev/stdin}" | pbcopy; }
+ clippaste() { pbaste; }
+ return 0
+ fi
+ if command -v wl-copy >/dev/null 2>&1 && command -v wl-paste >/dev/null 2>&1; then
+ clipcopy() { cat "${1:-/dev/stdin}" | wl-copy; }
+ clippaste() { wl-paste --no-newline; }
+ return 0
+ fi
+ if command -v xclip >/dev/null 2>&1; then
+ clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard; }
+ clippaste() { xclip -selection clipboard -out; }
+ return 0
+ fi
+ if command -v xsel >/dev/null 2>&1; then
+ clipcopy() { cat "${1:-/dev/stdin}" | xsel --clipboard --input; }
+ clippaste() { xsel --clipboard --output; }
+ return 0
+ fi
+ if command -v clip.exe >/dev/null 2>&1; then
+ clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; }
+ clippaste() { powershell.exe -noprofile -command Get-Clipboard 2>/dev/null; }
+ return 0
+ fi
+ if command -v tmux >/dev/null 2>&1 && [ -n "${TMUX:-}" ]; then
+ clipcopy() { tmux load-buffer -; }
+ clippaste() { tmux save-buffer -; }
+ return 0
+ fi
+ return 1
}
_detect_clipboard_setup || true
paste_clipboard_to_readline() {
- if ! command -v clippaste >/dev/null 2>&1; then
- _detect_clipboard_setup || { printf 'No clipboard helper found\n' >&2; return 1; }
- fi
- local clip
- clip=$(clippaste 2>/dev/null) || return 1
- clip="${clip%$'\n'}"
- if [[ -z "${READLINE_LINE+set}" ]]; then
- printf '%s' "$clip"
- return
- fi
- local left=${READLINE_LINE:0:READLINE_POINT}
- local right=${READLINE_LINE:READLINE_POINT}
- READLINE_LINE="${left}${clip}${right}"
- READLINE_POINT=$(( READLINE_POINT + ${#clip} ))
+ if ! command -v clippaste >/dev/null 2>&1; then
+ _detect_clipboard_setup || {
+ printf 'No clipboard helper found\n' >&2
+ return 1
+ }
+ fi
+ local clip
+ clip=$(clippaste 2>/dev/null) || return 1
+ clip="${clip%$'\n'}"
+ if [[ -z "${READLINE_LINE+set}" ]]; then
+ printf '%s' "$clip"
+ return
+ fi
+ local left=${READLINE_LINE:0:READLINE_POINT}
+ local right=${READLINE_LINE:READLINE_POINT}
+ READLINE_LINE="${left}${clip}${right}"
+ READLINE_POINT=$((READLINE_POINT + ${#clip}))
}
copy_readline_to_clipboard() {
- if [[ -z "${READLINE_LINE+set}" ]]; then
- printf 'No current line to copy\n' >&2
- return 1
- fi
- if ! command -v clipcopy >/dev/null 2>&1; then
- _detect_clipboard_setup || { printf 'No clipboard helper found\n' >&2; return 1; }
- fi
- printf '%s' "${READLINE_LINE}" | clipcopy
+ if [[ -z "${READLINE_LINE+set}" ]]; then
+ printf 'No current line to copy\n' >&2
+ return 1
+ fi
+ if ! command -v clipcopy >/dev/null 2>&1; then
+ _detect_clipboard_setup || {
+ printf 'No clipboard helper found\n' >&2
+ return 1
+ }
+ fi
+ printf '%s' "${READLINE_LINE}" | clipcopy
}
# ---------- basic utilities ----------
-clear_tree_2() { clear; tree -L 2 2>/dev/null || true; }
-clear_tree_3() { clear; tree -L 3 2>/dev/null || true; }
+clear_tree_2() {
+ clear
+ tree -L 2 2>/dev/null || true
+}
+clear_tree_3() {
+ clear
+ tree -L 3 2>/dev/null || true
+}
insert_current_date() {
- local txt="$(date -I)"
- if [[ -z "${READLINE_LINE+set}" ]]; then printf '%s' "$txt"; return; fi
- local left=${READLINE_LINE:0:READLINE_POINT}; local right=${READLINE_LINE:READLINE_POINT}
- READLINE_LINE="${left}${txt}${right}"; READLINE_POINT=$(( READLINE_POINT + ${#txt} ))
+ local txt="$(date -I)"
+ if [[ -z "${READLINE_LINE+set}" ]]; then
+ printf '%s' "$txt"
+ return
+ fi
+ local left=${READLINE_LINE:0:READLINE_POINT}
+ local right=${READLINE_LINE:READLINE_POINT}
+ READLINE_LINE="${left}${txt}${right}"
+ READLINE_POINT=$((READLINE_POINT + ${#txt}))
}
insert_unix_timestamp() {
- local txt="$(date +%s)"
- if [[ -z "${READLINE_LINE+set}" ]]; then printf '%s' "$txt"; return; fi
- local left=${READLINE_LINE:0:READLINE_POINT}; local right=${READLINE_LINE:READLINE_POINT}
- READLINE_LINE="${left}${txt}${right}"; READLINE_POINT=$(( READLINE_POINT + ${#txt} ))
+ local txt="$(date +%s)"
+ if [[ -z "${READLINE_LINE+set}" ]]; then
+ printf '%s' "$txt"
+ return
+ fi
+ local left=${READLINE_LINE:0:READLINE_POINT}
+ local right=${READLINE_LINE:READLINE_POINT}
+ READLINE_LINE="${left}${txt}${right}"
+ READLINE_POINT=$((READLINE_POINT + ${#txt}))
+}
+git_status_clear() {
+ clear
+ git status 2>/dev/null || git status --short 2>/dev/null || true
+}
+tmux_left_pane() {
+ tmux select-pane -L 2>/dev/null || true
+ tmux resize-pane -Z 2>/dev/null || true
}
-git_status_clear() { clear; git status 2>/dev/null || git status --short 2>/dev/null || true; }
-tmux_left_pane() { tmux select-pane -L 2>/dev/null || true; tmux resize-pane -Z 2>/dev/null || true; }
vi_append_clip_selection() { paste_clipboard_to_readline; }
copybuffer() { copy_readline_to_clipboard; }
-background_start() { local cmd="$1"; shift || return 0; for arg in "$@"; do "$cmd" "$arg" &>/dev/null & done; }
+background_start() {
+ local cmd="$1"
+ shift || return 0
+ for arg in "$@"; do "$cmd" "$arg" &>/dev/null & done
+}
# ---------- pre_cmd widgets ----------
man_command_line() { pre_cmd "man"; }
@@ -114,15 +144,14 @@ sudo_command_line() { pre_cmd "sudo"; }
# ---------- wrappers (u-prefix REMOVED) ----------
bc() { command -v bc >/dev/null 2>&1 && /usr/bin/env bc "$@" || printf 'bc: not found\n' >&2; }
cdi() { command -v cdi >/dev/null 2>&1 && cdi "$@" || printf 'cdi: not found\n' >&2; }
-lastvim() { command -v lastnvim >/dev/null 2>&1 && lastvim "$@" || printf 'lastvim: not found\n' >&2; }
+lastfiles() { command -v lastfiles >/dev/null 2>&1 && lastfiles "$@" || printf 'lastfiles: not found\n' >&2; }
htop() { command -v htop >/dev/null 2>&1 && htop "$@" || printf 'htop: not found\n' >&2; }
sessionizer() { command -v sessionizer >/dev/null 2>&1 && sessionizer "$@" || printf 'sessionizer: not found\n' >&2; }
upd() { command -v upd >/dev/null 2>&1 && upd "$@" || printf 'upd: not found\n' >&2; }
-cht() { command -v cht >/dev/null 2>&1 && cht "$@" || printf 'cht: not found\n' >&2; } # from '^ucht' -> 'cht'
+cht() { command -v cht >/dev/null 2>&1 && cht "$@" || printf 'cht: not found\n' >&2; } # from '^ucht' -> 'cht'
ali() { command -v ali >/dev/null 2>&1 && ali "$@" || printf 'ali: not found\n' >&2; }
fD() { command -v fD >/dev/null 2>&1 && fD "$@" || printf 'fD: not found\n' >&2; }
-rgafiles() { command -v rgafiles >/dev/null 2>&1 && rgafiles "$@" || printf 'rgafiles: not found\n' >&2; }
-lastvim_l() { command -v lastnvim >/dev/null 2>&1 && lastvim -l || printf 'lastvim: not found\n' >&2; }
+lastfiles_l() { command -v lastfiles >/dev/null 2>&1 && lastfiles -l || printf 'lastfiles: not found\n' >&2; }
# ---------- Readline key bindings (bind -x) ----------
# basic movement
@@ -133,68 +162,57 @@ bind '"\C-e": end-of-line'
bind -x '"\C-x\C-e":clear_tree_2'
bind -x '"\C-x\C-w":clear_tree_3'
bind -x '"\C-x\C-s":git_status_clear'
-bind -x '"\C-x\C-x\C-t":insert_current_date' # ^X^X^T (alternate: C-x C-t)
+bind -x '"\C-x\C-x\C-t":insert_current_date' # ^X^X^T (alternate: C-x C-t)
bind -x '"\C-x\C-t":insert_current_date'
bind -x '"\C-x\C-x\C-u":insert_unix_timestamp' # ^X^X^U
bind -x '"\C-x\C-u":insert_unix_timestamp'
# clipboard binds
-bind -x '"\C-x\C-p":paste_clipboard_to_readline' # ^X^P
-bind -x '"\C-x\C-y":copy_readline_to_clipboard' # ^X^Y
+bind -x '"\C-x\C-p":paste_clipboard_to_readline' # ^X^P
+bind -x '"\C-x\C-y":copy_readline_to_clipboard' # ^X^Y
# edit in editor
edit_command_line() {
- local tmp content
- tmp=$(mktemp /tmp/bash-edit.XXXXXX) || return
- printf '%s' "${READLINE_LINE:-}" > "$tmp"
- "${EDITOR:-vim}" "$tmp"
- content=$(<"$tmp")
- READLINE_LINE="$content"
- READLINE_POINT=${#content}
- rm -f "$tmp"
+ local tmp content
+ tmp=$(mktemp /tmp/bash-edit.XXXXXX) || return
+ printf '%s' "${READLINE_LINE:-}" >"$tmp"
+ "${EDITOR:-vim}" "$tmp"
+ content=$(<"$tmp")
+ READLINE_LINE="$content"
+ READLINE_POINT=${#content}
+ rm -f "$tmp"
}
-bind -x '"\C-x\C-v":edit_command_line' # ^X^V
+bind -x '"\C-x\C-v":edit_command_line' # ^X^V
# man & sudo insertion
-bind -x '"\C-x\C-m":man_command_line' # ^X^M
+bind -x '"\C-x\C-m":man_command_line' # ^X^M
stty -ixon 2>/dev/null || true
-bind -x '"\C-s":sudo_command_line' # ^S (stty -ixon to avoid flow control)
+bind -x '"\C-s":sudo_command_line' # ^S (stty -ixon to avoid flow control)
# tmux left pane (bind ESC + backslash)
-bind -x $'\e\\':tmux_left_pane
+#bind -x '\e\\':tmux_left_pane
# ---------- mappings of the original bindkey -s lines (u removed) ----------
-bind -x '"\C-b":__bc' # will call function __bc below
+bind -x '"\C-b":__bc' # will call function __bc below
__bc() { bc -lq "$@"; }
bind -x '"\C-d":cdi'
bind -x '"\C-f":fzffiles'
-bind -x '"\C-g":lf'
-bind -x '"\C-n":lastnvim'
+bind -x '"\C-n":lastfiles'
bind -x '"\C-o":tmo'
bind -x '"\C-p":fzfpass'
bind -x '"\C-q":htop'
bind -x '"\C-t":sessionizer'
-bind -x '"\C-y":lfcd'
-bind -x '"\C-z":upd'
+bind -x '"\C-z":pd'
# ^_ (Ctrl-_) mapped to cht (from '^ucht' -> 'cht')
bind -x $'"\C-_":cht'
# ^X^... sequences (Ctrl-X then key)
bind -x '"\C-x\C-a":ali'
-bind -x '"\C-x\C-b":gitopenbranch'
bind -x '"\C-x\C-d":fD'
bind -x '"\C-x\C-f":gitfiles'
bind -x '"\C-x\C-g":rgafiles'
bind -x '"\C-x\C-l":gloac'
-bind -x '"\C-x\C-n":lastnvim_l'
+bind -x '"\C-x\C-n":lastfiles_l'
bind -x '"\C-x\C-q":fpkill'
-bind -x '"\C-x\C-r":fgst'
-bind -x '"\C-x\C-t":gitstagedfiles'
-bind -x '"\C-x\C-u":gitupdate'
-bind -x '"\C-x\C-_":fzffns' # ^X^_
-bind -x '"\C-x\C-x\C-b":rbackup'
-bind -x '"\C-x\C-x\C-p":pcyr'
-bind -x '"\C-x\C-x\C-r":rbackup' # rbackup -r not directly supported via bind -x args; call rbackup then ask user for flags if needed
-bind -x '"\C-x\C-x\C-s":sshadd'
-bind -x '"\C-x\C-x\C-y":yay_remaps'
+bind -x '"\C-x\C-_":fzffns' # ^X^_
diff --git a/fedora/.config/bash/packages.bash b/fedora/.config/bash/packages.bash
index f45925a..27d396e 100644
--- a/fedora/.config/bash/packages.bash
+++ b/fedora/.config/bash/packages.bash
@@ -2,7 +2,7 @@
# --- Packages (bash version) ---
declare -A packages=(
- [zoxide]="--cmd cd --hook prompt"
+ # [zoxide]="--cmd cd --hook prompt"
)
eval_packages() {
diff --git a/fedora/.config/bash/scripts.bash b/fedora/.config/bash/scripts.bash
index fa0abbc..400265d 100644
--- a/fedora/.config/bash/scripts.bash
+++ b/fedora/.config/bash/scripts.bash
@@ -1,97 +1,64 @@
#!/bin/bash
-# Use the best version of pico installed
-edit() {
- if [ "$(type -t jpico)" = "file" ]; then
- # Use JOE text editor http://joe-editor.sourceforge.net/
- jpico -nonotice -linums -nobackups "$@"
- elif [ "$(type -t nano)" = "file" ]; then
- nano -c "$@"
- elif [ "$(type -t pico)" = "file" ]; then
- pico "$@"
+###########################################################################################
+###########################################################################################
+### --- APACHE --- ###
+# View Apache logs
+apachelog() {
+ if [ -f /etc/httpd/conf/httpd.conf ]; then
+ cd /var/log/httpd && ls -xAh && multitail --no-repeat -c -s 2 /var/log/httpd/*_log
else
- vim "$@"
+ cd /var/log/apache2 && ls -xAh && multitail --no-repeat -c -s 2 /var/log/apache2/*.log
fi
}
-sedit() {
- if [ "$(type -t jpico)" = "file" ]; then
- # Use JOE text editor http://joe-editor.sourceforge.net/
- sudo jpico -nonotice -linums -nobackups "$@"
- elif [ "$(type -t nano)" = "file" ]; then
- sudo nano -c "$@"
- elif [ "$(type -t pico)" = "file" ]; then
- sudo pico "$@"
+# Edit the Apache configuration
+apacheconfig() {
+ if [ -f /etc/httpd/conf/httpd.conf ]; then
+ sedit /etc/httpd/conf/httpd.conf
+ elif [ -f /etc/apache2/apache2.conf ]; then
+ sedit /etc/apache2/apache2.conf
else
- sudo vim "$@"
+ echo "Error: Apache config file could not be found."
+ echo "Searching for possible locations:"
+ sudo updatedb && locate httpd.conf && locate apache2.conf
fi
}
-# Extracts any archive(s) (if unp isn't installed)
-extract() {
- for archive in $*; do
- if [ -f $archive ]; then
- case $archive in
- *.tar.bz2) tar xvjf $archive ;;
- *.tar.gz) tar xvzf $archive ;;
- *.bz2) bunzip2 $archive ;;
- *.rar) rar x $archive ;;
- *.gz) gunzip $archive ;;
- *.tar) tar xvf $archive ;;
- *.tbz2) tar xvjf $archive ;;
- *.tgz) tar xvzf $archive ;;
- *.zip) unzip $archive ;;
- *.Z) uncompress $archive ;;
- *.7z) 7z x $archive ;;
- *) echo "don't know how to extract '$archive'..." ;;
- esac
- else
- echo "'$archive' is not a valid file!"
- fi
- done
-}
-
-# Searches for text in all files in the current folder
-ftext() {
- # -i case-insensitive
- # -I ignore binary files
- # -H causes filename to be printed
- # -r recursive search
- # -n causes line number to be printed
- # optional: -F treat search term as a literal, not a regular expression
- # optional: -l only print filenames and not the matching lines ex. grep -irl "$1" *
- grep -iIHrn --color=always "$1" . | less -r
-}
-
-# Copy file with a progress bar
-cpf() {
- set -e
- strace -q -ewrite cp -- "${1}" "${2}" 2>&1 |
- awk '{
- count += $NF
- if (count % 10 == 0) {
- percent = count / total_size * 100
- printf "%3d%% [", percent
- for (i=0;i<=percent;i++)
- printf "="
- printf ">"
- for (i=percent;i<100;i++)
- printf " "
- printf "]\r"
- }
- }
- END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
-}
+###########################################################################################
+###########################################################################################
+### --- BASH --- ###
+# Automatically install the needed support files for this .bashrc file
+install_bashrc_support() {
+ local dtype
+ dtype=$(distribution)
-# Copy and go to the directory
-cpg() {
- if [ -d "$2" ]; then
- cp $1 $2 && cd $2
+ if [ $dtype == "redhat" ]; then
+ sudo yum install multitail tree joe
+ elif [ $dtype == "suse" ]; then
+ sudo zypper install multitail
+ sudo zypper install tree
+ sudo zypper install joe
+ elif [ $dtype == "debian" ]; then
+ sudo apt-get install multitail tree joe
+ elif [ $dtype == "gentoo" ]; then
+ sudo emerge multitail
+ sudo emerge tree
+ sudo emerge joe
+ elif [ $dtype == "mandriva" ]; then
+ sudo urpmi multitail
+ sudo urpmi tree
+ sudo urpmi joe
+ elif [ $dtype == "slackware" ]; then
+ echo "No install support for Slackware"
else
- cp $1 $2
+ echo "Unknown distribution"
fi
}
+###########################################################################################
+###########################################################################################
+### --- CD --- ###
# Move and go to the directory
mvg() {
if [ -d "$2" ]; then
@@ -106,7 +73,7 @@ mc() {
mkdir -p $1 && cd $1
}
-# Goes up a specified number of directories (i.e. up 4)
+# Go up a specified number of directories (i.e. up 4)
up() {
local d=""
limit=$1
@@ -134,6 +101,79 @@ pwdtail() {
pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}'
}
+###########################################################################################
+###########################################################################################
+### --- COMMAND OUTPUT --- ###
+alias ilco=insert_last_command_output
+insert_last_command_output() {
+ local last_cmd
+ last_cmd=$(history | tail -n 2 | head -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//')
+ eval "$last_cmd"
+}
+
+###########################################################################################
+###########################################################################################
+### --- COPY --- ###
+# Copy file with a progress bar
+cpf() {
+ set -e
+ strace -q -ewrite cp -- "${1}" "${2}" 2>&1 |
+ awk '{
+ count += $NF
+ if (count % 10 == 0) {
+ percent = count / total_size * 100
+ printf "%3d%% [", percent
+ for (i=0;i<=percent;i++)
+ printf "="
+ printf ">"
+ for (i=percent;i<100;i++)
+ printf " "
+ printf "]\r"
+ }
+ }
+ END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
+}
+
+# Copy and go to the directory
+cpg() {
+ if [ -d "$2" ]; then
+ cp $1 $2 && cd $2
+ else
+ cp $1 $2
+ fi
+}
+
+###########################################################################################
+###########################################################################################
+### --- CREATE --- ###
+alias mc=mkcd
+mkcd() { mkdir -p "$1" && cd "$1" || return; }
+
+mkdt() {
+ mkdir -p "${1:+$1/}$(date +%F)"
+}
+
+###########################################################################################
+###########################################################################################
+### --- CURSOR --- ###
+# vi-mode cursor change
+function update_cursor {
+ if [[ $READLINE_LINE == * ]]; then
+ if [[ $READLINE_POINT -eq 0 ]]; then
+ echo -ne '\e[6 q' # insert mode
+ else
+ echo -ne '\e[2 q' # command mode
+ fi
+ fi
+}
+
+# vi-command, vi-insert 모드 hook 등록
+bind -m vi-insert '":": "\C-o update_cursor"'
+bind -m vi-command '":": "\C-o update_cursor"'
+
+###########################################################################################
+###########################################################################################
+### --- DISTRIBUTION --- ###
# Show the current distribution
distribution() {
local dtype
@@ -206,34 +246,64 @@ ver() {
fi
}
-# Automatically install the needed support files for this .bashrc file
-install_bashrc_support() {
- local dtype
- dtype=$(distribution)
+###########################################################################################
+###########################################################################################
+### --- EDIT --- ###
+edit() {
+ if [ "$(type -t jpico)" = "file" ]; then
+ # Use JOE text editor http://joe-editor.sourceforge.net/
+ jpico -nonotice -linums -nobackups "$@"
+ elif [ "$(type -t nano)" = "file" ]; then
+ nano -c "$@"
+ elif [ "$(type -t pico)" = "file" ]; then
+ pico "$@"
+ else
+ vim "$@"
+ fi
+}
- if [ $dtype == "redhat" ]; then
- sudo yum install multitail tree joe
- elif [ $dtype == "suse" ]; then
- sudo zypper install multitail
- sudo zypper install tree
- sudo zypper install joe
- elif [ $dtype == "debian" ]; then
- sudo apt-get install multitail tree joe
- elif [ $dtype == "gentoo" ]; then
- sudo emerge multitail
- sudo emerge tree
- sudo emerge joe
- elif [ $dtype == "mandriva" ]; then
- sudo urpmi multitail
- sudo urpmi tree
- sudo urpmi joe
- elif [ $dtype == "slackware" ]; then
- echo "No install support for Slackware"
+sedit() {
+ if [ "$(type -t jpico)" = "file" ]; then
+ # Use JOE text editor http://joe-editor.sourceforge.net/
+ sudo jpico -nonotice -linums -nobackups "$@"
+ elif [ "$(type -t nano)" = "file" ]; then
+ sudo nano -c "$@"
+ elif [ "$(type -t pico)" = "file" ]; then
+ sudo pico "$@"
else
- echo "Unknown distribution"
+ sudo vim "$@"
fi
}
+###########################################################################################
+###########################################################################################
+### --- EXTRACT --- ###
+extract() {
+ for archive in $*; do
+ if [ -f $archive ]; then
+ case $archive in
+ *.tar.bz2) tar xvjf $archive ;;
+ *.tar.gz) tar xvzf $archive ;;
+ *.bz2) bunzip2 $archive ;;
+ *.rar) rar x $archive ;;
+ *.gz) gunzip $archive ;;
+ *.tar) tar xvf $archive ;;
+ *.tbz2) tar xvjf $archive ;;
+ *.tgz) tar xvzf $archive ;;
+ *.zip) unzip $archive ;;
+ *.Z) uncompress $archive ;;
+ *.7z) 7z x $archive ;;
+ *) echo "don't know how to extract '$archive'..." ;;
+ esac
+ else
+ echo "'$archive' is not a valid file!"
+ fi
+ done
+}
+
+###########################################################################################
+###########################################################################################
+### --- NETWORK --- ###
# Show current network information
netinfo() {
echo "--------------- Network Information ---------------"
@@ -262,28 +332,18 @@ function whatsmyip() {
wget http://smart-ip.net/myip -O - -q
}
-# View Apache logs
-apachelog() {
- if [ -f /etc/httpd/conf/httpd.conf ]; then
- cd /var/log/httpd && ls -xAh && multitail --no-repeat -c -s 2 /var/log/httpd/*_log
- else
- cd /var/log/apache2 && ls -xAh && multitail --no-repeat -c -s 2 /var/log/apache2/*.log
- fi
-}
+###########################################################################################
+###########################################################################################
+### --- PASS --- ###
+pass_otp() { pass otp uri -q "$1"; }
+pass_otp_insert() { pass otp insert "$1"; }
-# Edit the Apache configuration
-apacheconfig() {
- if [ -f /etc/httpd/conf/httpd.conf ]; then
- sedit /etc/httpd/conf/httpd.conf
- elif [ -f /etc/apache2/apache2.conf ]; then
- sedit /etc/apache2/apache2.conf
- else
- echo "Error: Apache config file could not be found."
- echo "Searching for possible locations:"
- sudo updatedb && locate httpd.conf && locate apache2.conf
- fi
-}
+alias cpqr=pass_qr
+pass_qr() { qrencode -o "$1.png" -t png -Sv 40 <"$1.pgp"; }
+###########################################################################################
+###########################################################################################
+### --- PHP --- ###
# Edit the PHP configuration file
phpconfig() {
if [ -f /etc/php.ini ]; then
@@ -303,6 +363,23 @@ phpconfig() {
fi
}
+###########################################################################################
+###########################################################################################
+### --- SEARCH --- ###
+ftext() {
+ # -i case-insensitive
+ # -I ignore binary files
+ # -H causes filename to be printed
+ # -r recursive search
+ # -n causes line number to be printed
+ # optional: -F treat search term as a literal, not a regular expression
+ # optional: -l only print filenames and not the matching lines ex. grep -irl "$1" *
+ grep -iIHrn --color=always "$1" . | less -r
+}
+
+###########################################################################################
+###########################################################################################
+### --- SQL --- ###
# Edit the MySQL configuration file
mysqlconfig() {
if [ -f /etc/my.cnf ]; then
@@ -324,16 +401,33 @@ mysqlconfig() {
fi
}
-# For some reason, rot13 pops up everywhere
-rot13() {
- if [ $# -eq 0 ]; then
- tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]'
- else
- echo $* | tr '[a-m][n-z][A-M][N-Z]' '[n-z][a-m][N-Z][A-M]'
+###########################################################################################
+###########################################################################################
+### --- STOW --- ###
+alias dstw=dotfiles_stw
+dotfiles_stw() {
+ "${XDG_DOTFILES_DIR:-${HOME}/.dotfiles}/$(whereami)/.local/bin/stw"
+}
+
+###########################################################################################
+###########################################################################################
+### --- SUDO --- ###
+pre_cmd() {
+ local prepend_command="$1"
+ local buffer="${READLINE_LINE:-}"
+
+ if [ -z "$buffer" ]; then
+ buffer=$(history | tail -n 2 | head -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//')
fi
+
+ READLINE_LINE="$prepend_command $buffer"
+ READLINE_POINT=${#READLINE_LINE}
}
+bind -x '"\es":pre_cmd sudo'
-# Trim leading and trailing spaces (for scripts)
+###########################################################################################
+###########################################################################################
+### --- TRIM --- ###
trim() {
local var=$@
var='${var#"${var%%[![:space:]]*}"}' # remove leading whitespace characters