# Bash initialization for interactive non-login shells and
# for remote shells (info "(bash) Bash Startup Files").

# Export 'SHELL' to child processes.  Programs such as 'screen'
# honor it and otherwise use /bin/sh.
export SHELL

if [[ $- != *i* ]]
then
    # We are being invoked from a non-interactive shell.  If this
    # is an SSH session (as in "ssh host command"), source
    # /etc/profile so we get PATH and other essential variables.
    [[ -n "$SSH_CLIENT" ]] && source /etc/profile

    # Don't do anything else.
    return
fi

if [ -n "$IS_GUIX_SYSTEM" ]; then
    # Source the system-wide file.
    source /etc/bashrc
fi

# prompt
# ------

if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# Set a fancy prompt (non-color, unless we know we "want" color).
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# Uncomment for a colored prompt, if the terminal has the capability;
# turned off by default to not distract the user: the focus in a
# terminal window should be on the output of commands, not on the
# prompt.
# force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and
	# such a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# Set the title to user@host:dir for some terminal emulators.
case "$TERM" in
    xterm*|rxvt*|foot*)
        PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h:\w\a\]$PS1"
        ;;
    *)
        ;;
esac

# cursor
# ------

# i-beam cursor (uncomment one of the two):
# echo -e "\033[5 q"    # blinking
# echo -e "\033[6 q"    # non-blinking

# general configuration and completions
# -------------------------------------

# disallow overwriting existing file using redirection
set -o noclobber
# append to the history file, don't overwrite it
shopt -s histappend
shopt -s cmdhist
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
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
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=
HISTFILESIZE=
# don't put duplicate lines or lines starting with space in the
# history.
HISTCONTROL=ignoreboth
# ignore a few very common commands and don't add them to history
#HISTIGNORE='ls:l:ll:s:g:[bf]g:history:da:li'
HISTIGNORE='sc:sr*'
HISTTIMEFORMAT='%F %T '
stty stop ""

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# enable programmable completion features (not needed if already
# enabled in /etc/bash.bashrc and if /etc/profile sources
# /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# source Guix shell config dirs, for vte.sh and bash completions
GUIX_PROFILES=("${HOME}/.guix-profile"
               "${HOME}/.config/guix/current")
for profile in "${GUIX_PROFILES[@]}"; do
    for dir in "${profile}/etc/bash_completion.d" "${profile}/etc/profile.d"; do
        if [ -d "${dir}" ]; then
            for f in "${dir}"/*; do
                . $f
            done
        fi
    done
done

# aliases and functions
# ---------------------

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# listing
alias ls='ls --color=auto'
alias l='ls -Fl'                # long format
alias ll='l -a'                 # all files
alias llh='ll -h'               # human-readable sizes
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
# cp/mv confirmation and verbosity
alias cp="cp -iv"
alias mv="mv -iv"
# grep
alias grep='grep --color=auto'
alias egrep='grep -E --color=auto'
alias fgrep='grep -F --color=auto'
# mpv
#alias mpv="mpv --ytdl-format=mp4"
alias mpva="mpv --ytdl-format=bestaudio"
# mail
alias mbsync='mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc'
alias getmail='getmail --getmaildir "$XDG_CONFIG_HOME"/getmail --rcfile getmailrc'
alias m="mbsync kelar; mbsync ia; getmail"
# theme
alias da='change-theme dark'
alias li='change-theme light'
# sway
alias sr='sway-run'
alias srr='sway-run-remote'
alias srw='export WAYLAND_DISPLAY=wayland-1; wayvnc'
# misc
alias sc='screen'
alias alert='notify-send --urgency=low \
-i "$([ $? = 0 ] && echo terminal || echo error)" \
"$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

bash_completions_dir=/usr/share/bash-completion/completions/

alias dquilt="quilt --quiltrc=${XDG_CONFIG_HOME}/quilt/quiltrc-dpkg"
quilt_comps="${bash_completions_dir}/quilt"
if [ -f "${quilt_comps}" ]; then
     . "${quilt_comps}"
     complete -F _quilt_completion -o filenames dquilt
fi

pass_otp_comps="${bash_completions_dir}/pass-otp"
if [ -f "${pass_otp_comps}" ]; then
     . "${pass_otp_comps}"
fi

function t {
  cd $(mktemp -d /tmp/$1.XXXX)
}