summaryrefslogtreecommitdiffstats
path: root/.bashrc
blob: b0cbd85d4828dbdbdd679098deada38598389f61 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# 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
# ------

b_prompt() {
    case $TERM in
        xterm*)
            local TITLEBAR='\[\033]0;\h:\w\007\]'
            ;;
        *)
            local TITLEBAR=''
            ;;
    esac

    PS1="${TITLEBAR}\
$([ $(id -u) = "0" ] && printf "\[\e[1;31m\]")\
: \h:\w\
$([ -n "$GUIX_ENVIRONMENT" ] && printf " [env]")\
 ;\
$([ $(id -u) = "0" ] && printf "\[\e[00m\]")\
 "
}
b_prompt

# 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'
HISTTIMEFORMAT='%F %T '
stty stop ""

# 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

alias ls='ls -p --color=auto'
alias l='ls -lh'                # long format and human-readable sizes
alias ll='l -A'                 # long format, all files
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias mpv="mpv --ytdl-format=mp4"
alias mv="mv -iv"
alias cp="cp -iv"
alias mbsync='mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc'
alias getmail='getmail --getmaildir "$XDG_CONFIG_HOME"/getmail --rcfile getmailrc'
alias m="mbsync csclub; mbsync uwaterloo; mbsync shemshak; mbsync gnub"
alias best="youtube-dl -f best"
alias e="$EDITOR"
alias se="SUDO_EDITOR=\"emacsclient\" sudo -e"
alias s="startx"

alias da='change-theme dark'
alias li='change-theme light'

alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
complete -F _quilt_completion -o filenames dquilt

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