From e900c217c1e50a4067384c9bb3fe43dff61986c6 Mon Sep 17 00:00:00 2001 From: Mitsuo Tokumori Date: Fri, 24 Nov 2023 00:31:06 -0500 Subject: Restructure dirs to mimic XDG base dirs Non XDG base directories have a leading '_'. --- config/bash/bashrc | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 config/bash/bashrc (limited to 'config/bash/bashrc') diff --git a/config/bash/bashrc b/config/bash/bashrc new file mode 100644 index 0000000..7f0abff --- /dev/null +++ b/config/bash/bashrc @@ -0,0 +1,160 @@ +# +# ~/.bashrc: executed by bash(1) for interactive shells +# +# Tinkerer's guide to a prettier and colorful CLI: +# https://wiki.archlinux.org/title/Color_output_in_console + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# TROUBLESHOOTING +# =============== + +export EDITOR=nvim +export VISUAL=nvim +export TERM=xterm-256color # Required for AWS VPS work good when SSHing + +# https://wiki.archlinux.org/title/GnuPG#Configure_pinentry_to_use_the_correct_TTY +export GPG_TTY=$(tty) +gpg-connect-agent updatestartuptty /bye >/dev/null + + +# Bash configuration +# ================== + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. (Isn't this the default behaviour?) +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# Alias definitions. +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# Don't forget to install bash-completion + +# Disable CTRL+S and CTRL+Q keybindings +# (used to pause and resume output to terminal) +# See: https://unix.stackexchange.com/a/137846/347754 +# https://unix.stackexchange.com/a/73499/347754 +stty -ixon + + +# Prompt +# ------ + +# - Basic [user@host $pwd]$ +#PS1='[\u@\h \W]\$ ' +# - Blue timestamp and italic green pwd +#PS1='\[\033[34m\]|\D{%H:%M:%S}| \[\033[3;32m\][\w]\[\033[00m\]\n\$ ' + +# - user@host pwd (git prompt) +# Ref.: https://stackoverflow.com/a/15398153/7498073 +source ~/.git-prompt.sh +PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ ' + + +# Environment +# =========== + +# FIXME: This is executed twice. One just after login (first bash) in tty. And +# again then again in the terminal emulator. +PATH="$HOME/.local/bin:$PATH" +PATH="$HOME/mahcode/bin:$PATH" +PATH="$HOME/code/tex-live-native/build/bin/x86_64-linux:$PATH" +export PATH + +export MANPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$MANPATH" +export INFOPATH="$HOME/code/tex-live-native/build/texmf-dist/doc/man:$INFOPATH" + +# XDG = Cross-Desktop Group +# For more info see https://wiki.archlinux.org/index.php/XDG_Base_Directory +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_STATE_HOME="$HOME/.local/state" + +export LC_COLLATE=C + +# fcitx5 (input method) +export GTK_IM_MODULE=fcitx +export QT_IM_MODULE=fcitx +export XMODIFIERS=@im=fcitx + +# less +LESS="-i " # ignore case +LESS+="-S " # don't chop long lines +LESS+="--RAW-CONTROL-CHARS" +export LESS + +# better `ls` (and other programs like `tree`) colors +eval "$(dircolors)" + + +# Extra programs +# -------------- + +# tldr +[ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME" + +# gpg +#export GPG_TTY=$(tty) + +# nvm +#source /usr/share/nvm/init-nvm.sh + +# Pandoc: Bash completition for pandoc +if [ -f /usr/bin/pandoc ]; then + eval "$(pandoc --bash-completion)" +fi + +# Node.js +#export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules + +# Rust +#. "$HOME/.cargo/env" + +# Ruby on Rails +#https://stackoverflow.com/a/19072136/7498073 +#gempath="$HOME/.local/share/gem/ruby/3.0.0/bin" +#export GEM_HOME="$(ruby -e 'puts Gem.user_dir')" +#if [[ -d $gempath ]]; then +# export PATH="$PATH:$GEM_HOME/bin" +#fi + + +# Fun +# ================ + +# Greeting or salute +if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then + #cowsay -f flaming-sheep "oh no" # original + #cowsay $(fortune -e 30% debian-hints 20% linux 20% science \ + #cowsay $(fortune 30% debian-hints 20% linux 20% science \ + # 20% off/linux 10% off/black-humor) + cowsay $(fortune) + #fortune ascii-art +else + echo "Welcome back $LOGNAME" +fi -- cgit v1.2.3