summaryrefslogtreecommitdiff
path: root/mac/.config/shell
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-08-23 12:42:37 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-08-23 12:42:37 +0900
commit07d294425a98ee5d1e22d03e2b24ae2c76e487c0 (patch)
treea6818f0d64438c5fdb88b00a35d944f80c056213 /mac/.config/shell
parent6fc28cdb3529ca8ee864cb5c41674cb0a4af72a1 (diff)
updates
Diffstat (limited to 'mac/.config/shell')
-rw-r--r--mac/.config/shell/aliasrc486
-rw-r--r--mac/.config/shell/bm-dirs110
-rw-r--r--mac/.config/shell/bm-files52
-rw-r--r--mac/.config/shell/git-aliasrc415
-rw-r--r--mac/.config/shell/inputrc31
-rw-r--r--mac/.config/shell/profile218
6 files changed, 1312 insertions, 0 deletions
diff --git a/mac/.config/shell/aliasrc b/mac/.config/shell/aliasrc
new file mode 100644
index 0000000..13ae888
--- /dev/null
+++ b/mac/.config/shell/aliasrc
@@ -0,0 +1,486 @@
+# alias - normal aliases (completed with trailing space)
+# balias - blank aliases (completed without space)
+# ialias - ignored aliases (not completed)
+
+# Use neovim for vim if present.
+[ -x "$(command -v nvim)" ] && alias vd="nvim -d"
+
+# Use $XINITRC variable if file exists.
+[ -f "$XINITRC" ] && alias startx='startx $XINITRC'
+
+# Use $MBSYNCRC variable if file exists to sync mailbox.
+[ -f "$MBSYNCRC" ] && alias mbsync='mbsync -c $MBSYNCRC'
+
+# sudo not required for some system commands
+for command in blkid lsblk mount umount pacman poweroff reboot shutdown su sv updatedb; do
+ alias $command="sudo $command"
+done
+unset command
+
+case "$(readlink -f /sbin/init)" in
+*systemd*)
+ # journal
+ alias -g jctl='journalctl -xe'
+ alias -g jctlou='sudo journalctl -b -n 200 -f'
+ alias -g rpi='systemctl --user restart wireplumber pipewire pipewire-pulse pipewire-jack'
+ alias -g sctl='systemctl'
+ alias -g sctlss='systemctl status'
+ alias -g sctle='systemctl enable'
+ alias -g sctld='systemctl disable'
+ alias -g sctlr='systemctl restart'
+ alias -g sctls='systemctl start'
+ alias -g sctlt='systemctl stop'
+ alias -g sctldr='systemctl daemon-reload'
+ alias -g tctl='timedatectl'
+ ;;
+esac
+
+# Go back
+alias ...='../..'
+alias ....='../../..'
+alias .....='../../../..'
+
+# abook
+alias abook='abook -f ~/.config/abook/addressbook'
+
+# bat
+alias bath='bat cache --build'
+alias can='bat -n'
+ialias -g cat='bat --plain --wrap character'
+# alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
+alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
+
+# bash
+alias sbs='source ~/.bashrc'
+
+# bc
+alias bc='bc -ql'
+
+# bluetooth
+alias bctl='bluetoothctl'
+
+# cal
+ialias cal='cal -y --monday'
+
+# cd
+alias cf='cd "$(dirname "$(readlink -f health.lua)")"'
+alias pd='cd -'
+
+# chmod
+alias che='find . -type f -exec chmod +x {};'
+alias chfd='find . -type d -exec chmod 755 {}; -o -type f -exec chmod 644 {};'
+alias cx='chmod a+x'
+alias 000='chmod -R 000'
+alias 600='chmod -R 600'
+alias 644='chmod -R 644'
+alias 666='chmod -R 666'
+alias 755='chmod -R 755'
+alias 777='chmod -R 777'
+
+# copy
+alias CC='$(fc -l -n -1) | xclip -selection clipboard'
+ialias cp='cp -iv'
+alias pwdc='pwd | xclip -selection clipboard'
+
+# curl
+ialias curl='curl --silent --show-error'
+balias clh='curl localhost:'
+balias clh8='curl localhost:8080'
+balias clh9='curl localhost:9080'
+balias c100='curl 192.168.99.100:'
+
+# delete
+alias _fd='find . -type f -name "._*" -print0 | xargs -0 rm -f'
+alias _fp='find . -type f -name "._*" -print'
+
+# diff
+ialias diff='diff --color'
+
+# docker
+alias dk='docker'
+alias dkp='docker ps'
+alias dkpa='docker ps -a'
+alias dkpaq='docker ps -a -q'
+alias dkb='docker build -t'
+alias dkbnc='docker build --no-cache -t'
+alias dkr='docker run --rm'
+alias dkrti='docker run --rm -ti'
+alias dkrd='docker run -d'
+alias dkrp8='docker run --rm -p 8080:8080'
+alias dkrp9='docker run --rm -p 9080:9080'
+alias dks='docker start'
+alias dkt='docker stop'
+alias dktt='docker stop $(docker ps -q)'
+alias dkk='docker kill'
+alias dkkk='docker kill $(docker ps -q)'
+alias dkrm='docker rm'
+alias dkri='docker rmi'
+alias dke='docker exec -ti'
+alias dkl='docker logs -f'
+alias dki='docker images'
+alias dkpu='docker pull'
+alias dkph='docker push'
+alias dkin='docker inspect'
+alias dkn='docker network'
+alias dkc='docker-compose'
+alias dkcu='docker-compose up'
+alias dkclean='docker ps -q -a -f status=exited | xargs -r docker rm && docker images -q -f dangling=true | xargs -r docker rmi'
+
+# dotbare
+alias dg='dotbare'
+alias dga='dotbare add'
+alias dgaa='dotbare add .'
+alias dgcm='dotbare commit -m'
+alias dgcam='dotbare commit -am'
+alias dgd='dotbare diff'
+alias dgl='dotbare log'
+alias dgp='dotbare push'
+alias dgst='dotbare status'
+
+# # ecryptfs
+# alias emt="echo "$(pass show encryption/ecryptfs)" | sudo mount -t ecryptfs "$1" "$2" \
+# -o ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes, \
+# ecryptfs_sig="$(sudo cat /root/.ecryptfs/sig-cache.txt)", \
+# ecryptfs_fnek_sig="$(sudo cat /root/.ecryptfs/sig-cache.txt)", \
+# passwd="$(printf '%s' "$(pass show encryption/ecryptfs)")""
+
+# ls: eza or built-in
+[ -x "$(command -v eza)" ] && {
+ ialias l='eza --icons --group-directories-first'
+ ialias la='eza --icons -aa --group-directories-first'
+ ialias lh='eza --icons -aa --group-directories-first'
+ ialias ll='eza -gl --icons --group-directories-first'
+ ialias lla='eza -glaa --icons --group-directories-first'
+ ialias lm='eza -glA --group-directories-first | more'
+ ialias lr='eza --icons -R --group-directories-first'
+ ialias ls='eza --icons -A --group-directories-first'
+ ialias lsb='eza --icons -b --group-directories-first'
+ ialias lsby='eza --icons -B --group-directories-first'
+ ialias lld='eza --icons -Dl --group-directories-first'
+ ialias llda='eza --icons -aaDl --group-directories-first'
+ ialias llf='eza --icons -fl'
+ ialias llfa='eza --icons -aafl'
+ ialias llsa='eza --icons -l -s=accessed'
+ ialias llsaa='eza --icons -aal -s=accessed'
+ ialias llsc='eza --icons -l -s=created'
+ ialias llsca='eza --icons -aal -s=created'
+ ialias llse='eza --icons -l -s=extension'
+ ialias llsea='eza --icons -aal -s=extension'
+ ialias llsm='eza --icons -l -s=modified'
+ ialias llsma='eza --icons -aal -s=modified'
+ ialias llsn='eza --icons -l -s=name'
+ ialias llsna='eza --icons -aal -s=name'
+ ialias llss='eza --icons -l -s=size'
+ ialias llssa='eza --icons -aal -s=size'
+ ialias llst='eza --icons -l -s=type'
+ ialias llsta='eza --icons -aal -s=type'
+ ialias lt='eza --icons -T -L'
+ ialias ltd='eza --icons -TD -L'
+ ialias ltdr='eza --icons -TDr -L'
+ ialias ltr='eza --icons -Tr -L'
+} || {
+ ialias l='/usr/bin/ls -h --color=always --group-directories-first'
+ ialias la='/usr/bin/ls -alh --color=always --group-directories-first'
+ ialias ll='/usr/bin/ls -lh --color=always --group-directories-first'
+ ialias lla='/usr/bin/ls -aFls --color=always --group-directories-first'
+ ialias llf='/usr/bin/ls -Fls --color=always --group-directories-first'
+ ialias lm='/usr/bin/ls -alh --color=always --group-directories-first | more'
+ ialias lr='/usr/bin/ls -hlR --color=always --group-directories-first'
+ ialias lra='/usr/bin/ls -ahlR --color=always --group-directories-first'
+ ialias ls='/usr/bin/ls -AFh --color=always --group-directories-first'
+ ialias llsa='/usr/bin/ls -hlru --color=always --group-directories-first'
+ ialias llsc='/usr/bin/ls -hclr --color=always --group-directories-first'
+ ialias lld='/usr/bin/ls -l --color=always | grep "^d"'
+ ialias llda='/usr/bin/ls -la --color=always | grep "^d"'
+ ialias llse='/usr/bin/ls -BhlX --color=always --group-directories-first'
+ ialias llsf='/usr/bin/ls -l --color=always | grep -v "^d"'
+ ialias llsfa='/usr/bin/ls -la --color=always | grep -v "^d"'
+ ialias llsm='/usr/bin/ls -hlr --time=ctime --color=always --group-directories-first'
+ ialias llsn='/usr/bin/ls -alp --color=always --group-directories-first'
+ ialias llss='/usr/bin/ls -hlrS --color=always --group-directories-first'
+ ialias llst='/usr/bin/ls -hlrt --color=always --group-directories-first'
+ ialias lw='/usr/bin/ls -Ahx --color=always --group-directories-first'
+}
+
+# fastfetch
+alias ff='fastfetch'
+
+# fcitx5-remote
+alias fr='fcitx5-remote'
+
+# ffmpeg
+alias ffmpeg='ffmpeg -hide_banner'
+
+# find
+balias fdn='find . -name "'
+
+# git
+alias lg="lazygit"
+alias gu="gitupdate"
+alias ggg="ssh $THESIAH_GIT"
+alias gis="githubissuesync"
+
+# grep
+ialias -g grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'
+alias grepi='grep -i'
+alias grepr='grep -r'
+alias grepri='grep -ri'
+alias grepw='grep -R -i --include="*"'
+alias grepb='grep -R -i --include="*" --exclude-dir="zsh"'
+alias -g Gg='| grep'
+alias -g Gi='| grep -i'
+alias -g GH='| grep HTTP'
+
+# hash
+alias h='hash -rf'
+
+# hexdump
+alias hx='hexdump -C'
+
+# hugo
+alias hss='hugo server --noHTTPCache'
+alias hcl='hugo --cleanDestinationDir'
+
+# ip
+ialias ip='ip -color=auto'
+alias whatsmyip='curl -s ifconfig.me | xargs'
+
+# jupyter
+alias ji='git clone git@github.com:jupyter/jupyter_client.git'
+alias jn='jupyter notebook'
+
+# killall
+alias ka='killall'
+alias k9='kill -9'
+alias k15='kill -15'
+
+# lf
+alias lf='lfub'
+
+# mime
+alias mimereset="update-desktop-database ${XDG_DATA_HOME:-${HOME}/.local/share}/applications"
+
+# mkdir
+ialias mkdir='mkdir -pv'
+
+# move
+ialias mv='mv -iv'
+
+# mysql
+alias msr='mysql -u si -p'
+
+# network
+alias wi='sudo wifi-menu'
+alias p1='ping 1.1.1.1'
+alias p192='ping 192.168.0.1'
+alias p8='ping 8.8.8.8'
+alias p9='ping 9.9.9.9'
+
+# nvim
+alias v='$EDITOR'
+alias v.='$EDITOR .'
+alias ve='$EDITOR -c enew'
+alias nv.='nvim .'
+alias nve='nvim -c enew'
+alias nts='NVIM_APPNAME=TheSiahxyz nvim'
+alias nav='NVIM_APPNAME=AstroNvim nvim'
+alias nlu='NVIM_APPNAME=LunarVim nvim'
+alias nlv='NVIM_APPNAME=LazyVim nvim'
+alias nnc='NVIM_APPNAME=NvChad nvim'
+alias snv='sudo nvim'
+alias vll='lastnvim -l'
+alias vln='$EDITOR -c '\''execute "edit " . v:oldfiles[0] | normal ''0'\'
+
+# nxsiv
+alias nsxiv='nsxiv -p'
+
+# obsidian
+alias vo="cd $HOME/Obsidian/SI && nvim Dashboard.md"
+
+# open
+alias open='xdg-open'
+
+# pacman
+command -v pacman > /dev/null 2>&1 && {
+ alias -g pcy='pacman -Syu'
+ alias -g pcyr='pacman -Syu && remaps'
+ alias -g pcs='pacman -S'
+ alias -g pcss='pacman -Ss'
+ alias -g pcqs='pacman -Qs'
+ alias -g pcr='pacman -R'
+ alias -g pcrs='pacman -Rs'
+ alias -g pcclean='pacman -Rsn $(pacman -Qqdt)'
+ alias -g pcky='pacman -Sy archlinux-keyring artix-keyring'
+}
+
+# pass
+alias potp='pass otp totp-secret'
+
+# pipe-viewer
+alias yt='pipe-viewer'
+
+# ps
+ialias ps='ps auxf'
+alias psj='ps aux | grep "[j]ava"'
+balias psg='ps auxf | grep'
+alias topcpu='/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10'
+
+# python
+alias py='python3'
+
+# realpath
+alias rp='realpath'
+
+# remove
+ialias rm='rm -vI'
+
+# rsync
+alias rsc='rsync -vrazPlu'
+alias rscd='rsync -vrazPlu --delete'
+alias rscr='rsync -vrazPlu --remove-source-files'
+
+# rules
+alias rrr='sudo udevadm control --reload-rules'
+
+# samba
+alias winip="[ ! -d /media/$USER/hdd >/dev/null 2>&1 ] && mkdir -p /media/$USER/hdd >/dev/null 2>&1; sudo mount -t cifs //$(pass show smb/hdd) /media/$USER/hdd -o username=\"si\",password=\"$(pass show default/default)vers=2.0\""
+alias win10="[ ! -d /media/$USER/win10 >/dev/null 2>&1 ] && mkdir -p /media/$USER/win10 >/dev/null 2>&1; sudo mount -t cifs //$(pass show smb/share) /media/$USER/win10 -o username=\"THESIAHXYZ-WIN1\",password=\"$(pass show default/default)\""
+alias macair="[ ! -d /media/$USER/macair >/dev/null 2>&1 ] && mkdir -p /media/$USER/macair >/dev/null 2>&1; sudo mount -t cifs //$(pass show smb/macair)/si /media/$USER/macair -o username=\"Soomin Im\",password=\"$(pass show default/default)\""
+
+# sc-im
+alias scim='sc-im'
+
+# scp
+ialias scp='scp -r'
+
+# scripts
+alias cs='createscript'
+alias tmzs='timezones'
+
+# setxkbmap
+alias RM='setxkbmap -option'
+
+# sha1
+alias sha1='openssl sha1'
+
+# shell
+alias tobash="sudo chsh $USER -s /bin/bash && 'Now log out.'"
+alias tozsh="sudo chsh $USER -s /bin/zsh && 'Now log out.'"
+alias tofish="sudo chsh $USER -s /bin/fish && 'Now log out.'"
+
+# shellcheck
+alias shck='shellcheck --color=always'
+
+# shortcut
+alias ref='shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/shortcutrc; source ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/shortcutenvrc; source ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/zshnameddirrc'
+
+# skype
+alias skype='skypeforlinux'
+
+# ssh
+alias gts="ssh $THESIAH_SERVER"
+
+# sudo
+alias su='sudo su -l root'
+alias sm='setopt no_nomatch && rm -rf *.rej *.orig >/dev/null 2>&1'
+alias smi='setopt no_nomatch && rm -rf *.rej *.orig >/dev/null 2>&1 && unsetopt no_nomatch; sudo make clean install; rm -f config.h'
+
+# suffix
+alias -s {pdf,PDF}='background mupdf'
+alias -s {jpg,JPG,png,PNG}='background gpicview'
+alias -s {ods,ODS,odt,ODT,odp,ODP,doc,DOC,docx,DOCX,xls,XLS,xlsx,XLSX,xlsm,XLSM,ppt,PPT,pptx,PPTX,csv,CSV}='background libreoffice'
+alias -s {html,HTML}='background chromium'
+alias -s {mp4,MP4,mov,MOV,mkv,MKV}='background vlc'
+alias -s {zip,ZIP,war,WAR}="unzip -l"
+alias -s {jar,JAR}="java -jar"
+alias -s gz="tar -tf"
+alias -s {tgz,TGZ}="tar -tf"
+
+# surf
+alias surf='tabbed surf -e'
+
+# tar
+alias txf='tar -xf'
+alias ttf='tar -tf'
+
+# task
+alias tsc='task-switch-context'
+alias twt='taskwarrior-tui'
+alias tasksync='task sync && command pkill -RTMIN+25 ${STATUSBAR:-dwmblocks} && task'
+
+# tmux
+alias sts='tmux source $XDG_CONFIG_HOME/tmux/tmux.conf'
+alias ta='tmux a'
+alias tmc='tmuxcreate'
+alias tmka='tmux kill-session -a'
+alias tmls='tmux ls'
+alias tmo='tmuxopen'
+alias tmpk='command pkill tmux'
+alias tm.='tmux new -s "$(basename $PWD)"'
+
+# transmission-remote
+alias trem='transmission-remote'
+
+# trash
+alias trd='trash-rm'
+alias tre='trash-empty'
+alias trl='trash-list'
+alias trp='trash-put'
+alias trr='trash-restore'
+
+# tree
+ialias tree='tree -a -I ".svn|.git|.hg|.idea"'
+alias tree2='tree -L 2'
+alias tree3='tree -L 3'
+
+# unix
+alias -g md='mkdir -p'
+alias -g wh='which'
+alias -g wt='while true; do'
+alias -g s1='sleep 1'
+alias -g s2='sleep 2'
+alias -g s01='sleep 0.1'
+alias -g s05='sleep 0.5'
+alias -g A1="| awk '{print \$1}'"
+alias -g L='| less'
+alias -g H='| head'
+alias -g H2='| head -n 20'
+alias -g X='| xargs -I@'
+alias -g C='| xclip -selection clipboard'
+alias -g Fj='| jq .'
+alias -g Fy='| yq .'
+alias -g Fx='| xmllint --format -'
+alias -g V='| nvim -'
+
+# unzip
+alias uz='unzip'
+alias uzl='unzip -l'
+
+# vim
+alias vi='vim'
+alias vi.='vim .'
+
+# watch
+alias w1='watch -n 1'
+
+# wget
+ialias wget --hsts-file="${XDG_CACHE_HOME:-${HOME}/.cache}/wget-hsts"
+
+# w3m
+alias w3m="w3m -config ${XDG_CONFIG_HOME:-${HOME}/.config}/w3m/config"
+
+# xprog
+alias progn='xprop | awk '\''/^WM_CLASS/{sub(/.* = /, "instance:"); sub(/, /, "\nclass:"); print} /^WM_NAME/{sub(/.* = /, "title:"); print}'\'''
+
+# xrandr
+alias xauto='xrandr --auto'
+
+# xset
+alias xoff='xset s off -dpms'
+
+# zathura
+alias za='zathura'
+
+# zsh
+alias sps="source ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/profile"
+alias szs="source ${XDG_CONFIG_HOME:-${HOME}/.config}/zsh/.zshrc"
diff --git a/mac/.config/shell/bm-dirs b/mac/.config/shell/bm-dirs
new file mode 100644
index 0000000..38cfe76
--- /dev/null
+++ b/mac/.config/shell/bm-dirs
@@ -0,0 +1,110 @@
+# Keys Filename
+bb ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}
+bs ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/statusbar
+btp ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/tmux
+btw ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/task/taskwarrior-tui
+bz ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/zsh
+cab ${XDG_CONFIG_HOME:-${HOME}/.config}/abook
+cac ${XDG_CACHE_HOME:-${HOME}/.cache}
+cbc ${XDG_CONFIG_HOME:-${HOME}/.config}/bash
+cdb ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dwmblocks
+cdm ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dmenu
+cdw ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dwm
+cff ${XDG_CONFIG_HOME:-${HOME}/.config}/fastfetch
+cfg ${XDG_CONFIG_HOME:-${HOME}/.config}
+cfx ${XDG_CONFIG_HOME:-${HOME}/.config}/firefox
+cgc ${XDG_CONFIG_HOME:-${HOME}/.config}/git
+cgv ${XDG_CONFIG_HOME:-${HOME}/.config}/glove80
+clf ${XDG_CONFIG_HOME:-${HOME}/.config}/lf
+clg ${XDG_CONFIG_HOME:-${HOME}/.config}/lazygit
+clv ${XDG_CONFIG_HOME:-${HOME}/.config}/LazyVim
+cmd ${XDG_CONFIG_HOME:-${HOME}/.config}/mpd
+cms ${XDG_CONFIG_HOME:-${HOME}/.config}/mpv/scripts
+cmv ${XDG_CONFIG_HOME:-${HOME}/.config}/mpv
+cmt ${XDG_CONFIG_HOME:-${HOME}/.config}/mutt
+cnc ${XDG_CONFIG_HOME:-${HOME}/.config}/NvChad
+cnp ${XDG_CONFIG_HOME:-${HOME}/.config}/ncmpcpp
+cns ${XDG_CONFIG_HOME:-${HOME}/.config}/newsboat
+cnv ${XDG_CONFIG_HOME:-${HOME}/.config}/nvim
+cqt ${XDG_CONFIG_HOME:-${HOME}/.config}/qutebrowser
+cr ${XDG_SCRIPTS_HOME:-${HOME}/.local/bin}/cron
+cse ${XDG_CONFIG_HOME:-${HOME}/.config}/sesh
+csf ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/surf
+csh ${XDG_CONFIG_HOME:-${HOME}/.config}/shell
+csl ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/slock
+cst ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/st
+ctc ${XDG_CONFIG_HOME:-${HOME}/.config}/task
+ctd ${XDG_CONFIG_HOME:-${HOME}/.config}/transmission-daemon
+ctm ${XDG_CONFIG_HOME:-${HOME}/.config}/tmux
+cts ${XDG_CONFIG_HOME:-${HOME}/.config}/TheSiahxyz
+cvc ${XDG_CONFIG_HOME:-${HOME}/.config}/vim
+cvp ${XDG_CONFIG_HOME:-${HOME}/.config}/openvpn
+cvw ${XDG_DATA_HOME:-${HOME}/.local/share}/vimwiki
+cxc ${XDG_CONFIG_HOME:-${HOME}/.config}/x11
+czc ${XDG_CONFIG_HOME:-${HOME}/.config}/zsh
+dot ${XDG_DOTFILES_DIR:-${HOME}/.dotfiles}
+Esm /etc/samba
+Esv /etc/runit/sv
+gdc ${XDG_DOCUMENTS_DIR:-${HOME}/Documents}
+gdk ${XDG_DESKTOP_DIR:-${HOME}/Desktop}
+gdn ${XDG_DOWNLOAD_DIR:-${HOME}/Downloads}
+gfx $HOME/.mozilla/firefox/$USER.default
+gmu ${XDG_MUSIC_DIR:-${HOME}/Music}
+gpb ${XDG_PUBLICSHARE_DIR:-${HOME}/Public}
+gpp ${XDG_PICTURES_DIR:-${HOME}/Pictures}
+gpv $HOME/Private
+grr ${XDG_PICTURES_DIR:-${HOME}/Pictures}/resources
+gss ${XDG_PICTURES_DIR:-${HOME}/Pictures}/screenshots
+gtc $HOME/Torrents/complete
+gti $HOME/Torrents/incomplete
+gtt $HOME/Torrents
+gvr ${XDG_VIDEOS_DIR:-${HOME}/Videos}/recordings
+gvv ${XDG_VIDEOS_DIR:-${HOME}/Videos}
+gwf $HOME/.librewolf/$USER.default
+gwo ${XDG_DESKTOP_DIR:-${HOME}/Desktop}/Work
+gww ${XDG_PICTURES_DIR:-${HOME}/Pictures}/wallpaper
+Hbk /mnt/second/backup
+Hdd /media/$USER/HDD
+Hfl /media/$USER/flash
+Hme /media/$USER
+Hmt /mnt
+Hmw /usr/local/share/mutt-wizard
+Hrr /run/runit/service
+Hsc /mnt/second
+Hsg /media/$USER/storage/G
+Hsm /media/$USER/samba
+Hss /media/$USER/ssd
+Hst /media/$USER/storage
+Hvt /media/$USER/Ventoy
+Hvv /mnt/second/videos
+Hwv /media/$USER/win10/Videos
+pae ${PASSWORD_STORE_DIR:-$XDG_DATA_HOME/.password-store}/exported_keys
+pah ${PASSWORD_STORE_DIR:-$XDG_DATA_HOME/.password-store}/ssh
+pas ${PASSWORD_STORE_DIR:-$XDG_DATA_HOME/.password-store}
+pbg ${XDG_PUBLICSHARE_DIR:-${HOME}/Public}/repos
+pve $HOME/Private/repos/email-wizard
+pvg $HOME/Private/repos
+pvm $HOME/Private/repos/mutt-wizard
+pvn $HOME/Private/repos/neetcode
+pvo $HOME/Private/repos/Obsidian/SI
+pvs $HOME/Private/repos/SiCh
+pww $HOME/Private/photo
+shh ${XDG_DATA_HOME:-${HOME}/.local/share}/history
+shg ${XDG_DATA_HOME:-${HOME}/.local/share}/nvim/gp/chats
+shm ${XDG_DATA_HOME:-${HOME}/.local/share}/mail
+shp ${XDG_DATA_HOME:-${HOME}/.local/share}/wallpapers
+shq ${XDG_DATA_HOME:-${HOME}/.local/share}/qutebrowser
+shr ${XDG_DATA_HOME:-${HOME}/.local/share}
+sht ${XDG_DATA_HOME:-${HOME}/.local/share}/task
+shv ${XDG_DATA_HOME:-${HOME}/.local/share}/venvs
+shw ${XDG_DATA_HOME:-${HOME}/.local/share}/wine
+sk ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless
+slr ${XDG_DATA_HOME:-${HOME}/.local/share}/lyrics
+sr ${XDG_SOURCES_HOME:-${HOME}/.local/src}
+tk ${XDG_DATA_HOME:-${HOME}/.local/share}/thesiah/keys
+trs ${XDG_DATA_HOME:-${HOME}/.local/share}/Trash/files
+ts ${XDG_DATA_HOME:-${HOME}/.local/share}/thesiah
+tt ${XDG_STATE_HOME:-${HOME}/.local/state}
+web ${THESIAH_WWW:-${HOME}/Private/repos/THESIAH}
+wep ${THESIAH_WWW:-${HOME}/Private/repos/THESIAH}/public
+wes ${THESIAH_WWW:-${HOME}/Private/repos/THESIAH}/static
diff --git a/mac/.config/shell/bm-files b/mac/.config/shell/bm-files
new file mode 100644
index 0000000..8210d32
--- /dev/null
+++ b/mac/.config/shell/bm-files
@@ -0,0 +1,52 @@
+# Keys Filename Description
+vab ${XDG_CONFIG_HOME:-${HOME}/.config}/abook/addressbook # Address book config
+vbc ${XDG_CONFIG_HOME:-${HOME}/.config}/bash/bashrc # Bash (shell) config
+vbd ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/bm-dirs # A list of bookmarked directories similar to this file
+vbf ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/bm-files # This file, a list of bookmarked files
+vbi ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/inputrc # This file is for gnu readline
+vbp ${XDG_CONFIG_HOME:-${HOME}/.config}/bash/bash_profile # Bash profile
+vcr ${XDG_DOTFILES_DIR:-${HOME}/.dotfiles}/$(whereami)/.config/crons # Cron job list
+vdb ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dwmblocks/config.def.h # Dwmblocks: the status bar for dwm
+vdm ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dmenu/config.def.h # Dmenu: a dynamic menu
+vdw ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/dwm/config.def.h # Dwm: a dynamic window manager
+vff ${XDG_CONFIG_HOME:-${HOME}/.config}/fastfetch/config.jsonc # Fastfetch config
+vga ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/git-aliasrc # Git aliases
+vgc ${XDG_CONFIG_HOME:-${HOME}/.config}/git/config # Git config
+vgi ${XDG_CONFIG_HOME:-${HOME}/.config}/git/ignore # Git ignore
+vlf ${XDG_CONFIG_HOME:-${HOME}/.config}/lf/lfrc # LF (file browser) config
+vlg ${XDG_CONFIG_HOME:-${HOME}/.config}/lazygit/config.yml # Lazygit config
+vls ${XDG_CONFIG_HOME:-${HOME}/.config}/lf/scope # LF's scope/preview file
+vly $HOME/.lynxrc # Lynx config
+vmi ${XDG_CONFIG_HOME:-${HOME}/.config}/mpv/input.conf # Mpv input config
+vmc ${XDG_CONFIG_HOME:-${HOME}/.config}/mpv/mpv.conf # Mpv config
+vmt ${XDG_CONFIG_HOME:-${HOME}/.config}/mutt/muttrc # Mutt (email client) config
+vnb ${XDG_CONFIG_HOME:-${HOME}/.config}/ncmpcpp/bindings # Ncmpcpp (music player) keybinds file
+vnp ${XDG_CONFIG_HOME:-${HOME}/.config}/ncmpcpp/config # Ncmpcpp (music player) config
+vns ${XDG_CONFIG_HOME:-${HOME}/.config}/newsboat/config # Newsboat config (RSS reader)
+vnu ${XDG_CONFIG_HOME:-${HOME}/.config}/newsboat/urls # Newsboat url (RSS reader)
+vqt ${XDG_CONFIG_HOME:-${HOME}/.config}/qutebrowser/config.py # Qutebrowser config
+Vsm /etc/samba/smb.conf # Samba config
+vse ${XDG_CONFIG_HOME:-${HOME}/.config}/sesh/sesh.toml # Sesh config
+vsf ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/surf/config.def.h # Surf: a simple browser
+vsl ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/slock/config.def.h # Slock: lock screen
+vsp ${XDG_DATA_HOME:-${HOME}/.local/share}/thesiah/snippets # Snippets
+vss ${XDG_CONFIG_HOME:-${HOME}/.config}/starship/starship.toml # Starship
+vst ${XDG_SOURCES_HOME:-${HOME}/.local/src}/suckless/st/config.def.h # St: a simple terminal
+vsx ${XDG_CONFIG_HOME:-${HOME}/.config}/nsxiv/exec/key-handler # Nsxiv (image viewer) key/script handler
+vtc ${XDG_CONFIG_HOME:-${HOME}/.config}/task/taskrc # Task config
+vtm ${XDG_CONFIG_HOME:-${HOME}/.config}/tmux/tmux.conf # Tmux config
+vto ${XDG_CONFIG_HOME:-${HOME}/.config}/taskopen/taskopenrc # Taskopen config
+vtt ${XDG_CONFIG_HOME:-${HOME}/.config}/transmission-daemon/settings.json # Transmission-daemon config
+vur ${XDG_DATA_HOME:-${HOME}/.local/share}/thesiah/urls # Custom urls
+vvc ${XDG_CONFIG_HOME:-${HOME}/.config}/vim/vimrc # Vim config
+vvi ${XDG_CONFIG_HOME:-${HOME}/.config}/vim/init.vim # Vim init
+vvp ${XDG_CONFIG_HOME:-${HOME}/.config}/vim/plugins.vim # Vim plugins
+vvw ${XDG_DATA_HOME:-${HOME}/.local/share}/vimwiki/index.md # Vimwiki
+vxc ${XDG_CONFIG_HOME:-${HOME}/.config}/x11/xinitrc # X11 config
+vxp ${XDG_CONFIG_HOME:-${HOME}/.config}/x11/xprofile # Start up - X11 profile
+vxr ${XDG_CONFIG_HOME:-${HOME}/.config}/x11/xresources # Colors, themes and variables for X11
+vza ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/aliasrc # Aliases used by zsh (and potentially other shells)
+vzc ${ZDOTDIR:-${XDG_CONFIG_HOME:-${HOME}/.config}/zsh}/.zshrc # Zsh config
+vzk ${ZDOTDIR:-${XDG_CONFIG_HOME:-${HOME}/.config}/zsh}/keymaps.zsh # Zsh keymaps
+vzp ${XDG_CONFIG_HOME:-${HOME}/.config}/shell/profile # Zsh profile used for system
+vzs ${ZDOTDIR:-${XDG_CONFIG_HOME:-${HOME}/.config}/zsh}/scripts.zsh # Zsh scripts
diff --git a/mac/.config/shell/git-aliasrc b/mac/.config/shell/git-aliasrc
new file mode 100644
index 0000000..f87a556
--- /dev/null
+++ b/mac/.config/shell/git-aliasrc
@@ -0,0 +1,415 @@
+# 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.
+current_branch() {
+ git_current_branch
+}
+
+# Check for develop and similarly named branches
+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
+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,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
+}
+
+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
+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
+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 .)"'
+
+ggpnp() {
+ if [[ "$#" == 0 ]]; then
+ ggl && ggp
+ else
+ ggl "${*}" && ggp "${*}"
+ fi
+}
+compdef _git ggpnp=git-checkout
+
+alias ggpur='ggu'
+alias g='git'
+! pidof transmission-daemon >/dev/null && alias gaa='git add --all' || alias gaa='echo "Turn off transmission-daemon first!"'
+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 gb='git branch'
+alias gba='git branch --all'
+alias gbD='git branch --delete --force'
+
+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
+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\]" | awk '"'"'{print $1}'"'"' | xargs git branch -d'
+alias gbgD='LANG=C git branch --no-color -vv | grep ": gone\]" | 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 gcor='git checkout --recurse-submodules'
+alias gcB='git checkout -B'
+alias gcd='git checkout $(git_develop_branch)'
+alias gcm='git checkout $(git_main_branch)'
+alias gcpa='git cherry-pick --abort'
+alias gcpc='git cherry-pick --continue'
+alias gcl='git clone --recurse-submodules'
+
+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 gc!='git commit --verbose --amend'
+alias gcn!='git commit --verbose --no-edit --amend'
+alias gdct='git describe --tags $(git rev-list --tags --max-count=1)'
+alias gdca='git diff --cached'
+alias gdcw='git diff --cached --word-diff'
+alias gds='git diff --staged'
+alias gdw='git diff --word-diff'
+
+gdv() { git diff -w "$@" | view - }
+compdef _git gdv=git-diff
+
+alias gdup='git diff @{upstream}'
+
+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=<n> 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 glggp='git log --graph --parents'
+alias glgga='git log --graph --decorate --all'
+alias glggpa='git log --graph --decorate --parents --all'
+alias glgm='git log --graph --max-count=10'
+alias glgpm='git log --graph --parents --max-count=10'
+alias gloac='git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%ae>%Creset" --abbrev-commit --all'
+alias glods='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --date=short'
+alias glopds='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --parents --date=short'
+alias glod='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset"'
+alias glopd='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset" --parents'
+alias glola='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --all'
+alias glolpa='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --parents --all'
+alias glols='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --stat'
+alias glolps='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --parents --stat'
+alias glol='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset"'
+alias glolp='git log --graph --pretty="%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset" --parents'
+alias glog='git log --oneline --decorate --graph'
+alias glogp='git log --oneline --decorate --graph --parents'
+alias gloga='git log --oneline --decorate --graph --all'
+alias glogpa='git log --oneline --decorate --graph --parents --all'
+
+# Pretty log messages
+_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 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 gprb='git pull --rebase'
+alias gprbv='git pull --rebase -v'
+alias gpra='git pull --rebase --autostash'
+alias gprav='git pull --rebase --autostash -v'
+
+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)"'
+
+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'
+
+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'
+
+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 gpvb='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)"'
+
+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 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 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 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 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 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 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 gtan='git tag --annotate'
+alias gtsn='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/mac/.config/shell/inputrc b/mac/.config/shell/inputrc
new file mode 100644
index 0000000..81cdf85
--- /dev/null
+++ b/mac/.config/shell/inputrc
@@ -0,0 +1,31 @@
+$include /etc/inputrc
+
+set completion-display-width 0
+set completion-query-items 1000
+
+# Prettyfi
+set colored-stats on
+set colored-completion-prefix on
+
+# ^C no longer shows on C-c keypress
+set echo-control-characters off
+
+# Map tab to cycle through all the possible completions.
+TAB: menu-complete
+
+# vi mode
+set editing-mode vi
+
+$if mode=vi
+set show-mode-in-prompt on
+set vi-ins-mode-string \1\e[6 q\2
+set vi-cmd-mode-string \1\e[2 q\2
+set keymap vi-command
+
+# these are for vi-command mode
+Control-l: clear-screen
+
+set keymap vi-insert
+# these are for vi-insert mode
+Control-l: clear-screen
+$endif
diff --git a/mac/.config/shell/profile b/mac/.config/shell/profile
new file mode 100644
index 0000000..ad43eb2
--- /dev/null
+++ b/mac/.config/shell/profile
@@ -0,0 +1,218 @@
+###################################################
+### --- ENV PATH --- ###
+###################################################
+# Add all directories in each subdirectory to $PATH
+export PATH="$PATH:/opt/homebrew/bin"
+export PATH="$PATH:$(find ~/.local/bin -path '*/.git*' -prune -o \( -type f -o -type l \) -perm -u=x -exec dirname {} \; | sort -u | paste -sd ':' -)"
+export PATH="$PATH:$(find ~/.local/share/.password-store -type d -name '.extensions' | paste -sd ':' -)"
+
+unsetopt PROMPT_SP 2>/dev/null
+
+###################################################
+### --- DEFAULT PROGRAMS --- ###
+###################################################
+export BROWSER=$(command -v librewolf || command -v firefox || command -v qutebrowser)
+export EDITOR="nvim"
+export EDITOR2="vim"
+export KEYTIMEOUT=10
+export SUDO_EDITOR=$EDITOR
+# export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
+export TERM="xterm-256color"
+export TERMINAL="kitty"
+export TERMINAL_PROG="kitty"
+export VISUAL=$EDITOR
+
+###################################################
+### --- XDG ENV PATHES --- ###
+###################################################
+### --- XDG DEFAULT --- ###
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_STATE_HOME="$HOME/.local/state"
+
+### --- XDG CUSTOMS --- ###
+export XDG_DOTFILES_DIR="$HOME/.dotfiles"
+export XDG_SCRIPTS_HOME="$HOME/.local/bin"
+export XDG_SOURCES_HOME="$HOME/.local/src"
+export XDG_DESKTOP_DIR="$HOME/Desktop"
+export XDG_DOCUMENTS_DIR="$HOME/Documents"
+export XDG_DOWNLOAD_DIR="$HOME/Downloads"
+export XDG_MUSIC_DIR="$HOME/Music"
+export XDG_PICTURES_DIR="$HOME/Pictures"
+export XDG_PUBLICSHARE_DIR="$HOME/Public"
+export XDG_TEMPLATES_DIR="$HOME/Templates"
+export XDG_VIDEOS_DIR="$HOME/Videos"
+
+###################################################
+### --- DEFAULT ENV PATHES FOR ALL PROGRAMS --- ###
+###################################################
+### --- ANDROID --- ###
+export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android"
+
+### --- ANSIBLE --- ###
+export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible/ansible.cfg"
+
+### --- BAT --- ###
+export BAT_CONFIG_PATH="$XDG_CONFIG_HOME/bat/config"
+
+### --- CARGO --- ###
+export CARGO_HOME="$XDG_DATA_HOME/cargo"
+
+### --- DICS --- ###
+export DICS="/usr/share/stardict/dic/"
+
+### --- ELECTRUM --- ###
+export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
+
+### --- FZF --- ###
+export FZF_ALT_C_COMMAND="fd --type d . --color=never --hidden"
+export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -50'"
+export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
+export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range :50 {}' --preview-window 'right:45%'"
+# export FZF_DEFAULT_OPTS="--no-height --color=bg+:#343d46,gutter:-1,pointer:#ff3c3c,info:#0dbc79,hl:#0dbc79,hl+:#23d18b"
+export FZF_DEFAULT_OPTS="--reverse --height 60% --color=bg+:#343d46,gutter:-1,pointer:#ff3c3c,info:#0dbc79,hl:#0dbc79,hl+:#23d18b"
+
+### --- FORGIT --- ###
+export FORGIT_CHECKOUT_BRANCH_BRANCH_GIT_OPTS='--sort=-committerdate'
+export FORGIT_COPY_CMD='xclip -selection clipboard'
+
+### --- GEM --- ###
+export GEMRC="$HOME/.config/gem/gemrc"
+export GEM_HOME="$XDG_DATA_HOME/gem"
+export GEM_PATH="$GEM_HOME"
+
+### --- GO --- ###
+export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
+export GOPATH="$XDG_SCRIPTS_HOME/go"
+
+### --- HISTORY --- ###
+export HISTFILE="$XDG_DATA_HOME/history/sh_history"
+
+### --- INPUTRC --- ###
+export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
+
+### --- JAVA --- ###
+export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
+export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
+
+### --- Jupyter --- ###
+export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter"
+export JUPYTER_PLATFORM_DIRS="1"
+
+### --- KODI --- ###
+export KODI_DATA="$XDG_DATA_HOME/kodi"
+
+### --- LF --- ###
+export FILE_MANAGER="lf $(lf -version)"
+
+### --- LYNX --- ###
+export LYNX_CFG="$HOME/.config/lynx/lynx.cfg"
+export LYNX_LSS="$HOME/.config/lynx/lynx.lss"
+export LYNX_CFG_PATH="$XDG_CONFIG_HOME/lynx"
+
+### --- MANPAGER --- ###
+([ -x "$(command -v batcat)" ] || [ -x "$(command -v batman)" ]) && {
+ export MANPAGER="sh -c 'col -bx | bat -l man -p'"
+ export MANROFFOPT="-c"
+} || {
+ export MANPAGER='less -s'
+ export LESS="R"
+ export LESS_TERMCAP_mb="$(printf '%b' '')"
+ export LESS_TERMCAP_md="$(printf '%b' '')"
+ export LESS_TERMCAP_me="$(printf '%b' '')"
+ export LESS_TERMCAP_so="$(printf '%b' '')"
+ export LESS_TERMCAP_se="$(printf '%b' '')"
+ export LESS_TERMCAP_us="$(printf '%b' '')"
+ export LESS_TERMCAP_ue="$(printf '%b' '')"
+ export LESSOPEN="| lesspipe.sh %s"
+}
+
+### --- MOZILLA --- ###
+export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpads.
+
+### --- NOTMUCH --- ###
+export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch/config"
+
+### --- NPM --- ###
+export NPM_CONFIG_USERCONFIG="~/.config/npm/.npmrc"
+
+### --- NVM --- ###
+export NVM_DIR="$XDG_CONFIG_HOME/nvm"
+
+### --- PAM GNUPG --- ###
+# export GNUPGHOME="$XDG_DATA_HOME/gnupg"
+
+### --- PASSWORD STORE --- ###
+export PASSWORD_STORE_DIR="$XDG_DATA_HOME/.password-store"
+export PASSWORD_STORE_CLIP_TIME=180 # Specifies the number of seconds to wait before restoring the clipboard, by default 45 seconds.
+# export PASSWORD_STORE_GENERATED_LENGTH=18 # by default 25.
+# export PASSWORD_STORE_CHARACTER_SET='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>?'
+# export PASSWORD_STORE_CHARACTER_SET_NO_SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{};:,.<>?'
+export PASSWORD_STORE_ENABLE_EXTENSIONS="true"
+# export PASSWORD_STORE_EXTENSIONS_DIR="$PASSWORD_STORE_DIR/.extensions"
+# export BASH_COMPLETION_USER_DIR=$XDG_DATA_HOME/bash-completion/completions
+
+### --- POWERLEVEL10K --- ###
+export POWERLEVEL9K_INSTALLATION_DIR="/usr/share/zsh-theme-powerlevel10k"
+
+### --- PYTHON --- ###
+export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python
+export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
+
+### --- RUST --- ###
+export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
+
+### --- SERVER --- ###
+export THESIAH="thesiah.xyz"
+export THESIAH_GIT="git@$THESIAH"
+export THESIAH_SERVER="root@$THESIAH"
+export THESIAH_VPN="${THESIAH%%.*}"
+export THESIAH_WWW="$HOME/Private/repos/THESIAH"
+
+### --- SQLITE --- ###
+export SQLITE_HISTORY="$XDG_DATA_HOME/history/sqlite_history"
+
+### --- STARSHIP --- ###
+export STARSHIP_CONFIG="$XDG_CONFIG_HOME/starship/starship.toml"
+
+### --- TMUX --- ###
+export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
+
+### --- UNISON --- ###
+export UNISON="$XDG_DATA_HOME/unison"
+
+### --- VIM --- ###
+# export GVIMINIT='let $MYGVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/gvimrc" : "$XDG_CONFIG_HOME/nvim/init.lua" | so $MYGVIMRC'
+# export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.lua" | so $MYVIMRC'
+
+### --- VIRTUAL ENVIRONMENT --- ###
+export WORKON_HOME="$XDG_DATA_HOME/venvs"
+
+### --- VISUAL STUDIO CODE --- ###
+export VSCODE_PORTABLE="$XDG_DATA_HOME/vscode"
+
+### --- WEBKIT --- ###
+export WEBKIT_DISABLE_COMPOSITING_MODE=1
+
+### --- WGET --- ###
+export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
+
+### --- W3M --- ###
+export W3M_DIR="$XDG_STATE_HOME/w3m"
+
+### --- X11 --- ###
+export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
+export XSERVERRC="$XDG_CONFIG_HOME/X11/xserverrc"
+
+### --- ZSH --- ###
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+export ZPLUGINDIR="$XDG_SCRIPTS_HOME/zsh"
+
+### --- SDCV --- ###
+export STARDICT_DATA_DIR="$XDG_DATA_HOME/dic"
+export STARDICT_HISTFILE="$XDG_DATA_HOME/history/dic"
+export SDCV_PAGER='less --quit-if-one-screen -RX'
+
+### --- SHORTCUTS --- ###
+[ ! -f "$XDG_CONFIG_HOME/shell/shortcutrc" ] && setsid -f shortcuts >/dev/null 2>&1