diff options
| author | Syndamia <kamen@syndamia.com> | 2023-03-10 11:05:24 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2023-03-10 11:05:24 +0200 |
| commit | 6d4c7317986e234f0fe1b681f817f6d1df81c268 (patch) | |
| tree | 865f6440e88892d63df0ca4a3c3b599892e44fa5 | |
| parent | 84133d21f0bf28f1f95f4dd88f4a28327a68e30f (diff) | |
| download | dotfiles-6d4c7317986e234f0fe1b681f817f6d1df81c268.tar dotfiles-6d4c7317986e234f0fe1b681f817f6d1df81c268.tar.gz dotfiles-6d4c7317986e234f0fe1b681f817f6d1df81c268.zip | |
[.zsh] Moved .zshrc to .zsh folder
| -rw-r--r-- | .zsh/.zshrc | 335 | ||||
| l---------[-rw-r--r--] | .zshrc | 336 |
2 files changed, 336 insertions, 335 deletions
diff --git a/.zsh/.zshrc b/.zsh/.zshrc new file mode 100644 index 0000000..6ba4973 --- /dev/null +++ b/.zsh/.zshrc @@ -0,0 +1,335 @@ +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 @@ -1,335 +1 @@ -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 +.zsh/.zshrc
\ No newline at end of file |
