Removed fish for basic bash config.
This commit is contained in:
@@ -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)\$ '
|
||||||
@@ -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 ''
|
|
||||||
Reference in New Issue
Block a user