# Notes on Installing {{{ # You'll need to install oh-my-zsh and alien # # 1. oh-my-zsh # # sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # # 2. alien # # git clone https://github.com/eendroroy/alien.git && cd alien && git submodule update --init --recursive # }}} device="desktop" # can be either "desktop" (default when empty), "server" or "android" # General {{{ # Exports {{{ export PATH=$HOME/bin:/usr/local/bin:$PATH # Adds ~/bin and /usr/local/bin paths to PATH export PATH="$PATH:$HOME/.npm-global/bin" # Adds ~/.npm-global/bin path to PATH export PATH="$PATH:$HOME/go/bin" # Adds ~/go/bin to PATH # export LANG=en_US.UTF-8 # You may need to manually set your language environment if [[ -n $SSH_CONNECTION ]]; then # Preferred editor for local export EDITOR='vim' else # and remote export EDITOR='vim' fi # }}} # Theme {{{ ZSH_THEME="gruvbox" SOLARIZED_THEME="dark" # }}} # Completion {{{ # CASE_SENSITIVE="true" # case-sensitive completion # HYPHEN_INSENSITIVE="true" # hyphen-insensitive completion (case_sensitive must be false) # }}} # Updates {{{ # DISABLE_AUTO_UPDATE="true" # disable bi-weekly auto-update checks # DISABLE_UPDATE_PROMPT="true" # update without prompting # export UPDATE_ZSH_DAYS=13 # how often to auto-update (in days) # DISABLE_MAGIC_FUNCTIONS="true" # uncomment if pasting URLs and other text is messed up # ENABLE_CORRECTION="true" # command auto-correction # COMPLETION_WAITING_DOTS="true" # display red dots while waiting for completion # DISABLE_UNTRACKED_FILES_DIRTY="true" # disable marking untracked files under VCS as dirty; improves status check for large repos # }}} # Other {{{ stty -F/dev/tty -ixon -ixoff # Disables Software Flow Control setopt long_list_jobs # Changing/making/removing directory setopt auto_pushd setopt pushd_ignore_dups setopt pushdminus # recognize comments setopt interactivecomments # don't backward-kill-word on forward slash autoload -U select-word-style select-word-style bash # }}} # }}} # Homelander {{{ source ~/.zsh/homelander/homelander.zsh export RPROMPT='' # }}} # Alien {{{ # source ~/.zsh/alien/alien.zsh # Visuals {{{ export ALIEN_THEME="gruvbox" export ALIEN_SECTION_BATTERY_FG=223 export ALIEN_SECTION_PATH_FG=178 export ALIEN_SECTION_USER_FG=223 export ALIEN_SECTION_USER_BG=66 export ALIEN_GIT_TRACKED_COLOR=196 export ALIEN_GIT_UN_TRACKED_COLOR=214 if [[ $device == "server" ]]; then export ALIEN_SECTION_BATTERY_FG=0 export ALIEN_SECTION_BATTERY_BG=67 export ALIEN_SECTION_USER_FG=0 export ALIEN_SECTION_USER_BG=67 fi export ALIEN_PROMPT_SYM=" " export ALIEN_GIT_SYM= export ALIEN_BRANCH_SYM= export ALIEN_GIT_ADD_SYM=ﰂ export ALIEN_GIT_DEL_SYM=ﯰ export ALIEN_GIT_MOD_SYM=﯂ export ALIEN_GIT_NEW_SYM=? # }}} # Sections configuration {{{ export ALIEN_SECTION_TIME_FORMAT=%H:%M:%S export ALIEN_SECTIONS_LEFT=( left_cap ssh user path git_branch:async git_status:async left_end_cap newline prompt ) export ALIEN_SECTIONS_RIGHT=( exit time battery right_end_cap ) # }}} # Custom sections {{{ alien_prompt_section_left_cap() { __section=( content " %B%b" foreground $ALIEN_SECTION_USER_BG ) } alien_prompt_section_right_end_cap() { __section=( content "%B%b" foreground $ALIEN_SECTION_BATTERY_BG ) } alien_prompt_section_git_branch() { local __branch_info= if [[ $(alien_is_git) == 1 ]]; then __branch_info=$(alien_git_branch) else return 1 fi __section=( content " ${__branch_info}" foreground $ALIEN_SECTION_VCS_BRANCH_BG background $ALIEN_SECTION_EXIT_BG ) } alien_prompt_section_git_status() { local __stash_info= local __lr_info= local __dirty_info= if [[ $(alien_is_git) == 1 ]]; then __stash_info=$(alien_git_stash) __lr_info=$(alien_git_lr) __dirty_info=$(alien_git_dirty) else return 1 fi __section=( content " ${__stash_info}${__lr_info}${__dirty_info}" foreground 214 background $ALIEN_SECTION_EXIT_BG separator 1 ) } # }}} # Section overrides {{{ alien_prompt_section_exit() { __section=( content "%(?.  . %? )" foreground "%(?.$ALIEN_SECTION_VCS_BRANCH_BG.$ALIEN_SECTION_EXIT_FG)" background "%(?.$ALIEN_SECTION_EXIT_BG.$ALIEN_SECTION_EXIT_BG_ERROR)" separator 1 ) } alien_prompt_section_prompt() { __section=( content "%B${ALIEN_PROMPT_SYM}%b " foreground "%(?.$ALIEN_PROMPT_FG.$ALIEN_SECTION_EXIT_BG_ERROR)" ) } alien_battery_stat(){ __os=$(uname) if [[ ${__os} = "Linux" ]]; then if command -v upower > /dev/null 2>&1 ; then # If there are batteries in the machine __bat_power=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | awk '{print $2}') __bat_power_ind="" if [[ ${__bat_power} = "charging" ]]; then __bat_power_ind="" elif [[ ${__bat_power} = "discharging" ]]; then __bat_power_ind="" elif [[ ${__bat_power} = "fully-charged" ]]; then __bat_power_ind="" fi __bat_per=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk '{print $2}' | sed "s|%||g") if [[ -n ${__bat_per} ]]; then echo -n "${__bat_power_ind} ${__bat_per}%%" fi fi fi unset __os __bat_power __bat_power_ind __bat_per } alien_prompt_section_battery() { local __to_return=" " if [ -n "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state)" ]; then __to_return=" $(alien_battery_stat) " fi __section=( content $__to_return foreground $ALIEN_SECTION_BATTERY_FG background $ALIEN_SECTION_BATTERY_BG separator 1 ) } if [[ $device == "server" ]]; then alien_ssh_client(){ if [[ -n "${SSH_CLIENT}" ]]; then echo " syndamia.com" fi } alien_prompt_section_ssh() { local __ssh_info __ssh_info=$(alien_ssh_client) [[ -n $__ssh_info ]] || return 1 __section=( content "${__ssh_info}" foreground $ALIEN_SECTION_USER_FG background $ALIEN_SECTION_USER_BG ) } fi if [[ $device == "android" ]]; then alien_user_info() { whoami } alien_battery_stat(){ echo " " } alien_prompt_section_battery() { __section=( content " " foreground $ALIEN_SECTION_BATTERY_FG background $ALIEN_SECTION_BATTERY_BG separator 1 ) } fi # }}} # }}} # Plugins {{{ # omz plugins {{{ source ~/.zsh/omz/history.zsh source ~/.zsh/omz/termsupport.zsh source ~/.zsh/omz/key-bindings.zsh source ~/.zsh/omz/compfix.zsh # }}} # zsh-syntax-highlighting {{{ source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh # }}} # }}} # Aliases {{{ # portage {{{ if [[ -x "$(command -v emerge)" ]]; then alias seq="sudo emerge --quiet-build -v" alias sep="sudo emerge -pv" alias sen="sudo ego sync && sudo emerge --quiet-build -vuDN @world" alias seN="sudo emerge --quiet-build -vuDN @world" alias seNp="sudo emerge --quiet-build -pvuDN @world" alias ses="sudo emerge -s" alias seS="sudo emerge -S" alias sec="sudo emerge -c" alias seC="sudo emerge -C" alias secp="sudo emerge -cp" alias seCp="sudo emerge -Cp" fi # }}} # dnf {{{ if [[ -x "$(command -v dnf)" ]]; then alias sdi="sudo dnf install -y" alias sdr="sudo dnf remove -y" alias sda="sudo dnf autoremove -y" # If you're using dotnet from the "packages-microsoft-com-prod" repo, make sure to # add "exclude=dotnet* aspnetcore* netstandard*" inside the /etc/yum.repos.d/fedora.repo, /etc/yum.repos.d/fedora-updates.repo and potentially /etc/yum.repos.d/fedora33.repo alias sdu="sudo dnf upgrade -y && sudo dnf autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash && needs-restarting -r" alias ds="dnf search" alias dcs="dnf copr search" alias dp="dnf provides" alias di="dnf info" alias sdce="sudo dnf copr enable -y" alias sdcei='f() { sudo dnf copr enable -y $1 && sudo dnf install -y $2; unset -f f }; f' fi # }}} # apt {{{ if [[ -x "$(command -v apt-get)" ]]; then alias sasy="sudo apt install -y" alias sary="sudo apt remove -y" alias saty="sudo apt autoremove -y" alias sagt="sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash" fi # }}} if [[ device != "server" ]]; then # General commands {{{ if [[ -x "$(command -v exa)" ]]; then alias ll="exa --icons --group-directories-first --git --time-style long-iso -a -labh" alias lk="exa --icons --group-directories-first --git --time-style long-iso -labhTL" alias l.="exa --icons --group-directories-first --git --time-style long-iso -labhTL 2" alias l="exa --icons --group-directories-first --time-style long-iso -abh" else alias ll="la -alF" alias la="ls -A" alias l="ls -CF" fi alias q="exit" alias x="exit" alias cdg="cdcomb ~/Programming/GitHub-repos/" alias cdl="cdcomb ~/Programming/GitLab-repos/" alias cds="cdcomb ~/Programming/source/" # }}} # Application specific {{{ alias combinepdf="gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf" alias lg="lazygit" alias ydl="youtube-dl -o '%(title)s.%(ext)s'" alias ydlba="youtube-dl -o '%(title)s.%(ext)s' --audio-format best -x" alias gr="grit" alias gra="grit add --" alias grc="grit check" alias grls="grit tree" alias sdudiscord="wget -O discord.tar.gz \"https://discord.com/api/download?platform=linux&format=tar.gz\" && tar -xzf discord.tar.gz && sudo rm -rf /opt/Discord && sudo mv Discord /opt" # }}} fi # }}} # Binds {{{ bindkey '^H' backward-kill-word # }}} # Functions {{{ # Run in the background bgr () { nohup sh -c "$@" 2>&1 & disown } # Kill process and run in the background res () { pkill $@ bgr $@ } if [[ device != "server" ]]; then cdcomb () { dir="$1" if ! [ -z "$2" ]; then dir="$1$2" fi cd "$dir" } fi if [[ device != "server" && device != "android" ]]; then if [[ -x "$(command -v vim)" ]]; then # Open vim with .vim-session file, if it exists and the vim command doesn't have any parameters v () { if [ -f ".vim-session" ] && [ -z "$1" ]; then vim -S .vim-session else vim $@ fi } fi if [[ -x "$(command -v grit)" ]]; then # Add to grit parent, where first value is parent number and everything else is node value grap () { parent="$1" shift grit add -p $parent -- $@ } fi if [[ -x "$(command -v nemo)" ]]; then onemo() { bgr "nemo ./" } fi # Launch .desktop application (either full path or just name) dela () { name=$1 if [[ ${name:0:1} != "/" ]]; then name="/usr/share/applications/${name}" fi if [[ ! $name =~ .desktop$ ]]; then name+=".desktop" fi comm=($(awk -F= '$1=="Exec"{$1=""; print}' "$name")) bgr "$comm" } fi # }}} # Execute on startup {{{ #}}} # Added by scripts: export PATH="/home/kamen/bin/Sencha/Cmd:$PATH" export NVM_DIR="$HOME/.nvm" # [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm # [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion