From f80c45dc3ea80a22ab0a98cb081bec3b343f603e Mon Sep 17 00:00:00 2001 From: lew Date: Thu, 30 Oct 2025 22:26:21 +0000 Subject: [PATCH] Add .bashrc --- dot_bashrc | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 dot_bashrc diff --git a/dot_bashrc b/dot_bashrc new file mode 100644 index 0000000..18c00cb --- /dev/null +++ b/dot_bashrc @@ -0,0 +1,112 @@ +# .bashrc + +########################### +# Essential Shell Stuff # +########################### + +export PATH="$HOME/.local/bin:$PATH" +export PATH="$HOME/.cargo/bin:$PATH" +set +h +[[ $- == *i* ]] && bind -f ~/.inputrc + +shopt -s histappend +HISTCONTROL=ignoreboth +HISTSIZE=32768 +HISTFILESIZE="${HISTSIZE}" + +if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_completion ]]; then + source /usr/share/bash-completion/bash_completion +fi + +export SUDO_EDITOR="$EDITOR" +export SYSTEMD_EDITOR="$EDITOR" +export BAT_THEME=ansi + +force_color_prompt=yes +color_prompt=yes + +if command -v mise &> /dev/null; then + eval "$(mise activate bash)" +fi + +if command -v starship &> /dev/null; then + eval "$(starship init bash)" +fi + +if command -v zoxide &> /dev/null; then + eval "$(zoxide init bash)" +fi + +if command -v fzf &> /dev/null; then + if [[ -f /usr/share/fzf/completion.bash ]]; then + source /usr/share/fzf/completion.bash + fi + if [[ -f /usr/share/fzf/key-bindings.bash ]]; then + source /usr/share/fzf/key-bindings.bash + fi +fi + +########################### +# Filesystem Navigation # +########################### + +alias ls='eza -lh --group-directories-first --icons=auto' +alias lsa='ls -a' +alias lt='eza --tree --level=2 --long --icons --git' +alias lta='lt -a' +alias ff="fzf --preview 'bat --style=numbers --color=always {}'" +alias cd="zd" +zd() { + if [ $# -eq 0 ]; then + builtin cd ~ && return + elif [ -d "$1" ]; then + builtin cd "$1" + else + z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found" + fi +} +open() { + xdg-open "$@" >/dev/null 2>&1 & +} + +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' +alias .....='cd ../../../../' + +if [ -f "$HOME/.config/user-dirs.dirs" ]; then + source "$HOME/.config/user-dirs.dirs" +fi + +alias dcim="cd ~/dcim" +alias docs="cd ${XDG_DOCUMENTS_DIR:-$HOME/Documents}" +alias notes="cd ${XDG_DOCUMENTS_DIR:-$HOME/Documents}/lib && ls" +alias dl="cd ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}" +alias dt="cd ${XDG_DESKTOP_DIR:-$HOME/Desktop}" +alias music="cd ${XDG_MUSIC_DIR:-$HOME/Music}" +alias pics="cd ${XDG_PICTURES_DIR:-$HOME/Pictures}" +alias vids="cd ${XDG_VIDEOS_DIR:-$HOME/Videos}" + +repo() { + local SRC_DIRECTORY="${1:-$HOME/src}" + local repo=$( + find "${SRC_DIRECTORY}" \ + -mindepth 1 \ + -maxdepth 3 \ + -type d \ + -exec test -d "{}/.git" \; -print \ + | sed "s|${SRC_DIRECTORY}/||" \ + | fzf \ + --preview "([ -f $SRC_DIRECTORY/{}/README.md ] && bat --style=plain --color=always $SRC_DIRECTORY/{}/README.md || echo 'No README'; echo; git -C $SRC_DIRECTORY/{} status --short --branch)" \ + --preview-window=up:60%) \ + || return + cd "${SRC_DIRECTORY}/$repo" || { echo "Failed to cd"; return; } +} + +########################### +# Miscellaneous # +########################### + +compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; } +alias decompress="tar -xzf" +