diff --git a/.bash_profile b/.bash_profile
deleted file mode 100755
index 428cd76..0000000
--- a/.bash_profile
+++ /dev/null
@@ -1,18 +0,0 @@
-alias brewup='brew update; brew upgrade; brew prune; brew cleanup; brew doctor; brew cask cleanup'
-alias rmhis='rm .bash_history; history -c; logout'
-
-export CLICOLOR=1
-export LSCOLORS=GxFxCxDxBxegedabagaced
-
-RED='\[\033[1;31m\]'
-GREEN='\[\033[1;32m\]'
-YELLOW='\[\033[1;33m\]'
-PURPLE='\[\033[1;35m\]'
-GRAY='\[\033[1;30m\]'
-DEFAULT='\[\033[0m\]'
-
-parse_git_branch() {
- git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
-}
-
-export PS1="${RED}\u ${GRAY}• ${GREEN}\h ${GRAY}• ${YELLOW}\w${GRAY}\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" •\")${PURPLE}\$(parse_git_branch)\n${GRAY}\$ ${DEFAULT}"
diff --git a/.gitconfig b/.gitconfig
index ef9131e..ff84a7c 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,9 +1,50 @@
[user]
- name = First Last
- email = email@email.com
-[github]
- user = username
+ name = First Last
+ email = email@email.com
[core]
- editor = editor
+ editor = editor
[credential]
- helper = osxkeychain
+ helper = osxkeychain
+[color]
+ ui = true
+ diff = auto
+ status = auto
+ branch = auto
+ interactive = auto
+ pager = true
+[color "branch"]
+ current = green reverse
+[color "diff"]
+ meta = yellow
+[color "status"]
+ untracked = cyan
+[pager]
+ branch = false
+[filter "lfs"]
+ clean = git-lfs clean -- %f
+ smudge = git-lfs smudge -- %f
+ process = git-lfs filter-process
+ required = true
+[alias]
+ tree = log --graph --pretty=oneline
+ lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
+ l = log --pretty=colored
+ s = status
+ d = diff
+ aa = add -A
+ co = checkout
+ cob = checkout -b
+ del = branch -d
+ delete = branch -D
+ reb = !git fetch && git rebase -i origin/main
+ ren = "!f() { git branch -m ${2} ${1}; }; f"
+ up = !git fetch origin && git pull --rebase --prune
+ cm = !git add -A && git commit
+ save = !git add -A && git commit -m "SAVEPOINT"
+ wip = !git add -u && git commit -m "WIP"
+ undo = reset HEAD~1 --mixed
+ amend = commit -a --amend --reuse-message=HEAD
+ wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
+ bclean = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -r git branch -d; }; f"
+ bdone = "!f() { git checkout ${1-master} && git up && git bclean ${1-master}; }; f"
+ contributors = "shortlog --summary --numbered"
diff --git a/.gitignore b/.gitignore
index 2276a02..a0e470f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
*.DS_Store
.vscode/
+Brewfile.lock.json
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..95a52e3
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,107 @@
+# If you come from bash you might have to change your $PATH.
+# export PATH=$HOME/bin:/usr/local/bin:$PATH
+
+# 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="tranquility"
+
+# 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 the following line to disable bi-weekly auto-update checks.
+# DISABLE_AUTO_UPDATE="true"
+
+# Uncomment the following line to automatically update without prompting.
+# DISABLE_UPDATE_PROMPT="true"
+
+# Uncomment the following line to change how often to auto-update (in days).
+# export UPDATE_ZSH_DAYS=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.
+# Caution: this setting can cause issues with multiline prompts (zsh 5.7.1 and newer seem to work)
+# See https://github.com/ohmyzsh/ohmyzsh/issues/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=custom_path
+
+# 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.
+plugins=(
+ git
+ rails
+)
+
+source $ZSH/oh-my-zsh.sh
+
+# User configuration
+if which asdf > /dev/null; then eval ". $(brew --prefix asdf)/libexec/asdf.sh"; fi
+if which mise > /dev/null; then eval "$(mise activate zsh)"; fi
+if which direnv > /dev/null; then eval "$(direnv hook zsh)"; fi
+
+# 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"
diff --git a/Brewfile b/Brewfile
deleted file mode 100755
index 0e2f615..0000000
--- a/Brewfile
+++ /dev/null
@@ -1,24 +0,0 @@
-tap 'caskroom/cask'
-
-brew 'git'
-brew 'mas'
-
-cask 'appcleaner'
-cask 'filezilla'
-cask 'firefox'
-cask 'flux'
-cask 'google-chrome'
-cask 'keepingyouawake'
-cask 'keka'
-cask 'mamp'
-cask 'opera'
-cask 'sequel-pro'
-cask 'skype'
-cask 'spectacle'
-cask 'transmission'
-cask 'visual-studio-code'
-cask 'vlc'
-
-mas "iMovie", id: 408981434
-mas "Numbers", id: 409203825
-mas "Pages", id: 409201541
diff --git a/Dracula.itermcolors b/Dracula.itermcolors
new file mode 100755
index 0000000..619da48
--- /dev/null
+++ b/Dracula.itermcolors
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+ Ansi 0 Color
+
+ Blue Component
+ 0.0
+ Green Component
+ 0.0
+ Red Component
+ 0.0
+
+ Ansi 1 Color
+
+ Blue Component
+ 0.3333333432674408
+ Green Component
+ 0.3333333432674408
+ Red Component
+ 1
+
+ Ansi 10 Color
+
+ Blue Component
+ 0.4823529411764706
+ Green Component
+ 0.98039215686274506
+ Red Component
+ 0.31372549019607843
+
+ Ansi 11 Color
+
+ Blue Component
+ 0.5490196078431373
+ Green Component
+ 0.98039215686274506
+ Red Component
+ 0.94509803921568625
+
+ Ansi 12 Color
+
+ Blue Component
+ 0.97647058823529409
+ Green Component
+ 0.57647058823529407
+ Red Component
+ 0.74117647058823533
+
+ Ansi 13 Color
+
+ Blue Component
+ 0.77647058823529413
+ Green Component
+ 0.47450980392156861
+ Red Component
+ 1
+
+ Ansi 14 Color
+
+ Blue Component
+ 0.99215686274509807
+ Green Component
+ 0.9137254901960784
+ Red Component
+ 0.54509803921568623
+
+ Ansi 15 Color
+
+ Blue Component
+ 1
+ Green Component
+ 1
+ Red Component
+ 1
+
+ Ansi 2 Color
+
+ Blue Component
+ 0.4823529411764706
+ Green Component
+ 0.98039215686274506
+ Red Component
+ 0.31372549019607843
+
+ Ansi 3 Color
+
+ Blue Component
+ 0.5490196078431373
+ Green Component
+ 0.98039215686274506
+ Red Component
+ 0.94509803921568625
+
+ Ansi 4 Color
+
+ Blue Component
+ 0.97647058823529409
+ Green Component
+ 0.57647058823529407
+ Red Component
+ 0.74117647058823533
+
+ Ansi 5 Color
+
+ Blue Component
+ 0.77647058823529413
+ Green Component
+ 0.47450980392156861
+ Red Component
+ 1
+
+ Ansi 6 Color
+
+ Blue Component
+ 0.99215686274509807
+ Green Component
+ 0.9137254901960784
+ Red Component
+ 0.54509803921568623
+
+ Ansi 7 Color
+
+ Blue Component
+ 0.73333334922790527
+ Green Component
+ 0.73333334922790527
+ Red Component
+ 0.73333334922790527
+
+ Ansi 8 Color
+
+ Blue Component
+ 0.33333333333333331
+ Green Component
+ 0.33333333333333331
+ Red Component
+ 0.33333333333333331
+
+ Ansi 9 Color
+
+ Blue Component
+ 0.33333333333333331
+ Green Component
+ 0.33333333333333331
+ Red Component
+ 1
+
+ Background Color
+
+ Blue Component
+ 0.15977837145328522
+ Green Component
+ 0.12215272337198257
+ Red Component
+ 0.11765811592340469
+
+ Bold Color
+
+ Blue Component
+ 0.90237069129943848
+ Green Component
+ 0.90237069129943848
+ Red Component
+ 0.90237069129943848
+
+ Cursor Color
+
+ Blue Component
+ 0.73333334922790527
+ Green Component
+ 0.73333334922790527
+ Red Component
+ 0.73333334922790527
+
+ Cursor Text Color
+
+ Blue Component
+ 1
+ Green Component
+ 1
+ Red Component
+ 1
+
+ Foreground Color
+
+ Blue Component
+ 0.90032327175140381
+ Green Component
+ 0.90032327175140381
+ Red Component
+ 0.90032327175140381
+
+ Selected Text Color
+
+ Blue Component
+ 1
+ Green Component
+ 1
+ Red Component
+ 1
+
+ Selection Color
+
+ Blue Component
+ 0.35294118523597717
+ Green Component
+ 0.27843138575553894
+ Red Component
+ 0.26666668057441711
+
+
+
diff --git a/Flat.terminal b/Flat.terminal
deleted file mode 100644
index ba7c5a4..0000000
--- a/Flat.terminal
+++ /dev/null
@@ -1,295 +0,0 @@
-
-
-
-
- BackgroundColor
-
- YnBsaXN0MDDUAQIDBAUGKyxYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T
- Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE2OTc2MzUw
- NTUgMC4yNDI0MTMwNDQgMC4zMTQwMTcyMzYyIDFPECcwLjEyODczODMyODggMC4xODM0
- NTkzODYyIDAuMjQ2MTk5MjY1MQAQAYACgAbTFBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXS
- Gg0bHFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEA
- AGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQA
- AAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIY
- AAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAA
- iHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRl
- Y2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQA
- AAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj
- AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYt
- Mi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAA
- AG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbP
- ZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0
- dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s
- b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS
- R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA
- AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAA
- AAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIu
- MQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3M
- AAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAA
- AAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU
- ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA
- lQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZ
- AR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB
- 0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2
- AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD
- 4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6
- BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG
- 4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+
- CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK
- 8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1a
- DXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQ
- JhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj
- E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW
- jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoq
- GlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYe
- QB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKC
- Iq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgn
- SSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5
- LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
- ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg
- N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9
- oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD
- REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRL
- DEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIx
- UnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbha
- B1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1
- YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhq
- n2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNd
- c7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF8
- 4X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZy
- hteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q
- 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC
- m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqm
- i6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW
- skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++
- Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4
- yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjX
- XNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz
- 5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y
- jPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE
- 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhoyAiI1ZOU0RhdGFY
- TlNPYmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNcTlNDb2xvclNwYWNl0h4fKSpXTlND
- b2xvcqIpI18QD05TS2V5ZWRBcmNoaXZlctEtLlRyb290gAEACAARABoAIwAtADIANwA/
- AEUAUABdAGMAcACFAIwAtgDgAOIA5ADmAO0A8gD4APoA/AD+AQMBCw1XDVkNXg1pDXIN
- gA2EDYsNlA2ZDaYNqQ22DbsNww3GDdgN2w3gAAAAAAAAAgEAAAAAAAAALwAAAAAAAAAA
- AAAAAAAADeI=
-
- CursorBlink
-
- CursorColor
-
- YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw
- LjkyMTU2ODY5MTcgMC43ODQzMTM3OTggMC4wMjc0NTA5ODI0OAAQAoAC0hAREhNaJGNs
- YXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp
- dmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA
- AAAZAAAAAAAAAAAAAAAAAAAA2Q==
-
- CursorType
- 0
- Font
-
- YnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKQHCBESVSRudWxs1AkKCwwNDg8QVk5TU2l6ZVhOU2ZGbGFnc1ZOU05hbWVWJGNs
- YXNzI0AqAAAAAAAAEBCAAoADXlNGTW9uby1SZWd1bGFy0hMUFRZaJGNsYXNzbmFtZVgk
- Y2xhc3Nlc1ZOU0ZvbnSiFRdYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2ZXLRGhtUcm9v
- dIABCBEaIy0yNzxCS1JbYmlydHZ4h4yXoKeqs8XIzQAAAAAAAAEBAAAAAAAAABwAAAAA
- AAAAAAAAAAAAAADP
-
- ProfileCurrentVersion
- 2.0499999999999998
- SelectionColor
-
- YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw
- LjU1Njg2Mjc3MTUgMC4yNjY2NjY2ODA2IDAuNjc4NDMxMzkxNwAQAoAC0hAREhNaJGNs
- YXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp
- dmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA
- AAAZAAAAAAAAAAAAAAAAAAAA2Q==
-
- ShowActiveProcessArgumentsInTitle
-
- ShowActiveProcessInTitle
-
- ShowCommandKeyInTitle
-
- ShowDimensionsInTitle
-
- ShowRepresentedURLInTitle
-
- ShowRepresentedURLPathInTitle
-
- ShowShellCommandInTitle
-
- ShowTTYNameInTitle
-
- ShowWindowSettingsNameInTitle
-
- TextBoldColor
-
- YnBsaXN0MDDUAQIDBAUGKyxYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T
- Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NHMSAxIDEgMU8QGjEg
- MC45OTk5NzQzNyAwLjk5OTk5MTI5NzcAEAGAAoAG0xQVDRYXGFROU0lEVU5TSUNDEAeA
- A4AF0hoNGxxXTlMuZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkA
- BgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQ
- ICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj
- cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFla
- AAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAAC
- xAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAA
- ACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0
- ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAA
- ZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYx
- OTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAA
- AAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E
- AAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklF
- QyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdC
- IGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1
- bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVz
- YwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIu
- MQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2
- Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8U
- AAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAA
- AAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK
- AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYA
- iwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwEN
- ARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkB
- wQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKi
- AqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oD
- xwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUc
- BSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G
- wAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiW
- CKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4K
- xQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0m
- DUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P
- 7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLj
- EwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYW
- SRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxnd
- GgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd
- 7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yIn
- IlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm
- 6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvR
- LAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx
- SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
- NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9
- Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9
- Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdK
- fUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGb
- UeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZ
- aVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP
- YaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp
- 8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3Km
- cwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8
- IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wr
- hg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56Q
- BpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/Jpo
- mtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTil
- qaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDq
- sWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9
- Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6
- ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHW
- VdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj
- 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXx
- cvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t
- //+ABNIeHyAhWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMgIiNWTlNE
- YXRhWE5TT2JqZWN00h4fJSZcTlNDb2xvclNwYWNloicjXE5TQ29sb3JTcGFjZdIeHykq
- V05TQ29sb3KiKSNfEA9OU0tleWVkQXJjaGl2ZXLRLS5Ucm9vdIABAAgAEQAaACMALQAy
- ADcAPwBFAFAAXQBjAHAAhQCMAJQAsQCzALUAtwC+AMMAyQDLAM0AzwDUANwNKA0qDS8N
- Og1DDVENVQ1cDWUNag13DXoNhw2MDZQNlw2pDawNsQAAAAAAAAIBAAAAAAAAAC8AAAAA
- AAAAAAAAAAAAAA2z
-
- TextColor
-
- YnBsaXN0MDDUAQIDBAUGKyxYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS
- AAGGoKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T
- Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NHMSAxIDEgMU8QGjEg
- MC45OTk5NzQzNyAwLjk5OTk5MTI5NzcAEAGAAoAG0xQVDRYXGFROU0lEVU5TSUNDEAeA
- A4AF0hoNGxxXTlMuZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkA
- BgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQ
- ICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj
- cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFla
- AAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAAC
- xAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAA
- ACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0
- ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAA
- ZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYx
- OTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAA
- AAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E
- AAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklF
- QyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdC
- IGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1
- bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVz
- YwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIu
- MQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2
- Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8U
- AAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAA
- AAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK
- AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYA
- iwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwEN
- ARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkB
- wQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKi
- AqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oD
- xwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUc
- BSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G
- wAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiW
- CKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4K
- xQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0m
- DUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P
- 7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLj
- EwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYW
- SRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxnd
- GgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd
- 7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yIn
- IlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm
- 6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvR
- LAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx
- SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
- NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9
- Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9
- Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdK
- fUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGb
- UeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZ
- aVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP
- YaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp
- 8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3Km
- cwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8
- IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wr
- hg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56Q
- BpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/Jpo
- mtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTil
- qaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDq
- sWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9
- Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6
- ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHW
- VdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj
- 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXx
- cvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t
- //+ABNIeHyAhWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMgIiNWTlNE
- YXRhWE5TT2JqZWN00h4fJSZcTlNDb2xvclNwYWNloicjXE5TQ29sb3JTcGFjZdIeHykq
- V05TQ29sb3KiKSNfEA9OU0tleWVkQXJjaGl2ZXLRLS5Ucm9vdIABAAgAEQAaACMALQAy
- ADcAPwBFAFAAXQBjAHAAhQCMAJQAsQCzALUAtwC+AMMAyQDLAM0AzwDUANwNKA0qDS8N
- Og1DDVENVQ1cDWUNag13DXoNhw2MDZQNlw2pDawNsQAAAAAAAAIBAAAAAAAAAC8AAAAA
- AAAAAAAAAAAAAA2z
-
- UseBrightBold
-
- WindowTitle
- Terminal
- columnCount
- 80
- name
- Black
- rowCount
- 24
- type
- Window Settings
-
-
diff --git a/README.md b/README.md
index 9cd45e7..5580559 100644
--- a/README.md
+++ b/README.md
@@ -1,341 +1,133 @@
-

-
-# Front End Web Development Setup for macOS
-
-This document describes how I set up front end web development environment on my MacBook Air with macOS High Sierra 10.13.3.
-
+
+
Mac Setup
+
+ Full Stack Development Setup for macOS
+
+
+
+
+
+
+
+
+
+Automated macOS setup script for full stack development. Installs and configures tools, applications, shell environment, and system preferences.
+
+---
+
+## Table of Contents
+
+- [Installation](#installation)
+- [What Gets Installed](#what-gets-installed)
- [System Preferences](#system-preferences)
-- [Terminal](#terminal)
-- [Bash](#bash)
-- [Homebrew](#homebrew)
+- [Shell](#shell)
- [Git](#git)
-- [Node.js](#nodejs)
-- [Node Package Manager](#node-package-manager)
-- [Web Browsers](#web-browsers)
-- [Visual Studio Code](#visual-studio-code)
-
-## System Preferences
-
-After clean install of operating system, there are a couple tweaks I like to make to the System Preferences. Some of them are not strictly related to web development enviroment - I use them because of my personal habits.
-
-
-- General > User dark menu bar and Dock
-- General > Ask to keep changes when closing documents
-- General > Close windows when quitting an app
-- Dock > Automatically hide and show the Dock
-- Keyboard > Key Repeat > Fast (all the way to the right)
-- Keyboard > Delay Until Repeat > Short (all the way to the right)
-
-### Set Dock size
-
-```shell
-defaults write com.apple.dock tilesize -int 35; killall Dock
-```
-
-### Disable "Press and hold"
-
-```shell
-defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
-```
-
-### Reset icons in Launchpad
-
-I usually use this command after installing every application that I need - it keeps Apple applications on the first page and moves the rest to the next pages.
-
-```shell
-defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock
-```
-
-### Show hidden files
+- [Version Manager](#version-manager)
-This can also be done by pressing `Command ⌘` + `Shift ⇧` + `.`.
+---
-```shell
-defaults write com.apple.finder AppleShowAllFiles YES
-```
+## Installation
-### Show path bar in Finder
+Clone the repository and run the install script from the repo root:
```shell
-defaults write com.apple.finder ShowPathbar -bool true
+$ git clone https://github.com/gguerini/mac-setup.git
+$ cd mac-setup
+$ zsh script/install.sh
```
-### Show status bar in Finder
+The installer is interactive — it will prompt you before each step so you can skip anything you don't need. Useful when setting up a work laptop vs. a personal machine.
-```shell
-defaults write com.apple.finder ShowStatusBar -bool true
-```
+---
-## Terminal
+## What Gets Installed
-I use my custom Terminal profile called **Flat**. You can download it by typing:
+### Base packages (always installed)
-```shell
-curl -O https://raw.githubusercontent.com/appalaszynski/mac-setup/master/Flat.terminal
-```
+- `mas` — Mac App Store CLI
+- `gh` — GitHub CLI
-To use it as default profile open downloaded `Flat.terminal` file and click **Shell** > **Use settings as default** option.
+### App groups (opt-in per group)
-## Bash
+Apps are organized into groups under `brewfiles/`. The installer prompts for each group:
-```shell
-alias brewup='brew update; brew upgrade; brew prune; brew cleanup; brew doctor; brew cask cleanup'
-alias rmhis='rm .bash_history; history -c; logout'
+| Group | Apps |
+|---|---|
+| **development** | Cursor, VS Code, GitHub Desktop, iTerm2, Insomnia, Figma |
+| **databases** | TablePlus, Postico |
+| **productivity** | Alfred, Rectangle, Caffeine, xbar, AppCleaner, 1Password, MeetingBar, Hidden Bar, Things, Bumpr |
+| **communication** | Slack, ChatGPT, WhatsApp, Claude |
+| **browsers** | Firefox, Google Chrome, Brave |
+| **media** | VLC, LiceCap, ImageOptim, TrainerRoad |
+| **utilities** | Wipr 2, Vinegar, GIPHY, Xcode |
-export CLICOLOR=1
-export LSCOLORS=GxFxCxDxBxegedabagaced
+To add a new group, create a `brewfiles/Brewfile.` file — the installer picks it up automatically.
-RED='\[\033[1;31m\]'
-GREEN='\[\033[1;32m\]'
-YELLOW='\[\033[1;33m\]'
-PURPLE='\[\033[1;35m\]'
-GRAY='\[\033[1;30m\]'
-DEFAULT='\[\033[0m\]'
+---
-parse_git_branch() {
- git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
-}
+## System Preferences
-export PS1="${RED}\u ${GRAY}• ${GREEN}\h ${GRAY}• ${YELLOW}\w${GRAY}\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" on\")${PURPLE}\$(parse_git_branch)\n${GRAY}\$ ${DEFAULT}"
-```
+macOS system preferences are configured via `script/defaults.sh`. It covers:
-In my `.bash_profile` file I create a `brewup` alias to keep Homebrew (which we are going to install in a second) up to date and `rmhis` to remove bash history. I also set color scheme for `ls` command output and for custom prompt which contains username, computer name, working directory and current Git branch.
+- **Finder** — status/path bars, list view, show hidden Library, spring loading
+- **Dock** — size 35, auto-hide, no animations, minimize to app icon
+- **Trackpad** — tap-to-click, two-finger right-click, three-finger swipe
+- **Keyboard** — fast key repeat, disable press-and-hold, disable smart punctuation
+- **Appearance** — Dark Mode, graphite accent color
+- **Safari** — full URL display, developer tools, favorites bar
-To download `.bash_profile` and execute its content, use:
+Run it standalone at any time:
```shell
-cd ~
-curl -O https://raw.githubusercontent.com/appalaszynski/mac-setup/master/.bash_profile
-source ~/.bash_profile
+$ zsh script/defaults.sh
```
-## Homebrew
+> If you see "Could not write domain" errors, grant Full Disk Access to your terminal app in System Settings > Privacy & Security.
-[Homebrew](http://brew.sh/) package manager allows to install almost any app right from the command line.
+---
-### Installation
+## Shell
-```shell
-/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-```
+Uses [Oh My Zsh](https://ohmyz.sh/) with a custom theme and aliases.
-### Brewfile
-
-Installing each package separately may take some time. That's why I use [Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle), which allows to automatically install all packages and applications listed in the `Brewfile` file.
-
-Here are all the programs I install with a brief description.
-
-- [Cask](https://caskroom.github.io) - an extension to Homebrew which allows to install almost any program that exists for a Mac
-- [Git](https://git-scm.com) - for version control
-- [mas-cli](https://github.com/mas-cli/mas) - Mac App Store command line interface
-- [AppCleaner](https://freemacsoft.net/appcleaner/) - uninstall apps
-- [Filezilla](https://filezilla-project.org) - FTP client
-- [Firefox](https://www.mozilla.org/firefox/new/) - web browser
-- [Flux](https://justgetflux.com) - better Night Shift
-- [Google Chrome](https://www.google.pl/chrome/browser/desktop/index.html) - web browser
-- [KeepingYouAwake](https://github.com/newmarcel/KeepingYouAwake) - prevent Mac from entering sleep mode
-- [Keka](http://www.kekaosx.com) - file archiver
-- [MAMP](https://www.mamp.info/en/) - Apache, MySQL and PHP package
-- [Opera](http://www.opera.com) - web browser
-- [Sequel Pro](http://www.sequelpro.com) - GUI for MySQL databases
-- [Skype](https://www.skype.com) - voice and video chat
-- [Spectacle](https://www.spectacleapp.com) - easily move and resize windows
-- [Transmission](https://transmissionbt.com) - BitTorrent client
-- [Visual Studio Code](https://code.visualstudio.com) - code editor
-- [VLC](https://www.videolan.org/vlc/) - media player
-- [iMovie](https://www.apple.com/imovie/) - video editor
-- [Pages](https://www.apple.com/pages/) - text editor
-- [Numbers](https://www.apple.com/numbers/) - spreadsheet
-
-Below are the entire contents of my `Brewfile`, which will install all the above programs with a single command.
-
-```ruby
-tap 'caskroom/cask'
-
-brew 'git'
-brew 'mas'
-
-cask 'appcleaner'
-cask 'filezilla'
-cask 'firefox'
-cask 'flux'
-cask 'google-chrome'
-cask 'keepingyouawake'
-cask 'keka'
-cask 'mamp'
-cask 'opera'
-cask 'sequel-pro'
-cask 'skype'
-cask 'spectacle'
-cask 'transmission'
-cask 'visual-studio-code'
-cask 'vlc'
-
-mas "iMovie", id: 408981434
-mas "Numbers", id: 409203825
-mas "Pages", id: 409201541
-```
+- **Theme** — `tranquility` (shows Git branch, commit age, dirty state)
+- **Plugins** — `git`, `rails`
+- **Aliases** — defined in `oh-my-zsh/aliases.zsh`
-To check App Store application's IDs use:
+VS Code settings are managed via [VS Code Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync) backed by GitHub — not stored in this repo.
-```shell
-mas search
-```
-
-To download my `Brewfile` file type:
-
-```shell
-curl -O https://raw.githubusercontent.com/appalaszynski/mac-setup/master/Brewfile
-```
-
-To install listed applications use:
-
-```shell
-brew bundle
-```
-
-in directory that contains `Brewfile` file.
+---
## Git
-You can set Git global configuration two ways. The first is to run bunch of commands which will update the Git configuration file, e.g.
+The installer creates `~/.gitconfig` from the template in this repo, prompting for your name, email, and preferred editor.
-```shell
-git config --global user.name "First Last"
-git config --global user.email "email@email.com"
-```
+Includes a set of aliases for common workflows:
-The other and faster way is creating the Git configuration file and input it all ourselves.
+| Alias | Command |
+|---|---|
+| `s` | `status` |
+| `aa` | `add --all` |
+| `cm` | `add --all && commit -m` |
+| `co` | `checkout` |
+| `cob` | `checkout -b` |
+| `up` | `fetch && pull --rebase` |
+| `reb` | `fetch && rebase -i origin/main` |
+| `lg` | fancy log with graph |
+| `wip` | commit all as WIP |
+| `undo` | reset last commit (mixed) |
+| `wipe` | hard reset |
+| `bdone` | checkout main, update, delete merged branches |
-```shell
-cd ~
-curl -O https://raw.githubusercontent.com/appalaszynski/mac-setup/master/.gitconfig
-open .gitconfig
-```
-
-```properties
-[user]
- name = First Last
- email = email@email.com
-[github]
- user = username
-[core]
- editor = editor
-[credential]
- helper = osxkeychain
-```
+### SSH via 1Password
-Here I set my name, email, GitHub username, core editor and connect Git to the macOS Keychain so I don’t have to type my username and password every time I want to push to GitHub.
+1Password can act as your SSH agent — no key files on disk, protected by biometric unlock. When you enable it in **Settings > Developer > Use the SSH agent**, 1Password automatically updates `~/.ssh/config` for you.
-## Node.js
+---
-For installation of Node.js I like to use [Node Version Manager](https://github.com/creationix/nvm) (nvm). To download it type:
-
-```shell
-curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
-```
-
-You can check all available Node.js versions by:
-
-```shell
-nvm list-remote
-```
-
-To install specific version type:
-
-```shell
-nvm install
-```
-
-## Node Package Manager
-
-The only thing I use globally at the moment is [Gulp](https://gulpjs.com).
-
-### Gulp
-
-To install Gulp globally use:
-
-```shell
-npm install --global gulp-cli
-```
-
-## Web Browsers
-
-Currently I have installed all major web browsers:
-
-- [Chrome](https://www.google.com/chrome/)
-- [Safari](https://www.apple.com/safari/)
-- [Opera](https://www.opera.com/)
-- [Firefox](https://www.mozilla.org/en-US/firefox/)
-
-For main development I use Google Chrome.
-
-### Chrome extensions
-
-- [uBlock Origin](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm) - block ads
-- [JSONView](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc) - validate and view JSON documents
-- [React developer tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) - inspect component hierarchies and states
-- [Redux DevTools](https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd) - debug state changes
-
-## Visual Studio Code
-
-All settings changes in Visual Studio Code are stored in `settings.json` file.
-
-```json
-{
- "workbench.startupEditor": "newUntitledFile",
- "workbench.colorTheme": "Monokai",
- "workbench.activityBar.visible": false,
- "workbench.iconTheme": "material-icon-theme",
- "editor.fontSize": 12,
- "editor.tabSize": 2,
- "editor.multiCursorModifier": "ctrlCmd",
- "editor.minimap.enabled": false,
- "editor.hideCursorInOverviewRuler": true,
- "editor.formatOnPaste": true,
- "explorer.openEditors.visible": 0,
- "files.insertFinalNewline": true,
- "html.autoClosingTags": false,
- "files.exclude": {
- "**/node_modules/": true,
- "**/.vscode/": true,
- },
- "material-icon-theme.folders.theme": "none",
- "todohighlight.isEnable": true,
- "todohighlight.keywords": [
- {
- "text": "TODO:",
- "color": "black",
- "backgroundColor": "yellow",
- "overviewRulerColor": "yellow"
- },
- {
- "text": "FIXME:",
- "color": "white",
- "backgroundColor": "red",
- "overviewRulerColor": "red"
- }
- ],
- "todohighlight.exclude": [
- "**/public/"
- ]
-}
-```
-
-You can copy and paste them or just download whole file by:
-
-```shell
-cd /Users/Your Username/Library/Application Support/Code/User
-curl -O https://raw.githubusercontent.com/appalaszynski/mac-setup/master/settings.json
-```
+## Version Manager
-### Extensions
+The installer offers a choice between [asdf](https://asdf-vm.com/) and [mise](https://mise.jdx.dev/) for managing Ruby versions. Both support `.tool-versions` files.
-- [Auto Rename Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag) - automatically rename paired HTML tag
-- [Debugger for Chrome](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome) - debug JavaScript code in the Google Chrome browser
-- [Material Icon Theme](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme) - icons based on Material Design
-- [open in browser](https://marketplace.visualstudio.com/items?itemName=techer.open-in-browser) - open any file in specific browser right from VS Code explorer
-- [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense) - autocomplete filenames
-- [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager) - manage projects right inside Visual Studio Code
-- [SCSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-scss) - autocomplete variables, mixins, functions and many other
-- [TODO Highlight](https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight) - highlight and list TODO, FIXME or any annotations within code
+- **asdf** — battle-tested, widely used
+- **mise** — faster, actively maintained, drop-in replacement for asdf
diff --git a/brewfiles/Brewfile b/brewfiles/Brewfile
new file mode 100755
index 0000000..1826631
--- /dev/null
+++ b/brewfiles/Brewfile
@@ -0,0 +1,2 @@
+brew "mas"
+brew "gh"
diff --git a/brewfiles/Brewfile.browsers b/brewfiles/Brewfile.browsers
new file mode 100644
index 0000000..a852d9e
--- /dev/null
+++ b/brewfiles/Brewfile.browsers
@@ -0,0 +1,3 @@
+cask "firefox"
+cask "google-chrome"
+cask "brave-browser"
diff --git a/brewfiles/Brewfile.communication b/brewfiles/Brewfile.communication
new file mode 100644
index 0000000..563c3c6
--- /dev/null
+++ b/brewfiles/Brewfile.communication
@@ -0,0 +1,4 @@
+cask "slack"
+
+mas "ChatGPT", id: 6448311069
+mas "Claude", id: 6473753684
diff --git a/brewfiles/Brewfile.databases b/brewfiles/Brewfile.databases
new file mode 100644
index 0000000..f3aa3fa
--- /dev/null
+++ b/brewfiles/Brewfile.databases
@@ -0,0 +1,2 @@
+cask "tableplus"
+cask "postico"
diff --git a/brewfiles/Brewfile.development b/brewfiles/Brewfile.development
new file mode 100644
index 0000000..afe0b11
--- /dev/null
+++ b/brewfiles/Brewfile.development
@@ -0,0 +1,6 @@
+cask "cursor"
+cask "visual-studio-code"
+cask "github"
+cask "iterm2"
+cask "insomnia"
+cask "figma"
diff --git a/brewfiles/Brewfile.media b/brewfiles/Brewfile.media
new file mode 100644
index 0000000..87c72ab
--- /dev/null
+++ b/brewfiles/Brewfile.media
@@ -0,0 +1,3 @@
+cask "vlc"
+cask "licecap"
+cask "imageoptim"
diff --git a/brewfiles/Brewfile.personal b/brewfiles/Brewfile.personal
new file mode 100644
index 0000000..01d2ed5
--- /dev/null
+++ b/brewfiles/Brewfile.personal
@@ -0,0 +1,3 @@
+cask "trainerroad"
+
+mas "WhatsApp", id: 310633997
diff --git a/brewfiles/Brewfile.productivity b/brewfiles/Brewfile.productivity
new file mode 100644
index 0000000..822e25f
--- /dev/null
+++ b/brewfiles/Brewfile.productivity
@@ -0,0 +1,11 @@
+cask "alfred"
+cask "rectangle"
+cask "caffeine"
+cask "xbar"
+cask "appcleaner"
+
+mas "1Password", id: 1511601750
+mas "MeetingBar", id: 1532419400
+mas "Hidden Bar", id: 1452453066
+mas "Things", id: 904280696
+mas "Bumpr", id: 1166066070
diff --git a/brewfiles/Brewfile.utilities b/brewfiles/Brewfile.utilities
new file mode 100644
index 0000000..a33c419
--- /dev/null
+++ b/brewfiles/Brewfile.utilities
@@ -0,0 +1,4 @@
+mas "Wipr 2", id: 1662217862
+mas "Vinegar", id: 1591303229
+mas "GIPHY", id: 668208984
+mas "Xcode", id: 497799835
diff --git a/oh-my-zsh/aliases.zsh b/oh-my-zsh/aliases.zsh
new file mode 100644
index 0000000..140cda5
--- /dev/null
+++ b/oh-my-zsh/aliases.zsh
@@ -0,0 +1,8 @@
+# zsh / oh-my-zsh
+alias zshconfig="code ~/.zshrc"
+alias ohmyzsh="code ~/.oh-my-zsh"
+alias reload!="source ~/.zshrc"
+
+# Show/hide hidden files in Finder
+alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
+alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
diff --git a/oh-my-zsh/themes/tranquility.zsh-theme b/oh-my-zsh/themes/tranquility.zsh-theme
new file mode 100644
index 0000000..f0943b9
--- /dev/null
+++ b/oh-my-zsh/themes/tranquility.zsh-theme
@@ -0,0 +1,100 @@
+# Tranquility ZSH Theme based on AVIT
+
+PROMPT='
+$(_user_host)${_current_dir} $(git_prompt_info)
+%{$fg[$CARETCOLOR]%}➜%{$resetcolor%} '
+
+PROMPT2='%{$fg[$CARETCOLOR]%}◀%{$reset_color%} '
+
+RPROMPT='$(_vi_status)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'
+
+local _current_dir="%{$fg_bold[blue]%}%3~%{$reset_color%} "
+local _return_status="%{$fg_bold[red]%}%(?..⍉)%{$reset_color%}"
+local _hist_no="%{$fg[grey]%}%h%{$reset_color%}"
+
+function _current_dir() {
+ local _max_pwd_length="65"
+ if [[ $(echo -n $PWD | wc -c) -gt ${_max_pwd_length} ]]; then
+ echo "%{$fg_bold[blue]%}%-2~ ... %3~%{$reset_color%} "
+ else
+ echo "%{$fg_bold[blue]%}%~%{$reset_color%} "
+ fi
+}
+
+function _user_host() {
+ if [[ -n $SSH_CONNECTION ]]; then
+ me="%n@%m"
+ elif [[ $LOGNAME != $USER ]]; then
+ me="%n"
+ fi
+ if [[ -n $me ]]; then
+ echo "%{$fg[cyan]%}$me%{$reset_color%}:"
+ fi
+}
+
+function _vi_status() {
+ if {echo $fpath | grep -q "plugins/vi-mode"}; then
+ echo "$(vi_mode_prompt_info)"
+ fi
+}
+
+# Determine the time since last commit. If branch is clean,
+# use a neutral color, otherwise colors will vary according to time.
+function _git_time_since_commit() {
+# Only proceed if there is actually a commit.
+ if last_commit=$(git log --pretty=format:'%at' -1 2> /dev/null); then
+ now=$(date +%s)
+ seconds_since_last_commit=$((now-last_commit))
+
+ # Totals
+ minutes=$((seconds_since_last_commit / 60))
+ hours=$((seconds_since_last_commit/3600))
+
+ # Sub-hours and sub-minutes
+ days=$((seconds_since_last_commit / 86400))
+ sub_hours=$((hours % 24))
+ sub_minutes=$((minutes % 60))
+
+ if [ $hours -gt 24 ]; then
+ commit_age="${days}d"
+ elif [ $minutes -gt 60 ]; then
+ commit_age="${sub_hours}h${sub_minutes}m"
+ else
+ commit_age="${minutes}m"
+ fi
+
+ color=$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL
+ echo "$color$commit_age%{$reset_color%}"
+ fi
+}
+
+if [[ $USER == "root" ]]; then
+ CARETCOLOR="red"
+else
+ CARETCOLOR="white"
+fi
+
+MODE_INDICATOR="%{$fg_bold[yellow]%}❮%{$reset_color%}%{$fg[yellow]%}❮❮%{$reset_color%}"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}"
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
+
+ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg[red]%}✗%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg[green]%}✔%{$reset_color%}"
+ZSH_THEME_GIT_PROMPT_ADDED="%{$fg[green]%}✚ "
+ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg[yellow]%}⚑ "
+ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[red]%}✖ "
+ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg[blue]%}▴ "
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[cyan]%}§ "
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[white]%}◒ "
+
+# Colors vary depending on time lapsed.
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT="%{$fg[green]%}"
+ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM="%{$fg[yellow]%}"
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG="%{$fg[red]%}"
+ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[white]%}"
+
+# LS colors, made with https://geoff.greer.fm/lscolors/
+export LSCOLORS="exfxcxdxbxegedabagacad"
+export LS_COLORS='di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:'
+export GREP_COLOR='1;33'
diff --git a/rectangle.plist b/rectangle.plist
new file mode 100644
index 0000000..044e46a
Binary files /dev/null and b/rectangle.plist differ
diff --git a/script/defaults.sh b/script/defaults.sh
new file mode 100755
index 0000000..dd11021
--- /dev/null
+++ b/script/defaults.sh
@@ -0,0 +1,193 @@
+# Sets reasonable OS X defaults.
+# https://macos-defaults.com/
+#
+# Run ./defaults.sh and you'll be good to go.
+
+# Close any open System Preferences panes, to prevent them from overriding
+# settings we’re about to change
+osascript -e 'tell application "System Preferences" to quit'
+
+###############################################################################
+# Finder #
+###############################################################################
+
+# Show status bar
+defaults write com.apple.finder ShowStatusBar -bool true
+
+# Show path bar
+defaults write com.apple.finder ShowPathbar -bool true
+
+# Keep folders on top when sorting by name
+defaults write com.apple.finder _FXSortFoldersFirst -bool true
+
+# Disable showing tags
+defaults write com.apple.finder ShowRecentTags -int 0
+
+# Use AirDrop over every interface. srsly this should be a default.
+defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1
+
+# Always open everything in Finder's list view. This is important.
+defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
+
+# Show the ~/Library folder.
+chflags nohidden ~/Library
+
+# Set the Finder prefs for showing a few different volumes on the Desktop.
+defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
+defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
+defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
+defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
+
+# Allow text selection in Quick Look
+defaults write com.apple.finder QLEnableTextSelection -bool true
+
+# Enable spring loading for directories
+defaults write NSGlobalDomain com.apple.springing.enabled -bool true
+
+# Remove the spring loading delay for directories
+defaults write NSGlobalDomain com.apple.springing.delay -float 0
+
+###############################################################################
+# Safari & WebKit #
+###############################################################################
+
+# Show favorites bar in Safari by default
+defaults write com.apple.Safari ShowFavoritesBar -bool true
+
+# Show the full URL in the address bar (note: this still hides the scheme)
+defaults write com.apple.Safari ShowFullURLInSmartSearchField -bool true
+
+# Enable Safari’s debug menu
+defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
+
+# Shoe Safari’s status bar
+defaults write com.apple.Safari ShowOverlayStatusBar -bool true
+
+# Enable the Develop menu and the Web Inspector in Safari
+defaults write com.apple.Safari IncludeDevelopMenu -bool true
+defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
+
+###############################################################################
+# Dock, Dashboard #
+###############################################################################
+
+# Set Dock size
+defaults write com.apple.dock tilesize -int 35
+
+# Auto-hide Dock
+defaults write com.apple.dock autohide -int 1
+
+# Disable animations
+defaults write com.apple.dock launchanim -int 0
+
+# Minimize windows into their application’s icon
+defaults write com.apple.dock minimize-to-application -bool true
+
+# Show indicator lights for open applications in the Dock
+defaults write com.apple.dock show-process-indicators -int 1
+
+# Change minimize/maximize window effect
+defaults write com.apple.dock mineffect -string "scale"
+
+# Make Dock icons of hidden applications translucent
+defaults write com.apple.dock showhidden -bool true
+
+# Don’t show recent applications in Dock
+defaults write com.apple.dock show-recents -bool false
+
+# Speed up Mission Control animations
+defaults write com.apple.dock expose-animation-duration -float 0.1
+
+###############################################################################
+# Trackpad. #
+###############################################################################
+
+# Enable tap to click
+defaults write com.apple.AppleMultitouchTrackpad Clicking -int 1
+defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -int 1
+
+# Enable right click (tap with two fingers)
+defaults write com.apple.AppleMultitouchTrackpad TrackpadRightClick -int 1
+defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -int 1
+
+# Enable application change (swipe horizontal witch three fingers)
+defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerHorizSwipeGesture -int 2
+defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerHorizSwipeGesture -int 2
+
+# Enable the Launchpad gesture (pinch with thumb and three fingers)
+defaults write com.apple.dock showLaunchpadGestureEnabled -int 1
+
+# Enable Expose gesture (slide down with three fingers)
+defaults write com.apple.dock showAppExposeGestureEnabled -int 1
+
+###############################################################################
+# Keyboard #
+###############################################################################
+
+# Disable press-and-hold for keys in favor of key repeat
+defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
+
+# Disable smart dashes
+defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
+
+# Disable automatic period substitution
+defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false
+
+# Disable smart quotes
+defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
+
+# Set a really fast key repeat
+defaults write NSGlobalDomain KeyRepeat -int 1
+defaults write NSGlobalDomain InitialKeyRepeat -int 15
+
+# Enable full keyboard access for all controls
+# (e.g. enable Tab in modal dialogs)
+defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
+
+###############################################################################
+# Appearance #
+###############################################################################
+
+# Enable Dark Mode
+defaults write NSGlobalDomain AppleInterfaceStyle Dark
+
+# Set appearance color to graphite
+defaults write -g AppleAccentColor -integer 4
+
+###############################################################################
+# Other stuff #
+###############################################################################
+
+# Automatically quit printer app once the print jobs complete
+defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
+
+# Expand print panel by default
+defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
+defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true
+
+# Expand save panel by default
+defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
+defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true
+
+# Text, spell checker automatically identifies languages
+defaults write NSGlobalDomain NSSpellCheckerAutomaticallyIdentifiesLanguages -bool true
+
+# Use plain text mode for new TextEdit documents
+defaults write com.apple.TextEdit RichText -int 0
+
+# Ask to keep change when closing documents
+defaults write NSGlobalDomain NSCloseAlwaysConfirmsChanges -bool true
+
+# Set alert sound
+# defaults write NSGlobalDomain com.apple.sound.beep.sound -string "/System/Library/Sounds/Funk.aiff"
+
+# Play feedback when volume is changed
+defaults write NSGlobalDomain com.apple.sound.beep.feedback -int 1
+
+applications_to_kill=(
+ "Activity Monitor"
+ "Dock"
+ "Finder"
+)
+
+killall "${applications_to_kill[@]}"
diff --git a/script/install.sh b/script/install.sh
new file mode 100755
index 0000000..9f7fbde
--- /dev/null
+++ b/script/install.sh
@@ -0,0 +1,350 @@
+#!/bin/zsh
+
+# Logo
+LOGO=" __ __ _____ _
+| \/ | / ____| | |
+| \ / | __ _ ___ | (___ ___| |_ _ _ _ __
+| |\/| |/ _\` |/ __| \___ \ / _ \ __| | | | '_ \\
+| | | | (_| | (__ ____) | __/ |_| |_| | |_) |
+|_| |_|\__,_|\___| |_____/ \___|\__|\__,_| .__/
+ | |
+ |_|"
+
+# Colors
+BOLD=$(tput bold)
+CYAN=$(tput setaf 6)
+RED=$(tput setaf 1)
+GREEN=$(tput setaf 2)
+YELLOW=$(tput setaf 3)
+DEFAULT=$(tput sgr0)
+
+# New line character
+NEW_LINE="\n"
+# Horizonal line in cyan color
+DIVIDER="${CYAN}${BOLD}------------------------------------------------$DEFAULT"
+# Horizonal line in red color
+RED_DIVIDER="${RED}${BOLD}------------------------------------------------$DEFAULT"
+
+# Arrows
+ARROW="$CYAN$BOLD==>$DEFAULT"
+ARROW_GREEN="$GREEN$BOLD==>$DEFAULT"
+ARROW_YELLOW="$YELLOW$BOLD==>$DEFAULT"
+
+# Booleans to track if specific programs are already installed
+IS_HOMEBREW_INSTALLED=false
+IS_OH_MY_ZSH_INSTALLED=false
+IS_ITERM_INSTALLED=false
+
+clear
+
+# Print logo and description
+echo -e "${CYAN}${BOLD}${LOGO}${DEFAULT}${NEW_LINE}"
+echo -e "${CYAN}${BOLD} Full Stack Development Setup for macOS$NEW_LINE"
+echo -e "$DIVIDER"
+echo " "
+echo " "
+echo -e "${DIVIDER}${NEW_LINE}"
+
+echo "Welcome to the installer!"
+echo -e "First, enter your password to execute all the commands as super user.$NEW_LINE"
+
+echo -e "${RED}${BOLD}Important:$DEFAULT You can be asked more times for password during the process."
+echo -e "Also, make sure that You are logged in to the Mac App Store.$NEW_LINE"
+
+# Prompt user for password
+sudo -v
+
+clear
+
+#----------------------------
+# Rosetta 2 (Apple Silicon)
+#----------------------------
+
+if [[ $(uname -m) == "arm64" ]]; then
+ if /usr/bin/pgrep -q oahd; then
+ echo "${ARROW_GREEN} Rosetta 2 already installed!"
+ else
+ echo "${ARROW} Apple Silicon detected. Installing Rosetta 2..."
+ softwareupdate --install-rosetta --agree-to-license
+ fi
+fi
+
+#----------------------------
+# Xcode Command Line Tools
+#----------------------------
+
+if xcode-select -p &>/dev/null; then
+ echo "${ARROW_GREEN} Xcode Command Line Tools already installed!"
+else
+ echo "${ARROW} Installing Xcode Command Line Tools..."
+ xcode-select --install 2>/dev/null
+ echo -n "${ARROW_YELLOW} Follow the dialog to complete installation, then hit any key to continue..."
+ read
+fi
+
+#----------------------------
+# Homebrew
+#----------------------------
+
+if hash brew 2>/dev/null; then
+ IS_HOMEBREW_INSTALLED=true
+fi
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo "${ARROW_GREEN} Homebrew already installed!"
+
+ echo -n "${ARROW_YELLOW} Update Homebrew formulas? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Updating Homebrew formulas..."
+
+ brew update
+ brew upgrade
+ fi
+else
+ echo -n "${ARROW_YELLOW} Install Homebrew? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Installing Homebrew..."
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+
+ # Add Homebrew to PATH for the remainder of this script
+ if [[ $(uname -m) == "arm64" ]]; then
+ eval "$(/opt/homebrew/bin/brew shellenv)"
+ else
+ eval "$(/usr/local/bin/brew shellenv)"
+ fi
+
+ IS_HOMEBREW_INSTALLED=true
+ fi
+fi
+
+#----------------------------
+# Git
+#----------------------------
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install latest Git version via Homebrew? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Installing Git..."
+ brew install git
+ fi
+fi
+
+#----------------------------
+# .gitconfig
+#----------------------------
+
+echo -n "${ARROW_YELLOW} Configure Git by creating ~/.gitconfig file? [y/n]: "
+read REPLY
+
+if [[ "$REPLY" == "y" ]]; then
+ echo -n "${ARROW_YELLOW} Please enter full name: "
+ read username
+ echo -n "${ARROW_YELLOW} Please enter Git e-mail: "
+ read email
+ echo -n "${ARROW_YELLOW} Please enter Git editor: "
+ read editor
+ echo "${ARROW} Creating ~/.gitconfig file..."
+
+ cp ~/.gitconfig ~/.gitconfig.mac_setup_backup 2> /dev/null
+ cp .gitconfig ~
+ sed -i -e "s/First Last/$username/g" ~/.gitconfig
+ sed -i -e "s/email@email.com/$email/g" ~/.gitconfig
+ sed -i -e "s/= editor/= $editor/g" ~/.gitconfig
+fi
+
+#----------------------------
+# Tig
+#----------------------------
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install Tig: text-mode interface for Git via Homebrew? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Installing Tig..."
+ brew install tig
+ fi
+fi
+
+#----------------------------
+# direnv
+#----------------------------
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install direnv via Homebrew? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Installing direnv..."
+ brew install direnv
+ fi
+fi
+
+#----------------------------
+# Version manager (asdf or mise)
+#----------------------------
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install a Ruby version manager? [asdf/mise/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "asdf" ]]; then
+ echo "${ARROW} Installing asdf & ruby-build..."
+ brew install asdf
+ asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
+ elif [[ "$REPLY" == "mise" ]]; then
+ echo "${ARROW} Installing mise..."
+ brew install mise
+ fi
+fi
+
+#----------------------------
+# Application bundle
+#----------------------------
+
+if $IS_HOMEBREW_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install applications via Homebrew Cask and Mac App Store? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" = "y" ]]; then
+ echo -e "${RED}${BOLD}Important: Sign into the Mac App Store GUI app manually. Hit any key to continue. "
+ read
+
+ echo "${ARROW} Installing base packages..."
+ brew bundle --file="brewfiles/Brewfile"
+
+ for brewfile in brewfiles/Brewfile.*; do
+ group="${brewfile#brewfiles/Brewfile.}"
+ echo -n "${ARROW_YELLOW} Install $group apps? [y/n]: "
+ read REPLY
+ [[ "$REPLY" == "y" ]] && brew bundle --file="$brewfile"
+ done
+ fi
+fi
+
+# ----------------------------
+# oh-my-zsh
+# ----------------------------
+
+echo -n "${ARROW_YELLOW} Install Oh My Zsh? [y/n]: "
+read REPLY
+
+if [[ "$REPLY" == "y" ]]; then
+ echo -e "${NEW_LINE}${RED_DIVIDER}"
+ echo -e "${RED}${BOLD}Important: After the Oh My Zs installation is done, you will have to 'exit' the new shell to continue this script."
+ echo -e "${RED_DIVIDER}${NEW_LINE}"
+
+ echo "${ARROW} Installing Oh My Zsh..."
+ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
+
+ IS_OH_MY_ZSH_INSTALLED=true
+fi
+
+#----------------------------
+# .zshrc
+#----------------------------
+
+if $IS_OH_MY_ZSH_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Configure Oh My Zsh by creating ~/.zshrc file? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Creating ~/.zshrc file..."
+ cp ~/.zshrc ~/.zshrc.mac_setup_backup 2> /dev/null
+ cp .zshrc ~
+ sed -i -e "s+custom_path+$PWD/oh-my-zsh+g" ~/.zshrc
+ fi
+fi
+
+#----------------------------
+# iTerm2 profile
+#----------------------------
+
+if [ -d /Applications/iTerm.app/ ]; then
+ IS_ITERM_INSTALLED=true
+fi
+
+if $IS_ITERM_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Install Dracula iTerm2 profile? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW_YELLOW} New iTerm2 window opened. Go to 'Preferences' > 'Profiles' > 'Colors' and choose 'Dracula' from the 'Color Presets' menu."
+ open ./Dracula.itermcolors
+ fi
+fi
+
+#----------------------------
+# Rectangle settings
+#----------------------------
+
+if [ -d /Applications/Rectangle.app/ ]; then
+ IS_RECTANGLE_INSTALLED=true
+fi
+
+if $IS_RECTANGLE_INSTALLED; then
+ echo -n "${ARROW_YELLOW} Configure Rectangle settings? [y/n]: "
+ read REPLY
+
+ if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Configuring Rectangle settings..."
+ cp ~/Library/Preferences/com.knollsoft.Rectangle.plist ~/Library/Preferences/com.knollsoft.Rectangle.plist.mac_setup_backup 2> /dev/null
+ cp -r rectangle.plist ~/Library/Preferences/com.knollsoft.Rectangle.plist 2> /dev/null
+ fi
+fi
+
+#----------------------------
+# Computer name
+#----------------------------
+
+echo -n "${ARROW_YELLOW} Set computer name? [y/n]: "
+read REPLY
+
+if [[ "$REPLY" == "y" ]]; then
+ echo -n "${ARROW_YELLOW} Please enter computer name: "
+ read uservar
+
+ sudo scutil --set ComputerName "$uservar"
+fi
+
+#----------------------------
+# Host name
+#----------------------------
+
+echo -n "${ARROW_YELLOW} Set host name? [y/n]: "
+read REPLY
+
+if [[ "$REPLY" == "y" ]]; then
+ echo -n "${ARROW_YELLOW} Please enter host name (avoid special characters, space, etc.): "
+ read uservar
+
+ sudo scutil --set HostName "$uservar"
+ sudo scutil --set LocalHostName "$uservar"
+fi
+
+#----------------------------
+# macOS Defaults
+#----------------------------
+
+echo -n "${ARROW_YELLOW} Configure macOS Defaults? [y/n]: "
+read REPLY
+
+if [[ "$REPLY" == "y" ]]; then
+ echo "${ARROW} Configuring macOS Defaults..."
+ echo -e "${NEW_LINE}${DIVIDER}"
+ echo -e "${YELLOW}${BOLD}Note:$DEFAULT If you see errors like 'Could not write domain', temporarily give Full Disk Access (System Preferences > Security & Privacy)"
+ echo -e "to the Terminal/iTerm app and re-apply macOS Defaults manually: ${CYAN}${BOLD}./script/defaults.sh"
+ echo -e "${DIVIDER}"
+ . ./script/defaults.sh
+fi
+
+echo -e "${NEW_LINE}${YELLOW}${BOLD}Note:$DEFAULT Some changes may need system restart to be applied!"
+echo -e "${NEW_LINE}${GREEN}${BOLD}Congratulations, installation complete!${DEFUALT}${NEW_LINE}"
+
+exit 0
diff --git a/settings.json b/settings.json
deleted file mode 100644
index 2602fd7..0000000
--- a/settings.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "workbench.startupEditor": "newUntitledFile",
- "workbench.colorTheme": "Monokai",
- "workbench.activityBar.visible": false,
- "workbench.iconTheme": "material-icon-theme",
- "editor.fontSize": 12,
- "editor.tabSize": 2,
- "editor.multiCursorModifier": "ctrlCmd",
- "editor.minimap.enabled": false,
- "editor.hideCursorInOverviewRuler": true,
- "editor.formatOnPaste": true,
- "explorer.openEditors.visible": 0,
- "files.insertFinalNewline": true,
- "html.autoClosingTags": false,
- "files.exclude": {
- "**/node_modules/": true,
- "**/.vscode/": true,
- },
- "material-icon-theme.folders.theme": "none",
- "todohighlight.isEnable": true,
- "todohighlight.keywords": [
- {
- "text": "TODO:",
- "color": "black",
- "backgroundColor": "yellow",
- "overviewRulerColor": "yellow"
- },
- {
- "text": "FIXME:",
- "color": "white",
- "backgroundColor": "red",
- "overviewRulerColor": "red"
- }
- ],
- "todohighlight.exclude": [
- "**/public/"
- ]
-}