diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml index 4b945f2..ffa1e86 100644 --- a/.config/alacritty/alacritty.toml +++ b/.config/alacritty/alacritty.toml @@ -4,11 +4,11 @@ import = ["~/.config/alacritty/themes/gruvbox_dark.toml"] TERM = "xterm-256color" [font] -size = 16.0 +size = 14.0 [font.normal] family = "JetBrainsMono Nerd Font Mono" -style = "Light" +style = "ExtraLight" [window] opacity = 1 diff --git a/.config/skhd/skhdrc b/.config/skhd/skhdrc index ddc6201..964d1f1 100644 --- a/.config/skhd/skhdrc +++ b/.config/skhd/skhdrc @@ -10,7 +10,6 @@ cmd - u : yabai --load-sa && yabai --restart # Assuming you have scripting addit # Window Management #cmd - h : yabai -m window --resize right:-20:0 #cmd - l : yabai -m window --resize left:20:0 -cmd + shift + alt - t : yabai -m window --toggle float # Focus workspaces 1 through 6 diff --git a/.config/yabai/yabairc b/.config/yabai/yabairc index 8463d8f..9692580 100755 --- a/.config/yabai/yabairc +++ b/.config/yabai/yabairc @@ -11,4 +11,21 @@ yabai -m config focus_follows_mouse autofocus yabai -m config window_placement first_child yabai -m config window_placement second_child -yabai -m rule --add app="^Firefox$" manage=on +yabai -m rule --add app="^Firefox$" space=2 +yabai -m rule --add app="^Discord$" space=3 +yabai -m rule --add app="^TIDAL$" space=4 +# Add more rules based on your applications and workspace preferences + + + +#Indicator +yabai -m signal --add event=mission_control_exit action='echo "refresh" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=display_added action='echo "refresh" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=display_removed action='echo "refresh" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_created action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_destroyed action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_focused action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_moved action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_resized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_minimized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' +yabai -m signal --add event=window_deminimized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket' diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc deleted file mode 100644 index 0f1f6e5..0000000 --- a/.config/zsh/.zshrc +++ /dev/null @@ -1,78 +0,0 @@ -# Add paths -export PATH="/usr/sbin:/sbin:$PATH" -export PATH="$HOME/.local/share/nvim/mason/bin:$PATH" -export PATH="$HOME/.local/bin:$PATH" -export PATH="$HOME/go/bin:$PATH" -export PATH="$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin:$PATH" -export PATH="$HOME/.cargo/bin:$PATH" -export PATH="$HOME/.ghcup/bin:$PATH" -export PATH="$HOME/.miniforge3/bin:$PATH" -export PATH="$HOME/.cabal/bin:$PATH" -export GOPATH=$HOME/.go -export PATH=$PATH:$GOPATH/bin -export PATH="/opt/homebrew/bin:$PATH" -export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH" -export PATH="/opt/homebrew/opt/texlive/bin:$PATH" - -# Setup History -HISTSIZE=100000000 -SAVEHIST=100000000 -setopt BANG_HIST # Treat the '!' character specially during expansion. -setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. -setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. -setopt SHARE_HISTORY # Share history between all sessions. -setopt HIST_FIND_NO_DUPS # Do not display a line previously found. -setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. -setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. -setopt HIST_SAVE_NO_DUPS -setopt HIST_IGNORE_ALL_DUPS -setopt HIST_VERIFY - - -#Set EDITOR AND READER -export EDITOR=nvim -export VISUAL=nvim -export READER=mupdf - -#THEME -source $ZDOTDIR/themes/gruvbox_dark.zsh - -#Completions -autoload -U compinit && compinit -fpath+=$ZDOTDIR/plugins/zsh-completions/src - -#Prompt -fpath+=$ZDOTDIR/prompts/pure -autoload -U promptinit; promptinit -prompt pure - -source $ZDOTDIR/dotfiles.zsh -source $ZDOTDIR/qol.zsh -source $ZDOTDIR/replacements.zsh -source $ZDOTDIR/overrides.zsh -source $ZDOTDIR/plugins.zsh - -# >>> conda initialize >>> -# !! Contents within this block are managed by 'conda init' !! -__conda_setup="$('/Users/afonso/.miniforge3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" -if [ $? -eq 0 ]; then - eval "$__conda_setup" -else - if [ -f "/Users/afonso/.miniforge3/etc/profile.d/conda.sh" ]; then - . "/Users/afonso/.miniforge3/etc/profile.d/conda.sh" - else - export PATH="/Users/afonso/.miniforge3/bin:$PATH" - fi -fi -unset __conda_setup - -if [ -f "/Users/afonso/.miniforge3/etc/profile.d/mamba.sh" ]; then - . "/Users/afonso/.miniforge3/etc/profile.d/mamba.sh" -fi - -# <<< conda initialize <<< -eval "$(direnv hook zsh)" -if [[ $(uname) == "Darwin" ]]; then - eval "$(/opt/homebrew/bin/brew shellenv)" -fi - diff --git a/.config/zsh/main.zsh b/.config/zsh/main.zsh index 57c343c..dbbaa5e 100644 --- a/.config/zsh/main.zsh +++ b/.config/zsh/main.zsh @@ -1,22 +1,25 @@ -HISTSIZE=100000000 -SAVEHIST=100000000 +HISTSIZE=10000000 +SAVEHIST=10000000 setopt BANG_HIST # Treat the '!' character specially during expansion. setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. setopt SHARE_HISTORY # Share history between all sessions. +setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. +setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. -setopt HIST_SAVE_NO_DUPS setopt HIST_VERIFY export EDITOR=nvim -export VISUAL=nvim export READER=mupdf enable-fzf-tab +# opam configuration +source $HOME/.opam/opam-init/init.zsh > /dev/null 2>&1 || true + eval "$(direnv hook zsh)" if [[ $(uname) == "Darwin" ]]; then eval "$(/opt/homebrew/bin/brew shellenv)" diff --git a/.config/zsh/overrides.zsh b/.config/zsh/overrides.zsh index 7433e46..b98fa64 100644 --- a/.config/zsh/overrides.zsh +++ b/.config/zsh/overrides.zsh @@ -1,9 +1,7 @@ ZSH_AUTOSUGGEST_STRATEGY=(match_prev_cmd history completion) if [[ ! $(tty) =~ ^/dev/tty[0-9]*$ ]]; then - if [[ -z $TMUX ]]; then - tmux new -As0 - fi + ZSH_TMUX_AUTOSTART=true fi zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath' diff --git a/.config/zsh/plugins.zsh b/.config/zsh/plugins.zsh deleted file mode 100644 index 65a8887..0000000 --- a/.config/zsh/plugins.zsh +++ /dev/null @@ -1,17 +0,0 @@ -source $ZDOTDIR/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh - -source $ZDOTDIR/plugins/zsh-history-substring-search/zsh-history-substring-search.plugin.zsh - -source $ZDOTDIR/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh - -source $ZDOTDIR/plugins/fzf-tab/fzf-tab.plugin.zsh -enable-fzf-tab - -source $ZDOTDIR/plugins/zsh-vi-mode/zsh-vi-mode.plugin.zsh -zvm_after_init_commands+=('[ -f $HOME/.fzf.zsh ] && source $HOME/.fzf.zsh') - -source $ZDOTDIR/plugins/zsh-macos.plugin.zsh - -source $ZDOTDIR/plugins/zsh-git.plugin.zsh - -source $ZDOTDIR/plugins/zsh-sudo.plugins.zsh diff --git a/.config/zsh/plugins/fast-syntax-highlighting b/.config/zsh/plugins/fast-syntax-highlighting new file mode 160000 index 0000000..cf318e0 --- /dev/null +++ b/.config/zsh/plugins/fast-syntax-highlighting @@ -0,0 +1 @@ +Subproject commit cf318e06a9b7c9f2219d78f41b46fa6e06011fd9 diff --git a/.config/zsh/plugins/fzf-zsh-plugin b/.config/zsh/plugins/fzf-zsh-plugin new file mode 160000 index 0000000..671291a --- /dev/null +++ b/.config/zsh/plugins/fzf-zsh-plugin @@ -0,0 +1 @@ +Subproject commit 671291a0dba1971d5c87a0cdc809711a9b7636fa diff --git a/.config/zsh/plugins/zsh-abbr b/.config/zsh/plugins/zsh-abbr new file mode 160000 index 0000000..84f18ab --- /dev/null +++ b/.config/zsh/plugins/zsh-abbr @@ -0,0 +1 @@ +Subproject commit 84f18ab195547324c3addd735688f78909df61d4 diff --git a/.config/zsh/plugins/zsh-git.plugin.zsh b/.config/zsh/plugins/zsh-git.plugin.zsh deleted file mode 100644 index 7f87511..0000000 --- a/.config/zsh/plugins/zsh-git.plugin.zsh +++ /dev/null @@ -1,426 +0,0 @@ -# Git version checking -autoload -Uz is-at-least -git_version="${${(As: :)$(git version 2>/dev/null)}[3]}" - -# -# Functions Current -# (sorted alphabetically by function name) -# (order should follow README) -# - -# The name of the current branch -# Back-compatibility wrapper for when this function was defined here in -# the plugin, before being pulled in to core lib/git.zsh as git_current_branch() -# to fix the core -> git plugin dependency. -function current_branch() { - git_current_branch -} - -# Check for develop and similarly named branches -function git_develop_branch() { - command git rev-parse --git-dir &>/dev/null || return - local branch - for branch in dev devel develop development; do - if command git show-ref -q --verify refs/heads/$branch; then - echo $branch - return 0 - fi - done - - echo develop - return 1 -} - -# Check if main exists and use instead of master -function git_main_branch() { - command git rev-parse --git-dir &>/dev/null || return - local ref - for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default,stable,master}; do - if command git show-ref -q --verify $ref; then - echo ${ref:t} - return 0 - fi - done - - # If no main branch was found, fall back to master but return error - echo master - return 1 -} - -function grename() { - if [[ -z "$1" || -z "$2" ]]; then - echo "Usage: $0 old_branch new_branch" - return 1 - fi - - # Rename branch locally - git branch -m "$1" "$2" - # Rename branch in origin remote - if git push origin :"$1"; then - git push --set-upstream origin "$2" - fi -} - -# -# Functions Work in Progress (WIP) -# (sorted alphabetically by function name) -# (order should follow README) -# - -# Similar to `gunwip` but recursive "Unwips" all recent `--wip--` commits not just the last one -function gunwipall() { - local _commit=$(git log --grep='--wip--' --invert-grep --max-count=1 --format=format:%H) - - # Check if a commit without "--wip--" was found and it's not the same as HEAD - if [[ "$_commit" != "$(git rev-parse HEAD)" ]]; then - git reset $_commit || return 1 - fi -} - -# Warn if the current branch is a WIP -function work_in_progress() { - command git -c log.showSignature=false log -n 1 2>/dev/null | grep -q -- "--wip--" && echo "WIP!!" -} - -# -# Aliases -# (sorted alphabetically by command) -# (order should follow README) -# (in some cases force the alisas order to match README, like for example gke and gk) -# - -alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' - -function ggpnp() { - if [[ "$#" == 0 ]]; then - ggl && ggp - else - ggl "${*}" && ggp "${*}" - fi -} -compdef _git ggpnp=git-checkout - -alias ggpur='ggu' -alias g='git' -alias ga='git add' -alias gaa='git add --all' -alias gapa='git add --patch' -alias gau='git add --update' -alias gav='git add --verbose' -alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' -alias gam='git am' -alias gama='git am --abort' -alias gamc='git am --continue' -alias gamscp='git am --show-current-patch' -alias gams='git am --skip' -alias gap='git apply' -alias gapt='git apply --3way' -alias gbs='git bisect' -alias gbsb='git bisect bad' -alias gbsg='git bisect good' -alias gbsn='git bisect new' -alias gbso='git bisect old' -alias gbsr='git bisect reset' -alias gbss='git bisect start' -alias gbl='git blame -w' -alias gb='git branch' -alias gba='git branch --all' -alias gbd='git branch --delete' -alias gbD='git branch --delete --force' - -function gbda() { - git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null -} - -# Copied and modified from James Roeder (jmaroeder) under MIT License -# https://github.com/jmaroeder/plugin-git/blob/216723ef4f9e8dde399661c39c80bdf73f4076c4/functions/gbda.fish -function gbds() { - local default_branch=$(git_main_branch) - (( ! $? )) || default_branch=$(git_develop_branch) - - git for-each-ref refs/heads/ "--format=%(refname:short)" | \ - while read branch; do - local merge_base=$(git merge-base $default_branch $branch) - if [[ $(git cherry $default_branch $(git commit-tree $(git rev-parse $branch\^{tree}) -p $merge_base -m _)) = -* ]]; then - git branch -D $branch - fi - done -} - -alias gbgd='LANG=C git branch --no-color -vv | grep ": gone\]" | cut -c 3- | awk '"'"'{print $1}'"'"' | xargs git branch -d' -alias gbgD='LANG=C git branch --no-color -vv | grep ": gone\]" | cut -c 3- | awk '"'"'{print $1}'"'"' | xargs git branch -D' -alias gbm='git branch --move' -alias gbnm='git branch --no-merged' -alias gbr='git branch --remote' -alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' -alias gbg='LANG=C git branch -vv | grep ": gone\]"' -alias gco='git checkout' -alias gcor='git checkout --recurse-submodules' -alias gcb='git checkout -b' -alias gcB='git checkout -B' -alias gcd='git checkout $(git_develop_branch)' -alias gcm='git checkout $(git_main_branch)' -alias gcp='git cherry-pick' -alias gcpa='git cherry-pick --abort' -alias gcpc='git cherry-pick --continue' -alias gclean='git clean --interactive -d' -alias gcl='git clone --recurse-submodules' -alias gclf='git clone --recursive --shallow-submodules --filter=blob:none --also-filter-submodules' - -function gccd() { - setopt localoptions extendedglob - - # get repo URI from args based on valid formats: https://git-scm.com/docs/git-clone#URLS - local repo="${${@[(r)(ssh://*|git://*|ftp(s)#://*|http(s)#://*|*@*)(.git/#)#]}:-$_}" - - # clone repository and exit if it fails - command git clone --recurse-submodules "$@" || return - - # if last arg passed was a directory, that's where the repo was cloned - # otherwise parse the repo URI and use the last part as the directory - [[ -d "$_" ]] && cd "$_" || cd "${${repo:t}%.git/#}" -} -compdef _git gccd=git-clone - -alias gcam='git commit --all --message' -alias gcas='git commit --all --signoff' -alias gcasm='git commit --all --signoff --message' -alias gcs='git commit --gpg-sign' -alias gcss='git commit --gpg-sign --signoff' -alias gcssm='git commit --gpg-sign --signoff --message' -alias gcmsg='git commit --message' -alias gcsm='git commit --signoff --message' -alias gc='git commit --verbose' -alias gca='git commit --verbose --all' -alias gca!='git commit --verbose --all --amend' -alias gcan!='git commit --verbose --all --no-edit --amend' -alias gcans!='git commit --verbose --all --signoff --no-edit --amend' -alias gcann!='git commit --verbose --all --date=now --no-edit --amend' -alias gc!='git commit --verbose --amend' -alias gcn!='git commit --verbose --no-edit --amend' -alias gcf='git config --list' -alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' -alias gd='git diff' -alias gdca='git diff --cached' -alias gdcw='git diff --cached --word-diff' -alias gds='git diff --staged' -alias gdw='git diff --word-diff' - -function gdv() { git diff -w "$@" | view - } -compdef _git gdv=git-diff - -alias gdup='git diff @{upstream}' - -function gdnolock() { - git diff "$@" ":(exclude)package-lock.json" ":(exclude)*.lock" -} -compdef _git gdnolock=git-diff - -alias gdt='git diff-tree --no-commit-id --name-only -r' -alias gf='git fetch' -# --jobs= was added in git 2.8 -is-at-least 2.8 "$git_version" \ - && alias gfa='git fetch --all --prune --jobs=10' \ - || alias gfa='git fetch --all --prune' -alias gfo='git fetch origin' -alias gg='git gui citool' -alias gga='git gui citool --amend' -alias ghh='git help' -alias glgg='git log --graph' -alias glgga='git log --graph --decorate --all' -alias glgm='git log --graph --max-count=10' -alias glods='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --date=short' -alias glod='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset"' -alias glola='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --all' -alias glols='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --stat' -alias glol='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset"' -alias glo='git log --oneline --decorate' -alias glog='git log --oneline --decorate --graph' -alias gloga='git log --oneline --decorate --graph --all' - -# Pretty log messages -function _git_log_prettily(){ - if ! [ -z $1 ]; then - git log --pretty=$1 - fi -} -compdef _git _git_log_prettily=git-log - -alias glp='_git_log_prettily' -alias glg='git log --stat' -alias glgp='git log --stat --patch' -alias gignored='git ls-files -v | grep "^[[:lower:]]"' -alias gfg='git ls-files | grep' -alias gm='git merge' -alias gma='git merge --abort' -alias gmc='git merge --continue' -alias gms="git merge --squash" -alias gmom='git merge origin/$(git_main_branch)' -alias gmum='git merge upstream/$(git_main_branch)' -alias gmtl='git mergetool --no-prompt' -alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' - -alias gl='git pull' -alias gpr='git pull --rebase' -alias gprv='git pull --rebase -v' -alias gpra='git pull --rebase --autostash' -alias gprav='git pull --rebase --autostash -v' - -function ggu() { - [[ "$#" != 1 ]] && local b="$(git_current_branch)" - git pull --rebase origin "${b:=$1}" -} -compdef _git ggu=git-checkout - -alias gprom='git pull --rebase origin $(git_main_branch)' -alias gpromi='git pull --rebase=interactive origin $(git_main_branch)' -alias ggpull='git pull origin "$(git_current_branch)"' - -function ggl() { - if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then - git pull origin "${*}" - else - [[ "$#" == 0 ]] && local b="$(git_current_branch)" - git pull origin "${b:=$1}" - fi -} -compdef _git ggl=git-checkout - -alias gluc='git pull upstream $(git_current_branch)' -alias glum='git pull upstream $(git_main_branch)' -alias gp='git push' -alias gpd='git push --dry-run' - -function ggf() { - [[ "$#" != 1 ]] && local b="$(git_current_branch)" - git push --force origin "${b:=$1}" -} -compdef _git ggf=git-checkout - -alias gpf!='git push --force' -is-at-least 2.30 "$git_version" \ - && alias gpf='git push --force-with-lease --force-if-includes' \ - || alias gpf='git push --force-with-lease' - -function ggfl() { - [[ "$#" != 1 ]] && local b="$(git_current_branch)" - git push --force-with-lease origin "${b:=$1}" -} -compdef _git ggfl=git-checkout - -alias gpsup='git push --set-upstream origin $(git_current_branch)' -is-at-least 2.30 "$git_version" \ - && alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes' \ - || alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease' -alias gpv='git push --verbose' -alias gpoat='git push origin --all && git push origin --tags' -alias gpod='git push origin --delete' -alias ggpush='git push origin "$(git_current_branch)"' - -function ggp() { - if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then - git push origin "${*}" - else - [[ "$#" == 0 ]] && local b="$(git_current_branch)" - git push origin "${b:=$1}" - fi -} -compdef _git ggp=git-checkout - -alias gpu='git push upstream' -alias grb='git rebase' -alias grba='git rebase --abort' -alias grbc='git rebase --continue' -alias grbi='git rebase --interactive' -alias grbo='git rebase --onto' -alias grbs='git rebase --skip' -alias grbd='git rebase $(git_develop_branch)' -alias grbm='git rebase $(git_main_branch)' -alias grbom='git rebase origin/$(git_main_branch)' -alias grf='git reflog' -alias gr='git remote' -alias grv='git remote --verbose' -alias gra='git remote add' -alias grrm='git remote remove' -alias grmv='git remote rename' -alias grset='git remote set-url' -alias grup='git remote update' -alias grh='git reset' -alias gru='git reset --' -alias grhh='git reset --hard' -alias grhk='git reset --keep' -alias grhs='git reset --soft' -alias gpristine='git reset --hard && git clean --force -dfx' -alias gwipe='git reset --hard && git clean --force -df' -alias groh='git reset origin/$(git_current_branch) --hard' -alias grs='git restore' -alias grss='git restore --source' -alias grst='git restore --staged' -alias gunwip='git rev-list --max-count=1 --format="%s" HEAD | grep -q "\--wip--" && git reset HEAD~1' -alias grev='git revert' -alias greva='git revert --abort' -alias grevc='git revert --continue' -alias grm='git rm' -alias grmc='git rm --cached' -alias gcount='git shortlog --summary --numbered' -alias gsh='git show' -alias gsps='git show --pretty=short --show-signature' -alias gstall='git stash --all' -alias gstaa='git stash apply' -alias gstc='git stash clear' -alias gstd='git stash drop' -alias gstl='git stash list' -alias gstp='git stash pop' -# use the default stash push on git 2.13 and newer -is-at-least 2.13 "$git_version" \ - && alias gsta='git stash push' \ - || alias gsta='git stash save' -alias gsts='git stash show --patch' -alias gst='git status' -alias gss='git status --short' -alias gsb='git status --short --branch' -alias gsi='git submodule init' -alias gsu='git submodule update' -alias gsd='git svn dcommit' -alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' -alias gsr='git svn rebase' -alias gsw='git switch' -alias gswc='git switch --create' -alias gswd='git switch $(git_develop_branch)' -alias gswm='git switch $(git_main_branch)' -alias gta='git tag --annotate' -alias gts='git tag --sign' -alias gtv='git tag | sort -V' -alias gignore='git update-index --assume-unchanged' -alias gunignore='git update-index --no-assume-unchanged' -alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' -alias gwt='git worktree' -alias gwta='git worktree add' -alias gwtls='git worktree list' -alias gwtmv='git worktree move' -alias gwtrm='git worktree remove' -alias gstu='gsta --include-untracked' -alias gtl='gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl' -alias gk='\gitk --all --branches &!' -alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!' - -unset git_version - -# Logic for adding warnings on deprecated aliases -local old_alias new_alias -for old_alias new_alias ( - # TODO(2023-10-19): remove deprecated `git pull --rebase` aliases - gup gpr - gupv gprv - gupa gpra - gupav gprav - gupom gprom - gupomi gpromi -); do - aliases[$old_alias]=" - print -Pu2 \"%F{yellow}[oh-my-zsh] '%F{red}${old_alias}%F{yellow}' is a deprecated alias, using '%F{green}${new_alias}%F{yellow}' instead.%f\" - $new_alias" -done -unset old_alias new_alias - - diff --git a/.config/zsh/plugins/zsh-macos.plugin.zsh b/.config/zsh/plugins/zsh-macos.plugin.zsh deleted file mode 100644 index 96c4b1c..0000000 --- a/.config/zsh/plugins/zsh-macos.plugin.zsh +++ /dev/null @@ -1,149 +0,0 @@ -# Handle $0 according to the standard: -# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html -0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" -0="${${(M)0:#/*}:-$PWD/$0}" - -function open_command() { - local open_cmd - - # define the open command - case "$OSTYPE" in - darwin*) open_cmd='open' ;; - cygwin*) open_cmd='cygstart' ;; - linux*) [[ "$(uname -r)" != *icrosoft* ]] && open_cmd='nohup xdg-open' || { - open_cmd='cmd.exe /c start ""' - [[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 } - } ;; - msys*) open_cmd='start ""' ;; - *) echo "Platform $OSTYPE not supported" - return 1 - ;; - esac - - # If a URL is passed, $BROWSER might be set to a local browser within SSH. - # See https://github.com/ohmyzsh/ohmyzsh/issues/11098 - if [[ -n "$BROWSER" && "$1" = (http|https)://* ]]; then - "$BROWSER" "$@" - return - fi - - ${=open_cmd} "$@" &>/dev/null -} - -# Open in Finder the directories passed as arguments, or the current directory if -# no directories are passed -function ofd { - if (( ! $# )); then - open_command $PWD - else - open_command $@ - fi -} - -# Show/hide hidden files in the Finder -alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder" -alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder" - -# Bluetooth restart -function btrestart() { - sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport - sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport -} - -function _omz_macos_get_frontmost_app() { - osascript 2>/dev/null </dev/null </dev/null </dev/null < 0 )) && qlmanage -p $* &>/dev/null & -} - -function man-preview() { - [[ $# -eq 0 ]] && >&2 echo "Usage: $0 command1 [command2 ...]" && return 1 - - local page - for page in "${(@f)"$(man -w $@)"}"; do - command mandoc -Tpdf $page | open -f -a Preview - done -} -compdef _man man-preview - -function vncviewer() { - open vnc://$@ -} - -# Remove .DS_Store files recursively in a directory, default . -function rmdsstore() { - find "${@:-.}" -type f -name .DS_Store -delete -} - -# Erases purgeable disk space with 0s on the selected disk -function freespace(){ - if [[ -z "$1" ]]; then - echo "Usage: $0 " - echo "Example: $0 /dev/disk1s1" - echo - echo "Possible disks:" - df -h | awk 'NR == 1 || /^\/dev\/disk/' - return 1 - fi - - echo "Cleaning purgeable files from disk: $1 ...." - diskutil secureErase freespace 0 $1 -} - -_freespace() { - local -a disks - disks=("${(@f)"$(df | awk '/^\/dev\/disk/{ printf $1 ":"; for (i=9; i<=NF; i++) printf $i FS; print "" }')"}") - _describe disks disks -} - -compdef _freespace freespace diff --git a/.config/zsh/plugins/zsh-sudo.plugins.zsh b/.config/zsh/plugins/zsh-sudo.plugins.zsh deleted file mode 100644 index 66b253f..0000000 --- a/.config/zsh/plugins/zsh-sudo.plugins.zsh +++ /dev/null @@ -1,108 +0,0 @@ -# ------------------------------------------------------------------------------ -# Description -# ----------- -# -# sudo or sudo -e (replacement for sudoedit) will be inserted before the command -# -# ------------------------------------------------------------------------------ -# Authors -# ------- -# -# * Dongweiming -# * Subhaditya Nath -# * Marc Cornellà -# * Carlo Sala -# -# ------------------------------------------------------------------------------ - -__sudo-replace-buffer() { - local old=$1 new=$2 space=${2:+ } - - # if the cursor is positioned in the $old part of the text, make - # the substitution and leave the cursor after the $new text - if [[ $CURSOR -le ${#old} ]]; then - BUFFER="${new}${space}${BUFFER#$old }" - CURSOR=${#new} - # otherwise just replace $old with $new in the text before the cursor - else - LBUFFER="${new}${space}${LBUFFER#$old }" - fi -} - -sudo-command-line() { - # If line is empty, get the last run command from history - [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)" - - # Save beginning space - local WHITESPACE="" - if [[ ${LBUFFER:0:1} = " " ]]; then - WHITESPACE=" " - LBUFFER="${LBUFFER:1}" - fi - - { - # If $SUDO_EDITOR or $VISUAL are defined, then use that as $EDITOR - # Else use the default $EDITOR - local EDITOR=${SUDO_EDITOR:-${VISUAL:-$EDITOR}} - - # If $EDITOR is not set, just toggle the sudo prefix on and off - if [[ -z "$EDITOR" ]]; then - case "$BUFFER" in - sudo\ -e\ *) __sudo-replace-buffer "sudo -e" "" ;; - sudo\ *) __sudo-replace-buffer "sudo" "" ;; - *) LBUFFER="sudo $LBUFFER" ;; - esac - return - fi - - # Check if the typed command is really an alias to $EDITOR - - # Get the first part of the typed command - local cmd="${${(Az)BUFFER}[1]}" - # Get the first part of the alias of the same name as $cmd, or $cmd if no alias matches - local realcmd="${${(Az)aliases[$cmd]}[1]:-$cmd}" - # Get the first part of the $EDITOR command ($EDITOR may have arguments after it) - local editorcmd="${${(Az)EDITOR}[1]}" - - # Note: ${var:c} makes a $PATH search and expands $var to the full path - # The if condition is met when: - # - $realcmd is '$EDITOR' - # - $realcmd is "cmd" and $EDITOR is "cmd" - # - $realcmd is "cmd" and $EDITOR is "cmd --with --arguments" - # - $realcmd is "/path/to/cmd" and $EDITOR is "cmd" - # - $realcmd is "/path/to/cmd" and $EDITOR is "/path/to/cmd" - # or - # - $realcmd is "cmd" and $EDITOR is "cmd" - # - $realcmd is "cmd" and $EDITOR is "/path/to/cmd" - # or - # - $realcmd is "cmd" and $EDITOR is /alternative/path/to/cmd that appears in $PATH - if [[ "$realcmd" = (\$EDITOR|$editorcmd|${editorcmd:c}) \ - || "${realcmd:c}" = ($editorcmd|${editorcmd:c}) ]] \ - || builtin which -a "$realcmd" | command grep -Fx -q "$editorcmd"; then - __sudo-replace-buffer "$cmd" "sudo -e" - return - fi - - # Check for editor commands in the typed command and replace accordingly - case "$BUFFER" in - $editorcmd\ *) __sudo-replace-buffer "$editorcmd" "sudo -e" ;; - \$EDITOR\ *) __sudo-replace-buffer '$EDITOR' "sudo -e" ;; - sudo\ -e\ *) __sudo-replace-buffer "sudo -e" "$EDITOR" ;; - sudo\ *) __sudo-replace-buffer "sudo" "" ;; - *) LBUFFER="sudo $LBUFFER" ;; - esac - } always { - # Preserve beginning space - LBUFFER="${WHITESPACE}${LBUFFER}" - - # Redisplay edit buffer (compatibility with zsh-syntax-highlighting) - zle && zle redisplay # only run redisplay if zle is enabled - } -} - -zle -N sudo-command-line - -# Defined shortcut keys: [Esc] [Esc] -bindkey -M emacs '\e\e' sudo-command-line -bindkey -M vicmd '\e\e' sudo-command-line -bindkey -M viins '\e\e' sudo-command-line diff --git a/.config/zsh/qol.zsh b/.config/zsh/qol.zsh index 2f88d87..b348137 100644 --- a/.config/zsh/qol.zsh +++ b/.config/zsh/qol.zsh @@ -25,5 +25,3 @@ sourceall(){ done <<< "$pids" set +e } - -alias routes="netstat -rn -f inet" diff --git a/.gitmodules b/.gitmodules index 88d096f..1dde760 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,12 @@ [submodule ".config/zsh/plugins/.config/zsh/plugins/fast-syntax-highlighting"] path = .config/zsh/plugins/.config/zsh/plugins/fast-syntax-highlighting url = https://github.com/zdharma-continuum/fast-syntax-highlighting.git +[submodule ".config/zsh/plugins/fzf-zsh-plugin"] + path = .config/zsh/plugins/fzf-zsh-plugin + url = https://github.com/unixorn/fzf-zsh-plugin.git +[submodule ".config/zsh/plugins/fast-syntax-highlighting"] + path = .config/zsh/plugins/fast-syntax-highlighting + url = https://github.com/zdharma-continuum/fast-syntax-highlighting.git [submodule ".config/zsh/plugins/fzf-tab"] path = .config/zsh/plugins/fzf-tab url = https://github.com/Aloxaf/fzf-tab diff --git a/.local/bin/change-theme.sh b/.local/bin/change-theme.sh index 406d570..760a8b9 100755 --- a/.local/bin/change-theme.sh +++ b/.local/bin/change-theme.sh @@ -19,7 +19,7 @@ change_common(){ #Change alacritty theme sed -i '' -e "s|import = \[\"~/.config/alacritty/themes/.*\"\]|import = [\"~/.config/alacritty/themes/${alacritty_theme_name}.toml\"]|g" ~/.config/alacritty/alacritty.toml #Change zsh theme - sed -i '' -e "s|source \$ZDOTDIR/themes/.*zsh|source \$ZDOTDIR/themes/${zsh_theme_name}.zsh|g" ~/.zshrc + sed -i '' -e "s|source \$HOME/.config/zsh/themes/.*zsh|source \$HOME/.config/zsh/themes/${zsh_theme_name}.zsh|g" ~/.zshrc #Reload zsh sessions pids=$(pgrep zsh) while IFS= read -r pid; do diff --git a/.local/bin/tms b/.local/bin/tms index 46cf1b9..f4c7a5d 100755 --- a/.local/bin/tms +++ b/.local/bin/tms @@ -5,11 +5,10 @@ if [[ $# -eq 1 ]]; then else uni_projects=$(find ~/projects/University -mindepth 3 -maxdepth 3 -type d) personal_projects=$(find ~/projects/Personal -mindepth 1 -maxdepth 1 -type d) - work_projects=$(find ~/projects/Work -mindepth 1 -maxdepth 1 -type d) gits=$(find ~/gits -mindepth 1 -maxdepth 1 -type d) dotfiles=$(find ~/.config -mindepth 1 -maxdepth 1 -type d) #Merge the two lists - selected=$(echo -e "$uni_projects\n$personal_projects\n$work_projects\n$dotfiles\n$gits" | fzf) + selected=$(echo -e "$uni_projects\n$personal_projects\n$dotfiles\n$gits" | fzf) fi if [[ -z $selected ]]; then diff --git a/.zshenv b/.zshenv index bc14168..e45a1b3 100644 --- a/.zshenv +++ b/.zshenv @@ -6,11 +6,9 @@ TRAPUSR1() { } if [[ $(uname) == "Darwin" ]]; then export JAVA_HOME="/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" -else - export LIBVA_DRIVER_NAME=nvidia fi +export LIBVA_DRIVER_NAME=nvidia export XDG_CONFIG_HOME="${HOME}/.config" export XDG_CACHE_HOME="${HOME}/.cache" export XDG_DATA_HOME="${HOME}/.local/share" export XDG_STATE_HOME="${HOME}/.local/state" -export ZDOTDIR="$XDG_CONFIG_HOME/zsh" diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..c8ef75b --- /dev/null +++ b/.zshrc @@ -0,0 +1,153 @@ +# Add paths +export PATH="/usr/sbin:/sbin:$PATH" +export PATH="$HOME/.local/share/nvim/mason/bin:$PATH" +export PATH="$HOME/.local/bin:$PATH" +export PATH="/opt/homebrew/bin:$PATH" +export PATH="$HOME/go/bin:$PATH" +export PATH="$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin:$PATH" +export PATH="$HOME/.cargo/bin:$PATH" +export PATH="$HOME/.ghcup/bin:$PATH" +export PATH="$HOME/.miniforge3/bin:$PATH" +export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH" +export PATH="/opt/homebrew/opt/texlive/bin:$PATH" +export PATH="$HOME/.cabal/bin:$PATH" + +export GOPATH=$HOME/.go +export PATH=$PATH:$GOPATH/bin + +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +ZSH_THEME="" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in $ZSH/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment one of the following lines to change the auto-update behavior +# zstyle ':omz:update' mode disabled # disable automatic updates +# zstyle ':omz:update' mode auto # update automatically without asking +# zstyle ':omz:update' mode reminder # just remind me to update when it's time + +# Uncomment the following line to change how often to auto-update (in days). +# zstyle ':omz:update' frequency 13 + +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS="true" + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +ZSH_CUSTOM=$HOME/.config/zsh + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. + + +#THEME +source $HOME/.config/zsh/themes/gruvbox_dark.zsh +source $HOME/.config/zsh/overrides.zsh + +zvm_after_init_commands+=('[ -f $HOME/.fzf.zsh ] && source $HOME/.fzf.zsh') +plugins=(zsh-vi-mode git sudo macos tmux command-not-found web-search zsh-autosuggestions zsh-history-substring-search zsh-syntax-highlighting fzf-tab zsh-abbr) + + +#Completions +autoload -U compinit && compinit +fpath+=${ZSH_CUSTOM:""}/plugins/zsh-completions/src + +#Prompt +fpath+=${ZSH_CUSTOM:""}/prompts/pure +autoload -U promptinit; promptinit +prompt pure + +source $ZSH/oh-my-zsh.sh + + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# 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" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" +# + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('/Users/afonso/.miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "/Users/afonso/.miniforge3/etc/profile.d/conda.sh" ]; then + . "/Users/afonso/.miniforge3/etc/profile.d/conda.sh" + else + export PATH="/Users/afonso/.miniforge3/bin:$PATH" + fi + if [ -f "/Users/afonso/.miniforge3/etc/profile.d/mamba.sh" ]; then + . "/Users/afonso/.miniforge3/etc/profile.d/mamba.sh" + fi +fi +unset __conda_setup +# <<< conda initialize <<< +