diff options
author | Mattias Andrée <maandree@kth.se> | 2021-06-25 12:56:30 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2021-06-25 12:56:30 +0200 |
commit | 5a7db2f34aa6a6787d98a001b6d28be97f36abf4 (patch) | |
tree | 52db199005cc5daee35b5c0e9b3d28b534449e1c /bash | |
download | dotfiles-5a7db2f34aa6a6787d98a001b6d28be97f36abf4.tar.gz dotfiles-5a7db2f34aa6a6787d98a001b6d28be97f36abf4.tar.bz2 dotfiles-5a7db2f34aa6a6787d98a001b6d28be97f36abf4.tar.xz |
First commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'bash')
-rw-r--r-- | bash/Makefile | 47 | ||||
-rw-r--r-- | bash/aliases | 87 | ||||
-rw-r--r-- | bash/aliases-Zenith | 17 | ||||
-rw-r--r-- | bash/bashrc | 64 | ||||
-rw-r--r-- | bash/bashrc_palette | 89 | ||||
-rw-r--r-- | bash/bashrc_prompt | 413 | ||||
-rw-r--r-- | bash/logout | 9 | ||||
-rw-r--r-- | bash/profile | 17 |
8 files changed, 743 insertions, 0 deletions
diff --git a/bash/Makefile b/bash/Makefile new file mode 100644 index 0000000..7ea782a --- /dev/null +++ b/bash/Makefile @@ -0,0 +1,47 @@ +.POSIX: + +install: + mkdir -p -- ~/.var/cache + mkdir -p -- ~/.config/bash + touch -- ~/.var/cache/bash_history + test ! -d ~/.bash_history + test ! -d ~/.bash_logout + test ! -d ~/.bash_profile + test ! -d ~/.bashrc + test ! -d ~/.config/bash/logout + test ! -d ~/.config/bash/profile + test ! -d ~/.config/bash/bashrc + test ! -d ~/.config/bash/bashrc_palette + test ! -d ~/.config/bash/bashrc_prompt + test ! -d ~/.config/bash/aliases + test ! -d ~/.config/bash/aliases-Zenith + ln -sf -- .var/cache/bash_history ~/.bash_history + ln -sf -- .config/bash/logout ~/.bash_logout + ln -sf -- .config/bash/profile ~/.bash_profile + ln -sf -- .config/bash/bashrc ~/.bashrc + ln -sf -- ~/.dotfiles/bash/logout ~/.config/bash/logout + ln -sf -- ~/.dotfiles/bash/profile ~/.config/bash/profile + ln -sf -- ~/.dotfiles/bash/bashrc ~/.config/bash/bashrc + ln -sf -- ~/.dotfiles/bash/bashrc_palette ~/.config/bash/bashrc_palette + ln -sf -- ~/.dotfiles/bash/bashrc_prompt ~/.config/bash/bashrc_prompt + ln -sf -- ~/.dotfiles/bash/aliases ~/.config/bash/aliases + ln -sf -- ~/.dotfiles/bash/aliases-Zenith ~/.config/bash/aliases-Zenith + +uninstall: + -unlink -- ~/.bash_history + -unlink -- ~/.bash_logout + -unlink -- ~/.bash_profile + -unlink -- ~/.bashrc + -rm -f -- ~/.var/cache/bash_history + -unlink -- ~/.config/bash/logout + -unlink -- ~/.config/bash/profile + -unlink -- ~/.config/bash/bashrc + -unlink -- ~/.config/bash/bashrc_palette + -unlink -- ~/.config/bash/bashrc_prompt + -unlink -- ~/.config/bash/aliases + -unlink -- ~/.config/bash/aliases-Zenith + -rmdir -- ~/.config/bash/aliases.d + -rmdir -- ~/.config/bash/bashrc.d + -rmdir -- ~/.config/bash + +.PHONY: install uninstall diff --git a/bash/aliases b/bash/aliases new file mode 100644 index 0000000..140f958 --- /dev/null +++ b/bash/aliases @@ -0,0 +1,87 @@ +# -*- shell-script -*- + +# DESCRIPTION: Create directories and parents, if missing, and move into the first one +# USAGE: mkcd <directory> [<additional directories to create>] +mkcd () { + mkdir -p -- "$@" + cd -- "$1" +} + +# DESCRIPTION: Start bash in a temporary directory and destroy it after exiting the new bash instance +# USAGE: tmpsh +tmpsh () ( + local tmpdir + tmpdir="${XDG_RUNTIME_DIR}" + if test -z "$tmpdir"; then + tmpdir=/tmp + fi + tmpdir="$tmpdir/tmpsh-$$.d" + mkdir -p -- "$tmpdir" + cd -- "$tmpdir" + bash + cd / + rm -rf -- "$tmpdir" + test ! -e "$tmpdir" +) + +#DESCRIPTION: Reload the shell configurations +#USAGE: resh +resh () { + . ~/.bashrc +} + +#DESCRIPTION: Edit the shell configurations +#USAGE: edsh +edsh () { + if [ -z "$EDITOR" ]; then + echo 'No default editor is set, please configure the environment variable EDITOR' + else + $EDITOR ~/.bashrc + fi +} + +# DESCRIPTION: Run a command in a infinite loop with a sleep between executions +# USAGE: forever "<arguments for sleep>" <command> +forever () { + time="$1" + shift 1 + while true; do + "$@" + sleep $time + done +} + +#DESCRIPTION: ls with long listing, classification with appendix character, hidden files and the . and .. directories +alias ll='ls -alF' + +#DESCRIPTION: ls with hidden files +alias la='ls -A' + +#DESCRIPTION: ls with classification with appendix character +alias l='ls -CF' + +#DESCRIPTION: Go to the parent directory +alias ..="cd .." + + + +#libnotify +# DESCRIPTION: Add an "alert" alias for long running commands. Use like so: sleep 10; alert +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$//'\'')"' + + + +for __script in ~/.config/bash/aliases.d/*; do + if test -r "${__script}"; then + . "${__script}" + fi +done +unset __script + +if test -r ~/.config/bash/"aliases-$(hostname)"; then + . ~/.config/bash/"aliases-$(hostname)" +fi + +if test -r ~/work/.config/bash/aliases; then + . ~/work/.config/bash/aliases +fi diff --git a/bash/aliases-Zenith b/bash/aliases-Zenith new file mode 100644 index 0000000..ac794c9 --- /dev/null +++ b/bash/aliases-Zenith @@ -0,0 +1,17 @@ +# -*- shell-script -*- + +mount-crypt () { + sudo printf '' && \ + device="$(sudo losetup --show -f -P /media/Secondary/.crypt/crypt.img)" && \ + printf '%s\n' "${device}" > "${XDG_RUNTIME_DIR}/CryptCrypt" && \ + gpg --decrypt /media/Secondary/.crypt/crypt.key | sudo cryptsetup -d - open "${device}" CryptCrypt && \ + mkdir -p ~/Crypt && \ + sudo mount /dev/mapper/CryptCrypt ~/Crypt +} + +umount-crypt () { + sudo umount ~/Crypt + rmdir ~/Crypt + sudo cryptsetup close CryptCrypt + sudo losetup --detach "$(cat -- "${XDG_RUNTIME_DIR}/CryptCrypt")" +} diff --git a/bash/bashrc b/bash/bashrc new file mode 100644 index 0000000..a500a9d --- /dev/null +++ b/bash/bashrc @@ -0,0 +1,64 @@ +# -*- shell-script -*- + +# If not running interactively, don't do anything +if [[ $- != *i* ]]; then + return +fi + + +# Don't put duplicate lines in the history. See bash(1) for more options +# ... or force ignoredups and ignorespace +HISTCONTROL=ignoredups:ignorespace +# 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. +shopt -s checkwinsize + + +set -o physical +alias cd='cd -L' + + + +if test -r ~/.config/bash/aliases; then + . ~/.config/bash/aliases +fi + +if test -r /etc/bash_opt; then + . /etc/bash_opt +fi + +~/.config/bash/bashrc_palette +~/.config/bash/bashrc_prompt + +for __script in ~/.config/bash/bashrc.d/*; do + if test -r "${__script}"; then + . "${__script}" + fi +done +unset __script + +if test -r ~/.config/bash/"bashrc-$(hostname)"; then + . ~/.config/bash/"bashrc-$(hostname)" +fi + +if test -r ~/work/.config/bash/bashrc; then + . ~/work/.config/bash/bashrc +fi + + + +if test "$TERM" = linux; then + printf '\e[?8c' + if test -n "$PALETTE"; then + printf "$PALETTE"'\e[H\e[2J' + fi + palette-set `blackNcsColours` +elif test "$TERM" = xterm; then + export TERM=xterm-256color +fi +featherweight-off diff --git a/bash/bashrc_palette b/bash/bashrc_palette new file mode 100644 index 0000000..8a4405a --- /dev/null +++ b/bash/bashrc_palette @@ -0,0 +1,89 @@ +# DESCRIPTION: Palettes for the terminal + +# DESCRIPTION: Restore to the last selected palette +# USAGE: palette-reset + +# DESCRIPTION: Store the last selected palette has that on set by <command> +# USAGE: palette-set <command> + +# DESCRIPTION: The last choosen palette +# VARIABLE: $PALETTE + +# Commands for setting the palette: +# linuxColours The standard Linux VT palette +# tangoColours The Tango palette +# tangoidColours The Tango palette, but with black background +# cobaltColours The Cobalt palette +# yellowColours A palette with yellow background +# redColours A palette with red background +# ncsColours A palette based on NCS S 2050 with blue background +# lightNcsColours A palette based on NCS S 2050 with lighter blue background +# blackNcsColours A palette based on NCS S 2050 with black background + + +__linux_c='\e]4;0;rgb:00/00/00\e\\\e]4;1;rgb:AA/00/00\e\\\e]4;2;rgb:00/AA/00\e\\\e]4;3;rgb:AA/55/00\e\\\e]4;4;rgb:00/00/AA\e\\\e]4;5;rgb:AA/00/AA\e\\\e]4;6;rgb:00/AA/AA\e\\\e]4;7;rgb:AA/AA/AA\e\\\e]4;8;rgb:55/55/55\e\\\e]4;9;rgb:FF/55/55\e\\\e]4;10;rgb:55/FF/55\e\\\e]4;11;rgb:FF/FF/55\e\\\e]4;12;rgb:55/55/FF\e\\\e]4;13;rgb:FF/55/FF\e\\\e]4;14;rgb:55/FF/FF\e\\\e]4;15;rgb:FF/FF/FF\e\\' + +__tango_c='\e]4;0;rgb:2E/34/36\e\\\e]4;1;rgb:CC/00/00\e\\\e]4;2;rgb:4E/9A/06\e\\\e]4;3;rgb:C4/A0/00\e\\\e]4;4;rgb:34/65/A4\e\\\e]4;5;rgb:75/50/7B\e\\\e]4;6;rgb:06/98/9A\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:58/58/58\e\\\e]4;9;rgb:FF/55/55\e\\\e]4;10;rgb:55/FF/55\e\\\e]4;11;rgb:FF/FF/55\e\\\e]4;12;rgb:55/55/FF\e\\\e]4;13;rgb:FF/55/FF\e\\\e]4;14;rgb:55/FF/FF\e\\\e]4;15;rgb:FF/FF/FF\e\\' + +__tangoid_c='\e]4;0;rgb:00/00/00\e\\\e]4;1;rgb:CC/00/00\e\\\e]4;2;rgb:4E/9A/06\e\\\e]4;3;rgb:C4/A0/00\e\\\e]4;4;rgb:34/65/A4\e\\\e]4;5;rgb:75/50/7B\e\\\e]4;6;rgb:06/98/9A\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:58/58/58\e\\\e]4;9;rgb:FF/55/55\e\\\e]4;10;rgb:55/FF/55\e\\\e]4;11;rgb:FF/FF/55\e\\\e]4;12;rgb:55/55/FF\e\\\e]4;13;rgb:FF/25/5FF\e\\\e]4;14;rgb:55/FF/FF\e\\\e]4;15;rgb:FF/FF/FF\e\\' + +__cobalt_c='\e]4;0;rgb:02/08/40\e\\\e]4;1;rgb:CC/00/00\e\\\e]4;2;rgb:4E/9A/06\e\\\e]4;3;rgb:C4/A0/00\e\\\e]4;4;rgb:34/657A4\e\\\e]4;5;rgb:75/50/7B\e\\\e]4;6;rgb:06/98/9A\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:58/58/58\e\\\e]4;9;rgb:FF/55/55\e\\\e]4;10;rgb:55/FF/55\e\\\e]4;11;rgb:FF/FF/55\e\\\e]4;12;rgb:55/55/FF\e\\\e]4;13;rgb:FF/55/FF\e\\\e]4;14;rgb:55/FF/FF\e\\\e]4;15;rgb:FF/FF/FF\e\\' + +__yellow_c='\e]4;0;rgb:30/30/08\e\\\e]4;1;rgb:CC/00/00\e\\\e]4;2;rgb:4E/9A/06\e\\\e]4;3;rgb:C4/A0/00\e\\\e]4;4;rgb:34/65/A4\e\\\e]4;5;rgb:75/50/7B\e\\\e]4;6;rgb:06/98/9A\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:58/58/58\e\\\e]4;9;rgb:FF/55/55\e\\\e]4;10;rgb:55/FF/55\e\\\e]4;11;rgb:FF/FF/55\e\\\e]4;12;rgb:55/55/FF\e\\\e]4;13;rgb:FF/55/FF\e\\\e]4;14;rgb:55/FF/FF\e\\\e]4;15;rgb:FF/FF/FF\e\\' + +__red_c='\e]4;0;rgb:30/00/00\e\\\e]4;1;rgb:CD/65/6C\e\\\e]4;2;rgb:32/A6/79\e\\\e]4;3;rgb:CC/AD/47\e\\\e]4;4;rgb:24/95/BE\e\\\e]4;5;rgb:A4/6E/B0\e\\\e]4;6;rgb:00/A0/9F\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:55/57/53\e\\\e]4;9;rgb:EB/5E/6A\e\\\e]4;10;rgb:0E/C2/87\e\\\e]4;11;rgb:F2/CA/38\e\\\e]4;12;rgb:00/AC/E0\e\\\e]4;13;rgb:C4/73/D1\e\\\e]4;14;rgb:00/C3/C7\e\\\e]4;15;rgb:EE/EE/EE\e\\' + +__ncs_c='\e]4;0;rgb:02/08/40\e\\\e]4;1;rgb:CD/65/6C\e\\\e]4;2;rgb:32/A6/79\e\\\e]4;3;rgb:CC/AD/47\e\\\e]4;4;rgb:24/95/BE\e\\\e]4;5;rgb:A4/6E/B0\e\\\e]4;6;rgb:00/A0/9F\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:55/57/53\e\\\e]4;9;rgb:EB/5E/6A\e\\\e]4;10;rgb:0E/C2/87\e\\\e]4;11;rgb:F2/CA/38\e\\\e]4;12;rgb:00/AC/E0\e\\\e]4;13;rgb:C4/73/D1\e\\\e]4;14;rgb:00/C3/C7\e\\\e]4;15;rgb:EE/EE/EE\e\\' + +__light_ncs_c='\e]4;0;rgb:0C/14/58\e\\\e]4;1;rgb:CD/65/6C\e\\\e]4;2;rgb:32/A6/79\e\\\e]4;3;rgb:CC/AD/47\e\\\e]4;4;rgb:24/95/BE\e\\\e]4;5;rgb:A4/6E/B0\e\\\e]4;6;rgb:00/A0/9F\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:55/57/53\e\\\e]4;9;rgb:EB/5E/6A\e\\\e]4;10;rgb:0E/C2/87\e\\\e]4;11;rgb:F2/CA/38\e\\\e]4;12;rgb:00/AC/E0\e\\\e]4;13;rgb:C4/73/D1\e\\\e]4;14;rgb:00/C3/C7\e\\\e]4;15;rgb:EE/EE/EE\e\\' + +__black_ncs_c='\e]4;0;rgb:00/00/00\e\\\e]4;1;rgb:CD/65/6C\e\\\e]4;2;rgb:32/A6/79\e\\\e]4;3;rgb:CC/AD/47\e\\\e]4;4;rgb:24/95/BE\e\\\e]4;5;rgb:A4/6E/B0\e\\\e]4;6;rgb:00/A0/9F\e\\\e]4;7;rgb:D3/D7/CF\e\\\e]4;8;rgb:55/57/53\e\\\e]4;9;rgb:EB/5E/6A\e\\\e]4;10;rgb:0E/C2/87\e\\\e]4;11;rgb:F2/CA/38\e\\\e]4;12;rgb:00/AC/E0\e\\\e]4;13;rgb:C4/73/D1\e\\\e]4;14;rgb:00/C3/C7\e\\\e]4;15;rgb:EE/EE/EE\e\\' + + +if [ "$TERM" = "linux" ]; then + __c () { + sed -e 's:;10;:A:g' -e 's:;11;:B:g' -e 's:;12;:C:g' -e 's:;13;:D:g' -e 's:;14;:E:g' -e 's:;15;:F:g' | + sed -e 's:]4:]P:g' -e 's:;::g' -e 's:rgb::g' -e 's:/::g' -e 's/://g' -e 's:\\e\\\\::g' + } + __linux_c="$(__c <<<"${__linux_c}")" + __tango_c="$(__c <<<"${__tango_c}")" + __tangoid_c="$(__c <<<"${__tangoid_c}")" + __cobalt_c="$(__c <<<"${__cobalt_c}")" + __yellow_c="$(__c <<<"${__yellow_c}")" + __red_c="$(__c <<<"${__red_c}")" + __ncs_c="$(__c <<<"${__ncs_c}")" + __light_ncs_c="$(__c <<<"${__light_ncs_c}")" + __black_ncs_c="$(__c <<<"${__black_ncs_c}")" +fi + +alias linuxColours='echo -en "${__linux_c}"' +alias tangoColours='echo -en "${__tango_c}"' +alias tangoidColours='echo -en "${__tangoid_c}"' +alias cobaltColours='echo -en "${__cobalt_c}"' +alias yellowColours='echo -en "${__yellow_c}"' +alias redColours='echo -en "${__red_c}"' +alias ncsColours='echo -en "${__ncs_c}"' +alias lightNcsColours='echo -en "${__light_ncs_c}"' +alias blackNcsColours='echo -en "${__black_ncs_c}"' + +if [ "$USER" = 'root' ]; then + alias stdColours=redColours +else + alias stdColours=blackNcsColours +fi + +if [ "$COLORTERM" = '' ]; then + stdColours +fi + +PALETTE= + +palette-set () { + PALETTE="$*" +} + +palette-reset () { + printf '%s' "$PALETTE" +} + +palette-set `stdColours` diff --git a/bash/bashrc_prompt b/bash/bashrc_prompt new file mode 100644 index 0000000..5463afb --- /dev/null +++ b/bash/bashrc_prompt @@ -0,0 +1,413 @@ +#DESCRIPTION: A nicer default shell prompt line + + +#DESCRIPTION: Use full block cursor Do not use full block cursor +#USAGE block-on block-off + +#DESCRIPTION: Print username Do not print username Set colour of username +#USAGE: username-on username-off username-colour <ansi-colour> + +#DESCRIPTION: Print hostname Do not print hostname Set colour of hostname +#USAGE: hostname-on hostname-off hostname-colour <ansi-colour> + +#DESCRIPTION: Print IP address in place hostname +#USAGE: hostname-ip + +#DESCRIPTION: Print terminal name Do not print terminal name Set colour of terminal name +#USAGE: pts-on pts-off pts-colour <ansi-colour> + +#DESCRIPTION: Print git branch Do not print git branch Set colour of git branch +#USAGE: git-on git-off git-colour <ansi-colour> + +#DESCRIPTION: Print directory Do not print directory Set colour of directory +#USAGE: dir-on dir-off dir-colour <ansi-colour> + +#DESCRIPTION: Print directory tip Print absolute directory Print custom directory +#USAGE: dir-short dir-full dir-text <text> + +#DESCRIPTION: Print current time Do not print current time Set colour of current time +#USAGE: clock-on clock-off clock-colour <ansi-colour> + +#DESCRIPTION: Print battery status Do not print battery status Set colour of battery status +#USAGE: battery-on battery-off battery-colour <ansi-colour> + +#DESCRIPTION: Print featherweight status Do not print featherweight status Set the used colour +#USAGE featherweight-on featherweight-off featherweight-colour <ansi-colour> + +#DESCRIPTION: Set title on terminal Do not set title on terminal +#USAGE title-on title-off + +#DESCRIPTION: Use two lines Use a single line +#USAGE dual-on dual-off + +#DESCRIPTION: Set colour of error code +#USAGE error-colour <ansi-colour> + +#DESCRIPTION: Set colour of dollar/hash sign +#USAGE dollar-colour <ansi-colour> + + +prompt_addons=() + + +__prompt_block="" +if [ "$TERM" = "linux" ]; then + __prompt_block="\033[?8c" +fi +block-on () { + __prompt_block="\033[?8c" + update-prompt +} +block-off () { + __prompt_block="" + update-prompt +} + + +__prompt_username="\u" +username-on () { + __prompt_username="\u" + update-prompt +} +username-off () { + __prompt_username="" + update-prompt +} + + +__prompt_username_colour="94" +if [ "$USER" = "root" ]; then + __prompt_username_colour="91" + if [ "$TERM" = "linux" ]; then + __prompt_username_colour="31;01" + fi +elif [ "$TERM" = "linux" ]; then + __prompt_username_colour="34;01" +fi +username-colour () { + __prompt_username_colour="$*" + update-prompt +} + + +__prompt_hostname="1" +hostname-on () { + __prompt_hostname="1" + update-prompt +} +hostname-ip () { + __prompt_hostname="$( (ifconfig | sed -n 's/^[\t ]*inet[\t ][\t ]*\([^\t ]*\).*$/\1/p' | + sed '/^127\.0\.0\.1$/d' ; echo 127.0.0.1) | sed 1q )" + update-prompt +} +hostname-off () { + __prompt_hostname="0" + update-prompt +} + + +__prompt_hostname_colour="34" +hostname-colour () { + __prompt_hostname_colour="$*" + update-prompt +} + + +__prompt_pts="0" +if [ "$TERM" = "linux" ]; then + __prompt_pts="1" +fi +pts-on () { + __prompt_pts="1" + update-prompt +} +pts-off () { + __prompt_pts="0" + update-prompt +} + + +__prompt_pts_colour="36" +pts-colour () { + __prompt_pts_colour="$*" + update-prompt +} + + +__prompt_git="1" +git-on () { + __prompt_git="1" + update-prompt +} +git-off () { + __prompt_git="0" + update-prompt +} + + +__prompt_git_colour="32" +git-colour () { + __prompt_git_colour="$*" + update-prompt +} + + +__prompt_func_git () { + exec 2>/dev/null + if git status >&2; then + status="$(git status -s -b | head -n 1)" + if [ "$(echo "${status}" | cut -d ' ' -f 3)" = '[ahead' ]; then + echo "${status}" | cut -d ' ' -f 2 + else + echo "${status}" | cut -d ' ' -f 2 | cut -d . -f 1 + fi + fi +} + + +__prompt_dir="\w" +dir-on () { + __prompt_dir="\w" + update-prompt +} +dir-short () { + __prompt_dir="\W" + update-prompt +} +dir-full () { + __prompt_dir='$(pwd)' + update-prompt +} +dir-text () { + __prompt_dir="$(sed -e 's:\\:\\\\:g' <<<"$*")" + update-prompt +} +dir-off () { + __prompt_dir="" + update-prompt +} + + +__prompt_dir_colour="35" +dir-colour () { + __prompt_dir_colour="$*" + update-prompt +} + + +__prompt_clock="(\t)" +clock-on () { + __prompt_clock="(\t)" + update-prompt +} +clock-off () { + __prompt_clock="" + update-prompt +} + + +__prompt_clock_colour="33" +clock-colour () { + __prompt_clock_colour="$*" + update-prompt +} + + +__prompt_dual="\[\033[00m\]\n\[\033[1K\]" +dual-on () { + __prompt_dual="\[\033[00m\]\n\[\033[1K\]" + update-prompt +} +dual-off () { + __prompt_dual="" + update-prompt +} + + +__prompt_dollar_colour="01;34" +if [ "$USER" = "root" ]; then + __prompt_dollar_colour="01;31" +fi +dollar-colour () { + __prompt_dollar_colour="$*" + update-prompt +} + + +__prompt_error_colour="01;31" +error-colour () { + __prompt_error_colour="$*" + update-prompt +} + + +__prompt_func_error () { + if [ "$1" = "0" ]; then + echo -n "" + else + echo -n "(error: $1) " + fi +} + + +__prompt_battery="" +battery-on () { + __prompt_battery='$(__prompt_func_battery)' + update-prompt +} +battery-off () { + __prompt_battery="" + update-prompt +} + + +__prompt_battery_colour="33" +battery-colour () { + __prompt_battery_colour="$*" + update-prompt +} + + +__prompt_func_battery () { + local __first=1 + acpi --battery 2>/dev/null | while read info; do + if [ $__first = 1 ]; then + echo -n "(${info})" + __first=0 + else + echo -n " (${info})" + fi + done +} + + +__prompt_featherweight='$(__prompt_func_featherweight)' +featherweight-on () { + __prompt_featherweight='$(__prompt_func_featherweight)' + update-prompt +} +featherweight-off () { + __prompt_featherweight='' + update-prompt +} + + +__prompt_featherweight_colour="36" +featherweight-colour () { + __prompt_featherweight_colour="$*" + update-prompt +} + + +__prompt_func_featherweight () { + local status + if [ -r ~/.var/lib/featherweight/status ]; then + status="$(cat ~/.var/lib/featherweight/status)" + if [ ! "${status}" = "0" ]; then + echo "(fw: ${status})" + fi + fi +} + + +__prompt_title="" +case "$TERM" in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + __prompt_title="\033]0;\u@\h: \w || $(tty)\a" + ;; +esac +title-on () { + __prompt_title="\033]0;\u@\h: \w || $(tty)\a" + update-prompt +} +title-off () { + __prompt_title="" + update-prompt +} + + +__screen_title="" +case "$TERM" in + screen) + __screen_title="\033_\u@\h: \w || $(tty)\033\\" + ;; +esac +screen-title-on () { + __screen_title="\033_\u@\h: \w || $(tty)\033\\" + update-prompt +} +screen-title-off () { + __screen_title="" + update-prompt +} + + +update-prompt () { + local __invisible __addon + __invisible="\[${__prompt_title}${__screen_title}${__prompt_block}\033[00m\]" + PS1="" + if [ ! "${__prompt_username}" = "" ]; then + PS1="${PS1}\[\033[${__prompt_username_colour}m\]${__prompt_username}\[\033[00m\]" + fi + if [ "${__prompt_hostname}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}@" + fi + PS1="${PS1}\[\033[${__prompt_hostname_colour}m\]\h\[\033[00m\]" + elif [ ! "${__prompt_hostname}" = "0" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}@" + fi + PS1="${PS1}\[\033[${__prompt_hostname_colour}m\]${__prompt_hostname}\[\033[00m\]" + fi + if [ "${__prompt_pts}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}." + fi + PS1="${PS1}\[\033[${__prompt_pts_colour}m\]\l\[\033[00m\]" + fi + if [ "${__prompt_git}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}"'$(git status 2>/dev/null >&2 && echo -n : || echo -n "")' + fi + PS1="${PS1}\[\033[${__prompt_git_colour}m\]"'$(__prompt_func_git)'"\[\033[00m\]" + fi + if [ ! "${__prompt_dir}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}: " + fi + PS1="${PS1}\[\033[${__prompt_dir_colour}m\]${__prompt_dir}\[\033[00m\]" + fi + if [ ! "${__prompt_clock}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_clock_colour}m\]${__prompt_clock}\[\033[00m\]" + fi + if [ ! "${__prompt_battery}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_battery_colour}m\]${__prompt_battery}\[\033[00m\]" + fi + if [ ! "${__prompt_featherweight}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_featherweight_colour}m\]${__prompt_featherweight}\[\033[00m\]" + fi + __sh="\[\033[00m\033[${__prompt_dollar_colour}m\]\\$\[\033[00m\]" + __err="\[\033[${__prompt_error_colour}m\]"'$(__prompt_func_error $?)'"\[\033[00m\]" + for __addon in "${prompt_addons[@]}"; do + PS1="${PS1}$(${__addon})" + done + PS1="${__invisible}${__err}${PS1}${__prompt_dual}${__sh} " +} + + +update-prompt + + +PS2='\[\e[01;31m\]> \[\e[00m\]' +PS3='\[\e[01;31m\]> \[\e[00m\]' +PS4='\[\e[01;31m\]+ \[\e[00m\]' diff --git a/bash/logout b/bash/logout new file mode 100644 index 0000000..ef22cbc --- /dev/null +++ b/bash/logout @@ -0,0 +1,9 @@ +# -*- shell-script -*- + +if test -r ~/.config/bash/"logout-$(hostname)"; then + . ~/.config/bash/"logout-$(hostname)" +fi + +if test -r ~/work/.config/bash/logout; then + . ~/work/.config/bash/logout +fi diff --git a/bash/profile b/bash/profile new file mode 100644 index 0000000..096711e --- /dev/null +++ b/bash/profile @@ -0,0 +1,17 @@ +# -*- shell-script -*- + +if test -r ~/.config/profile; then + . ~/.config/profile +fi + +if test -r ~/.config/bash/"profile-$(hostname)"; then + . ~/.config/bash/"profile-$(hostname)" +fi + +if test -r ~/work/.config/bash/profile; then + . ~/work/.config/bash/profile +fi + +if test -r ~/.config/bash/bashrc; then + . ~/.config/bash/bashrc; +fi |