9.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Bash Configuration
~/.bashrc~/.bash_profile~/.profile~/.inputrc
~/.bashrc
If not running interactively, don't do anything
  [[ $- != *i* ]] && return
Bash Completion
  [ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
FZF
  source /usr/share/fzf/key-bindings.bash
Ignore case for auto-completion
  bind "set completion-ignore-case on"
  bind "set show-all-if-ambiguous on"
Use Color
  use_color=true
Some config
  # Unset some variables
  unset use_color safe_term match_lhs sh
  # Allow local processes with root privileges to connect to the locally running X server
  xhost +local:root > /dev/null 2>&1
  # Autocomplete sudo commands
  complete -cf sudo
  # Line wrap on window resize
  shopt -s checkwinsize
  # Expand Aliases
  shopt -s expand_aliases
  # Auto "cd" when entering just a path
  shopt -s autocd
  # Enable history appending instead of overwriting
  shopt -s histappend
Prompt - PS1
  export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\W\[$(tput setaf 1)\]]\[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]"
Rebind up and down arrow keys to search through bash history
  bind '"\e[A": history-search-backward'
  bind '"\e[B": history-search-forward'
Aliases
Better defaults for some commands
  alias ls='ls -hN --color=auto --group-directories-first'
  alias grep='grep --colour=auto'
  alias cp="cp -i"     # confirm before overwriting something
  alias df='df -h'     # human-readable sizes
  alias free='free -m' # show sizes in MB
  alias mutt="neomutt"
  alias tmux='tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf'
One letter aliases
  alias r="ranger"
  alias t="tmux"
  alias v="nvim"
  alias sv='sudo -E nvim'
  alias g="git"
  alias m="neomutt"
  alias o="xdg-open"
Neovim
  command -v nvim >/dev/null && alias vim="nvim" vimdiff="nvim -d" # Use neovim for vim if present.
Vim-like
  alias :q=exit
  alias :e=nvim
Print each PATH entry on a separate line
  alias path='echo -e ${PATH//:/\\n}'
Functions
colors - Display colors
  colors() {
      local fgc bgc vals seq0
      printf "Color escapes are %s\n" '\e[${value};...;${value}m'
      printf "Values 30..37 are \e[33mforeground colors\e[m\n"
      printf "Values 40..47 are \e[43mbackground colors\e[m\n"
      printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"
      # foreground colors
      for fgc in {30..37}; do
          # background colors
          for bgc in {40..47}; do
              fgc=${fgc#37} # white
              bgc=${bgc#40} # black
              vals="${fgc:+$fgc;}${bgc}"
              vals=${vals%%;}
              seq0="${vals:+\e[${vals}m}"
              printf "  %-9s" "${seq0:-(default)}"
              printf " ${seq0}TEXT\e[m"
              printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
          done
          echo; echo
      done
  }
tre - Tree display
tre is a shorthand for tree with hidden files and color enabled, ignoring
the .git directory, listing directories first. The output gets piped into
less with options to preserve color and line numbers, unless the output is
small enough for one screen.
  function tre() {
      tree -aC -I '.git|node_modules|bower_components' --dirsfirst "$@" | less -FRNX;
  }
mkd - Create a new directory and enter it
  function mkd() {
      mkdir -p "$@" && cd "$_";
  }
fs - Filesize of directory
  function fs() {
      if du -b /dev/null > /dev/null 2>&1; then
          local arg=-sbh;
      else
          local arg=-sh;
      fi
      if [[ -n "$@" ]]; then
          du $arg -- "$@";
      else
          du $arg .[^.]* ./*;
      fi;
  }
nullify - Redirect both standard output and standard error, as well as sending to background
  function nullify() {
      "$@" >/dev/null 2>&1
  }
sms - Send SMS
  sms(){
      local args="$@"
      # local phone_number name phone_type
      # khard phone --parsable | sort -u | fzf | IFS=$'\t' read -r phone_number name phone_type
      local phone_number=$(khard phone --parsable | sort -u | fzf | cut -f1 -d$'\t')
      if [[ -z "${phone_number}" ]]; then
          echo No recipient was chosen >&2
          return
      else
          kdeconnect-cli --send-sms "${args}" --destination "${phone_number}" --device 4de3b5de2264a17c
      fi
  }
Bash History
Undocumented feature which sets the size to "unlimited". http://stackoverflow.com/questions/9457233/unlimited-bash-history
  export HISTFILESIZE=
  export HISTSIZE=
  export HISTTIMEFORMAT="[%F %T] "
Change the file location because certain bash sessions truncate .bash_history file upon close. http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
  export HISTFILE=~/.bash_eternal_history
Force prompt to write history after every command. http://superuser.com/questions/20900/bash-history-loss
  PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
~/.bash_profile
  [[ -f ~/.profile ]] && . ~/.profile
  [[ -f ~/.bashrc ]] && . ~/.bashrc
~/.profile
QT And GTK Themes
  export QT_QPA_PLATFORMTHEME="qt5ct"
  export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
Gui program to ask for sudo password
  export SUDO_ASKPASS=~/.local/bin/askpass-rofi
Gnome Keyring Daemon
Enable the keyring for applications run through the terminal
  if [ -n "$DESKTOP_SESSION" ];then
      eval $(gnome-keyring-daemon --start)
      export SSH_AUTH_SOCK
  fi
Export some default applications
  export EDITOR="nvim"
  export TERMINAL="termite"
  export BROWSER="qutebrowser"
  export READER="zathura"
  export FILE="ranger"
Exports
Term
This is important for termite to work when sshing in remote machines.
  export TERM=xterm-color
XDG Default
  export XDG_CONFIG_HOME="$HOME/.config"
Use Ripgrep for FZF
  export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
  export FZF_DEFAULT_OPTS='--layout=reverse --height=20'
Goland
  export GOPATH=$HOME/go
Latex Path
  export TEXMFHOME=$HOME/.local/share/texmf
Bitwarden Session
  export BW_SESSION="HH0yycfocRSuGtq/iW1e6v13PQ1sShMXbMhdb/En94S6OcIXFnJlLEyU+dySsmf2YShY4CImoB5FrxgdPsY9Qw=="
Python Path
  export PYTHONPATH="${PYTHONPATH}:/usr/lib/python3.9/site-packages/configobj"
Path
  PATH=$HOME/appimages:$PATH
  PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH
  PATH=$GOPATH:$GOPATH/bin:$PATH
  PATH=~/.emacs.d/bin:$PATH
  export PATH
Automatically run startx
  if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
      exec startx
  fi
~/.inputrc
Completion:
  # Single tab for autocompletion
  set show-all-if-ambiguous on
  # Ignore case for completion
  set completion-ignore-case on
vi mode:
  # VI mode (works in bash and zsh)
  set editing-mode vi
  # Show which mode (normal or insert)
  set show-mode-in-prompt on
  # Show the mode by changing the cursor
  set vi-ins-mode-string \1\e[6 q\2
  set vi-cmd-mode-string \1\e[2 q\2
Key-bindings for vi-mode:
  set keymap vi-command
  # these are for vi-command mode
  Control-l: clear-screen
  Control-a: beginning-of-line
  Control-e: end-of-line
  Control-w: "\C-aisudo \C-e"
  set keymap vi-insert
  # these are for vi-insert mode
  Control-l: clear-screen
  Control-a: beginning-of-line
  Control-e: end-of-line
  Control-w: "\C-asudo \C-e"
Colorized completion
  # Color files by types
  set colored-stats On
  # Append char to indicate type
  set visible-stats On
  # Mark symlinked directories
  set mark-symlinked-directories On
  # Color the common prefix
  set colored-completion-prefix On
  # Color the common prefix in menu-complete
  set menu-complete-display-prefix On
Don't echo ^C after Ctrl+C is pressed.
  set echo-control-characters off