From 81395b1f43ed594a6e088430f710c4ba0593f620 Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Thu, 23 Jul 2026 22:11:45 +0200 Subject: [PATCH] Removed fish for basic bash config. --- config/bash/bashrc | 157 ++++++++++++++++++++++++++++++++++++++++ config/fish/config.fish | 137 ----------------------------------- 2 files changed, 157 insertions(+), 137 deletions(-) create mode 100644 config/bash/bashrc delete mode 100644 config/fish/config.fish diff --git a/config/bash/bashrc b/config/bash/bashrc new file mode 100644 index 0000000..06ffc42 --- /dev/null +++ b/config/bash/bashrc @@ -0,0 +1,157 @@ +# ============================================================================== +# ENVIRONMENT VARIABLES +# ============================================================================== + +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_STATE_HOME="$HOME/.local/state" +export GOOGLE_API_KEY="no" +export GOOGLE_DEFAULT_CLIENT_ID="no" +export GOOGLE_DEFAULT_CLIENT_SECRET="no" + +# Core settings +export EDITOR="nvim" +export VISUAL="nvim" +export MANPAGER="nvim +Man!" +export BROWSER="firefox" +# export TERM=xterm-256color +export COLORTERM="truecolor" +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" + +# Development +export DEBUG=1 +export GOPATH="$HOME/.go" +export GOCACHE="$HOME/.go/cache" +export GOROOT=/usr/local/go +export PATH="/usr/local/go/bin:$GOPATH/bin:$PATH" + +# Direnv +eval "$(direnv hook bash)" + +# ============================================================================== +# FZF configuration +# ============================================================================== +export FZF_DEFAULT_OPTS=" + --height 40% + --layout=reverse + --border + --ansi + --preview-window=down:30% + --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' + --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc + --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" + +export FZF_DEFAULT_COMMAND='fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H' + +# ============================================================================== +# PATH CONFIGURATION +# ============================================================================== +# bash has no fish_add_path (which dedupes + checks existence), so roll a +# small helper that does the same thing. +add_to_path() { + if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then + PATH="$1:$PATH" + fi +} + +add_to_path /var/lib/flatpak/exports/bin +add_to_path /usr/local/bin +add_to_path /usr/local/go/bin +add_to_path "$GOPATH/bin" +add_to_path "$HOME/bin" +add_to_path "$HOME/.local/bin" +add_to_path "$HOME/.local/share/flatpak/exports/bin" +add_to_path "$HOME/.npm-global/bin" +add_to_path "$HOME/.odin/" + +export PATH + +# ============================================================================== +# ALIASES +# ============================================================================== +# List commands +alias ls='ls -lh --color=auto --group-directories-first' +alias ll='ls -lAh --color=auto --group-directories-first' +alias la='ls -la --color=auto --group-directories-first' +alias l='ls -CF --color=auto' +alias tree='tree --dirsfirst -C' + +# Safety aliases +alias rm='rm -I --preserve-root' +alias mv='mv -i' +alias cp='cp -i' +alias ln='ln -i' + +# System information +alias df='df -h' +alias du='du -h' +alias free='free -h' +alias bat='bat --theme="ansi" --paging=never' + +# Application shortcuts +alias vi='nvim' +alias :q='exit' +alias files='thunar .' +alias fetch='pfetch' + +# Custom shortcuts +alias reload='source ~/.bashrc' +alias dots='cd ~/.dotfiles && nvim' +alias doti='bash ~/.dotfiles/install.sh -i' +alias dotl='bash ~/.dotfiles/install.sh -l' +alias myip='curl ipinfo.io/ip; echo ""' +alias query='xbps-query -Rs' +alias commits='git log origin/main..HEAD --oneline' + +## Basic project picker using fzf +pp() { + local project + project=$( + find ~/Projects -mindepth 1 -maxdepth 1 -type d | + awk -F/ '{print $NF "\t" $0}' | + fzf --with-nth=1 + ) + + [ -z "$project" ] && return + + project=$(echo "$project" | cut -f2) + cd "$project" && clear +} + +# ============================================================================== +# PROMPT +# ============================================================================== +# bash has no built-in __fish_git_prompt_* equivalent, so we write a small +# git-branch function and build PS1 by hand. + +parse_git_branch() { + git branch 2>/dev/null | sed -n '/\* /s///p' +} + +git_prompt_info() { + local branch + branch=$(parse_git_branch) + [ -z "$branch" ] && return + + local esc=$'\033' + local status marker + status=$(git status --porcelain 2>/dev/null) + + if [ -n "$status" ]; then + if echo "$status" | grep -q '^[MADRC]'; then + marker=" ${esc}[33m●${esc}[0m " # staged - yellow ● + elif echo "$status" | grep -q '^??'; then + marker="" # untracked - no char + else + marker=" ${esc}[31m+${esc}[0m " # dirty - red + + fi + else + marker=" ${esc}[1;32m${esc}[0m " # clean - green + fi + + echo " ${esc}[1;35m(${branch})${esc}[0m${marker}" +} + +PS1='\[\033[32m\]\u\[\033[0m\]@\[\033[34m\]\h\[\033[0m\]:\[\033[36m\]\w\[\033[0m\]$(git_prompt_info)\$ ' \ No newline at end of file diff --git a/config/fish/config.fish b/config/fish/config.fish deleted file mode 100644 index cff077d..0000000 --- a/config/fish/config.fish +++ /dev/null @@ -1,137 +0,0 @@ -# ============================================================================== -# ENVIRONMENT VARIABLES -# ============================================================================== -# Disable fish greeting -set -g fish_greeting -set -g fish_prompt_pwd_dir_length 999 - -set -gx XDG_CONFIG_HOME $HOME/.config -set -gx XDG_DATA_HOME $HOME/.local/share -set -gx XDG_CACHE_HOME $HOME/.cache -set -gx XDG_STATE_HOME $HOME/.local/state -set -gx GOOGLE_API_KEY "no" -set -gx GOOGLE_DEFAULT_CLIENT_ID "no" -set -gx GOOGLE_DEFAULT_CLIENT_SECRET "no" - -# Core settings -set -gx EDITOR "nvim" -set -gx VISUAL "nvim" -set -gx MANPAGER "nvim +Man!" -set -gx BROWSER firefox -# set -gx TERM xterm-256color -set -gx COLORTERM truecolor -set -gx LANG "en_US.UTF-8" -set -gx LC_ALL "en_US.UTF-8" - -# Development -set -gx DEBUG 1 -set -gx GOPATH "$HOME/.go" -set -gx GOCACHE "$HOME/.go/cache" -set -gx GOROOT /usr/local/go -set -gx PATH /usr/local/go/bin $GOPATH/bin $PATH - -# Direnv -direnv hook fish | source - -# ============================================================================== -# FZF configuration -# ============================================================================== -set -gx FZF_DEFAULT_OPTS " - --height 40% - --layout=reverse - --border - --ansi - --preview-window=down:30% - --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' - --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc - --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" - -set -gx FZF_DEFAULT_COMMAND 'fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H' - -# ============================================================================== -# PATH CONFIGURATION -# ============================================================================== -# Fish's 'fish_add_path' is smart: it checks if the dir exists and prevents duplicates. -fish_add_path /var/lib/flatpak/exports/bin -fish_add_path /usr/local/bin -fish_add_path /usr/local/go/bin -fish_add_path $GOPATH/bin -fish_add_path "$HOME/bin" -fish_add_path "$HOME/.local/bin" -fish_add_path "$HOME/.local/share/flatpak/exports/bin" -fish_add_path "$HOME/.npm-global/bin" -fish_add_path "$HOME/.odin/" - -# ============================================================================== -# ALIASES & ABBREVIATIONS -# ============================================================================== -# List commands -alias ls='ls -lh --color=auto --group-directories-first' -alias ll='ls -lAh --color=auto --group-directories-first' -alias la='ls -la --color=auto --group-directories-first' -alias l='ls -CF --color=auto' -alias tree='tree --dirsfirst -C' - -# Safety aliases -alias rm='rm -I --preserve-root' -alias mv='mv -i' -alias cp='cp -i' -alias ln='ln -i' - -# System information -alias df='df -h' -alias du='du -h' -alias free='free -h' -alias bat='bat --theme="ansi" --paging=never' - -# Application shortcuts -alias vi='nvim' -alias :q='exit' -alias lg='lazygit' -alias files='thunar .' -alias fetch='pfetch' - -# Custom shortcuts -alias reload='source ~/.config/fish/config.fish' -alias dots='cd ~/.dotfiles && nvim' -alias doti='bash ~/.dotfiles/install.sh -i' -alias dotl='bash ~/.dotfiles/install.sh -l' -alias myip='curl ipinfo.io/ip; echo ""' -alias query='xbps-query -Rs' -alias commits='git log origin/main..HEAD --oneline' - - -## Basic project picker using mini sessions and neovim -function pp - set project ( - find ~/Projects -mindepth 1 -maxdepth 1 -type d | - awk -F/ '{print $NF "\t" $0}' | - fzf --with-nth=1 - ) - - if test -z "$project" - return - end - - set project (echo $project | cut -f2) - cd $project && clear -end - -# ============================================================================== -# PROMPT COLORS -# ============================================================================== -set -l user_color (set_color green) -set -l host_color (set_color blue) -set -l path_color (set_color cyan) - -# Fish's built-in git prompt configuration -set -eg ___fish_git_prompt_char_stateseparator -set -g __fish_git_prompt_show_informative_status 1 -set -g __fish_git_prompt_color_branch magenta --bold -set -g __fish_git_prompt_color_stagedstate yellow -set -g __fish_git_prompt_color_invalidstate red -set -g __fish_git_prompt_color_cleanstate green --bold -set -g __fish_git_prompt_separator ' ' -set -g __fish_git_prompt_char_dirtystate '+' -set -g __fish_git_prompt_char_stagedstate '●' -set -g __fish_git_prompt_char_untrackedfiles ''