dotfiles-desktop/.bashrc

282 lines
11 KiB
Bash

# ~/.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\]\$ '
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 -alF'
alias la='ls -A'
alias l='ls -CF'
# 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$//'\'')"'
# 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
# Check for an interactive session
[ -z "$PS1" ] && return
_PROMPT() {
_EXIT_STATUS=$?
[ $_EXIT_STATUS != 0 ] && _EXIT_STATUS_STR=" \[\033[38;5;7m\][\[$(tput sgr0)\]\[\033[38;5;9m\]$_EXIT_STATUS\[$(tput sgr0)\]\[\033[38;5;7m\]]\[$(tput sgr0)\]"
_BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
if [ ! $_BRANCH == "" ]
then
_BRANCH_STR="[\[$(tput sgr0)\]\[\033[38;5;11m\]$_BRANCH\[$(tput sgr0)\]\[\033[38;5;7m\]]"
else
_BRANCH_STR=""
fi
PS1="\[\033[38;5;14m\]\u\[$(tput sgr0)\]\[\033[38;5;15m\]@\[$(tput sgr0)\]\[\033[38;5;6m\]\h\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;7m\]╺─╸\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;7m\][\[$(tput sgr0)\]\[\033[38;5;14m\]\W\[$(tput sgr0)\]\[\033[38;5;7m\]]\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;7m\]$_BRANCH_STR\[$(tput sgr0)\]\[\033[38;5;15m\] \n\[$(tput sgr0)\]\[\033[38;5;7m\][\[$(tput sgr0)\]\[\033[38;5;11m\]\A\[$(tput sgr0)\]\[\033[38;5;7m\]]\[$(tput sgr0)\]\[\033[38;5;15m\]$_EXIT_STATUS_STR \[$(tput sgr0)\]\[\033[38;5;7m\]>>\[$(tput sgr0)\] "
unset _EXIT_STATUS_STR
unset _EXIT_STATUS
unset _BRANCH_STR
unset _BRANCH
}
PROMPT_COMMAND=_PROMPT
# ALIASES
##### alias kali-tools='sudo python3 ~/Software/git/portkali/portkali.py'
##### alias ll='ls -alF'
##### alias la='ls -A'
##### alias l='ls -CF'
##### alias ll="ls -lAF"
##### alias h="history 25"
##### alias office="cd ~ && clear && offlineimap && mu index --maildir ~/Mail"
##### alias rss="newsboat"
##### alias audio-ext="sysctl hw.snd.default_unit=4"
##### alias audio-int="sysctl hw.snd.default_unit=0"
##### alias ll="ls -lah"
##### alias corona="curl https://corona-stats.online"
##### # alias nasm="sudo sshfs -o uid=1000 -o gid=1000 -o allow_other root@192.168.178.200:/hdds/ /media/anon/nas "
##### alias corona-germany="curl https://corona-stats.online/germany"
##### alias torrent="aria2c --follow-torrent=mem --seed-time=0 -j 10"
##### alias fetch="neofetch --backend w3m --source ~/Bilder/tiger.png"
##### alias calendar="khal interactive"
##### alias bin=" | nc termbin.com 9999"
##### alias joplin="~/.npm-global/bin/joplin"
##### alias chrome="chrome --enable-features=WebUIDarkMode --force-dark-mode"
##### alias technobase="mpv http://listen.technobase.fm/tunein-mp3"
##### alias anonradio="torsocks mpv http://anonradio.net:8000/anonradio"
##### alias temps="watch -n 2 sensors"
##### alias backup="~/git/rsync-time-backup/rsync_tmbackup.sh ~/ /media/anon/8TB/backup/"
##### alias backup-ext="Software/git/rsync-time-backup/rsync_tmbackup.sh ~/ hetzner:/home/desktop/"
##### alias cal="ncal -w3C"
##### alias nanochan="torsocks w3m -o auto_image=FALSE https://nanochanqzaytwlydykbg5nxkgyjxk3zsrctxuoxdmbx5jbh2ydyprid.onion/"
##### alias didw="torsocks w3m -o auto_image=FALSE http://germanyruvvy2tcw.onion"
##### alias download-world="curl -s http://artscene.textfiles\.com/vt100/globe.vt | pv -L9600 -q"
##### alias darknet="torsocks w3m -o auto_image=FALSE .w3m/bookmark.html"
##### alias reechat="ssh weechat@vps -t screen -rd weechat"
##### alias cast-tay="sudo openvpn ~/Seafile/Crypt/tay.ovpn"
##### alias cast-tinfoil-hat="openvpn ~/Seafile/Crypt/vps.ovpn"
##### alias xfix="~/Software/scripts/xfix.sh"
##### alias goaccess="ssh tay -t goaccess -c /var/log/nginx/access.log"
##### alias config="git --git-dir=$HOME/.cfg/ --work-tree=$HOME"
##### alias berliner-rundfunk-91-4="mpv http://stream.berliner-rundfunk.de/brf/mp3-128/internetradio"
##### alias drop="~/Software/bin/plik"
##### alias p0wn.sh="./git/rice/hack.exe"
##### alias bg="feh -z ~/ssd/Seafile/dat/dont\ click/Wallpapers/"
##### alias dotup="dotfiles-remote-autoupdate && dotfiles-autoupdate"
##### alias poweroff="sudo poweroff"
##### alias installation-age="stat -c %w /"
##### alias db="distrobox"
##### alias kali="distrobox enter kali"
##### alias arch="distrobox enter arch"
##### alias fedora="distrobox enter fedora"
##### alias opensuse="distrobox enter opensuse"
##### alias ubuntu="distrobox enter ubuntu"
##### alias gentoo="distrobox enter gentoo"
##### alias debiantesting="distrobox enter debiantesting"
##### alias debian="distrobox enter debian"
##### alias matrix="gomuks"
##### alias nasm="sshfs -o uid=1000 -o gid=1000 -o reconnect u339896@u339896.your-storagebox.de:/ /media/anon/storagebox/"
##### alias nasmu="sudo umount /media/anon/storagebox"
##### alias mountnx="mount -t davfs https://nx.tinfoil-hat.net/remote.php/dav/files/Admin/Backups /media/anon/nextcloud"
##### alias monero=" cd ~/Software/Archive/xmrig-6.19.2/ && sudo ./xmrig -o xmr-eu1.nanopool.org:14433 -u 43JXSU4beuCXTDyBPnXfgK6jtrSTAqAaMSqVDYTdQkf1CdJsiPALLmmASAdhHsXgA698vobsjejp7VBagTA32QVbJ9UCq2A --tls --coin monero && cd"
##### alias stable-diffusion="bash ~/Software/scripts/stable-diffusion.sh"
##### alias kali="sudo docker run --tty --interactive kalilinux/kali-rolling"
##### alias youtube-dl="yt-dlp --cookies-from-browser chrome:~/.var/app/com.brave.Browser -o '%(title).100B [%(id)s].%(ext)s'"
##### alias webserver="python3 -m http.server"
alias installation-age="stat -c %w / | awk '{print $1;}'"
#####
# Functions
record-small-screen() {
filename="cast-$(date +"%Y-%m-%d_%H_%M")-$(uname -s)-$(uname -m)"
ffmpeg -f alsa -ac 2 -f x11grab -r 25 -s 1366x768 -i :0.0 -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -crf 0 -threads 0 -acodec pcm_s16le -y ~/$filename.mkv
}
record-big-screen(){
filename="cast-$(date +"%Y-%m-%d_%H_%M")-$(uname -s)-$(uname -m)"
ffmpeg -f alsa -ac 2 -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -crf 0 -threads 0 -acodec pcm_s16le -y ~/$filename.mkv
}
wetter() { curl wttr.in/$1; }
ytdl() {
torsocks mpv ytdl://$@
}
news() {
NNTPSERVER='nntp.aioe.org' && export NNTPSERVER
slrn -f ~/.jnewsrc --create
}
# Download Plemora emojis; requires curl and jq
pleroma-emoji-dl() {
server=$1
curl $server/api/v1/custom_emojis | jq -r 'map(.url)|join("\n")|@text' | xargs wget --random-wait --wait=1
}
# NOTES FILE(S)
notes() {
VAR=$1
if [ -z $VAR ]; then
/usr/local/bin/vim sftp://chrissly@goliath.tinfoil-hat.net/notes/default.txt
elif [ "$VAR" == "-h" ]; then
printf "Usage: notes [-l] [file]\n";
printf " notes Open/Create \"default.txt\" file\n"
printf " notes <file> Open/Create \"<file>.txt\" file\n"
printf " notes -l Show available note files\n"
printf " notes -h Show this help\n"
elif [ "$VAR" == "-l" ]; then
printf "List of notes:\n"
ssh chrissly@sina.tinfoil-hat.net "ls -1 \$HOME/notes/*.txt | sed 's,.*/\(.*\)\.txt, - \1,g'"
else
vim sftp://chrissly@goliath.tinfoil-hat.net/notes/$1.txt
fi
}
# Dotfiles - Autocommit
function dotfiles-autoupdate {
config add -u && \
config commit -m "Update $(date +"%Y-%m-%d %H:%M") $(uname -s)/$(uname -m)" && \
config push origin master
}
# Vars
GPG_TTY=$(tty)
NNTPSERVER='news.tilde.club'
TERMINAL='/usr/local/bin/urxvt'
# Exports
export GPG_TTY
export LC_ALL=de_DE.UTF-8
export NNTPSERVER
export PATH=$HOME/.bin:$PATH
export EDITOR=vim
bind -s 'set completion-ignore-case on'
# source ~/Software/git/ble.sh/out/ble.sh
[ -f ~/.fzf.bash ] && source ~/.fzf.bash