diff --git a/shell/bashrc b/shell/bashrc index c512059..3431e4e 100644 --- a/shell/bashrc +++ b/shell/bashrc @@ -1,39 +1,132 @@ #!/bin/bash -# tavo custom bashrc file -# If not running interactively, don't do anything -[[ $- != *i* ]] && return -# git branch -prompt_git_branch() { +case $- in + *i*) ;; + *) return;; +esac + +PATH="$HOME/.config/scripts/status${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu/xclipmenu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/sway${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/dwm${PATH:+:${PATH}}" +PATH="$HOME/.config/wrappers${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts${PATH:+:${PATH}}" +PATH="$HOME/.local/bin${PATH:+:${PATH}}" +#PATH="/usr/local/plan9/bin${PATH:+:${PATH}}" + +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 + +bind "set completion-ignore-case on" +shopt -s checkwinsize +shopt -s histappend +shopt -s cdspell +shopt -s autocd +set -o vi + +export \ + HISTCONTROL=ignoreboth \ + HISTIZE= \ + HISTFILESIZE= \ + DATE=$(date -I) \ + WEEK=$(date '+%U') \ + +export \ + TERM="xterm-256color" \ + EDITOR="nvim" \ + VISUAL="nvim" \ + +export \ + QT_QPA_PLATFORMTHEME="qt5ct" \ + CM_SELECTIONS="clipboard" \ + GTK_THEME="Materia:dark" \ + CM_MAX_CLIPS=10 \ + +export \ + GITLAB="ssh://git@gitlab.com/tavo-wasd" \ + BOOKMARKS="$HOME/Documents/bookmarks" \ + BIB="$HOME/Documents/bibliography" \ + +git_branch() { GIT_BRANCH="$(git branch 2>/dev/null | sed '/\*/!d;s/^\*\s*//g;s/\s*$//g')" [ -n "$GIT_BRANCH" ] && printf "%s " "$GIT_BRANCH" } +TIME="$(date)" +TIME=${TIME% [AP]M*} +TIME=${TIME##* } + PS1='\ -\[\033[2m\]($?) \ -\[\033[0m\]\[\033[1m\]\[\033[36m\]\u\[\033[0m\]\ +\[\033[2m\]($?)\[\033[0m\] \ +\[\033[1m\]\[\033[36m\]\u\[\033[0m\]\ \[\033[36m\]@\h\[\033[0m\] \ \[\033[34m\]\w \ -\[\033[1m\]\[\033[35m\]$(prompt_git_branch)\[\033[0m\]\ -\[\033[2m\][\!] \@\[\033[0m\]\ +\[\033[1m\]\[\033[35m\]$(git_branch)\[\033[0m\]\ +\[\033[2m\][\!] $TIME\[\033[0m\]\ \n\[\033[2m\]$\[\033[0m\] ' -PROMPT_COMMAND="echo" # Line jump after every command -# General configs -bind "set completion-ignore-case on" # Case insensitive TAB complete -shopt -s cdspell # Autocorrect directory name -shopt -s autocd # cd into dir by typing the name -set -o vi # vi mode +export \ + BASH_ENV="$XDG_CONFIG_HOME/shell/bashrc" \ + XDG_STATE_HOME="$HOME/.local/state" \ + XDG_CACHE_HOME="$HOME/.local/cache" \ + XDG_DATA_HOME="$HOME/.local/share" \ + XDG_CONFIG_HOME="$HOME/.config" \ + _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java" \ + GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0" \ + PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store" \ + VIMINIT="source $XDG_CONFIG_HOME/vim/vimrc" \ + XSERVERRC="$XDG_CONFIG_HOME/X11/xserverrc" \ + XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" \ + HISTFILE="$XDG_STATE_HOME/bash_history" \ + XINITRC="$XDG_CONFIG_HOME/X11/xinitrc" \ + LESSHISTFILE="$XDG_DATA_HOME/lesshst" \ + ELECTRUMDIR="$XDG_DATA_HOME/electrum" \ + CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv" \ + WINEPREFIX="$HOME/.local/share/wine" \ + WGETRC="$HOME/.config/wget/wgetrc" \ + GOPATH="$XDG_DATA_HOME/go" \ + +alias \ + wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" + +alias \ + src="cd $HOME/.local/src/ && ls" \ + cfg="cd $HOME/.config/ && ls" \ + tmp="cd $HOME/Desktop/temp/ && ls" \ + dsk="cd $HOME/Desktop/ && ls" \ + prj="cd $HOME/Desktop/projects/ && ls" \ + doc="cd $HOME/Documents/ && ls" \ + dow="cd $HOME/Downloads/ && ls" \ + mus="cd $HOME/Music/ && ls" \ + prt="cd $HOME/Pictures/Screenshots/ && ls" \ + bkg="cd $HOME/Pictures/Backgrounds/ && ls" \ + img="cd $HOME/Pictures/ && ls" \ + vid="cd $HOME/Videos/ && ls" \ + +alias \ + ls="exa -al --icons --group-directories-first --no-permissions --no-user --time-style=iso --git" \ + fzf="fzf --cycle --reverse" \ + diff="diff --color=auto" \ + grep="grep --color=auto" \ + calc="bc -l" \ + cp="cp -iv" \ + mv="mv -iv" \ + rm="trash" \ + vim="nvim" \ + mgr-all="mgr pacman_upgrade apt_upgrade flatpak_update distrobox_update pip_update configs passmgr" \ + df-short="df -h | grep -v '\s/dev.*$\|\s/run.*$\|\s/boot.*$'" \ + qr-png="qrencode -s 16 -o qr.png" \ + qr="qrencode -t ansiutf8" \ + clip="xsel -ib" \ # External configs -[ -e "$HOME/.config/shell/posix-kit" ] && source ~/.config/shell/posix-kit -[ -e "$HOME/.config/shell/functions" ] && source ~/.config/shell/functions -[ -e "$HOME/.config/shell/keybinds" ] && source ~/.config/shell/keybinds -[ -e "$HOME/.config/shell/xdgspec" ] && source ~/.config/shell/xdgspec -[ -e "$HOME/.config/shell/aliasrc" ] && source ~/.config/shell/aliasrc -[ -e "$HOME/.config/shell/envvar" ] && source ~/.config/shell/envvar -#[ -e "$HOME/.config/shell/sway" ] && source ~/.config/shell/sway -[ -e "$HOME/.config/shell/dwm" ] && source ~/.config/shell/dwm +[ -f ~/.config/shell/posix-kit ] && . ~/.config/shell/posix-kit +[ -f ~/.config/shell/dwm ] && . ~/.config/shell/dwm -# Nice shell welcome -[ -e "/usr/bin/afetch" ] && (afetch) || (fetch min) 2>/dev/null +command -v fetch >/dev/null 2>&1 && fetch min diff --git a/shell/envvar b/shell/envvar deleted file mode 100644 index bb8f62f..0000000 --- a/shell/envvar +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# Useful variables - -# Custom PATHs for executables -PATH="$HOME/.config/scripts/status${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/menu${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/menu/xclipmenu${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/sway${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/dwm${PATH:+:${PATH}}" -PATH="$HOME/.config/wrappers${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts${PATH:+:${PATH}}" -PATH="$HOME/.local/bin${PATH:+:${PATH}}" -#PATH="/usr/local/plan9/bin${PATH:+:${PATH}}" - -# Common -export \ - HISTIZE= \ - HISTFILESIZE= \ - GITLAB="ssh://git@gitlab.com/tavo-wasd" \ - BOOKMARKS="$HOME/Documents/bookmarks" \ - BIB="$HOME/Documents/bibliography" \ - WEEK=$(date '+%U') \ - DATE=$(date -I) \ - -# Default programs -export \ - TERM="xterm-256color" \ - OPENER="xdg-open" \ - READER="zathura" \ - BROWSER="firefox" \ - TERMINAL="foot" \ - EDITOR="nvim" \ - VISUAL="nvim" \ - IMAGE="swayimg" \ - VIDEO="mpv" \ - -# Theming -export \ - QT_QPA_PLATFORMTHEME="qt5ct" \ - GTK_THEME="Materia:dark" \ - -# Clipboard -export \ - CM_SELECTIONS="clipboard" \ - CM_MAX_CLIPS=10 \ - -export \ - MOZILLA_CERTIFICATE_FOLDER="$HOME/.local/share/mozilla/.mozilla/firefox/p2uualdb.default" diff --git a/shell/functions b/shell/functions deleted file mode 100644 index cc8e28b..0000000 --- a/shell/functions +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -# Navigate using fzf -fzf_nav() { -[ -d "$1" ] && cd "$1" -opt=$(fzf --layout=reverse-list --cycle --preview 'p {}' --height=50% --border top --prompt='⯈ ') -[ -n "$opt" ] && o "$opt" -} - -# EZ note taking -note() { -NOTES_DIR="$HOME/Nextcloud/Notes" -# Just edit today's note if no argument is given -[ -z "$1" ] && cd "$NOTES_DIR" && "$EDITOR" "note-$DATE.md" -[ -e "$NOTES_DIR/daily-notes/note-$DATE.md" ] && - printf "\n\033[1m\033[35mNote of the day:\033[0m \033[2mdaily-notes/\033[0mnote-$DATE.md\n" -# 'list' arg will list notes either with fzf or regular ls -if [ "$1" = "list" ] ; then - cd "$NOTES_DIR" - # If fzf is present, use it, ls otherwise - [ -e '/usr/bin/fzf' ] || ls && fzf_nav -fi -} - -# Copy output of a command -copy_history() { -HISTTIMEFORMAT="%F %T " -history | - head -n -1 | - fzf --cycle --height=50% --border top --tac --prompt='⯈ ' | - sed -z 's/^.*:[0-9]*\s*//g;s/\s*$//g;s/\n//g' | - xsel -ib -} - -sshcd() { - ssh -t "$1" "cd \"$2\"; exec \$SHELL -l" -} diff --git a/shell/keybinds b/shell/keybinds deleted file mode 100644 index de22d99..0000000 --- a/shell/keybinds +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -bind '"\C-h":"copy_history\C-m"' -bind '"\C-f":"fzf_nav\C-m"' diff --git a/shell/mkshrc b/shell/mkshrc new file mode 100644 index 0000000..200baad --- /dev/null +++ b/shell/mkshrc @@ -0,0 +1,115 @@ +#!/bin/sh + +case $- in + *i*) ;; + *) return;; +esac + +PATH="$HOME/.config/scripts/status${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu/xclipmenu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/sway${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/dwm${PATH:+:${PATH}}" +PATH="$HOME/.config/wrappers${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts${PATH:+:${PATH}}" +PATH="$HOME/.local/bin${PATH:+:${PATH}}" +#PATH="/usr/local/plan9/bin${PATH:+:${PATH}}" + +export \ + HISTIZE= \ + HISTFILESIZE= \ + DATE=$(date -I) \ + WEEK=$(date '+%U') \ + +export \ + TERM="xterm-256color" \ + EDITOR="nvim" \ + VISUAL="nvim" \ + +export \ + QT_QPA_PLATFORMTHEME="qt5ct" \ + CM_SELECTIONS="clipboard" \ + GTK_THEME="Materia:dark" \ + CM_MAX_CLIPS=10 \ + +export \ + GITLAB="ssh://git@gitlab.com/tavo-wasd" \ + BOOKMARKS="$HOME/Documents/bookmarks" \ + BIB="$HOME/Documents/bibliography" \ + +git_branch() { + GIT_BRANCH="$(git branch 2>/dev/null | sed '/\*/!d;s/^\*\s*//g;s/\s*$//g')" + [ -n "$GIT_BRANCH" ] && printf "%s " "$GIT_BRANCH" +} + +TIME="$(date)" +TIME=${TIME% [AP]M*} +TIME=${TIME##* } + +PS1='\ +$(tput dim)($?)$(tput sgr0) \ +$(tput bold)$(tput setaf 6)${USER:=$(id -un)}$(tput sgr0)\ +$(tput setaf 6)@${HOSTNAME:=$(hostname -s)}$(tput sgr0) \ +$(tput setaf 4)${PWD} \ +$(tput bold)$(tput setaf 5)$(git_branch)$(tput sgr0)\ +$(tput dim)[!] ${TIME}$(tput sgr0) +$(tput dim)$(if (( USER_ID )); then print \$; else print \#; fi)$(tput sgr0) \ +' + +export \ + XDG_STATE_HOME="$HOME/.local/state" \ + XDG_CACHE_HOME="$HOME/.local/cache" \ + XDG_DATA_HOME="$HOME/.local/share" \ + XDG_CONFIG_HOME="$HOME/.config" \ + _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java" \ + GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0" \ + PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store" \ + VIMINIT="source $XDG_CONFIG_HOME/vim/vimrc" \ + XSERVERRC="$XDG_CONFIG_HOME/X11/xserverrc" \ + XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" \ + HISTFILE="$XDG_STATE_HOME/bash_history" \ + XINITRC="$XDG_CONFIG_HOME/X11/xinitrc" \ + LESSHISTFILE="$XDG_DATA_HOME/lesshst" \ + ELECTRUMDIR="$XDG_DATA_HOME/electrum" \ + CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv" \ + WINEPREFIX="$HOME/.local/share/wine" \ + WGETRC="$HOME/.config/wget/wgetrc" \ + GOPATH="$XDG_DATA_HOME/go" \ + +alias \ + wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" + +alias \ + src="cd $HOME/.local/src/ && ls" \ + cfg="cd $HOME/.config/ && ls" \ + tmp="cd $HOME/Desktop/temp/ && ls" \ + dsk="cd $HOME/Desktop/ && ls" \ + prj="cd $HOME/Desktop/projects/ && ls" \ + doc="cd $HOME/Documents/ && ls" \ + dow="cd $HOME/Downloads/ && ls" \ + mus="cd $HOME/Music/ && ls" \ + prt="cd $HOME/Pictures/Screenshots/ && ls" \ + bkg="cd $HOME/Pictures/Backgrounds/ && ls" \ + img="cd $HOME/Pictures/ && ls" \ + vid="cd $HOME/Videos/ && ls" \ + +alias \ + ls="exa -al --icons --group-directories-first --no-permissions --no-user --time-style=iso --git" \ + fzf="fzf --cycle --reverse" \ + diff="diff --color=auto" \ + grep="grep --color=auto" \ + calc="bc -l" \ + cp="cp -iv" \ + mv="mv -iv" \ + rm="trash" \ + vim="nvim" \ + mgr-all="mgr pacman_upgrade apt_upgrade flatpak_update distrobox_update pip_update configs passmgr" \ + df-short="df -h | grep -v '\s/dev.*$\|\s/run.*$\|\s/boot.*$'" \ + qr-png="qrencode -s 16 -o qr.png" \ + qr="qrencode -t ansiutf8" \ + clip="xsel -ib" \ + +[ -f ~/.config/shell/posix-kit ] && . ~/.config/shell/posix-kit +[ -f ~/.config/shell/dwm ] && . ~/.config/shell/dwm + +command -v fetch >/dev/null 2>&1 && fetch min