2022-03-13 12:26:45 +01:00
|
|
|
#!/usr/bin/env bash
|
2021-09-23 17:21:07 +02:00
|
|
|
# ~/.bashrc
|
|
|
|
# byMasterKTO
|
|
|
|
|
|
|
|
# NOTE if .bashrc is not sourced at login, add `source ~/.bashrc` to ~/.profile
|
|
|
|
|
|
|
|
# If not running interactively, don't do anything
|
|
|
|
[[ $- != *i* ]] && return
|
|
|
|
|
|
|
|
# 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.
|
|
|
|
shopt -s checkwinsize
|
|
|
|
|
|
|
|
# make less more friendly for non-text input files, see lesspipe(1)
|
|
|
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
|
|
|
|
|
|
|
########################################################################################################################
|
|
|
|
# set custom prompt
|
|
|
|
# for upgrade, we should look at https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Terminfo_escape_sequences
|
|
|
|
|
|
|
|
system=$(uname)
|
|
|
|
|
|
|
|
# colors and custom
|
|
|
|
C_BOLD="\[$(tput bold)\]"
|
|
|
|
C_RESET="\[$(tput sgr0)\]"
|
|
|
|
if [[ $system == "Linux" ]]; then
|
|
|
|
C_USER="\[$(tput setaf 19)\]"
|
|
|
|
C_ROOT="\[$(tput setab 1)\]"
|
|
|
|
C_ARCH="\[$(tput setaf 32)\]"
|
|
|
|
C_DEB="\[$(tput setaf 166)\]"
|
|
|
|
C_RH="\[$(tput setaf 21)\]"
|
|
|
|
C_SUSE="\[$(tput setaf 40)\]"
|
|
|
|
elif [[ $system == "OpenBSD" ]]; then
|
|
|
|
C_USER="\[$(tput setaf 19 19 19)\]"
|
|
|
|
C_ROOT="\[$(tput setab 1 1 1)\]"
|
|
|
|
C_OBSD="\[$(tput setaf 11 11 11)\]"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# user
|
|
|
|
if [[ $(whoami) == 'root' ]]; then
|
|
|
|
user="$C_BOLD$C_ROOT\u$C_RESET"
|
|
|
|
else
|
|
|
|
user="$C_BOLD$C_USER\u$C_RESET"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# distro
|
|
|
|
if [[ $system == "Linux" ]]; then
|
|
|
|
case $(lsb_release -si) in
|
|
|
|
# Arch family: light blue
|
2022-03-11 15:54:31 +01:00
|
|
|
Arch | ManjaroLinux | Manjaro-ARM) COLOR=$C_BOLD$C_ARCH;;
|
2021-09-23 17:21:07 +02:00
|
|
|
# Debian family: orange
|
|
|
|
Debian | Ubuntu | Linuxmint | Neon | Raspbian) COLOR=$C_BOLD$C_DEB;;
|
|
|
|
# RedHat family: blue
|
|
|
|
Fedora) COLOR=$C_BOLD$C_RH;;
|
|
|
|
# SUSE family: green
|
|
|
|
openSUSE) COLOR=$C_BOLD$C_SUSE;;
|
|
|
|
# Other: white
|
|
|
|
*) COLOR=$C_BOLD;;
|
|
|
|
esac
|
|
|
|
elif [[ $system == "OpenBSD" ]]; then
|
|
|
|
# OpenBSD: yellow
|
|
|
|
COLOR=$C_BOLD$C_OBSD
|
|
|
|
BSD="$C_BOLD(BSD) $C_RESET"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# virtualization
|
|
|
|
if [[ $system == "Linux" ]]; then
|
|
|
|
type systemd-detect-virt > /dev/null 2>&1
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
|
|
systemd-detect-virt --quiet -v
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
virt='/V'
|
|
|
|
fi
|
|
|
|
systemd-detect-virt --quiet -c
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
virt='/C'
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2022-03-14 19:07:55 +01:00
|
|
|
# hostname TODO could we not get rid of hostname command (not always installed)?
|
2022-03-11 15:54:31 +01:00
|
|
|
# if hostname has 5 parts then host=.secondpart
|
|
|
|
if [[ $(hostname | grep -o "\." | wc -l) -eq 4 ]]; then
|
2021-09-23 17:21:07 +02:00
|
|
|
host='.'$(hostname | cut -f 2 -d '.')
|
|
|
|
fi
|
|
|
|
hn="$COLOR\h$host$virt$C_RESET"
|
|
|
|
|
|
|
|
# current directory
|
|
|
|
cur_dir="$C_BOLD\W$C_RESET"
|
|
|
|
|
|
|
|
# set result
|
|
|
|
PS1=$C_RESET$BSD$user' '$hn' '$cur_dir' \$ '
|
|
|
|
########################################################################################################################
|
|
|
|
|
|
|
|
# enable color support of ls and also add handy aliases
|
|
|
|
if [ -x /usr/bin/dircolors ]; then
|
|
|
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
|
|
|
alias ls='ls --color=auto'
|
|
|
|
|
|
|
|
alias grep='grep --color=auto'
|
|
|
|
alias fgrep='fgrep --color=auto'
|
|
|
|
alias egrep='egrep --color=auto'
|
|
|
|
fi
|
|
|
|
|
|
|
|
# some more aliases
|
|
|
|
if [[ $system == "Linux" ]]; then
|
|
|
|
alias ll='ls -lhX'
|
|
|
|
alias la='ls -lahX'
|
|
|
|
alias dh='df -h'
|
|
|
|
elif [[ $system == "OpenBSD" ]]; then
|
|
|
|
alias ll='ls -lh'
|
|
|
|
alias la='ls -lah'
|
|
|
|
alias dh='df -h'
|
|
|
|
fi
|
|
|
|
|
|
|
|
# enable programmable completion features (you don't need to enable
|
|
|
|
# this, if it's already enabled in /etc/bash.bashrc and /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
|
|
|
|
|
|
|
|
# useful exports
|
|
|
|
export EDITOR=vim
|
|
|
|
export GPG_TTY=$(tty)
|
|
|
|
|
|
|
|
# unsetting $TMUX enables sessions nesting
|
|
|
|
unset TMUX
|
|
|
|
|
|
|
|
# Saving touchpad (hp8)
|
|
|
|
alias touchpad='xinput set-prop 12 "Device Enabled" 1'
|
|
|
|
|
|
|
|
# Set VNC aliases
|
2022-11-30 19:06:38 +01:00
|
|
|
X_user=$(who | grep -m1 \(: | cut -d " " -f1)
|
2021-09-23 17:21:07 +02:00
|
|
|
X_display=$(who | grep \(: | cut -d ":" -f2 | cut -b 1)
|
|
|
|
if id -u gdm > /dev/null 2>&1; then
|
|
|
|
X_gdm_id=$(id -u gdm)
|
|
|
|
elif id -u Debian-gdm > /dev/null 2>&1; then
|
|
|
|
X_gdm_id=$(id -u Debian-gdm)
|
|
|
|
fi
|
|
|
|
alias vnc-mine='x11vnc -localhost -once -nopw -display :0'
|
|
|
|
alias vnc-desktop="sudo -H -u $X_user x11vnc -localhost -once -nopw -display :0"
|
|
|
|
alias vnc-gnome="sudo -H -u $X_user x11vnc -localhost -once -nopw -display :$X_display"
|
|
|
|
alias vnc-sddm='sudo x11vnc -auth /var/run/sddm/* -localhost -once -nopw -display :0'
|
|
|
|
alias vnc-gdm="sudo x11vnc -auth /run/user/$X_gdm_id/gdm/Xauthority -localhost -once -nopw -display :0"
|
|
|
|
alias vnc-lightdm='sudo x11vnc -auth /var/run/lightdm/root/:0 -localhost -once -nopw -display :0'
|
|
|
|
|
|
|
|
# load any additional configuration
|
2022-03-14 19:07:55 +01:00
|
|
|
for f in ~/.bashrc.d/bashrc-*; do
|
|
|
|
[ -e "$f" ] && source $f
|
2021-09-23 17:21:07 +02:00
|
|
|
done
|