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 PATH="$PATH:/sbin" export FPATH="$FPATH:$HOME/.zsh/completion" # 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 # }}} # setopt and autoload {{{ 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 # autoloads completion files # Note: remove all ~/.zcompdump files in case something doesn't autoload autoload -U compinit compinit # }}} # }}} # 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 # }}} # Homelander {{{ source ~/.zsh/homelander/homelander.zsh source ~/.zsh/homelander/homelander-sections.zsh export PROMPT='$(hl_exitpwd)$(hl_cecho_caps $(hl_user)  ) $(hl_cecho $(hl_time)) $(hl_cecho $(hl_precursor)) ' export RPROMPT='$(hl_duration)' HL_TIME_T='%T' hl_hooks() { hl_time_async hl_precursor_async } # Custom section hl_exitpwd() { local __bg=$([ -n "$SSH_TTY" ] && echo $HL_USER_SSH || echo $HL_USER_BG) line=(' |' ' ' ']\n' '\n' '\b' '\b' 0) [ "$_exit_code" -ne 0 ] && line+=(o $HL_EXIT_FG ' %? ') [ "$_print_directory" -ne 0 ] && line+=(o $__bg ' %d ') [ ${#line} -gt 7 ] && hl_concatsec $line } hl_duration() { local __dur=($(hl_exec_duration)) [ "${#__dur}" -gt 0 ] && hl_cecho_caps o 140 " ${__dur[@]:2} "   \ || true } # }}} # }}} # Functions {{{ # Funtoo updates {{{ pre-sync() { echo '(.zshrc) Running pre-sync function...' # Since in post-sync I change the EAPI of a lot of the ebuilds, # the overlay can't be synced properly _pwd=$(pwd) cd /var/db/repos/gentoo sudo git reset --hard cd $_pwd echo '(.zshrc) pre-sync finished! :}' } post-sync() { echo '(.zshrc) Running post-sync function...' # Fixes the elusive # "!!! Repository name or alias 'gentoo', defined for repository 'core-kit', overrides existing alias or repository." # error when enabling gentoo overlay sudo sed -i 's/aliases = gentoo/#aliases = gentoo/g' /var/git/meta-repo/kits/core-kit/metadata/layout.conf # In the gentoo overlay, most packages don't actually use EAPI 8 specific features, so # they can safely be rolled back to EAPI 7 (funtoo's portage doesn't support EAPI 8 yet). # However, there are still some that do need EAPI 8, so they should be left alone. # Since I'm incredibly lazy, for now, this is how I'm gonna do it. find '/var/db/repos/gentoo' -type f -name "*.ebuild" ! -path "*dev-qt*" ! -path "*kde-frameworks*" ! -path "*kde-plasma*" \ | xargs sudo sed -i 's/EAPI=8/EAPI=7/g' echo '(.zshrc) post-sync finished! :]' } alias sen="pre-sync && sudo ego sync && post-sync && sudo emerge --quiet-build -vuDN @world" # }}} # cdrepo {{{ cdrepo () { [ -n "$2" ] && cd "$HOME/Programming/$1/$2" \ || cd "$HOME/Programming/$1" } alias cdg="cdrepo GitHub-repos" alias cdl="cdrepo GitLab-repos" alias cds="cdrepo source" # }}} # plumb.sh {{{ plumb-store-cwd () { pwd > /tmp/plumb-cwd } zle -N plumb-store-cwd bindkey "^[[5;7~" plumb-store-cwd # }}} # Run in the background bgr () { nohup sh -c "$@" 2>&1 & disown } # Kill process and run in the background res () { pkill $@ bgr $@ } if [[ $device == "desktop" ]]; 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" } metas() { for file in *; do [ "$file" != 'cover.jpeg' ] && \ kid3-cli -c "set title \"$(echo "$file" | sed -e "s/\.[^.]*$//")\"" \ -c "set artist \"$1\"" -c "set album \"$2\"" -c "set date \"$3\"" \ -c 'set picture:"./cover.jpeg" ""' "$file" \ || : done } fi # }}} # Aliases {{{ # portage {{{ if [[ -x "$(command -v emerge)" ]]; then alias seq="sudo emerge --quiet-build -v" alias sep="sudo emerge -pv" 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" alias use="sudo vim /etc/portage/package.use" alias unmask="sudo vim /etc/portage/package.unmask" alias mask="sudo vim /etc/portage/package.mask" 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 # }}} # General commands {{{ alias q="exit" alias x="exit" 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 if [[ $device != "server" ]]; then else alias wudo="sudo -u www-data" fi # }}} # Application specific {{{ if [[ $device != "server" ]]; then 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 # }}} # 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