added zsh config

This commit is contained in:
2026-06-11 19:13:52 +02:00
parent 4c8bdc323b
commit 389a6addd3
3 changed files with 703 additions and 0 deletions
+436
View File
@@ -0,0 +1,436 @@
# last change: Wed 2025-02-04
#
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block, everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
# Log WLR errors and logs to the hyprland log. Recommended
export HYPRLAND_LOG_WLR=1
exec start-hyprland &> /dev/null
# exec Hyprland &> /dev/null
fi
# Catppuccin Mocha Theme (for zsh-syntax-highlighting)
# Paste this files contents inside your ~/.zshrc before you activate zsh-syntax-highlighting
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main cursor)
typeset -gA ZSH_HIGHLIGHT_STYLES
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.config/zsh/catppuccin_mocha-zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 1>/dev/null
# Enable colors and change prompt:
autoload -U colors && colors # Load colors
setopt autocd # Automatically cd into typed directory.
setopt interactive_comments
# History in cache directory:
HISTSIZE=10000000
SAVEHIST=10000000
HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history"
# HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
# setopt appendhistory
# Load aliases and shortcuts if existent.
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
#[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
# Basic auto/tab complete:
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
_comp_options+=(globdots) # Include hidden files.
# Use emacs key bindings
bindkey -e
# [PageUp] - Up a line of history
if [[ -n "${terminfo[kpp]}" ]]; then
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
bindkey -M viins "${terminfo[kpp]}" up-line-or-history
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
fi
# [PageDown] - Down a line of history
if [[ -n "${terminfo[knp]}" ]]; then
bindkey -M emacs "${terminfo[knp]}" down-line-or-history
bindkey -M viins "${terminfo[knp]}" down-line-or-history
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
fi
# Start typing + [Up-Arrow] - fuzzy find history forward
if [[ -n "${terminfo[kcuu1]}" ]]; then
autoload -U up-line-or-beginning-search
zle -N up-line-or-beginning-search
bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search
bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search
bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search
fi
# Start typing + [Down-Arrow] - fuzzy find history backward
if [[ -n "${terminfo[kcud1]}" ]]; then
autoload -U down-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search
bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search
bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search
fi
# [Home] - Go to beginning of line
#if [[ -n "${terminfo[khome]}" ]]; then
# bindkey -M emacs "${terminfo[khome]}" beginning-of-line
# bindkey -M viins "${terminfo[khome]}" beginning-of-line
# bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
#fi
# [End] - Go to end of line
if [[ -n "${terminfo[kend]}" ]]; then
bindkey -M emacs "${terminfo[kend]}" end-of-line
bindkey -M viins "${terminfo[kend]}" end-of-line
bindkey -M vicmd "${terminfo[kend]}" end-of-line
fi
# [Shift-Tab] - move through the completion menu backwards
if [[ -n "${terminfo[kcbt]}" ]]; then
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
fi
# [Backspace] - delete backward
bindkey -M emacs '^?' backward-delete-char
bindkey -M viins '^?' backward-delete-char
bindkey -M vicmd '^?' backward-delete-char
# [Delete] - delete forward
if [[ -n "${terminfo[kdch1]}" ]]; then
bindkey -M emacs "${terminfo[kdch1]}" delete-char
bindkey -M viins "${terminfo[kdch1]}" delete-char
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
else
bindkey -M emacs "^[[3~" delete-char
bindkey -M viins "^[[3~" delete-char
bindkey -M vicmd "^[[3~" delete-char
bindkey -M emacs "^[3;5~" delete-char
bindkey -M viins "^[3;5~" delete-char
bindkey -M vicmd "^[3;5~" delete-char
fi
# [Ctrl-Delete] - delete whole forward-word
bindkey -M emacs '^[[3;5~' kill-word
bindkey -M viins '^[[3;5~' kill-word
bindkey -M vicmd '^[[3;5~' kill-word
# [Ctrl-RightArrow] - move forward one word
bindkey -M emacs '^[[1;5C' forward-word
bindkey -M viins '^[[1;5C' forward-word
bindkey -M vicmd '^[[1;5C' forward-word
# [Ctrl-LeftArrow] - move backward one word
bindkey -M emacs '^[[1;5D' backward-word
bindkey -M viins '^[[1;5D' backward-word
bindkey -M vicmd '^[[1;5D' backward-word
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
bindkey ' ' magic-space # [Space] - don't do history expansion
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
# ncurses fogyatekos
[[ "$terminfo[kcuu1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
fi
# del, home and end !! THIS WORKS!!
bindkey "\e[3~" delete-char
bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line
# Edit the current command line in $EDITOR
autoload -U edit-command-line
zle -N edit-command-line
bindkey '\C-x\C-e' edit-command-line
# file rename magick
bindkey "^[m" copy-prev-shell-word
# alt-bs
bindkey "\e\d" undo
# consider emacs keybindings:
#bindkey -e ## emacs key bindings
#
#bindkey '^[[A' up-line-or-search
#bindkey '^[[B' down-line-or-search
#bindkey '^[^[[C' emacs-forward-word
#bindkey '^[^[[D' emacs-backward-word
#
#bindkey -s '^X^Z' '%-^M'
#bindkey '^[e' expand-cmd-path
#bindkey '^[^I' reverse-menu-complete
#bindkey '^X^N' accept-and-infer-next-history
#bindkey '^W' kill-region
#bindkey '^I' complete-word
## Fix weird sequence that rxvt produces
#bindkey -s '^[[Z' '\t'
#
############ POWERLEVEL THEME SETTINGS ##############
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_arch_icon dir vcs)
# POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(disk_usage time)
# POWERLEVEL9K_CUSTOM_ARCH_ICON='echo  nf'
POWERLEVEL9K_CUSTOM_ARCH_ICON_BACKGROUND=031
POWERLEVEL9K_CUSTOM_ARCH_ICON_FOREGROUND=252
# POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
# POWERLEVEL9K_PROMPT_ON_NEWLINE=true
# POWERLEVEL9K_SHOW_RULER=true
# POWERLEVEL9K_RULER_CHAR='─'
# POWERLEVEL9K_RULER_BACKGROUND=none
# POWERLEVEL9K_RULER_FOREGROUND=252
# POWERLEVEL9K_LEFT_SEGMENT_END_SEPARATOR=
# POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=
# POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR=' '
# POWERLEVEL9K_RIGHT_SEGMENT_END_SEPARATOR=
# POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=
# POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR=
# POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS=
# POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
# POWERLEVEL9K_SHORTEN_STRATEGY="truncate_middle"
# POWERLEVEL9K_DIR_SHOW_WRITABLE=true
# POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=none
# POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=magenta
# POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=red
# POWERLEVEL9K_TIME_BACKGROUND=none
# POWERLEVEL9K_TIME_FOREGROUND=white
POWERLEVEL9K_DIR_HOME_BACKGROUND=239
# POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND=none
# POWERLEVEL9K_DIR_ETC_BACKGROUND=none
# POWERLEVEL9K_DIR_DEFAULT_BACKGROUND=none
# POWERLEVEL9K_DIR_NOT_WRITABLE_BACKGROUND=none
POWERLEVEL9K_DIR_HOME_FOREGROUND=252
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND=252
POWERLEVEL9K_DIR_ETC_FOREGROUND=252
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND=252
POWERLEVEL9K_DIR_NOT_WRITABLE_FOREGROUND=100
# POWERLEVEL9K_OS_ICON_BACKGROUND="white"
# POWERLEVEL9K_OS_ICON_FOREGROUND="white"
# POWERLEVEL9K_VCS_GIT_ICON='%fon %F{040}\uf1d3 '
# POWERLEVEL9K_VCS_GIT_GITHUB_ICON='%fon %F{040}\uf09b '
# POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON='%fon %F{040}\uf171 '
# POWERLEVEL9K_VCS_GIT_GIT_GITLAB_ICON='%fon %F{040}\uf296 '
# POWERLEVEL9K_VCS_CLEAN_BACKGROUND=none
# POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=none
# POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=none
# POWERLEVEL9K_VCS_LOADING_BACKGROUND=none
# POWERLEVEL9K_VCS_CLEAN_FOREGROUND="040"
# POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="red"
# POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="yellow"
# POWERLEVEL9K_VCS_LOADING_FOREGROUND="grey"
# POWERLEVEL9K_VCS_UNTRACKED_ICON=$'%{\b?%}'
# POWERLEVEL9K_VCS_UNSTAGED_ICON=$'%{\b!%}'
# POWERLEVEL9K_VCS_STAGED_ICON=$'%{\b+%}'
# POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_COLOR=red
# POWERLEVEL9K_LOCK_ICON=$'\uf023'
# POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=''
# local p='%F{%(?.green.red)}${${${KEYMAP:-0}:#vicmd}:+}${${$((!${#${KEYMAP:-0}:#vicmd})):#0}:+}%f '
# POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="$p"
# POWERLEVEL9K_NVM_BACKGROUND=none
# POWERLEVEL9K_NVM_FOREGROUND=green
# POWERLEVEL9K_NODE_ICON='%fvia %F{green}⬢'
############ END- POWERLEVEL THEME SETTINGS ##############
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
### ARCHIVE EXTRACTION
# usage: ex <file>
# ex ()
# {
# if [ -f $1 ] ; then
# case $1 in
# *.tar.bz2) tar xjf $1 ;;
# *.tar.gz) tar xzf $1 ;;
# *.bz2) bunzip2 $1 ;;
# *.rar) unrar x $1 ;;
# *.gz) gunzip $1 ;;
# *.tar) tar xf $1 ;;
# *.tbz2) tar xjf $1 ;;
# *.tgz) tar xzf $1 ;;
# *.zip) unzip $1 ;;
# *.Z) uncompress $1;;
# *.7z) 7z x $1 ;;
# *.deb) ar x $1 ;;
# *.tar.xz) tar xf $1 ;;
# *.tar.zst) unzstd $1 ;;
# *) echo "'$1' cannot be extracted via ex()" ;;
# esac
# else
# echo "'$1' is not a valid file"
# fi
# }
### ALIASES ###
# !!! DEPRECATED !!!
# --> now in ~/.config/shell/aliasrc and ~/.config/shell/shortcutsrc
## get top process eating memory
#alias psmem='ps auxf | sort -nr -k 4'
#alias psmem10='ps auxf | sort -nr -k 4 | head -10'
## get top process eating cpu ##
#alias pscpu='ps auxf | sort -nr -k 3'
#alias pscpu10='ps auxf | sort -nr -k 3 | head -10'
unsetopt nomatch
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
#[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# paths - #TODO: maybe put them into separate file:
export PATH=~/.local/bin:$PATH
export PATH=/home/tobias/.local/share/soar/bin:$PATH
export PATH=/home/tobias/.config/gem/ruby/2.7.0/bin:$PATH
export PATH=/home/tobias/.local/share/cargo/bin:$PATH
export PATH=/home/tobias/.local/share/npm/bin/:$PATH
export PATH=/usr/bin/perl:$PATH
# export LS_COLORS="$(vivid generate catppuccin-mocha)"
# color-ls:
# Enable tab completion for flags by entering following line to your shell configuration file (~/.bashrc or ~/.zshrc) :
#source $(dirname $(gem which colorls))/tab_complete.sh
#for tilix
# if [ $TILIX_ID ] || [ $VTE_VERSION ]; then
# source /etc/profile.d/vte.sh
# fi
#
[[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
# autostart Hyprland
# if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
# exec sh "~/.config/hypr/initrc"
# fi
#
# if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
# # pidof mylock > /dev/null || exec startw
# # exec hl
# sh "~/.config/hypr/initrc"
# fi
#
# if [ "$(tty)" = "/dev/tty1" ] ; then
#if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
# cd ~
# # Log WLR errors and logs to the hyprland log. Recommended
# export HYPRLAND_LOG_WLR=1
# #NOW IN HYPRLAND ENV -- todo: delete me
# # Tell XWayland to use a cursor theme
# # export XCURSOR_THEME=Bibata-Modern-Ice
# # export XCURSOR_THEME=Breeze_Snow
# # NOW IN HYPRLAND ENV
# # Set a cursor size
# # export XCURSOR_SIZE=24
# # # nvidia stuff:
# # export LIBVA_DRIVER_NAME=nvidia
# # export XDG_SESSION_TYPE=wayland
# # export GBM_BACKEND=nvidia-drm
# # export __GLX_VENDOR_LIBRARY_NAME=nvidia
# # export WLR_NO_HARDWARE_CURSORS=1
# exec Hyprland &> /dev/null
#fi
# exec sh "~/.config/hypr/initrc"fifi
# if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
# # pidof mylock > /dev/null || exec startw
# # exec hl
# exec "~/.config/hypr/initrc"
# fi
autoload bashcompinit
bashcompinit
source "/home/tobias/.local/share/bash-completion/completions/appman"
autoload bashcompinit
bashcompinit
source "/home/tobias/.local/share/bash-completion/completions/archimage-cli"