# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # 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 # If set, the pattern "**" used in a pathname expansion context will # match all files and zero or more directories and subdirectories. #shopt -s globstar # make less more friendly for non-text input files, see lesspipe(1) #[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) 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\]\$ ' PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[01;34m\]\W §\[\033[00m\] ' PS4='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[01;34m\]\W §\[\033[00m\] ' # PROMPT_DIRTRIM=3 else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # 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 dir='dir --color=auto' #alias vdir='vdir --color=auto' #alias grep='grep --color=auto' #alias fgrep='fgrep --color=auto' #alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases #alias ll='ls -l' #alias la='ls -A' #alias l='ls -CF' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases 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 #Special Settings set -o vi #Directory changes alias cdn='cd $HOME/Notes/; vim "+CtrlP"' alias cdd='cd $HOME/Downloads/' alias cdo='cd $HOME/Source/' alias cdc='cd $HOME/.config/' alias cd-projects='cd $HOME/Projects/' alias cd-x='cd $HOME/Encrypted/x/' alias cd-vim='cd /usr/share/vim/vim82/pack/my-plugins/start' #General alias v='vim' alias yt='youtube-dl' alias ytb='youtube-dl --no-progress' alias depth='echo $SHLVL' alias lsg='ls -la | grep' #Determines if a file or folder with a name containing a sequence of characters is in the current directory alias show='apt show' alias lynx='lynx -vikeys' alias lsa='ls -laF' alias doihave='apt list --installed' #Utilities alias ins='sudo apt-get install' alias uns='sudo apt-get purge' alias update='sudo apt-get update; sudo apt-get upgrade;' alias rn='ranger' alias nnn='nnn -xE' alias util-dropdown="st -c 'DROPDOWN_TERM' -e 'tmux' &" #Programming alias py='ipython3 --TerminalInteractiveShell.editing_mode=vi' alias gc='git clone' # Edit config and system files alias edit-bashrc='vim $HOME/.bashrc' alias edit-profile='vim $HOME/.profile' alias edit-vimrc='sudo vim /etc/vim/vimrc.local' alias edit-xkb='vim $HOME/.config/xkb/custom.xkb' alias edit-xr='vim ~/.config/xfiles/Xresources' alias edit-sources='sudo vim /etc/apt/sources.list' alias edit-tmux='vim $HOME/.config/tmux/tmux.conf' alias edit-git='vim $HOME/.config/git/config' alias load-xr='xrdb ~/.config/xfiles/Xresources' alias load-xkb='xkbcomp $HOME/.config/xkb/custom.xkb $DISPLAY' alias load-xt='xrdb $HOME/.config/Xresources' alias load-profile='source $HOME/.profile' alias lo='load-profile' alias betterXev="xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf \"%-3s %s\\n\", $5, $8 }'" #Encryption alias mntx='encfs $HOME/Encrypted/.x/ $HOME/Encrypted/x/' alias umntx='encfs -u $HOME/Encrypted/x/' #Applications alias scan='sudo arp-scan 192.168.0.1/24' alias weechat='weechat -d "$XDG_CONFIG_HOME"/weechat' #BASE16_SHELL="$HOME/.config/base16-shell/" # [ -n "$PS1" ] && \ # [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ # eval "$("$BASE16_SHELL/profile_helper.sh")" #Special functions! :D search () { apt search $@ | less } clean () { #Check if there is too many arguments if [ "$#" -gt "1" ] then echo "Too many arguments. There are $#." return fi case "$1" in '') ;; soft) history -c ;; hard) history -c rm -r $HOME/tmp/; mkdir $HOME/tmp/ ;; *) echo "Invalid arguments"; return ;; esac echo "History clear" sudo apt-get autoremove #Cleanup packages echo "Clean complete" } wall(){ if [ "$#" -gt "1" ] then echo "Too many arguments. There are $#." return fi case "$1" in on) sudo iptables -F #Allows lo, allows SSH in, allows packets related to connections established with output sudo iptables -A walkin -i lo -j ACCEPT sudo iptables -A walkin -p tcp --dport 22 -j ACCEPT sudo iptables -A walkin -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT #Allows lo, allows ssh out, allows connections out that are owned by root, allows vpn sudo iptables -A walkout -o lo -j ACCEPT sudo iptables -A walkout -p tcp --dport 22 -j ACCEPT sudo iptables -A walkout -m owner --uid-owner root -j ACCEPT sudo iptables -A walkout -o tun0 -j ACCEPT sudo iptables -A INPUT -j walkin sudo iptables -A INPUT -j DROP sudo iptables -A OUTPUT -j walkout sudo iptables -A OUTPUT -j DROP #Not needed sudo iptables -P INPUT DROP sudo iptables -P OUTPUT DROP echo "Firewall is on" ;; off) sudo iptables -F sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT echo "Firewall is off" ;; *) echo "Invalid arguments"; return ;; esac } #adb commands for moving files between the desktop and an android. apull () { adb shell ls '/storage/self/primary/Download/'$1 | tr -d '\r' | xargs -n1 adb pull } als(){ adb shell ls /storage/self/primary/Download/$1 } apush() { adb push "$1" /storage/self/primary/Download; } poly() { # Terminate already running bar instances killall -q polybar # Wait until the processes have been shut down while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done cp -r $XDG_CONFIG_HOME/polybar/bars/polybar-$1/* $XDG_CONFIG_HOME/polybar/ cp -r $XDG_CONFIG_HOME/polybar/fonts/* ~/.local/share/fonts fc-cache $XDG_CONFIG_HOME/polybar/launch.sh } vpn() { nmcli connect $1 $2.protonvpn.com.udp } define() { dict $1 | less; } n () { # Block nesting of nnn in subshells if [ -n $NNNLVL ] && [ "${NNNLVL:-0}" -ge 1 ]; then echo "nnn is already running" return fi # The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set) # To cd on quit only on ^G, remove the "export" as in: # NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd" # NOTE: NNN_TMPFILE is fixed, should not be modified NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd" # Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn # stty start undef # stty stop undef # stty lwrap undef # stty lnext undef nnn "$@" if [ -f "$NNN_TMPFILE" ]; then . "$NNN_TMPFILE" rm -f "$NNN_TMPFILE" > /dev/null fi } compare() { git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative $1..$2; } blaunch() { BASE16_SHELL="$HOME/.config/base16-shell/" [ -n "$PS1" ] && \ [ -s "$BASE16_SHELL/profile_helper.sh" ] && \ eval "$("$BASE16_SHELL/profile_helper.sh")" }