From 0838c9cc6dccc251984640ad0aeb75215c3d387b Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Wed, 15 Jan 2014 00:40:35 +0000 Subject: [PATCH 001/973] Upgrade scripts and oh-my-zsh to latest --- oh-my-zsh | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/oh-my-zsh b/oh-my-zsh index a38af279..d4850441 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit a38af27991d15d14ac4ca55c919bb694d7eafb7a +Subproject commit d485044169c2ac18e9e8e7fe29f7d4d93864168a diff --git a/scripts b/scripts index 6dae0909..0af8d24d 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 6dae090990573bc915a9ab8d19c823fc9a1296b5 +Subproject commit 0af8d24d4c9fd0c54373cd42dc1cde472e72b077 From d8562ed15cb390780c6bbeb4245cdf50bdfe2492 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 26 Jan 2014 12:58:56 -0700 Subject: [PATCH 002/973] Upgrade to latest scripts --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 0af8d24d..070e271f 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 0af8d24d4c9fd0c54373cd42dc1cde472e72b077 +Subproject commit 070e271fa9a4afc4e1e28b10d3df8d6962a26192 From 45be29413da8a6c57514014401966bf0f98655d8 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 26 Jan 2014 13:03:31 -0700 Subject: [PATCH 003/973] Migrated the git.nr new repo creation alias to a real script --- scripts | 2 +- shellaliases | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) mode change 100644 => 100755 shellaliases diff --git a/scripts b/scripts index 070e271f..30270899 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 070e271fa9a4afc4e1e28b10d3df8d6962a26192 +Subproject commit 302708999395f4764051faf88e40da7d246da174 diff --git a/shellaliases b/shellaliases old mode 100644 new mode 100755 index d750ba2a..976fb597 --- a/shellaliases +++ b/shellaliases @@ -118,9 +118,6 @@ alias class.simpleprompt='export PS1=" $ "' ######################################### # Utility Functions -# Create a new git repo with one README commit and CD into it -function git.nr() { mkdir $1; cd $1; git init; touch README; git add README; git commit -mFirst-commit;} - # Restart Apache on Mac alias apacherestart="sudo /usr/sbin/apachectl restart" From 080e035b8e105937d7328da887350efbd978a27b Mon Sep 17 00:00:00 2001 From: Ion Iovu Date: Mon, 7 Apr 2014 05:50:30 -0700 Subject: [PATCH 004/973] add small suggested instruction improvement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before: following the clone command in the instructions will have as a result a dir called “dotfiles” which needs to be renamed to .dotfiles for the links created by the setup scripts to work After: With the clone creating .dotfiles directly there is no necessary intermediate step --- .Rhistory | 0 README.markdown | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 .Rhistory diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 00000000..e69de29b diff --git a/README.markdown b/README.markdown index 2bbf607d..bf8a0150 100644 --- a/README.markdown +++ b/README.markdown @@ -11,15 +11,15 @@ The contents of this repo have been partly invented from scratch, partly inspire This project contains submodules. It is suggested that you clone this into your home directory. cd ~ - git clone --recurse-submodules https://github.com/matthewmccullough/dotfiles + git clone --recurse-submodules https://github.com/matthewmccullough/dotfiles .dotfiles # Setup There is a set up script that establishes the symlinks in your home directory. Run this once. * For ZShell - `_setupdotfiles.zsh` + ~/.dotfiles/_setupdotfiles.zsh * For Bash (needs some fixes) - `_setupdotfiles.bsh` + ~/.dotfiles/_setupdotfiles.bsh > NOTE: Some personal configuration of Matthew's will remain after setup. These dotfiles are intended for your inspiration, forking, and for you to tweak to your specific needs. From 91a7bc481a99777940ad9ee7c201f997f5b8a1cf Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Wed, 23 Apr 2014 21:42:34 -0600 Subject: [PATCH 005/973] Purge mccm06 in favor of home ~, remove unused config blocks --- gitconfig | 8 +------- rvmrc | 2 +- shellactivities | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/gitconfig b/gitconfig index eb6df24f..c2931b25 100644 --- a/gitconfig +++ b/gitconfig @@ -29,7 +29,7 @@ #untracked = cyan [gui] - recentrepo = /Users/mccm06/Documents/Temp/Scratch/hello/hgw1 + recentrepo = ~/Documents/Temp/Scratch/hello/hgw1 [core] excludesfile = ~/.gitignore @@ -239,17 +239,11 @@ [http] # proxy=http://something -[github] - # https://github.com/blog/180-local-github-config - user = matthewmccullough - #token = PLACEHOLDER [hub] protocol = https [gist] private = yes browse = yes -[ghi] - token = PLACEHOLDER #[credential] # helper = cache --timeout=300 diff --git a/rvmrc b/rvmrc index 39537164..52c159c3 100644 --- a/rvmrc +++ b/rvmrc @@ -1 +1 @@ -export rvm_path="/Users/mccm06/.rvm" +export rvm_path="~/.rvm" diff --git a/shellactivities b/shellactivities index 750783d4..c2bf0a37 100644 --- a/shellactivities +++ b/shellactivities @@ -7,11 +7,11 @@ function work.ppap() { open "https://github.com/presentationPatterns" open "https://github.com/PresentationPatterns/presentationpatterns.github.com" - open "/Users/mccm06/Dropbox/AI-Clients/Presentation-Patterns-Book" - open "/Users/mccm06/Dropbox/PPAP" - iterm "/Users/mccm06/Dropbox/AI-Clients/Presentation-Patterns-Book" "PPAP-Book" "black" - iterm "/Users/mccm06/Dropbox/PPAP" "PPAP-Dropbox" "black" - iterm "/Users/mccm06/Dropbox/AI-Clients/Presentation-Patterns-Book/presentationpatterns.github.com" "PPAP-Site" "black" + open "~/Dropbox/AI-Clients/Presentation-Patterns-Book" + open "~/Dropbox/PPAP" + iterm "~/Dropbox/AI-Clients/Presentation-Patterns-Book" "PPAP-Book" "black" + iterm "~/Dropbox/PPAP" "PPAP-Dropbox" "black" + iterm "~/Dropbox/AI-Clients/Presentation-Patterns-Book/presentationpatterns.github.com" "PPAP-Site" "black" } function work.teachgit() { @@ -22,8 +22,8 @@ function work.teachgit() { open "https://github.com/training/free" open "https://github.com/matthewmccullough/dotfiles" - open "/Users/mccm06/Documents/Temp/Scratch" - iterm "/Users/mccm06/Documents/Temp/Scratch" "Scratch" "black" + open "~/Documents/Temp/Scratch" + iterm "~/Documents/Temp/Scratch" "Scratch" "black" } @@ -32,8 +32,8 @@ function work.gittraining() { open "https://github.com/github/training/issues" open "https://github.com/github/teach.github.com" - open "/Users/mccm06/Documents/Code/GitHub" - open "/Users/mccm06/Documents/Code/GitHub/training.github.com_git" - open "/Users/mccm06/Documents/Code/GitHub/GUTS_git" - open "/Users/mccm06/Documents/Code/GitHub/teach.github.com" + open "~/Documents/Code/GitHub" + open "~/Documents/Code/GitHub/training.github.com_git" + open "~/Documents/Code/GitHub/GUTS_git" + open "~/Documents/Code/GitHub/teach.github.com" } From f228d2d69334c7dfb9f0d658a8ba536319095aac Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Apr 2014 08:43:45 -0600 Subject: [PATCH 006/973] Disable all Git bash prompting --- bash_profile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bash_profile b/bash_profile index c3673f88..191ee9fc 100644 --- a/bash_profile +++ b/bash_profile @@ -21,7 +21,10 @@ shopt -s histappend shopt -s cmdhist # Load Matthew's Git bash prompt -source ~/.dotfiles/bash_gitprompt +# source ~/.dotfiles/bash_gitprompt # Load Brew's git bash completion -# source /usr/local/Cellar/git/1.8.0.1/etc/bash_completion.d/git-completion.bash +# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-completion.bash +# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-prompt.sh +# PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' +# GIT_PS1_SHOWDIRTYSTATE=true From dc9c00dcb5ceafbfa9505090171af63252e24bda Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Apr 2014 08:44:13 -0600 Subject: [PATCH 007/973] Prefer Kaleidoscope as the diff and merge tool --- gitconfig | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gitconfig b/gitconfig index c2931b25..6c72e83a 100644 --- a/gitconfig +++ b/gitconfig @@ -180,6 +180,7 @@ logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' configsimplelog = config format.pretty oneline + listignored = ls-files --others -i --exclude-standard [apply] @@ -193,7 +194,7 @@ cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE [diff] # tool = araxis - tool = myaraxis + tool = Kaleidoscope # renames = true [mergetool] @@ -203,7 +204,7 @@ cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED [merge] # tool = araxis - tool = p4merge + tool = Kaleidoscope [branch] # Automatically set up pull to be --rebase @@ -249,3 +250,11 @@ [push] default = matching +[difftool "Kaleidoscope"] + cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\" +[mergetool "Kaleidoscope"] + cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot + trustExitCode = true +[filter "media"] + clean = git-media-clean %f + smudge = git-media-smudge %f From 79d4244d7738266ab9576e093282d19c2f0a3c5c Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Apr 2014 08:44:29 -0600 Subject: [PATCH 008/973] Updated oh-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index d4850441..eafd5f32 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit d485044169c2ac18e9e8e7fe29f7d4d93864168a +Subproject commit eafd5f325208421b82a770e57441dd1063eb5745 From 13b68d14c2207527adf8770a7ab7d2a7b33bc410 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Apr 2014 08:44:57 -0600 Subject: [PATCH 009/973] Prefer jnrowe theme for zshell --- zshrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 3062c51c..053b9ede 100644 --- a/zshrc +++ b/zshrc @@ -11,9 +11,10 @@ export ZSH=$HOME/.dotfiles/oh-my-zsh # time that oh-my-zsh is loaded. #export ZSH_THEME="gozilla" -export ZSH_THEME="fino" +#export ZSH_THEME="fino" #export ZSH_THEME="takashiyoshida" #export ZSH_THEME="random" +export ZSH_THEME="jnrowe" # Set to this to use case-sensitive completion export CASE_SENSITIVE="true" From 40b6c4eb22c633c48ba87bda74bfab228bd0d4d8 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Apr 2014 08:45:43 -0600 Subject: [PATCH 010/973] Visualization tool for Git repos --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 30270899..40b24616 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 302708999395f4764051faf88e40da7d246da174 +Subproject commit 40b246165445f44d253c8100969fffdcdbe3f9a0 From e98f7058d142d2e3d0d5b296a399649d23a45694 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 2 Jun 2014 16:01:14 -0600 Subject: [PATCH 011/973] Deprecating use of boom --- boom.conf | 1 - 1 file changed, 1 deletion(-) delete mode 100644 boom.conf diff --git a/boom.conf b/boom.conf deleted file mode 100644 index a5ec40df..00000000 --- a/boom.conf +++ /dev/null @@ -1 +0,0 @@ -{"backend":"json"} \ No newline at end of file From a84418d4f699d6b59db6a719da75ce937cd463b6 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 2 Jun 2014 16:03:20 -0600 Subject: [PATCH 012/973] Remove safecrlf setting that crashes GitHub for Mac due to libgit2 parsing --- gitconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/gitconfig b/gitconfig index 6c72e83a..31020edc 100644 --- a/gitconfig +++ b/gitconfig @@ -35,7 +35,6 @@ excludesfile = ~/.gitignore quotepath = false autocrlf = input - safecrlf = warn editor = vim [alias] From 90a0df137d9c90c5fd572cad03a542d62e8d8623 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 2 Jun 2014 16:08:37 -0600 Subject: [PATCH 013/973] Upgrade oh-my-zsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index eafd5f32..3913106b 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit eafd5f325208421b82a770e57441dd1063eb5745 +Subproject commit 3913106b2e7127d396f27b652df812340ec0c871 From f19611968bb468b5251abcbac1a4988e35c10d71 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 2 Jun 2014 16:09:19 -0600 Subject: [PATCH 014/973] Track iTerm2 config --- com.googlecode.iterm2.plist | 969 ++++++++++++++++++++++++++++++++++++ 1 file changed, 969 insertions(+) create mode 100644 com.googlecode.iterm2.plist diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist new file mode 100644 index 00000000..3a3fa127 --- /dev/null +++ b/com.googlecode.iterm2.plist @@ -0,0 +1,969 @@ + + + + + AdjustWindowForFontSizeChange + + AllowClipboardAccess + + AnimateDimming + + AppleAntiAliasingThreshold + 1 + AppleScrollAnimationEnabled + 0 + AppleSmoothFixedFontsSizeThreshold + 1 + AutoHideTmuxClientSession + + CheckTestRelease + + ClosingHotkeySwitchesSpaces + + CommandSelection + + Control + 1 + CopyLastNewline + + CopySelection + + Default Bookmark Guid + 540A835E-B089-475E-AA8B-32A2F2A97192 + DimBackgroundWindows + + DimInactiveSplitPanes + + DimOnlyText + + DisableFullscreenTransparency + + EnableRendezvous + + FocusFollowsMouse + + FsTabDelay + 1 + HiddenAFRStrokeThickness + 0.0 + HiddenAdvancedFontRendering + + HideActivityIndicator + + HideMenuBarInFullscreen + + HideScrollbar + + HideTab + + HighlightTabLabels + + HotKeyBookmark + 540A835E-B089-475E-AA8B-32A2F2A97192 + HotKeyTogglesWindow + + Hotkey + + HotkeyChar + 0 + HotkeyCode + 0 + HotkeyModifiers + 0 + IRMemory + 4 + JobName + + LeftCommand + 7 + LeftOption + 2 + LoadPrefsFromCustomFolder + + MaxVertically + + NSFileViewer + com.cocoatech.PathFinder + NSNavLastRootDirectory + ~/Desktop + NSQuotedKeystrokeBinding + + NSRepeatCountBinding + + NSScrollAnimationEnabled + + NSTableView Columns KeyBingingTable + + + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU1N0cmluZwGEhAhOU09iamVjdACF + hAErATCG + + 198 + + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU1N0cmluZwGEhAhOU09iamVjdACF + hAErATGG + + 302 + + NSTableView Hidden Columns KeyBingingTable + + NSTableView Sort Ordering KeyBingingTable + + NSWindow Frame Preferences + 176 211 924 485 0 0 1440 878 + NSWindow Frame SUStatusFrame + 838 106 384 129 0 0 1440 878 + NSWindow Frame iTerm Window 0 + 0 967 570 451 0 0 2560 1418 + NSWindow Frame iTerm Window 1 + 854 54 570 451 0 0 1440 878 + New Bookmarks + + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + No + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Guid + 540A835E-B089-475E-AA8B-32A2F2A97192 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0x2d-0x40000 + + Action + 11 + Text + 0x1f + + 0x32-0x40000 + + Action + 11 + Text + 0x00 + + 0x33-0x40000 + + Action + 11 + Text + 0x1b + + 0x34-0x40000 + + Action + 11 + Text + 0x1c + + 0x35-0x40000 + + Action + 11 + Text + 0x1d + + 0x36-0x40000 + + Action + 11 + Text + 0x1e + + 0x37-0x40000 + + Action + 11 + Text + 0x1f + + 0x38-0x40000 + + Action + 11 + Text + 0x7f + + 0x9-0x40000 + + Action + 11 + Text + 9 + + 0xf700-0x220000 + + Action + 10 + Text + [1;2A + + 0xf700-0x240000 + + Action + 10 + Text + [1;5A + + 0xf700-0x260000 + + Action + 10 + Text + [1;6A + + 0xf700-0x280000 + + Action + 11 + Text + 0x1b 0x1b 0x5b 0x41 + + 0xf701-0x220000 + + Action + 10 + Text + [1;2B + + 0xf701-0x240000 + + Action + 10 + Text + [1;5B + + 0xf701-0x260000 + + Action + 10 + Text + [1;6B + + 0xf701-0x280000 + + Action + 11 + Text + 0x1b 0x1b 0x5b 0x42 + + 0xf702-0x220000 + + Action + 10 + Text + [1;2D + + 0xf702-0x240000 + + Action + 10 + Text + [1;5D + + 0xf702-0x260000 + + Action + 10 + Text + [1;6D + + 0xf702-0x280000 + + Action + 11 + Text + 0x1b 0x1b 0x5b 0x44 + + 0xf703-0x220000 + + Action + 10 + Text + [1;2C + + 0xf703-0x240000 + + Action + 10 + Text + [1;5C + + 0xf703-0x260000 + + Action + 10 + Text + [1;6C + + 0xf703-0x280000 + + Action + 11 + Text + 0x1b 0x1b 0x5b 0x43 + + 0xf704-0x20000 + + Action + 10 + Text + [1;2P + + 0xf705-0x20000 + + Action + 10 + Text + [1;2Q + + 0xf706-0x20000 + + Action + 10 + Text + [1;2R + + 0xf707-0x20000 + + Action + 10 + Text + [1;2S + + 0xf708-0x20000 + + Action + 10 + Text + [15;2~ + + 0xf709-0x20000 + + Action + 10 + Text + [17;2~ + + 0xf70a-0x20000 + + Action + 10 + Text + [18;2~ + + 0xf70b-0x20000 + + Action + 10 + Text + [19;2~ + + 0xf70c-0x20000 + + Action + 10 + Text + [20;2~ + + 0xf70d-0x20000 + + Action + 10 + Text + [21;2~ + + 0xf70e-0x20000 + + Action + 10 + Text + [23;2~ + + 0xf70f-0x20000 + + Action + 10 + Text + [24;2~ + + 0xf729-0x20000 + + Action + 10 + Text + [1;2H + + 0xf729-0x40000 + + Action + 10 + Text + [1;5H + + 0xf72b-0x20000 + + Action + 10 + Text + [1;2F + + 0xf72b-0x40000 + + Action + 10 + Text + [1;5F + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Default + Non Ascii Font + Monaco 12 + Non-ASCII Anti Aliased + + Normal Font + Monaco 12 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 25 + Screen + -1 + Scrollback Lines + 1000 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?[a-z0-9A-Z]+(\.[a-z0-9A-Z]+)*((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%~?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/matthewmccullough + + + OnlyWhenMoreTabs + + OpenArrangementAtStartup + + OpenBookmark + + OpenTmuxWindowsIn + 0 + PassOnControlClick + + PasteFromClipboard + + PointerActions + + Button,1,1,, + + Action + kContextMenuPointerAction + + Button,2,1,, + + Action + kPasteFromClipboardPointerAction + + Gesture,ThreeFingerSwipeDown,, + + Action + kPrevWindowPointerAction + + Gesture,ThreeFingerSwipeLeft,, + + Action + kPrevTabPointerAction + + Gesture,ThreeFingerSwipeRight,, + + Action + kNextTabPointerAction + + Gesture,ThreeFingerSwipeUp,, + + Action + kNextWindowPointerAction + + + PrefsCustomFolder + ~/.dotfiles + PromptOnClose + + PromptOnQuit + + QuitWhenAllWindowsClosed + + RightCommand + 8 + RightOption + 3 + SUAutomaticallyUpdate + + SUEnableAutomaticChecks + + SUFeedURL + http://iterm2.com/appcasts/testing.xml + SUHasLaunchedBefore + + SULastCheckTime + 2014-06-02T03:07:14Z + SavePasteHistory + + ShowBookmarkName + + ShowPaneTitles + + SmartPlacement + + SplitPaneDimmingAmount + 0.40000000596046448 + SwitchTabModifier + 4 + SwitchWindowModifier + 6 + TabViewType + 0 + ThreeFingerEmulates + + TmuxDashboardLimit + 10 + TripleClickSelectsFullWrappedLines + + URLHandlersByGuid + + UseBorder + + UseCompactLabel + + UseLionStyleFullscreen + + WebKitDefaultFontSize + 11 + WebKitStandardFont + Lucida Grande + WindowNumber + + WindowStyle + 0 + WordCharacters + /-+\~_. + findIgnoreCase_iTerm + + findRegex_iTerm + + iTerm Version + 1.0.0.20140518 + + From f1953b1d64d5c7f41f03cf305b5176e1e6494681 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 2 Jun 2014 16:09:50 -0600 Subject: [PATCH 015/973] Migrate iTerm2 config from Detronia --- com.googlecode.iterm2.plist | Bin 23255 -> 128193 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index 3a3fa1274a8500717441d63927446c770805fde7..cc95131102fc257303a040592b5803ca6314a6e5 100644 GIT binary patch literal 128193 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 z z;G9Sm*17)ZvGW4w2YA12IW|k75zSeRAY2dN|+h{o+fPu5yZedoi;<;B2D0bWnWlpOo!oUk{rFYt2Rb@n&s*sFop0|w+lg8qw(Eb_?fT!teSA{qu-^}S5cn|g(cf~|8v~yP&v!fj&u}ka*QND&;ETYQ zfrE!jYw>IpZM{Wt-aN$K2n4i;K@O?tB|Lpz~MlqcGzc&B`e)z9#-|l5I$-s|< zfL{ZDS|K3VB-kwI5w--qj?)j)O0Nq6LD>oc!LStqf{DQ-zGnxIw?aTLKUiR06YOt= zfZ!mG4`p*mHj@mF42}}k1;+(Tz4PodSurG79@i*1ga0dov-zyDdijI%tRN7aA6yVT zEx3%7Pj6ZrToqhx1p!h!OW0C>83V`aehT~?IHcJYHTB;DzX$$^YzS%X1!?aJ8NDtj z1RDh#A7(>H{6X-TU|g_i-CmIPHwM03e)$!SJqMcyj}5knY$6!h3$XIwS4Rv9K_#dL zS#-$S5YpNU(%u!)5kw2>L8ERjNc)>-Q?O02ZLnRieXv9DxM0U%r(ow`mta?CJH`u| zUD)g*=g0rB4IzWwg5873!IWTXFfEuK%m`)%v;K8R2<8NP1bap|gk&#Bdsj$Db0-9Q z1$##}gtYd8Y}1QfA?*zzof8U!eS$^NeIRXD$7YbRkPtjEI3UQ-e``TBGDQV0~Wn^wa5gW{8WfidyU{PUGc4|>( zdU{HBQC51IlgQ}cnBdsR){oY%kM{nL&av^q3BiextskvjAMO1gonw=NlY>*DTR*bv zqrLy*Uqz1KDZz^1%;?sS?D}Z${}_29amGpKI3Xlh9jpn`Ph^+O{;;=yq>Rz0hsb>u zTo_ywTpZo`(b@jdk#9+GX|OiB^P{!tqrLs3r9$U~<-rxfm35mw+TUW5I47METoXJq zy0;^HKH9rK#_qkdgXaX#ZFtb-`hyqXf-Z}>{@{hdi-H#iFR63=xr-?h|CrgcHTos$ z`s>>LajS!u2d@aO`x}lwd{jFA;FT2dn&5S|>6?WVoI#_A6y^2DtO40i>OI%2yP5A<-*$g z_YhZqeei}LokGsGzxFrB&~6Ui5~K}wq`iNwXs|VSdysZqeLrz%$4^v{M}m(Aw;jRN zKNfsENT*PPy?=vG2X_RY2|gQqF1R!JeDHy{msK_;&EX5nTPd!S{l63Qb}^*~7c~PlBHY*=80`9BrM}bM*&8ya_(OxHwR7yJ;Lkx?7q%~~b-Vh)!mK_ig;|A31?)9rt@+CQ&h%t!c1CKS z*jn@**3~=x^{E+-uNP%e z5!L_b>qSE}#l*w=daXc$YX>91 zMsb34*Irll%nB8!+7a1Ku~eKSP8O%sMdU~kt%$tVw7)X}tJePF*(gqvT1V2FE|!Zk z#8XIX&fgdaX6IBP&J<^fm4BJjQadBTvsbJVtHl~|t~gITRh%y__y+^QTK~&&+zEY; zvNuN7_%Lx{+-h-&c)Hbe5Lbz3ifgg1vz?}ccrgtFo&x#g$xvKpH66sOt*1EgI&mxC z9~7Cy%aJF=r>wKYoz~gnE{^YWMskb$$>nYFJ^Q>*IOj7O4xjV?*VZD#;g!inZdh zXgl8NJ93UK7gvZYqXQ5a#2xAFh+el^JVRvG>0y_Jh@Ntec&>O}B*$1s%3+=nqi0_! zt{1Or(D&j9a*en_+!zgPwUoko?1fq&6(h-&U3@nP{1mv-!qw&<~K;&zcO2V*^2mJvipa$B|k zw75fjrmhPvqFDQ7igomP@dfckSC5vJusu1v#)z!WTo`0_?yT&7ZkDX!x8IGNsw6M*-~+x zo}H20Tr3?U#Ys&Yh!MS5@<{QLd#ga(vYmr1q?S@E*9~MPAMXkU61`KB91AOwUkXS; zNo<#V{4ZBblcrnONVBZ7rD~3!8d=4m)ydLn z!a8Z0v{G7QpLrH%ofFqcI+y=1vX%{&F0oc|kgl+txOAnoUfLjCPs%q~%LYrgSWdjv zN{Q#u=)87GlXS^wXho5QMWjTjjTC*IY2P*Wy%;^#Ug{w6I`eRgP)ePo&Qg~nIPvJ^ z$x@0GU8p-|-L?~V7NK;n?IZP)dP}*k+rYZSDL}qdAQjf#KK8fxO;TT}pVVJEQ5ql( zlunWcNyXA&X^69MgT2xsYDtsjgU^3MoOck(b5=c?7v>cK^iYjkS4mc zW7VUhxk=JwX^Km$)*W28ii1=x&5%xU`9<4@IBU~LmC|f!&LK`bTDvvUTxp&wSGVEJ zmljA1U4G4~OPqN0$|cfLsn%tV?wUSbS}v`Kq*~|1qt~sHR!e8Ngtbm!d4|HgqP(2U zoT8-6tkgVK?#W?q>YV(Hq=G(7Y%IzsOwCE|gRgflH&<`b9_c*keCYz0JhqN(8Db(| zDqSXB-k?B{Gwkb}l3gWTEnRa2ootk@m9BFoVddgpk3qUox=FgZff!E0o21Rst*)Ag z`1+_`wo124cSJ6&53BosNGSj{ga1hwb=xN-s&f&?_@BanhDU-_K{A>PhJ- z>1o%U=DvTQk)D;FJA&hXUV1@dU6I4K-lGP&SK24N>@rB(lB{mO!#e(VrT3)wT`tP) z4nCAVk{GpA>ux;Z_&<|Am%fm`lnzQ?NncCfNZ(4|N#8rZ{(rRN|55r$`dRu#`c?W( z`d#`%`coGEwd0o?%T45CT-tFtez~dKOs2t#E2yjgI>#@!kXy>FT)xzHD2}_6{c=DK zy4;PGu(RrmEX#^a?^nG#i5i?7mNi*-IXNr;nB$k*$Zh3@OGr3Zc94&gJG#u#U6#&r z7rCoT*r?-APtGh#$xq8fdlC#tP%JIwTa)z8)ryl!T zq>*2LwKi51h*-9KynKS(t3ml}p`&g7=xGIVp?t{f&FHbdaz8mbd$X=~T;^NAVcJ#@-SBo+4bif93h`9k96ICRz9wEdE~K5?d$S5dAvM9o+y{fljONAS895nD;XK2>W`lgnF1bRU z8R@~3XUUcFY(KdHQy@5vuoaa;aOJ}7@hm3-sGZJ8xi>*BT|SaDl9 z#(H2=;*}uZO{JX`x0TLH7wZ}Kb!56JJx?;bjRvcZJO`m-q;wD0yrlX_qNKxXxqTI(U4)~)@`Irg#q ziTvpiuKQg6LjLjyk3Z3*zm>m}zjrmitY*PsUS34bRvIadl_su+y46^V3Zld*O_gRY zLF`uECdI2XSB_O$C@qy%N`lf_@hN^Ka5TKUP((#iWJOU_C8UHEP0L4=RC3oCMudaym`haq?7UInPj~$_izrvPxL5tfqOlUO9s%-kHi; zW;vRI6(3Z*A*FF`W03 z{g>#9H3b<3IVq|6JQ}ALBr~!mBReTCBePEu56l@kDcSj{d8zpulyiApQqGG!tk_RV z%J~R?sohg(J&q_BC>JUhDHk8^airnE1 zzp@Ka_h_SBqim4ZDjO3LCL|nJf3=vx%E@!Bjk~M6$2K6IcIwRXS!GAzr~u{KxYf#y z3KM>WZORtqPUS9icaQUgqC8UX3FQg<31x@k%E$I|$Ct`M`w8WH`w8V2 zo>2a9Mg^$H2+W9joMZ{PVExcO6_Wm z3Q+CMB3cenGa{n`*dQNC`Usv`kZzyjnZz*pp2b6b|ca``4MPQ9; z?gQmR<)gaVv%fi-`$YLv`K(T%c5OsQ1z5HJmGZUnjmz0uwI7>Bs{Ek*sQly#P`28g zlz&xzQx5l{+)DOORZ!h8%B>2G%_3Ff)TU~*nbfeR)p*sbHg}c9WsYhKwWaFr1dYba zBQ8OzimIf_E(5eoD$-%-%pz4aRacpl5VN|-Hw>+AQ~(81+o|o<4h;-2stC2C+DT2RccS}|Hw8Dmj73e zS5HuTschqLnk7iRQ2{akKRa^B6YGvr^VI^iQ0iH))6LV}lk7?Hq7EQvrYFmj9oO5FJySeoo~fQ`p6Q-)&kWBgo(j)Q&n!=+XSQdK zr^-`pjpkB|;#R9Cs;tB%Y*UA-BUHu;s-qmgty(YoV{e4iX_ntsPqF;AI$K@L_tolJ z+aI5=USM6LUS^%GuIKoMh~HLkR9Ra<-K=hHX4q%m!&z+TpfVj)eMDs}n7ZBe-1deJ z>eK2Db*IXP4k{ZusQXlVLkB$f{+Q=h`>Ora{zovK0qQ{YB$rLPZ!Dz z4pU21CUyLU=T=9nW7M&(Y%SwH%p+0MOsA{m>I~OCWLcPF-xcaiH8Py6PSW^I>KwI7 ztyXK)x#~RiRCT_(KwYRVIvPB;dYZaKU8>fq%hc1=e=c!F1KQ7wa#;^7pfPj7az%UtCy=+sOyg4xz(%GtJOnZdq?YXqk66Ce(i15 zyglQmFf%7FCoQ!giQ(RK?dRoXCgu0Z?!yLkIVs7RIXUdM<7}I*-mKoDM%SN+xkaZ~ zx2m_PtUp0P>%?=8-LBrD-dXo&`x_5LM|SWJs1K^H7iPA_9`21$X3XC|rarDd;j&d* zK1-VV{{9*DS+!w(syVX7Fk#=gxbW(XmeN{blr-o=PyrI6S9&V?G z^DH9}HmL8up}wcS-&{~XP(M^Z^1k7HO8r>OkhD}#oU>*s{g?{p7n-$A8wh>;kJOhW|>lJf8&Yl?5*~%LiGO2y z)@oMb^ltUu?!AL_?(*L4y~lg6_df6a-Uqx7dLQyW?0v-hsCS!pyZ15gEHn z_8#!Q<9#=7l=nUF``!<{A9_FXe(e3k`>FRc@8{kxykB|`dcX31?fu64t@k_c_ue18 zKYD-i{_Oq5`>Xdi@9*9}yni+qnm20RxOtQ2$25;?-n4nM<{n{P$RD>lBvGqjD>{eF zP`glj)O?&1okQK-(K(c1MdwhC6`e!9LX4{5$`PT_oWm1Ss5CUmx-P`)QTz8S&Z-hN zH=o1b=7$!L+i9U?_L0^6Wldb85L-2c&JCT%=LObOt#b<Juso^$qn4^*m7&?8hW%yEvFcDwi218l5Q=?7;&fVaazRRZUQ%{OCNpz$((tf(1vyDY z8QBGeMJWX-DX9fcA`3%{LW?6d6bon0u_d9Up;}k5?bc;fu+u}!Ln{uA)6G{j?b3XC z^Hp)Jny-uw*^6GVHgs0#Y?raxda5^QBQ@R5E2fzXLl=cEt}9yf8GsD)nbizrvbKITbZo=kcIUY_AX9(-U zIpGt+dG@hF{#F#%DBPF-2Zm4Lv)Bq!;bGRb;o;#C;n86hWeiVfS{$Ano)Q_L5H3Gt zA&KZs^HOM6Xm^9V(XsZup?x9uvM2RI)@z~HL;D*(RYntiGxS#I?Y|CL?}t7Jedx;9 zzF7|K4~!=GP3YUucP6o^X8F8*UyxHryiIGTbVh@b5!b*dGprgAw&u^=E&JsxB;r<*?%Nik4dI zg{-gyw|%WM;MsD9Fm=HD4-Q&*kyrFDWyd$f6xqW4 z!u`W1x@_83XT8XlMwx5Tu_MXg@R0D(25N|$VJG99c5--RINI#6F0WUIW5Q#@?q-Lj z$$A%043~x{MXI6KwkEwWp*gja{xhR?$7pW}p!@Fnix5x&w29^q@O;1Rw)e7hYy9u9Ah29F)#XYAnd zVl;T{ED^cCTi;Z=tZ7vVF) zYr^z={lybb_}uV$;qzU$mTiGY3K!w^;j6+dnPJ@t_J?J9&b_oDyfJ)jBv#tW8ufc(f%?^qjq)F4;Rmdp9}AFc@fJ5>cYiK;a%a~F28G~T^BB1 z4!;s+_9%a=`*3o8J-k2shO0uYTD8MPenv8D4`t;g^(jiD=co^BQ81sVASpQ`J*ObQ zPeE#4QI?a)JK=Z3@438~RR-tS2jLIH?$>6P;Lfp6!k>m&WW&-%?BoALxcD~wT{t?{ z$Py)@&U)b@CCgSt>?Zm({9BkFf|y-LzSTB(5YifJO*Hr10#_YsO|@nky`oN#sQVTz zt=3#SR%;Qdfmpb3hOj%T)DpDTn$K0wRt`?I(1Mz%NiIEGnZ>)Jg{BHyG&2@0w2&6o zG)*TYMBYca!bYr9?39UUh&*DC8Z9SiiCP=2?SGCHtsAvGYJ-I}1X^nsw_59ndrq=~ zg_fdaXqhO`-d@IX>RPTlSZGC7u+UDlf`wMBjj@7-Hceyo2>aYBt=b9}8r@#@@1>lz zJQ6IlHQJfvc8+#IWGJ+D8RxBwYouMt{~NT8d|qb_h1Phj#rIpZP1+XiPV%~oU~!*z ze>7M;5(^eud#!_ZT*MHp%Co;YX4XmTtaYio(QR9D>|E=nb=Q)QaAB&JrqMs}7r{cy z(Rye-U6yzHx`Zf(!#b~F{*OpTX)F-K#m z&I%SRT^eaGXf@hg%{{owN+K34w1wItZE>B$jX1)XkEzv`X{Wo)$DQ*EZKbx#RsE5i z@z`k@Y1w&cnaMQpdDoC$$d2SWIa%pRshP>C$*G0ueF_T-9pTn$XKB%1s#qDEW9Mq; zY3I9&Z3*riyHLAGi@u7B1&ewQ4cg_08M&7h9jzDD%zEuA?dpalaN6uC$q`*RIbN^b zpxyYNgTiL*R*msHR$awDoFuktw`+{wiPcr?n{&e5+CAF6b=TS7>f~|GdO&+nd#KJ5 z?6YDu_NcZ^+a4*CoxJrCzd?KA?SusFN$n}^X>Eu0jP|VdoVHVYUVA}%QF}?-rR~=C zXnVDN+RMT^yv!?jp7q+RY@t=Gy{_%o-q7CE-ZIaMz0ayQU@tnK=^wn&a?g!&4fi|j zCUu9tI;;0S%r!)?q^ydeZKV}`=ax^gCtBH3#s&>q)@l8#Tly&S+j>~4Tl(mNZT4T= z=3W&!%9i63?QhXHXnEO1ee#M@vy)Pi^RummxtLFvlb(^3oSL4QpOe=oC8Z!|gZB0= z?SS@9eDdV=0s_vwB; zpa*qPmvmWIbX5=OVO`U8-Ox=vQEwC1TW_nk)7$GE^yBo7dMCZJ-bL@KC+Xev?s~GG zqNnO(vR0q(0l2<^;|tq&({m|LcNb(r1#bP>HYN+^#S@o z{Um*mUaSw+hv-A~VS0%^TpyvItdG=3>7(^A`dEFOK3<=oPt;3w=1u97<5uged#hVJ z+HKRT^;31`OX&-(hKSV&(NE_y)>W#XWi?>*^Q;DpezE?D)qv6W={(We=N{1MX5}x| zj4YS!3Y?Pm^36KWP}ZS&ke&cOrxFA zF|L)to*PDz(ambW7->ejHJ7XP$(2>7SbMq^@^*Z3O=Z=Be>%U*wvXuCpa0!*k8!@0 z6%~_8C!b=TTwXKX99C0WGq>8zFRfy(jqBh*1_A%)Xb6_P~3;Kr5EUl_BqqD;p6jNy%XxYrtS)6C~D`yuu%NK}w zGbfc#n_Gzu7gn;hRT*aekEWRYzp+DKv<>!`GtEwp4n6umwqf5PT>^(pH`t?3(aZFy z`ZRsIUViADwEC0K8q82@&@6Y7Iz_M0XS!O*R^#8}9GtDs(W@GEenw@e(dX){#dFx_ z+2|>Y^u@Zn)75S|ThFula(#uqQeQQqs-kjQ`K)2p)ze2*+h0f2lvT_stBI`A6iw!A z{T%&V*Mox9uyG_jU%x=V&?Ub0h!DR?zeHcJZ_uyPZ`5zmZ`E(t@6zwnAKar~s$ZsG zu3w?A)2|#ptFor7dN@;;%jS=oO{^@hrVTS8K_!4rF(+BA8b+5*T40_!y_^$gmrgDl zHg;H-VQlQ_q;r*iwSEozjTUt2V$Ld^89Av(kMb$Z5GkKpUdA10bR1Kfv@kDebaGP8 zgmGPZ^yt*3-XBKHs;rt>TH&O)QNLEdX87RJn(4%n+_6h~ckkVC%$Ob(Wi>TrRXxUy z=`m~W%t_X_ZWEHmb?M%P)Q)_#x0CAi`VIOufSxNcXt(TT$heL>dG;$OQ+sWStEsysxl%2Cv!Fjtn)f`>|S?a&+cQpjZK=+ zrG4)XxhJ$8+i`5Cah*H$9yPBFfA22j{rUs?y(bSF)-NJbkFk@u?fy&3en@{(X{t8`!2AJw<%+x5rv$Mq-lC-tZFr}Z8BGx~G-PW^fP1^q?+C4HB^Ti-K2 zdH&R_)G0~H^HY=ghbOfDkj%^1`Kk5(lEz=svfbyTT7R+6i6oNaBog^Kx&F^d&QB+c zWa|(0val1ZmxZ0Fea~0ymzbNV#U)T5R(U%LBOSBz4-t`*CH@>UCr@!y&*02(wpDKFw$NDGw zr-$}aMUQ@|AJpADy}I-LM*miK4{EU7I@3*k`4u#ilS-;eXW=fZaDu7UB-GS`0#-}Q zN=-^nDPX~Ey0DV6`=k{nB`0U+Wu;~pT9uz(e0mV9~ zqQ{KJMib*0S6QqRtT!D6MfsU&ypB)plaoRIh1Qxb1$jxC8AUmLkfE?JJC8mtBfe=D z!)r9>iR##Yv>&L|`}O3_TOBD9jMj#)L6|+lexMO88?vDo?y;4YmdA9TR6eWw!s_W} zQu*-t`29$9=G{mBg04l90OvgmFk z8!0a9v9gFid1%?>1(PevoRcz)Oe4!xVRnRf^=lX`S7PMG`bdnP#_`4pMz6NHYYtGg zbdA`b)|a|Il2dc-Ki2hJsQE@-%Tgo%U#=i?RQEv`1#znlhD;d)tv(22uu)=IPy5XI ziS#QN6Zk*Y2Vs<1eGmqNrsD22W*G~uJ_uu#!MI?n&%rp~u;=_3)|?;f_f^7ngV!U* zjc~JZi?GhP&A7w3$3DhvAA`-`jEDGtyYU#GPuP7BJFIJsXN~8K7uh_ym9dvTh*yo* zqJ0o=@e(C!Wrao`qo{$EImh}L{f!e{tv2g^bsUp%k}=3AK76Co7-9@HhW%xu(->)t zGDf@dJ*3g;Zd)2tjcLa8!?!Js8OA9FbHQufJ}+tT@AHxQj4cH7SRVK>Q~A9i!g`C&JVoF8^;#`$44Qk)-l1H<`YM|S6j9h46n zNsUFuV&gPpiLunEHI^Bt8_SIqR>)~$ef;ClWUMyMFj!LCQjhJB-9Bioah7qm%LiF^ zv@0|j7aA8Chne^jHJ!_iD~yH{fAG`MqgNZ(7#kW?i*xK+<2r-Uumq&Kk0Xbs{KAx+ z?BpEgsi)^;C8cNNrzhp)7iKc*xUe8EKRK^YpUiwGLV*kkSZ<>6v}V4ZdV7%i}^dTYTeLUBvbs^;g<3r;k<70Ou8Ea)r zNLe14`4a1PkB@bROAi^JB@`H+|JT0_VoO{r({Du=Q#RXK(Zx(Q(>aG|V)itTx2`kuBhkg|Cu}zdk~Y!B9BMMm*F4!A zV_NZQi#dtEO^It{vSq0`!{jBuIn#-g<@(d9?uC*$WMM3-NU-wcMS{6&|B+1PAiMmG<(Y|OqF z>=`RgmxepKmcX19MIUCb0S)l7@1r(tw4Gt5kr5k{7mw=2Q=a77pM z1hbdf+vQ)Z1Y!?9W`S8~_HlV+OYyPjV)i#rGzT=O7N^QiG6$KoOzKA$>lvpoIj0~e zJuM|EGqsPkWMolJQeJX)N)lVh6|hifVL@tEnv+P0IourK@^6;#&asiK$uiniXjdRH z$C~5J@h-8gV`QCOl$w{H##$?VveJ3R;-M;ur!5xx$xlto%g@Y6&CkmDt3YB-HK&== z>-1=U`^%>mbCy|Y&TgP0`)9pCV$L<^nWr{5%_-;tbD_D&RfDm*bWT`eE;VZ#NOedc zF_)Vw%$2T+w(lV)i8IVK=9w-<+ku3QYR<4Uj=fxGo@btKUSM8WoRD@*bNa=~N@vzA zm|Zqy*~d**G|FAEVufeWuwiz0StI*9y-K`N6IQNh)TL4Ks$sMp{>_ys_LbHkK!bI0 zlFihV6f-9)+04wz#F_FtBQx1dVf#UoSL8{lX~`L8Qc7CgIZ5^jNvY}C&Z+6iriVGI z({k;C?J}=4*Yh-9QaNoJ-TOszD=JK0RF##@8kReL>VyP&a^=i!lPf1zme!O_p5D#s z&zo9KXJ?fqQaCL;+sw2wOGTh8TcDJ5GRV%#Hsec@yQR?C63$LHSqjz6NliD?voq?S zif5P2Dw`5bqR&4~ z!p|$zDc1YG%DFXzD@tpo(o2gd|GX^K(<`fLMwC@qeaj@!^PdV5Ur{=#tYQ$I%l|6- z+0z$PTW^Vml`kw?<%y4vr;0mRU6FJ|(yLuHGZjmi*}Zi3?8)e?x;q`+HS`X5n?JL{ z<9R7TX*1}C2L^GCyrg?!RpsnSmGip~qc56Ms=Jq4<3lVXPR3+%GPBGy%pxTu!ZujyfvtDzg=P>d!tNzbezhdNQS^cA> z&QGUH(CPq8O>fx8Sih6d>Jp5c6G?Mw!$j;8T-}nfj>nP7^Ruk8lkE#rt-sgHtFA*b zl5)0_a^z=v{h#%FJChk_edkk>6~&GGcQ7VgHVmBT=w_XF10c8{5BAW518Ff9J%0H?@AJ zCdYnz?9BSvnI(GdANi3V$J#RW+nw0bd|cR`*lK*_hB60NRZcChD0@9I!F)Zjb)wIF zEz!@-vpX@67)%rsr9?SVNmLU;oJ;<)Biww8ZU#O+ zzBRHw4q6{yTYuYTeKV{N>i~}dglIu%JPek=`LG$DhY#R)L1-d^30)xv%3ux< z;G3}cL6fK9L-<(`jtKydh{yDR(Qppj0y|(I9DvURA&zY0$Tuzs?cjJQhD+gAcmQ66 z_u)tQQxKXOkOqCB0xp6(;9+c4hGzYs6c{z$>^xwkS+m>Wao7o;!ygo1 zfeb)i&vanpJI~cX+8)k{mjD^#DSLcA3Ab1-?cPN6Xum-M! zN8l;g3!eaGYTg1!yLlnZfHMF&n?DHDLG%6as~{ZP3P|(V0vG}lfOC&U&SN(NX&?KZ zAhc)#oZBJdg73o@@B^R^c03l?=U5Oai+CKQ z!wFCX#V{7i0NseE!U{MW&<`6X3gTwC8yMF>rX3P2yB(_t-8me6{*1@450;7QmG`vKjAz5wp4a1%g3;UKhu zE|3lkMhfX(RJ;YD}@K7n5a!9b4& zKES|l7@Z*v@B>DF7z$$mn=KUGPLK*c zp&twZbdxw4X2SwNKZ$GMGS~pOz@4xSo`K!4A3lb!;TQV*nm__5&<46dHsryHFbpO_ zIaI+SI0MdyE8trCr5l3`*lk<%(6%p>Kq*whLRbwK!A8J-+EVVel)Ejq)Am!K%7zz_$4%7lZpxvc#4crX)fp(9=4%h|QRJ)JhEBILu+Bbz(fPC!}p&O8P z`&{S`BY^bVPY3d7zXXuA{dsUX+yGnPKG+T~06wSv0r&)dfIkJHg9lmz_S@k&NCtG# zp$Lj$B$UD|I29;Mhc$2sTn#tD?eGXZ4d|xBYw#f)1oU%UBWMW{n9vC_p*Qq{Aut}M z!E9IntKeL?3^u@Ra4&3wXW(Uc8$O1w;SWLR*bEXtf%$L_V7DF7L&t~VSwIIJKY*{` zcR}dn1sSlPPL#V7SiK@FS+ ztKeMtQV_Zw1K4dh^w2F0aseH58v|3J8fxJjz<#<>?rxO38@AK!WuVO6u$yjw2ts#k zrh8jRfnG2G#z6((1G+DVv*2RD4|LxIcfrGeO?BS`Z@>re4g4wy$;g-70#qRFtE7 zsDeeX0?vjj;9A%Wcf(`w9PEWR;Zyh)eiMYWIG6$p0lQ5@4{0~UJ%A3Bj)}lTNwQDR(-ylRgkAb2@gDUIW-n`sHvV+y&cV51_|%d_elof{@V|ngf0yBM~}7 z8emfy{b4AKf$1;@kS}97oClWlk+KHGd)^?2Av@b`U86G zfe+|W3G-nY;0JnK3fI8RfKByy6n4NacndxPUXAoOesq}@}7MCb;j-!m7;qvr@f z)}GU04lIGya2{L^Hvm4T=Y6mpUVvBN0DJ=2Z_hsk;dl?Ai{o`T4w3af=pa3eeb$k=Nia9uBS z&>K7IodDEfZ)~V{HuM3~={*&=hkKs}$kQ8ndS40G1M>7np59Nu^ME|Pk*D|P@ICw? z2)WH50HmGU0lEWn=8}HyARv!i{7vpmm@E`{shR=5Wqg`I$Y^4@}v;5+zT5b~Qs zD+oh-=muGUzVfk`{GLGB@=pNr&hHJAU?bcB?*eicbO7qVpaLjc!M%Wu6#Oa(g``tR z8il6;c2>9ysQW_FC`1>9H^U}C-oo1eA5lmeg?9t;7m`-tlkgPm0PLiYG89tRh1f_R zFBAZJ>9ZVG1Lf_5UW)=S63~6oWpFiI1CPKq*bb!A7d`Zq1fk#Qa0zS$^6U2;VE6q# zgFghJKj-wPF8ZU3{^ZyHB$xn{yFdExe;(WdkHIdWK2K}}Z6FK!z#td{*vN_KX{!jFP5s0mP(L2V%yxPDM2ECcj5i0cPk3pW9_FlY-6Y_Iw|f6*mZFcP@l!r zPch{y9t=Z(_)$z97f*q5m<5Y~x+|v6i>ZU+wQvqx4|f1MD1HQX0D3I`1ik>|9E=VI zX9IZ-9tfmA82cPd9Sq(Ilyxw5Fc`fJLDnIeK)nq?PeaIK$a)};A@{-)uv-v@dLRfo zTmVa~q%-Ut_*M`~&|wL6UJ?fCs|3B3 zptF+hfX+&|r%TXV3H4Z#58MkSl%)iHm5hLs0ezLAuM+fCQVr;<1bvmDuaa|t{7bN# z667tp5Uv6AS8@w%0d!G<{3YnI1o=wPWy$mK0=x)s0P>c62%o`E@Vg)kZw$==( zC7`Pj=xM}5upN+V#B+d-Mxdh+FT;EAF<^TmzJYHAVdQwIg0q17A9*9(4Nt@Cz&WGP z-6$2P`%#^Mx*pXJN&(qMt%9rIR(KZPgg*pfv>zzv=+2M@!+`uo&xI9$+@o)XdjT0o zzX6{xC_WBCkPI1sO^rb(W5&TLa4MV&8vt3y?0|jn8BphAsq?X|K!M``8y$mZ1>~EE zT~53M9)&018F&F+1nOxbbzVyOOBFz_QtZ66BOq5Pa+UUmLO`xk1lv%m9B@Yfc#6h!rkxykbmhmAm38zr*t1sAEh6`=kPWB2*1Jaf-tEuw1NO2+azS0 zgw7_Rvq{J{3E3tg+ob6*7Z$=&SOL_}B6Xecnltg9e|#vybSx{ z0HEh79|Gl_@-ch@+-p<5h40{d_yN#C*)b3g*i9LBQx=3aa2#}n6i9{sK%JD0g-L*Y zl&t~oowD+5|{zl($ov#d3YU=by|BMk7;>89@D7zY3OCz zJlG8P1Ld8b3Au0*42KKgYPbbH6@+r+FURi7HJ}XTl%bq5lv9Rst}RFRFh2au_J z7-0A1_BfeWo9%ubHGZ6FZqn z`DRW7^gr`-pd2%=0A!!J4W5G!fNN)=vsvh9*6~37&8mW0SOe72tUKUg*bC%0>sLXj z^neKHw-TGEMCM9#S&1$yk+E_yaDC;aa4n##%4gsW_yqnGgxRfuG-kJjB%pp~_XE)=&pEsgMQ7Lmm{tFc=Br zU=na|*Pxdg^is0~mI8XNA>W#_;BvSMu7#U``l~^X8sw;X2)4shKwZ}Ch1USNYTg6% zQ-gkL&`%9EGFJfVcP{tK+)OBdesB^{&vPfh6rk*LvAem809od)gfn3+Ak$oAntKi0 z2-MSD@}9c`sH?fJ!`tvad;*`sLHHSvV;=P~k9wHb8nD-S=xknFXa}7Dx#snRT%a!I zA=kW!$8}x)BFd0Z=5tX?J zTUm5ATmhuB=y7-%4#Ka3u$b!?2S9`&&E_W&v_6z62=yVr*(LdRk057E_0d zDf{9-1>v-&5QMhS1<=81Cj#|yS`9o1I{U+r&pxjGpVHseTOV$E5umoK!IS0;# zD`5lN0Gr@Gco-f7>~#t9E}@J|DB}|9cPVl%Mb4!rBtZ}83nhRYOOa#gr9iq%Np~sf zE+yTiTj6ea03HSGVCgeJJuKZ12jBzv2GGk=^itah8bcEx-&*pmML)IZrxyLxqUYLn zkOG;|6LKLB2Ei~G3F83!t*r#=p>_c*gfn0bAX_bEuBFVil(}{%yasQt3JsrBDl$d&TLn99F>jK)F{??iJSnf_?Bhd<5uaC3;!;1N;a- z0r{>v23ms%Auu5kkYg2ctV)L*=mouDAPfQIS~UjH&non@3jM4)73RZAzz$YX?o|)K zqwoY!->Y7R{cr%N?^WLb@~qx1JU1JM220Wb~7Z|xeO3~RRnwzQV|Ui&V5_5ZbWpV3)X-MWCE zSLuWjiu5Xk4pOB_lZ2*pkN^U~(4?!_d;L^8hTfIl1nJV7p_%|f02PoPK&n6>z_~c* z>@lwGAKta@bSzU^bL*l=8+@t z?vYE-|46-$Oyn5$V&uIb7?qadM9~hvAN3ZW^9{anG-@{Vp# zf8OOQ#xjG&tYa5?8+{5nM$0iq?_-=h#<^phJI1+V>e3KBjA?;=AJYMI9rGG}8OR%$ z?-(;0^DQG8#c1?2<_D&-03D6_g|)~sWY^`4C8&|8#^3%#*SwSGL5xUV;8apgcz+T09cbs>}d3T(5$9Z?$5WG9iyW_k&?o&o!58@`^-En3S zXBKg05$D};W)Zgu_r$p;&OLGNiE~fflY9O`A8{wS$R*4sPCs#1ut#zFiF+Ib`-jBw0o(zEDpQU$6|mu9r29i6aW zlVqGE<0ShvX&7(w4*Hv1|pO^fs+BwP`|YWSrKM!RTh% zXMBgVr_E#m&Y$M|Y4T2U$F$>Iz?`O~1i^H3nx2ik6hjBobu_&JW;4Al-Ra9v-sc-e zqmSvc(f{*8COY0qYMA(nyItC_yTnPxjP zj_Ll3t|jsQS&ey_j(Gp90Sx0~ynogY7}Bh{c>k;o?BoF6KkF>^V%8nJe|8wTDUA2e zuEq;Q(TcA0Vi51}B_kNm3>LGBP5j1T{^C5>NDYD?(~^}u6r~I`s83Vc(2YI};XS@) z6cd@nLe{W_-5lg37rDXxAowXg*~v$7Dp8Y$H0Kq1(2qCxg#R&y$;{(t*0GJ>N#Zog z_;!D~9RzbSQkG`Cj$Yan4RoagK*UF!w2RJlDT#=KAjDzKB`Q?a6Dz(u*(9 z@!W6uj_;9euCC{rfQVf?%FE&vWj)DpcoP?C89a#4(#i$TV*sN4dhIAef&P zdpY0y=NG3G=0D&3=bQihR&*j7Ip_E1Eo7PR-1+*NZ~pT)@*Dfn*L;1=*Vp_9c>Dav zL9oDG3&L>M0(lp>Yk_ZVL1pa1f+o0YK@2)w@FpMf5uf9GTQH3|EN2^gv2P3h!oDrI zz&+f#Fr0i8rv&YTV9_#kxM(Z8@cTvbF7o?D|KRtFZll*l`dR!m_Gz)qi}O>2qLd^8 z-|*s^yg(z&ba7)M(cfbIEpAO4+R_d=7JK93-sp4j5I*8_zF|1Nuf;#%or^ai=VCb* zpW`O_T%yY*-nT@KC2}n3igTAZcZqYCICse~-scm(#7-@-7fYrv6J0J@i0^8NUY6)( z$u52)p4}Yb1a^6e`3n9(bLj;v_LOQ zJJ6Xv3}7g4;~QA&yIiV=rDHMsr9Uu>+00`l>(I~A?d(9_rFvR=3^|ux<~sjzANyzp zf@N9AK^_WHhKlHMnRzagb6IoDZ<%>5i{>?Sx=g3bbh=EZ%RWWUWpPYq2IjU*ugg}W z$7Kn~v&?=ilV{l#9%6<+H{``2Snf^B{rTno>~gu6`*X`vf?$OiuP8}vUP50hx-bwK zR_JBLbk^dxD^8Lc1ixhCIU;FCSNic4qtV|l?)&8cX8X$}?gqh1GhCUUN>oF>l{#4I z_bYvqE6rx5_pY4EGB$9Kvp8erogi4H-&I+$1FQ79N|&qJ(u9f3UgQ;!yrCjBzj-1@6{_<&n|SmT8C?%#_!iup)q<`)O&C`?Br}%zoWs^t0|3kAh%*J>0RrGwxXb7N0Q+?_Gb86G8B6E27cguV(P;BJAC- z+k;?(t~ZoN_6;xN&JDih4Ze>J&e@>T4L`Gu!sO_#XCgCN)(kd|=#duww+3L(elN>rm3a%?uw&8^YLW_@hd z$L0YHMV`$c@FntW9?ukJGK&SQMhBa>u#;UJMW)R+xE};t%xFs(X0#;-&mzN?7ci48 z_GL>aqIn(nZ<&f+*!nOCwq+t4xyVNZ<#>+jG{RiBy+j+j@fv*@h#lN!uG`+izHa-P z?=jbH-nDHk{<=igk_Np|% zoVV+DdmrT3F30wTICr~qw>x*cbGL6Np8Xs|m)rlue7FD0E$#)u4)fiimmPZ9k&E0s zgL&_;|2xW15%=$?hMsolX@{P6=xK+ZcC^L3ci8_O{m|16^WO0(U-2D!+A*A8*n%1F z*u(G0wc|ABxy+MX=C$)F(&PS}l`yBBX1%i>FVdP0=wqk*clMwcdf7RQ&-n)T?lhmB z_HO3{?8Htxw{t1->|BdHJLTCa&(6afL!O=T?7Yr@JPLwcnaNIW@>77)RGL7`-@|$FU*Nln{}w&R zdtbcw#m{0c^O%qK#xKNsnsRu1BA`_FQfJLvj=`woPo=L60@@KO-`F5B-bS;r=}lfWMw=OkCK zqrW@n_Xk0c;GBdk`GW3$Dm&8rjoy0BZH_`4S9wG_%C;p9|67`g*r$jv^>M1cb z2o7c>D>^@@r-LOaOC_qIr-LldAJ*cOHiO6~I3>UE%2XAtVd;U_rv}7V1xhRHxJfz1%=6OiYLya)ML*{j;4PDUb zA)Ox5=^>pSdKVcF$#}?q9{PberX%B_`N(p}ZXI^#Vci@K=NU>-lZG^>9bI{q9t`Dk zy#26q51ZBDx!B>uYq=H#NBr){EBM`!7<%(2avk{yzds_^5x+m8yCZTPS;Wt*Vm-P$ zV%A4=cf_oZ93ly`KBB`TW_{!or%C2AW`9JdNB-qW4zoWRA|08@OCgHmokvSkA6*`` zqetaDD(6u%J~{$3J?dRYS0cwzIgZ}Nxk=7Va&D4yld_YW{1l-CWw298b!b2&b}C6P zNqR|&p(nnHBs-R**QB@k0QV<-hMto2l%%I5JtgTW$^4S+SkiLrSdyNS;@QtZj-sce zW1L4XN!R%=2#!5Pdcp{&FwdfgV-=`KCF=45jc7%C^mD8m-I4cLFYMc~clZ!_kA2NI z3`gE$@*evU`*zG+kD2SS&Fo+|M>v5w9y`ZP^m{Bd2#)LbxV*=+k&ArDdtATARV#$zu|EWr#;xZ^}TiI~BOKhXUNy`Q)j1b?O>H}d~kisz_BZCcP8o&Gt1 zVd(VFF+uQ`jDJ5vdHmVGU!ptjBFEn|n9owSupjsSeIp1?+RKw>ds0Uy&G2MTzQDOB zCnNvK?HoY&CvOMAsW9|>O2$+5aNntDWIFXdGnvB*+;_@-r}TPCpQqE}x2I)2?QN&s zc{&EOIjz6bzWdY8I6aZYY{gtoUnM07{_*>Na*zkP|EWPUI?{~+nD0M7Fq>7#|4#z` zo$!x;2mJFe2+o9Ij%Ol}<4hE?;3WhhHks!<*9I{Q2|iKIEYI@=z7oz>Ub{>XcF zDE}i4Z$7(>4eaI!XSj}cpOfR99OoL~+;h%7=iGD7Jr|7*&*|Y@Uk369=5p>+zT!JZ zF_l@&Wf5j|ZV7ri=l*l(B%c0F8qMmU6{r~ma&p` ztY>IjZpjQM95pF_`H^cV7G^2rm7@HExrFT}{r6Hzj*h zva^!CDcPHny(!r)CVNw|Hzj*hvNt8`JXz<-(e$Q2Lm0-}yn}ZpzsKi%!I#L8{55hU zdw23Art>2|vkGrc_U2^YTJllsO7aclye#MCyp+T)T&~Yc$Z=VY%lf?R+{@0r?A*)F zy*!^Ktia4KoB3tCdD+Y_oB8D={zA8x^>SG+ms7Zp*Cl zsY*?1q5CT>XiW!t(uV=~Rw(%SB*wrgX(94xS zxr80Pa*KP&edS5s$3bv4jBuVo-m66^Mg;O+mG`P$x!Q^9jQl z!+543@6`n?cziwBrm!~rIc#)>q)$7i@-VSfO?mM{NoBnv)b+fo`7T4e8 zEk5F7y!E=-T>lI?u8-meCNUkex&AY&u&dX95)snjpswIc}Kw z4d>o)?hWVOaPAGedSgCz^~MV9>WvMU`Hce{B8hY8<%V8v+~z;-;NF|=y{Vs@`njo} zn`VDA4<#r=MXFMbhD6bV*1Sqj?CQ+{3}g@=ppTn&^`_i6Ct&tBXEB#wF#DSu*~WHu zkceJx+SQxB;hT2h=D*xR?we2Y-VcIX=?Nnod2bba7=OPAl3IO*hQ* z))0naS8sj8aKZD{+Yv9gZC7v0bGsDJQHw_C>-J0N z>vnfOcC%(IlHI`-jCeHzn-j&z|1G4!SnZ}A=<%@^KJzCzT1G8>5LqA z<+wWy=iYVhUFY6)?%mb=$`*E_&%3|#C#N~jW$vMudwRK-o(yEfz4zREPe1qcb5B3_ z?CHI-JWpL35=9f*6HPZ>!`$x;!`$zE!l#(Wz4@$SJ)7A(*FVjolFN|7r?u9WV?GL*OZ0J%~|U`{Fa zF=Z;Vu#YMBF~#?jvXNaJB8k8Fhcno#l>fNT;~?;l;J$qKi&Ktj$a7y$_w{tY6FRy7 zVGum<-Uk=)-Ur_MzzTH!?_Qg`_Q=$o%>L)59hLopRorI?ZLy}*heDv;Gte0>gAzc9^T{@ zw{hH&e+Dp)nap7!%hB_` zlJNdV=Kkmc@;$o59iHS$4T8sVJ(laST#xhO`+2ON$E7Jl4eHPUT|I723tICkJ?Vo? zkKe|_tWV@{9dd@Sc7K}D+Ju256j(38Fl<$b%vq z(}b7s`!wBn4Vlw8CymT$KH*Eg;yb=)B05Vm8@;8O&jJ>*2yaTWiq*)FW-U*0cw?Hq zB=86SaDgk_;ARj?tJk#8@GNqsl{0N~Ucv0r>N2hOrIjPC9BH@W+_cV3>)f=?O?#Y^ zoaGY#aw{-4(vpd66htrS^pdU|<*9&KrmI5(B5{AZ7U(IRp3>Pe*#f$VXxHlfE=% zkT-oL>e7%X+BkAA3T+^Ft`fnM@IA$^jb4PRGKJ%9 znY=BNw`DSmOtq;`W13+WnOfm(nO>zQeHehZWg5g_hVUNl&15#2KI9`l=6gmH$7JTQ znB}a-&SpA*nPl?DOmb$HGjlcyqVvo(co8`=%aQqOoSWIXnVp;2xtVA16AM_%FZdQR z?_>|ZbC}cUC9_^KU*`sPAhVqfv$J7o$%OmEvZJRkJ%#BhOiy8Y3adyR>}*&hdJ6N+ zgmoo`-smZ;FT>DFm>meS17Twr&lK!H*b-KthcG)3X4YY6Ifq2l0vdERC3eQuQ7idH)+7nGT`ZEN%vdEQ1t}MfmD~nuNJ!ZKZ_*XL-$$>ms%`K}uSt~J=H-k{NgPg?MvR&d|9t5H6ew*Ff zvU^+hJos()Vnk4tns`fgZ^>>4vNxp}9qB?3dZF{|I?t~2?EQEH_hx?!Z_WNT?_dVm zzhxxjFoW!KSjaMd<~O`CyIsjHXLdQmGobVE;&@lMj>F{$mm^$<;m!?rZn$&9of|%p zY0SpXhuit^@7x zHEK~0J>_Uk2RhRoJ>{^QIR>GZ9PjcG-!Y0Gn8aKbp@$r+_>;f*8@Y1GmE#6-<&-O@ zT>kF$P|mF6L_ay7P?$dgl^oYVOc{pDQ8 zCbpx$oVz)~2~Kg2^IYS05Xx1E5>(~|qG&-|`Y?pA_#XG=+Kh8^?InRfa9*zK+zCRt zL+C%Zcjk6(?y^+HF68#M+%0K^^K-w(K!))dW0}HFEMYZka9?hFkoz>|pZjJIdZrBJ zf>0i_$>Y!GS&u)L$2;?QS6+LNw*WHal_9VD^ERU=?#!#dyfavex8yauypMxWzAQY0 z`Q$T`e9bX~e0s?DKjP4JK6{!^&-o4`Q@($B5QOr(H^1NKcW?e0_?TJt}CX1!uF2t(av&9TYsnMXqumofJxgcNOxkLOLx}l#*28d7NLUA&qE4Q##RR^1iC6T16>tbfW8XJTWA;FTj&&W7Lv1Y zdU8>Wiqt`l!g3V;80QvtZeiyZc5Y!aC_I%}%teode`X`w_>FxWLobE(Qurd5NXET| zpWLgTBKj$!AAh%cs7Pk=Qi$S|qBPa1O??_;rbW!ONEdn#Lr=bCJX4s-99FP~4Q%BA z-d`k%zmTuUN&I`K$Sve5nw9*RS5fmST7fExKB^u)QCEC#m8B3T|3H_ANPl@;V82yycPYHQTOvVgL%w!fz z`GvJ?L|-K~vxTkfVK3fOLVqO=@Fd5doaQ{2xyQpGRPrg(lYt_XrxtRSl(S?HytCx{ ze8UgOQBsbQW>eC+C7oN+xh0)j@;d*a$C7%CNQ0e@cm}hHC`w7}P=sD0^b*k!I~4IE zjcJ3Oj_88>BVy1~gq|Yw6rraGJw@m}!dxTt9%0ub^b|3lCD`?dHRvf~9lOwrzwbR1 z@dy8Kfh*kLQ4lKiGSO!c69{f;DVlE8956d2R)va&nfF zvs`{kVFu+I(h@n!$x+S@lyh!5=azGBIp>yJ$TC*4j!kUG4wSP4<&JX_J5Ww9<@8eS z0jc;l%IUa#W^`OWH|{TA06mr0Q+Yj=*Hd{tm9K@)%eSC4dMe)&J5b&Zlpl(o%D>5E z=CPRNtVXW#@$Baya+No)@|XA*voC)gxys8`;c4WmAXf#sDion8CDBiX>NKJWFVTjM z*og{V>Bk`CsbFpu%&Ee6jN%6-F_%UB%qsL(!8cSPfj`h+g%e!lDmS^yy&zOEL>lC% zSdZ4cN^d^kbL>OKIP_8RNAyu~3HqqGnPj}X;%!obP^C=d!h0)uXC?htdY-1V#M>(M zz}qV6x{|k5dYf+;gEv*O7nPh}$@!J^T`3XosN@}$uJ9k;@LWF3y7JeIV4h!&#M&;H=6z@%Pb(D(j@O^D674ve{KOyDE07irH1kjki>BPZc{=r4WTF zMQQ9UeO1#}wMMj}J<)WdKSLPC`x( zIaZUan%%Cph_&danq1X>BOX0f`;)&&#tv4yO$vIe_BaStx7*djc?Nl^`}V3=pbF1Z zmxkEO>h0*ntLU)04y)_1x(=)Bu=A0t!}rf z+pQW;qnjFqh@cWRsYN|>RHFyJi5hS40q(2u74EB{j~eSSAAcu)sHWf5jG_gtv12uR zB6rOJ48=J$KfyUQ?OM%|$X!$Jn!2sI5Z%`NndNN4%xii_&HWtUckDn-@2crtHBX@P znmVufH+G_?chEoNK0J$mx@_=jru;&ldN&b94g?YH@Y z|1pBG_;*U}A28?I=3HA}we?kdBX+U&Z|p-~we?l|zaUiSDbf>0IE8tZ(o~=}^=XVg z>gb`)P|T~2dDZz8bFbt6I(n%y75CSf&2m;_-|FmOH}0)-h$N0-E_E(*ohNzj2cf$1 z)Rm{MJawO;0P@t8r*0LV$9GV-CAzAsqq?usjsD13S4VZ<=L3c_4V~0o##*+ble)6h z{e!!t1fhC;@!NWSThIII*~fZg7|#^!V?FPyx0GLSRz3aJ+r#f1#=Ghr$G+7&#Z_+N zj(Vv);H`jj`bEt0) z^=Gh{b?m|$>&sDJjt2T{;M@kzZQ$Gn&h_5}2sNliE$U$(8#Kkd8+4=#J?O<7yu*il z#^>0>26}4n4fe0WB&PEtKQV_DtYHJXZ=m}I+etwG4fNGOUk$EsgF8GxUk&utumqK< zK^+?KGHrQ#Xa2H=qc=D zqYRi!qx=*>oVZH<$;i%uh*6`2li ziwwitBE2or+akR!(%T~KMr1k4Qvq*{e4d)vmB`w7d!${7d>ONd^!CVD%p%e(BF!T5 zExb8$B6cCtE<|o-AII>GWG5e^W&}o#}N11)p&*&-24n%Eb7rKtJ15tJ$>L4dM%O(Cr_ffi!vI|Y@LKA&8 z(N~jv6y{kQNF#yeVcL{}}$vPD1M=M%;;g`Y6L78ioh%l_=kuk$67 znZXh^a}e`uX~$dUKxZwB;jWeq&{xY?KE{5uoP&;A{=uCf)G9Oi&~qz&v@*|D?rSxW z5BUM}YNgv&_PW(!PGfId=cF_hs7+JsL2EnOdNAKG30YfjVLy6mt)tfWgHW6Fgi{3b zXyc4FE%Ey{Z!-#Aw3)|B*0GZ$yt$28`hWchwY4j4pQQ%+ZTkvl*!B%{+IBcPYpc(; ztJuz7j$;4Y-VH+Sa^d&wUc?*P$F^J{?)mN&CF$rF~J%v%UGW_r~@msEn-b>tM$1 zU#2au(3Mwt3z^%SLHiL*K!@$uvH^SB{#+31UkxC?7?H`0*J&wL!y}}Ld1fgzElYuPc zASZh4rpIo2>{baqcGF|GC|d9mZD@<#>Sm|AnQu4q?dCn*hA@;j_<#@jh>!V%PZ_~j z%)8rE7O<3GSj##R_={xj2BGe02&XXRs7WMpbeE(1|8Q=1=XQ5)cjtDW#atHgGpkt7 zuf(&TgB-S6zS*uR((m{Uvy?u#+!m|B=q zj5)=$rUM=6g?)>0Z_K-xM~r)8zF|0ei_u%m41PkM81smcCq|wad1ChPJMzTH6LX%+ z=&0vY*u9=%m{HFh6hX$GWvGZ<>Zy~SZRpHv=)iwtBGmJ3Wa+s(2*sLfY$SS%)mv

s5!Q=(|@>2J<1`GM*oiqn8}L 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 From c7098cde695db2b36d36066d8970c04c7e96322e Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 10 Nov 2014 20:57:16 -0700 Subject: [PATCH 016/973] Git Media configuration, GitHub Username, smudge filter --- gitconfig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gitconfig b/gitconfig index 31020edc..02dbb8dd 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,7 @@ [user] name = Matthew McCullough email = matthew@github.com + username = matthewmccullough [color] # ui = true is a superset of all the more specific color options @@ -255,5 +256,9 @@ cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot trustExitCode = true [filter "media"] - clean = git-media-clean %f - smudge = git-media-smudge %f + required = true + clean = git media clean %f + smudge = git media smudge %f + +[gh] +protocol = https From 0efc839cf5777a673135fbf162afe38f94d14d51 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 10 Nov 2014 20:58:08 -0700 Subject: [PATCH 017/973] Vim indents set to 2 --- vimrc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/vimrc b/vimrc index bc940cfc..3accaffd 100644 --- a/vimrc +++ b/vimrc @@ -4,7 +4,12 @@ execute pathogen#infect() " set our tabs to four spaces -set ts=4 +set ts=2 + +set smartindent +set tabstop=2 +set shiftwidth=2 +set expandtab " turn syntax highlighting on by default syntax on @@ -23,4 +28,4 @@ set vb set showmatch " make that backspace key work the way it should -set backspace=indent,eol,start \ No newline at end of file +set backspace=indent,eol,start From ccfa11974d5e8c391b038a70ee16d6b34b98356f Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 10 Nov 2014 20:58:22 -0700 Subject: [PATCH 018/973] Heroku toolbelt --- zshrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zshrc b/zshrc index 053b9ede..feec4a62 100644 --- a/zshrc +++ b/zshrc @@ -38,3 +38,6 @@ source $ZSH/oh-my-zsh.sh ############################################################################## source /opt/boxen/env.sh + +### Added by the Heroku Toolbelt +export PATH="/usr/local/heroku/bin:$PATH" From 4ca02f5126ff8175a8b3b839cb840b064cf04f98 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 10 Nov 2014 20:58:45 -0700 Subject: [PATCH 019/973] Updated oh-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 3913106b..df5b09e2 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 3913106b2e7127d396f27b652df812340ec0c871 +Subproject commit df5b09e20b05a5ba4234599602f7a74934c916db From 1c5c401645548f876751c35707fc7ee67093afea Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 25 Sep 2015 21:20:15 -0700 Subject: [PATCH 020/973] Updated oh-my-zsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index df5b09e2..76a26a2a 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit df5b09e20b05a5ba4234599602f7a74934c916db +Subproject commit 76a26a2a59d8c6d0f65a4426cdb93920e255aea7 From 5fe5736614aa726a305bd608e28b2a7262087dbf Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:37:36 -0800 Subject: [PATCH 021/973] Save iTerm2 preferences --- com.googlecode.iterm2.plist | Bin 128193 -> 552916 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index cc95131102fc257303a040592b5803ca6314a6e5..da70b714cf1a1f71817e69f692fb64b8ce9081bc 100644 GIT binary patch literal 552916 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 z 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

s5!Q=(|@>2J<1`GM*oiqn8}L z^w!I{y`0<2xxJp8`#1>oPD4hrV!wLl#dq90f^s}ZbsEuxm(XSJwzNY}z1`p2{k{93 z+unNW{RVIHDPQp&qZrK?rXyeP`7B{Qo7sVR^fve2d%206edO#TXCFEH6rd<2Da-TJ zr6ExaWDxr3qmMrJuFvPVzt0a$!u@^Bt9`}?MxT?B4b}2^?e85M&Hknv9I0gJDhFE(l<2- z^$Q5`6eVbdGy9oCKWFyq&RaOA-#EOnUmV`lZxy=jXV>~2=Ry#Ay)^yt?$>Vzq5f5P z6KC`vhVP=kT>YKbe-^VbtNuSRmqje*H!hLPWv+9B`$1@c%mdOBhJ6~~tO4I(F9*y) zwgKDu1DOV-1fhW$$WIw$8rYC_^u$gLv`YicaG==@v@-)YZ~))U!1Ks3(0m3uYmlx6 zna`jcxPMS_oIA+5gK80l9tSypP*-|jCWG8F=zYv%(07bv0#oq*LG$<-`3L!~25n^z ziRgFGY4kBj4} Date: Sun, 17 Jan 2016 12:37:49 -0800 Subject: [PATCH 022/973] Upgrade oh-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 76a26a2a..d3b95205 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 76a26a2a59d8c6d0f65a4426cdb93920e255aea7 +Subproject commit d3b952050120de49bcd28be29c3384126503acf1 From 5cfafad345e160150a671faf427cbea5374d3d64 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:42:23 -0800 Subject: [PATCH 023/973] Ignore more common patterns --- gitignore | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gitignore b/gitignore index 0e6564e4..5f186c59 100755 --- a/gitignore +++ b/gitignore @@ -1,6 +1,13 @@ -.DS_Store +*.swp +*.swo *~ +.ruby-version +.rbenv-version +*.sublime-project +*.sublime-workspace +thumbs.db .#* -.gradle_targets +.DS_Store .gradle +.gradle_targets .gradletasknamecache From 80e628b8c975b6eebddcda3aa15243d542c54b44 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:42:35 -0800 Subject: [PATCH 024/973] Begin customizations for Brew --- Brewfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Brewfile diff --git a/Brewfile b/Brewfile new file mode 100644 index 00000000..e69de29b From 093a2b8b37371bd759b280a759c74d5f51d245ad Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:45:54 -0800 Subject: [PATCH 025/973] NetRC customization --- netrc | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 netrc diff --git a/netrc b/netrc new file mode 100644 index 00000000..e69de29b From 931393748de248e72e30b3b9f1db3c289adb52ea Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:55:33 -0800 Subject: [PATCH 026/973] Deprecating Bash setup script --- _setupdotfiles.bsh | 64 ---------------------------------------------- 1 file changed, 64 deletions(-) delete mode 100755 _setupdotfiles.bsh diff --git a/_setupdotfiles.bsh b/_setupdotfiles.bsh deleted file mode 100755 index cf218b39..00000000 --- a/_setupdotfiles.bsh +++ /dev/null @@ -1,64 +0,0 @@ -export SHELLSCONFIGDIR=.dotfiles - -pushd ~ - -# Unlink existing -.bash_history -.bash_profile -.bashrc -.boom -.cloudapp -.conf -.emacs_desktop -.gemrc -.gitconfig -.gitignore -.netrc -.profile -.rvmrc -.shellaliases -.shellactivities -.shellpaths -.shellvars -.vimrc -.zdirstore -.zlogout -.zprofile -.zsh -.zsh-update -.zshenv -.zshrc - -# Link -.bash_history -.bash_profile -.bashrc -.boom -.cloudapp -.conf -.emacs_desktop -.gemrc -.gitconfig -.gitignore -.netrc -.profile -.rvmrc -.shellactivities -.shellaliases -.shellpaths -.shellvars -.vimrc -.zdirstore -.zlogout -.zprofile -.zsh -.zsh-update -.zshenv -.zshrc - - -# Cleanup -rm .zsh_history && ln -s $SHELLSCONFIGDIR/.zsh_history - -popd - From 8ef8070872a78be796bf5e269de7c4f7ef2d72b3 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 12:55:51 -0800 Subject: [PATCH 027/973] Better output in setup script --- _setupdotfiles.zsh | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/_setupdotfiles.zsh b/_setupdotfiles.zsh index 91a4172e..d2c3a2f8 100755 --- a/_setupdotfiles.zsh +++ b/_setupdotfiles.zsh @@ -2,24 +2,28 @@ export UNLINK=true +# SymLink the file, if it doesn't already exist +# 1) Identifies what directory is being worked on. +# 2) Unlinks, any existing file (if requested by option switch). +# 3) Create the new link function symlinkifne { echo "WORKING ON: $1" - + # does it exist if [[ -a $1 ]]; then echo " WARNING: $1 already exists." - + # If Unlink is requested if [ "$UNLINK" = "true" ]; then unlink $1 echo " Unlinking $1" - + # create the link export DOTLESS=`echo $1 | sed s/.//` echo " Symlinking $DOTFILESDIRRELATIVETOHOME/$DOTLESS to $1" ln -s $DOTFILESDIRRELATIVETOHOME/$DOTLESS $1 else - echo " SKIPPING $1." + echo " SKIPPING $1." fi # does not exist else @@ -31,24 +35,25 @@ function symlinkifne { } -echo "This script must be run from the dotfiles directory" -echo "Setting up..." +echo "NOTE: This script must be run from the dotfiles repository directory" +echo "Determining paths..." + +echo "HOME = $HOME" #export DOTFILESDIRRELATIVETOHOME=$PWD export DOTFILESDIRRELATIVETOHOME=.dotfiles echo "DOTFILESDIRRELATIVETOHOME = $DOTFILESDIRRELATIVETOHOME" +echo "Creating links..." pushd ~ symlinkifne .bash_profile symlinkifne .bashrc -symlinkifne .boom -symlinkifne .boom.conf -symlinkifne .cloudapp +symlinkifne .Brewfile symlinkifne .conf symlinkifne .gemrc symlinkifne .gitconfig -# symlinkifne .gitignore +symlinkifne .gitignore symlinkifne .netrc symlinkifne .profile symlinkifne .rvmrc @@ -60,10 +65,8 @@ symlinkifne .slate symlinkifne .vimrc symlinkifne .zlogout symlinkifne .zprofile -#symlinkifne .zsh symlinkifne .zshenv symlinkifne .zshrc symlinkifne .vim popd - From c289d62922b96af4d827ae9457dfcf9bd686e45f Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 13:00:51 -0800 Subject: [PATCH 028/973] Removed symlinking of vim plugins --- _setupdotfiles.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.zsh b/_setupdotfiles.zsh index d2c3a2f8..1471e5f3 100755 --- a/_setupdotfiles.zsh +++ b/_setupdotfiles.zsh @@ -67,6 +67,6 @@ symlinkifne .zlogout symlinkifne .zprofile symlinkifne .zshenv symlinkifne .zshrc -symlinkifne .vim +# symlinkifne .vim popd From ba651000e443aa08cb53e5e02ad06d5a8b94884d Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 13:10:29 -0800 Subject: [PATCH 029/973] Remove boxen --- zshrc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/zshrc b/zshrc index feec4a62..1f28e1b2 100644 --- a/zshrc +++ b/zshrc @@ -33,11 +33,5 @@ plugins=(git battery brew osx gradle ant compleat dirpersist gem ssh-agent cloud source $ZSH/oh-my-zsh.sh -############################################################################## -# Boxen setup -############################################################################## -source /opt/boxen/env.sh - - ### Added by the Heroku Toolbelt export PATH="/usr/local/heroku/bin:$PATH" From 0753ac03c0e240ecfd0db64483060b5c6a13e3e6 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 13:11:50 -0800 Subject: [PATCH 030/973] Strap added matthew's credentials, but I don't want them preserved --- gitconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gitconfig b/gitconfig index 02dbb8dd..f158f6db 100644 --- a/gitconfig +++ b/gitconfig @@ -262,3 +262,7 @@ [gh] protocol = https +#[github] +# user = matthewmccullough +#[credential] +# helper = osxkeychain From 3faf25630625365bbd0b7fdb0eb73c8fdae7fd59 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 13:24:39 -0800 Subject: [PATCH 031/973] Customizing Brew --- Brewfile | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/Brewfile b/Brewfile index e69de29b..f3640823 100644 --- a/Brewfile +++ b/Brewfile @@ -0,0 +1,68 @@ +tap 'caskroom/cask' +tap 'github/bootstrap' +tap 'homebrew/bundle' +tap 'homebrew/dev-tools' +tap 'homebrew/services' +tap 'homebrew/versions' +cask 'java' +brew 'ack' +brew 'autoconf' +brew 'awscli' +brew 'xz' +#brew 'checkbashisms' +brew 'cmake' +brew 'libpng' +brew 'freetype' +brew 'gettext' +brew 'pkg-config' +brew 'libffi' +brew 'glib' +brew 'grc' +brew 'heroku-toolbelt' +brew 'hub' +brew 'icu4c' +brew 'libtool' +brew 'jpeg' +brew 'libtiff' +brew 'imagemagick' +brew 'jansson' +brew 'jemalloc' +brew 'oniguruma' +brew 'jq' +brew 'launchdns' +brew 'openssl' +brew 'libevent' +brew 'libgpg-error' +brew 'libgcrypt' +brew 'readline' +brew 'sqlite' +brew 'libgda' +brew 'memcached' +brew 'pcre' +brew 'nginx' +brew 'node' +brew 'ruby-build' +brew 'rbenv' +brew 'rbenv-default-gems' +brew 'rbenv-readline' +#brew 'redis' +brew 'ssh-copy-id' +brew 'wget' +#brew 'homebrew/versions/elasticsearch17' +#brew 'homebrew/versions/go13' +#brew 'homebrew/versions/mysql56' +cask 'appcleaner' +cask 'doxie' +#cask 'dropbox' +#cask 'flux' +cask 'github-desktop' +#cask 'keepingyouawake' +cask 'screenhero' +#cask 'sizeup' +#cask 'subler' +#cask 'textexpander' +#cask 'textmate' +#cask 'transmission' +#cask 'vagrant' +#cask 'viscosity' +#cask 'vmware-fusion' From 3d623943b6e50e5ddd8522549585052421c82272 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Jan 2016 23:51:29 -0800 Subject: [PATCH 032/973] Upgrade to latest oh-my-zsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index d3b95205..87e782f9 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit d3b952050120de49bcd28be29c3384126503acf1 +Subproject commit 87e782f91e5c8fb3c33b58cdda265e65122a2520 From fbebf04ba1a58c4a5b2ad3b550eb8bca1b89cb9c Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 17 Mar 2016 22:52:40 -0700 Subject: [PATCH 033/973] Add Git LFS clean and smudge filters --- gitconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gitconfig b/gitconfig index f158f6db..d4753124 100644 --- a/gitconfig +++ b/gitconfig @@ -266,3 +266,7 @@ protocol = https # user = matthewmccullough #[credential] # helper = osxkeychain +[filter "lfs"] + clean = git-lfs clean %f + smudge = git-lfs smudge %f + required = true From c23eb434b70dd24c7131b6638eb384195e2172bb Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 17 Mar 2016 22:53:17 -0700 Subject: [PATCH 034/973] Upgrade oh-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 87e782f9..83cf8dc1 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 87e782f91e5c8fb3c33b58cdda265e65122a2520 +Subproject commit 83cf8dc16f51babbb0193c5b97e568739c1f40de From 9de572bfd8a733dba84c4b4bb4be02e69ecc340f Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 17 Mar 2016 22:53:54 -0700 Subject: [PATCH 035/973] Update configuration of iTerm --- com.googlecode.iterm2.plist | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index da70b714..8d390f35 100644 --- a/com.googlecode.iterm2.plist +++ b/com.googlecode.iterm2.plist @@ -2857,7 +2857,7 @@ Columns 80 Command - /bin/zsh -i + Cursor Color Blue Component @@ -3352,7 +3352,7 @@ Columns 80 Command - /bin/zsh -i + Cursor Color Blue Component @@ -3405,7 +3405,7 @@ Idle Code 0 Initial Text - export PS1="$ " && to.scratch && clear + Jobs to Ignore rlogin @@ -3847,7 +3847,7 @@ Columns 80 Command - bash -l + Cursor Color Blue Component @@ -4344,7 +4344,7 @@ Columns 80 Command - bash -l + Cursor Color Blue Component @@ -4651,7 +4651,7 @@ NoSyncTimeOfLastPromo 461743666.53294802 NoSyncTimeOfLastPromoDownload - 464933681.12485701 + 474755665.79863501 NotFirstRun OnlyWhenMoreTabs @@ -4713,11 +4713,11 @@ SUEnableAutomaticChecks SUFeedURL - http://iterm2.com/appcasts/testing.xml + https://iterm2.com/appcasts/testing.xml SUHasLaunchedBefore SULastCheckTime - 2015-09-27T04:14:38Z + 2016-01-17T20:34:09Z SavePasteHistory Secure Input @@ -17934,6 +17934,6 @@ findRegex_iTerm iTerm Version - 2.1.1 + 2.1.4 From 7c9610cc95d540efcb680f3ee49c48772eae2cd7 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 13 May 2016 15:18:22 -0700 Subject: [PATCH 036/973] Upgrade ohmyzsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 83cf8dc1..4a1e89c5 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 83cf8dc16f51babbb0193c5b97e568739c1f40de +Subproject commit 4a1e89c58b3b924ec7caed2b7e33afb8ee0825d6 From 4fb7056f75cff5e9a4896209193080fc209d7bb6 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Fri, 13 May 2016 15:18:39 -0700 Subject: [PATCH 037/973] Add alias for displaying current user --- gitconfig | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/gitconfig b/gitconfig index d4753124..78f15bb4 100644 --- a/gitconfig +++ b/gitconfig @@ -2,6 +2,7 @@ name = Matthew McCullough email = matthew@github.com username = matthewmccullough + signingkey = FC9C6E47 [color] # ui = true is a superset of all the more specific color options @@ -14,7 +15,7 @@ # diff = auto # status = auto # branch = auto - + [color "branch"] #current = yellow reverse #local = yellow @@ -131,7 +132,7 @@ nr = "!sh -c 'git init $0'" echoparam1 = "!sh -c 'echo $0'" #testshfunction = "!function gitme() { git init $1; cd $1; }; gitme" - + fixup = "!sh -c 'git commit -m \"fixup! $(git log -1 --format='\\''%s'\\'' $@)\"' -" squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" ccfq = "!sh -c 'git add $1 && git commit -m\"Placeholder\"' -" @@ -142,7 +143,7 @@ gwcl = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative rlog = log --color-words --stat -3 lm = log --stat -M - + # Legit legitsync = !legit sync \"$@\" legitswitch = !legit switch \"$@\" @@ -152,10 +153,10 @@ legitharvest = !legit harvest \"$@\" legitpublish = !legit publish \"$@\" legitgraft = !legit graft \"$@\" - + #Searches findjuniodeletes = log --author=Junio --diff-filter=D --since=2.years.ago - + #https://git.wiki.kernel.org/index.php?title=Aliases aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/\"&\"/g' ; echo '}'; }; f" @@ -181,7 +182,7 @@ noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' configsimplelog = config format.pretty oneline listignored = ls-files --others -i --exclude-standard - + me = !git config --get user.name && git config --get user.email [apply] whitespace = nowarn @@ -234,7 +235,7 @@ [mergetool "sourcetree"] cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" trustExitCode = true - + [difftool "p4merge"] cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\" [http] @@ -266,6 +267,13 @@ protocol = https # user = matthewmccullough #[credential] # helper = osxkeychain + +[github] + user = matthewmccullough + +[credential] + helper = osxkeychain + [filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f From 4031c508d71291bc0cc1a88ef6c489937f321b59 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Fri, 13 May 2016 15:49:52 -0700 Subject: [PATCH 038/973] Add function to become another user --- shellactivities | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/shellactivities b/shellactivities index c2bf0a37..76ae4a4b 100644 --- a/shellactivities +++ b/shellactivities @@ -1,5 +1,22 @@ #!/bin/sh +# Git Be +# Will contact the GitHub API to retrieve name and email information about a user +# and uses that data to change the local (repo-scoped) configuration for user.name and user.email +# +# Usage: gitbe githubteacher + +function gitbe { + echo "Looking up $1 on GitHub.com..." + data=$(curl -s https://api.github.com/users/$1) + name=$(echo $data | grep name\": | sed 's/ \"name\": \"\(.*\)\",/\1/') + email=$(echo $data | grep email\": | sed 's/ \"email\": \"\(.*\)\",/\1/') + git config --local user.name "$name" + git config --local user.email $email + echo "Your local configuration has been modified." + echo "You are now committing as: $name <$email>." +} + # Productivity Sessions function work.ppap() { open "http://presentationpatterns.com" @@ -17,7 +34,7 @@ function work.ppap() { function work.teachgit() { open "https://github.com/githubtrainer/hellogitworld" -a "Firefox" open "https://github.com/githubstudent" -a "Google Chrome" - + open "https://github.com/github/teach.github.com" open "https://github.com/training/free" open "https://github.com/matthewmccullough/dotfiles" From ed912fb16f28872dfd4209f530a964eca0bf89ae Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:08:04 +0100 Subject: [PATCH 039/973] Add a file for user-specific info. --- personalisation | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 personalisation diff --git a/personalisation b/personalisation new file mode 100644 index 00000000..5d7550aa --- /dev/null +++ b/personalisation @@ -0,0 +1,8 @@ +######################################################################### +# User-specific configuration. +######################################################################### + +export _USERNAMES="jiml jlawton jim.lawton" +export _NAME="Jim Lawton" +export _EMAIL="jim.lawton@accenture.com" + From 2c77f47653956b275caa55362d308579339c3bce Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:08:33 +0100 Subject: [PATCH 040/973] Include personalisation. --- bash_profile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bash_profile b/bash_profile index 9931e6a4..441d8f9d 100644 --- a/bash_profile +++ b/bash_profile @@ -4,6 +4,8 @@ # Bash Interactive Shell Setup ######################################################################## +# Load user-specific personalisation. +source ~/dotfiles/personalisation # Load paths and environment variables source ~/dotfiles/vars From 0aa5c5b52eb24165eb8ee07eb6d3f83c518bd51d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:14:18 +0100 Subject: [PATCH 041/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index c602ef2c..f1466b09 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit c602ef2c1b24f621ecc6f13eddc270757e1aea7b +Subproject commit f1466b09d57bf76eaa0db11486b1e7646bfcf204 From df75adb657d3572112c344b6ee9b110ab39b7a64 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:15:12 +0100 Subject: [PATCH 042/973] Update work email. --- git_identities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git_identities b/git_identities index a13df951..63de3612 100644 --- a/git_identities +++ b/git_identities @@ -1,6 +1,6 @@ [identity:work] name = Jim Lawton - email = jim.lawton@s3group.com + email = jim.lawton@accenture.com [identity:personal] name = Jim Lawton From 7324de4ccdea6aa6afe4ca073f8842cbb68b0fa5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:19:08 +0100 Subject: [PATCH 043/973] Remove user-specifics. --- functions | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/functions b/functions index fd63f7c8..056d6cf6 100644 --- a/functions +++ b/functions @@ -264,16 +264,15 @@ function log_bash_persistent_history() { [[ $(history 1) =~ ^\ *[0-9]+\ +([^\ ]+\ [^\ ]+)\ +(.*)$ ]] local date_part="${BASH_REMATCH[1]}" local command_part="${BASH_REMATCH[2]}" - # Try to replace usernames/passwords. + # Try to skip usernames/passwords. if contains "$command_part" "$USER"; then return fi - if contains "$command_part" "jiml"; then - return - fi - if contains "$command_part" "jlawton"; then - return - fi + for username in $_USERNAMES; do + if contains "$command_part" "$username"; then + return + fi + done if [ "$command_part" != "$PERSISTENT_HISTORY_LAST" ]; then echo "$HOSTNAME | $date_part | $command_part" >> ~/.persistent_history export PERSISTENT_HISTORY_LAST="$command_part" From 1604dbbc5e4b47fc4e3bc32bbd16858f0da45bb0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:21:18 +0100 Subject: [PATCH 044/973] Add some more personalisation. --- personalisation | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/personalisation b/personalisation index 5d7550aa..49fd1a7a 100644 --- a/personalisation +++ b/personalisation @@ -5,4 +5,5 @@ export _USERNAMES="jiml jlawton jim.lawton" export _NAME="Jim Lawton" export _EMAIL="jim.lawton@accenture.com" - +export _SHORTUSER="jim" +export _MACHNAME="mac" From 42f5f282604547ae7ed8dd96597e2af52a101d18 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:22:53 +0100 Subject: [PATCH 045/973] Remove user-specifics from bash prompt. --- bash_prompt_current | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bash_prompt_current b/bash_prompt_current index 48b64afc..f64646ce 100644 --- a/bash_prompt_current +++ b/bash_prompt_current @@ -13,9 +13,9 @@ export GIT_PS1_SHOWCOLORHINTS="true" if isMac; then if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then - export PROMPT_COMMAND='title; log_bash_persistent_history; __git_ps1 "\[$IBlue\]jim@mac\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' + export PROMPT_COMMAND='title; log_bash_persistent_history; __git_ps1 "\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' else - export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]jim@mac\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' + export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' fi else export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' From 2e7ea90e9621d3db9aa511874ae002b89bc4d858 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:25:46 +0100 Subject: [PATCH 046/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index f1466b09..4719819c 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit f1466b09d57bf76eaa0db11486b1e7646bfcf204 +Subproject commit 4719819c12fc4ffdc4895a0e750df1e78fbcf774 From 59ef26f79a53ecdf8373be101579728af695faae Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:26:46 +0100 Subject: [PATCH 047/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 4719819c..49ad67ba 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 4719819c12fc4ffdc4895a0e750df1e78fbcf774 +Subproject commit 49ad67bae2993031e18bdb5b26239906577cdb5a From 451b9c18b228b06f12b760da03cca3f860dc0a15 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:29:00 +0100 Subject: [PATCH 048/973] Fix git logme alias. --- gitconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index 8f863d34..3760c49e 100644 --- a/gitconfig +++ b/gitconfig @@ -136,7 +136,7 @@ logcpy = log --stat -1 -C -C logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 logit = log --stat -M - logme = log --author=Matthew --stat -C + logme = log --author=Jim --stat -C logm = log --stat -M logn = log --oneline --name-only logr2 = log --stat -M -2 From ed314bbf1d60acba1dc8d82f1cd97f03fa305883 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 11:47:13 +0100 Subject: [PATCH 049/973] Update scripts submodule (merged from upstream). --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 49ad67ba..d5a029ad 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 49ad67bae2993031e18bdb5b26239906577cdb5a +Subproject commit d5a029ada5fbb11411ea1541f313025cb6aedeee From 4d07d10ba6870ac8c7e695c7b2c66cd3b21331d9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 14:56:36 +0100 Subject: [PATCH 050/973] Merge upstream master. --- Brewfile | 68 + bash_profile | 6 + com.googlecode.iterm2.plist | 17939 ++++++++++++++++++++++++++++++++++ gitconfig | 175 +- gitignore | 14 +- vimrc | 8 +- 6 files changed, 18148 insertions(+), 62 deletions(-) create mode 100644 Brewfile create mode 100644 com.googlecode.iterm2.plist diff --git a/Brewfile b/Brewfile new file mode 100644 index 00000000..f3640823 --- /dev/null +++ b/Brewfile @@ -0,0 +1,68 @@ +tap 'caskroom/cask' +tap 'github/bootstrap' +tap 'homebrew/bundle' +tap 'homebrew/dev-tools' +tap 'homebrew/services' +tap 'homebrew/versions' +cask 'java' +brew 'ack' +brew 'autoconf' +brew 'awscli' +brew 'xz' +#brew 'checkbashisms' +brew 'cmake' +brew 'libpng' +brew 'freetype' +brew 'gettext' +brew 'pkg-config' +brew 'libffi' +brew 'glib' +brew 'grc' +brew 'heroku-toolbelt' +brew 'hub' +brew 'icu4c' +brew 'libtool' +brew 'jpeg' +brew 'libtiff' +brew 'imagemagick' +brew 'jansson' +brew 'jemalloc' +brew 'oniguruma' +brew 'jq' +brew 'launchdns' +brew 'openssl' +brew 'libevent' +brew 'libgpg-error' +brew 'libgcrypt' +brew 'readline' +brew 'sqlite' +brew 'libgda' +brew 'memcached' +brew 'pcre' +brew 'nginx' +brew 'node' +brew 'ruby-build' +brew 'rbenv' +brew 'rbenv-default-gems' +brew 'rbenv-readline' +#brew 'redis' +brew 'ssh-copy-id' +brew 'wget' +#brew 'homebrew/versions/elasticsearch17' +#brew 'homebrew/versions/go13' +#brew 'homebrew/versions/mysql56' +cask 'appcleaner' +cask 'doxie' +#cask 'dropbox' +#cask 'flux' +cask 'github-desktop' +#cask 'keepingyouawake' +cask 'screenhero' +#cask 'sizeup' +#cask 'subler' +#cask 'textexpander' +#cask 'textmate' +#cask 'transmission' +#cask 'vagrant' +#cask 'viscosity' +#cask 'vmware-fusion' diff --git a/bash_profile b/bash_profile index 441d8f9d..c190291b 100644 --- a/bash_profile +++ b/bash_profile @@ -26,6 +26,12 @@ source ~/dotfiles/bash_options # Load my Git bash prompt source ~/dotfiles/bash_prompt_current +# Load Brew's git bash completion +# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-completion.bash +# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-prompt.sh +# PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' +# GIT_PS1_SHOWDIRTYSTATE=true + # Set up Autojump. if [ -f /usr/share/autojump/autojump.sh ]; then source /usr/share/autojump/autojump.sh diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist new file mode 100644 index 00000000..8d390f35 --- /dev/null +++ b/com.googlecode.iterm2.plist @@ -0,0 +1,17939 @@ + + + + + AFRStrokeThickness + 0.0 + AdjustWindowForFontSizeChange + + AdvancedFontRendering + 0 + AllowClipboardAccess + + AnimateDimming + + AppleAntiAliasingThreshold + 1 + AppleScrollAnimationEnabled + 0 + AppleSmoothFixedFontsSizeThreshold + 1 + AutoHideTmuxClientSession + + CheckTestRelease + + ClosingHotkeySwitchesSpaces + + ColorInvertedCursor + 1 + CommandSelection + + Control + 1 + CopyLastNewline + + CopySelection + + CursorType + 2 + Custom Color Presets + + Solarized Dark + + Ansi 0 Color + + Blue Component + 0.19370138645172119 + Green Component + 0.15575926005840302 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.14145714044570923 + Green Component + 0.10840655118227005 + Red Component + 0.81926977634429932 + + Ansi 10 Color + + Blue Component + 0.38298487663269043 + Green Component + 0.35665956139564514 + Red Component + 0.27671992778778076 + + Ansi 11 Color + + Blue Component + 0.43850564956665039 + Green Component + 0.40717673301696777 + Red Component + 0.32436618208885193 + + Ansi 12 Color + + Blue Component + 0.51685798168182373 + Green Component + 0.50962930917739868 + Red Component + 0.44058024883270264 + + Ansi 13 Color + + Blue Component + 0.72908437252044678 + Green Component + 0.33896297216415405 + Red Component + 0.34798634052276611 + + Ansi 14 Color + + Blue Component + 0.56363654136657715 + Green Component + 0.56485837697982788 + Red Component + 0.50599193572998047 + + Ansi 15 Color + + Blue Component + 0.86405980587005615 + Green Component + 0.95794391632080078 + Red Component + 0.98943418264389038 + + Ansi 2 Color + + Blue Component + 0.020208755508065224 + Green Component + 0.54115492105484009 + Red Component + 0.44977453351020813 + + Ansi 3 Color + + Blue Component + 0.023484811186790466 + Green Component + 0.46751424670219421 + Red Component + 0.64746475219726562 + + Ansi 4 Color + + Blue Component + 0.78231418132781982 + Green Component + 0.46265947818756104 + Red Component + 0.12754884362220764 + + Ansi 5 Color + + Blue Component + 0.43516635894775391 + Green Component + 0.10802463442087173 + Red Component + 0.77738940715789795 + + Ansi 6 Color + + Blue Component + 0.52502274513244629 + Green Component + 0.57082360982894897 + Red Component + 0.14679534733295441 + + Ansi 7 Color + + Blue Component + 0.79781103134155273 + Green Component + 0.89001238346099854 + Red Component + 0.91611063480377197 + + Ansi 8 Color + + Blue Component + 0.15170273184776306 + Green Component + 0.11783610284328461 + Red Component + 0.0 + + Ansi 9 Color + + Blue Component + 0.073530435562133789 + Green Component + 0.21325300633907318 + Red Component + 0.74176257848739624 + + Background Color + + Blue Component + 0.15170273184776306 + Green Component + 0.11783610284328461 + Red Component + 0.0 + + Bold Color + + Blue Component + 0.56363654136657715 + Green Component + 0.56485837697982788 + Red Component + 0.50599193572998047 + + Cursor Color + + Blue Component + 0.51685798168182373 + Green Component + 0.50962930917739868 + Red Component + 0.44058024883270264 + + Cursor Text Color + + Blue Component + 0.19370138645172119 + Green Component + 0.15575926005840302 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.51685798168182373 + Green Component + 0.50962930917739868 + Red Component + 0.44058024883270264 + + Selected Text Color + + Blue Component + 0.56363654136657715 + Green Component + 0.56485837697982788 + Red Component + 0.50599193572998047 + + Selection Color + + Blue Component + 0.19370138645172119 + Green Component + 0.15575926005840302 + Red Component + 0.0 + + + Solarized Light + + Ansi 0 Color + + Blue Component + 0.19370138645172119 + Green Component + 0.15575926005840302 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.14145712554454803 + Green Component + 0.10840645432472229 + Red Component + 0.81926983594894409 + + Ansi 10 Color + + Blue Component + 0.38298487663269043 + Green Component + 0.35665956139564514 + Red Component + 0.27671992778778076 + + Ansi 11 Color + + Blue Component + 0.43850564956665039 + Green Component + 0.40717673301696777 + Red Component + 0.32436618208885193 + + Ansi 12 Color + + Blue Component + 0.51685798168182373 + Green Component + 0.50962930917739868 + Red Component + 0.44058024883270264 + + Ansi 13 Color + + Blue Component + 0.72908437252044678 + Green Component + 0.33896297216415405 + Red Component + 0.34798634052276611 + + Ansi 14 Color + + Blue Component + 0.56363654136657715 + Green Component + 0.56485837697982788 + Red Component + 0.50599193572998047 + + Ansi 15 Color + + Blue Component + 0.86405980587005615 + Green Component + 0.95794391632080078 + Red Component + 0.98943418264389038 + + Ansi 2 Color + + Blue Component + 0.020208755508065224 + Green Component + 0.54115492105484009 + Red Component + 0.44977453351020813 + + Ansi 3 Color + + Blue Component + 0.023484811186790466 + Green Component + 0.46751424670219421 + Red Component + 0.64746475219726562 + + Ansi 4 Color + + Blue Component + 0.78231418132781982 + Green Component + 0.46265947818756104 + Red Component + 0.12754884362220764 + + Ansi 5 Color + + Blue Component + 0.43516635894775391 + Green Component + 0.10802463442087173 + Red Component + 0.77738940715789795 + + Ansi 6 Color + + Blue Component + 0.52502274513244629 + Green Component + 0.57082360982894897 + Red Component + 0.14679534733295441 + + Ansi 7 Color + + Blue Component + 0.79781103134155273 + Green Component + 0.89001238346099854 + Red Component + 0.91611063480377197 + + Ansi 8 Color + + Blue Component + 0.15170273184776306 + Green Component + 0.11783610284328461 + Red Component + 0.0 + + Ansi 9 Color + + Blue Component + 0.073530435562133789 + Green Component + 0.21325300633907318 + Red Component + 0.74176257848739624 + + Background Color + + Blue Component + 0.86405980587005615 + Green Component + 0.95794391632080078 + Red Component + 0.98943418264389038 + + Bold Color + + Blue Component + 0.38298487663269043 + Green Component + 0.35665956139564514 + Red Component + 0.27671992778778076 + + Cursor Color + + Blue Component + 0.43850564956665039 + Green Component + 0.40717673301696777 + Red Component + 0.32436618208885193 + + Cursor Text Color + + Blue Component + 0.79781103134155273 + Green Component + 0.89001238346099854 + Red Component + 0.91611063480377197 + + Foreground Color + + Blue Component + 0.43850564956665039 + Green Component + 0.40717673301696777 + Red Component + 0.32436618208885193 + + Selected Text Color + + Blue Component + 0.38298487663269043 + Green Component + 0.35665956139564514 + Red Component + 0.27671992778778076 + + Selection Color + + Blue Component + 0.79781103134155273 + Green Component + 0.89001238346099854 + Red Component + 0.91611063480377197 + + + arthur + + Ansi 0 Color + + Blue Component + 0.16470588743686676 + Green Component + 0.20784313976764679 + Red Component + 0.23921568691730499 + + Ansi 1 Color + + Blue Component + 0.36078432202339172 + Green Component + 0.36078432202339172 + Red Component + 0.80392158031463623 + + Ansi 10 Color + + Blue Component + 0.13333334028720856 + Green Component + 0.66666668653488159 + Red Component + 0.53333336114883423 + + Ansi 11 Color + + Blue Component + 0.364705890417099 + Green Component + 0.65490198135375977 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 0.92156863212585449 + Green Component + 0.80784314870834351 + Red Component + 0.52941179275512695 + + Ansi 13 Color + + Blue Component + 0.0 + Green Component + 0.40000000596046448 + Red Component + 0.60000002384185791 + + Ansi 14 Color + + Blue Component + 0.87058824300765991 + Green Component + 0.76862746477127075 + Red Component + 0.69019609689712524 + + Ansi 15 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.80000001192092896 + Red Component + 0.86666667461395264 + + Ansi 2 Color + + Blue Component + 0.50196081399917603 + Green Component + 0.68627452850341797 + Red Component + 0.52549022436141968 + + Ansi 3 Color + + Blue Component + 0.35686275362968445 + Green Component + 0.68235296010971069 + Red Component + 0.90980392694473267 + + Ansi 4 Color + + Blue Component + 0.92941176891326904 + Green Component + 0.58431375026702881 + Red Component + 0.39215686917304993 + + Ansi 5 Color + + Blue Component + 0.52941179275512695 + Green Component + 0.72156864404678345 + Red Component + 0.87058824300765991 + + Ansi 6 Color + + Blue Component + 0.87058824300765991 + Green Component + 0.76862746477127075 + Red Component + 0.69019609689712524 + + Ansi 7 Color + + Blue Component + 0.60000002384185791 + Green Component + 0.66666668653488159 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.26666668057441711 + Green Component + 0.26666668057441711 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.20000000298023224 + Green Component + 0.3333333432674408 + Red Component + 0.80000001192092896 + + Background Color + + Blue Component + 0.10980392247438431 + Green Component + 0.10980392247438431 + Red Component + 0.10980392247438431 + + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Color + + Blue Component + 0.93725490570068359 + Green Component + 0.73333334922790527 + Red Component + 0.88627451658248901 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.86666667461395264 + Green Component + 0.93333333730697632 + Red Component + 0.86666667461395264 + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + + hardcore + + Ansi 0 Color + + Blue Component + 0.11764705882352899 + Green Component + 0.113725490196078 + Red Component + 0.105882352941176 + + Ansi 1 Color + + Blue Component + 0.44705882352941201 + Green Component + 0.149019607843137 + Red Component + 0.97647058823529398 + + Ansi 10 Color + + Blue Component + 0.37254901960784298 + Green Component + 0.92941176470588205 + Red Component + 0.74509803921568596 + + Ansi 11 Color + + Blue Component + 0.454901960784314 + Green Component + 0.85882352941176499 + Red Component + 0.90196078431372595 + + Ansi 12 Color + + Blue Component + 0.93725490196078398 + Green Component + 0.85098039215686305 + Red Component + 0.40000000000000002 + + Ansi 13 Color + + Blue Component + 0.99607843137254903 + Green Component + 0.435294117647059 + Red Component + 0.61960784313725503 + + Ansi 14 Color + + Blue Component + 0.74901960784313704 + Green Component + 0.72941176470588198 + Red Component + 0.63921568627450998 + + Ansi 15 Color + + Blue Component + 0.94901960784313699 + Green Component + 0.97254901960784301 + Red Component + 0.97254901960784301 + + Ansi 2 Color + + Blue Component + 0.18039215686274501 + Green Component + 0.88627450980392197 + Red Component + 0.65098039215686299 + + Ansi 3 Color + + Blue Component + 0.12156862745098 + Green Component + 0.59215686274509804 + Red Component + 0.99215686274509796 + + Ansi 4 Color + + Blue Component + 0.93725490196078398 + Green Component + 0.85098039215686305 + Red Component + 0.40000000000000002 + + Ansi 5 Color + + Blue Component + 0.99607843137254903 + Green Component + 0.435294117647059 + Red Component + 0.61960784313725503 + + Ansi 6 Color + + Blue Component + 0.45882352941176502 + Green Component + 0.44313725490196099 + Red Component + 0.36862745098039201 + + Ansi 7 Color + + Blue Component + 0.77647058823529402 + Green Component + 0.80000000000000004 + Red Component + 0.80000000000000004 + + Ansi 8 Color + + Blue Component + 0.32941176470588202 + Green Component + 0.32549019607843099 + Red Component + 0.31372549019607798 + + Ansi 9 Color + + Blue Component + 0.61568627450980395 + Green Component + 0.40000000000000002 + Red Component + 1 + + Background Color + + Blue Component + 0.070588235294117604 + Green Component + 0.070588235294117604 + Red Component + 0.070588235294117604 + + Foreground Color + + Blue Component + 0.62745098039215697 + Green Component + 0.62745098039215697 + Red Component + 0.62745098039215697 + + + n0tch2k + + Ansi 0 Color + + Blue Component + 0.21960784494876862 + Green Component + 0.21960784494876862 + Red Component + 0.21960784494876862 + + Ansi 1 Color + + Blue Component + 0.31764706969261169 + Green Component + 0.3333333432674408 + Red Component + 0.66274511814117432 + + Ansi 10 Color + + Blue Component + 0.54901963472366333 + Green Component + 0.54901963472366333 + Red Component + 0.54901963472366333 + + Ansi 11 Color + + Blue Component + 0.45882353186607361 + Green Component + 0.56862747669219971 + Red Component + 0.66274511814117432 + + Ansi 12 Color + + Blue Component + 0.36862745881080627 + Green Component + 0.74117648601531982 + Red Component + 0.59607845544815063 + + Ansi 13 Color + + Blue Component + 0.63921570777893066 + Green Component + 0.63921570777893066 + Red Component + 0.63921570777893066 + + Ansi 14 Color + + Blue Component + 0.86274510622024536 + Green Component + 0.86274510622024536 + Red Component + 0.86274510622024536 + + Ansi 15 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.78431373834609985 + Red Component + 0.84705883264541626 + + Ansi 2 Color + + Blue Component + 0.40000000596046448 + Green Component + 0.40000000596046448 + Red Component + 0.40000000596046448 + + Ansi 3 Color + + Blue Component + 0.31764706969261169 + Green Component + 0.50196081399917603 + Red Component + 0.66274511814117432 + + Ansi 4 Color + + Blue Component + 0.24313725531101227 + Green Component + 0.49019607901573181 + Red Component + 0.3960784375667572 + + Ansi 5 Color + + Blue Component + 0.46274510025978088 + Green Component + 0.46274510025978088 + Red Component + 0.46274510025978088 + + Ansi 6 Color + + Blue Component + 0.78823530673980713 + Green Component + 0.78823530673980713 + Red Component + 0.78823530673980713 + + Ansi 7 Color + + Blue Component + 0.63921570777893066 + Green Component + 0.72156864404678345 + Red Component + 0.81568628549575806 + + Ansi 8 Color + + Blue Component + 0.27843138575553894 + Green Component + 0.27843138575553894 + Red Component + 0.27843138575553894 + + Ansi 9 Color + + Blue Component + 0.45882353186607361 + Green Component + 0.46666666865348816 + Red Component + 0.66274511814117432 + + Background Color + + Blue Component + 0.13333334028720856 + Green Component + 0.13333334028720856 + Red Component + 0.13333334028720856 + + Bold Color + + Blue Component + 0.89919352531433105 + Green Component + 0.89919352531433105 + Red Component + 0.89919352531433105 + + Cursor Color + + Blue Component + 0.40000000596046448 + Green Component + 0.80000001192092896 + Red Component + 1 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.62745100259780884 + Green Component + 0.62745100259780884 + Red Component + 0.62745100259780884 + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + + pnevma + + Ansi 0 Color + + Blue Component + 0.17647059261798859 + Green Component + 0.18039216101169586 + Red Component + 0.18431372940540314 + + Ansi 1 Color + + Blue Component + 0.40000000596046448 + Green Component + 0.40000000596046448 + Red Component + 0.63921570777893066 + + Ansi 10 Color + + Blue Component + 0.63529413938522339 + Green Component + 0.7450980544090271 + Red Component + 0.68627452850341797 + + Ansi 11 Color + + Blue Component + 0.68627452850341797 + Green Component + 0.78823530673980713 + Red Component + 0.89411765336990356 + + Ansi 12 Color + + Blue Component + 0.80784314870834351 + Green Component + 0.74117648601531982 + Red Component + 0.63137257099151611 + + Ansi 13 Color + + Blue Component + 0.85490196943283081 + Green Component + 0.7450980544090271 + Red Component + 0.84313726425170898 + + Ansi 14 Color + + Blue Component + 0.86666667461395264 + Green Component + 0.90588235855102539 + Red Component + 0.69411766529083252 + + Ansi 15 Color + + Blue Component + 0.93725490570068359 + Green Component + 0.93725490570068359 + Red Component + 0.93725490570068359 + + Ansi 2 Color + + Blue Component + 0.49019607901573181 + Green Component + 0.64705884456634521 + Red Component + 0.56470590829849243 + + Ansi 3 Color + + Blue Component + 0.52941179275512695 + Green Component + 0.68627452850341797 + Red Component + 0.84313726425170898 + + Ansi 4 Color + + Blue Component + 0.74117648601531982 + Green Component + 0.64705884456634521 + Red Component + 0.49803921580314636 + + Ansi 5 Color + + Blue Component + 0.76862746477127075 + Green Component + 0.61960786581039429 + Red Component + 0.78039216995239258 + + Ansi 6 Color + + Blue Component + 0.70588237047195435 + Green Component + 0.85882353782653809 + Red Component + 0.54117649793624878 + + Ansi 7 Color + + Blue Component + 0.81568628549575806 + Green Component + 0.81568628549575806 + Red Component + 0.81568628549575806 + + Ansi 8 Color + + Blue Component + 0.27058824896812439 + Green Component + 0.28235295414924622 + Red Component + 0.29019609093666077 + + Ansi 9 Color + + Blue Component + 0.52941179275512695 + Green Component + 0.52941179275512695 + Red Component + 0.84313726425170898 + + Background Color + + Blue Component + 0.10980392247438431 + Green Component + 0.10980392247438431 + Red Component + 0.10980392247438431 + + Bold Color + + Blue Component + 0.89919352531433105 + Green Component + 0.89919352531433105 + Red Component + 0.89919352531433105 + + Cursor Color + + Blue Component + 0.40000000596046448 + Green Component + 0.80000001192092896 + Red Component + 1 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.81568628549575806 + Green Component + 0.81568628549575806 + Red Component + 0.81568628549575806 + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + + robina + + Ansi 0 Color + + Blue Component + 0.20784313976764679 + Green Component + 0.20784313976764679 + Red Component + 0.20784313976764679 + + Ansi 1 Color + + Blue Component + 0.37647059559822083 + Green Component + 0.094117648899555206 + Red Component + 0.84705883264541626 + + Ansi 10 Color + + Blue Component + 0.46666666865348816 + Green Component + 0.87843137979507446 + Red Component + 0.74117648601531982 + + Ansi 11 Color + + Blue Component + 0.38823530077934265 + Green Component + 0.90980392694473267 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 0.69019609689712524 + Green Component + 0.58823531866073608 + Red Component + 0.48627451062202454 + + Ansi 13 Color + + Blue Component + 0.84705883264541626 + Green Component + 0.74901962280273438 + Red Component + 0.84705883264541626 + + Ansi 14 Color + + Blue Component + 0.54901963472366333 + Green Component + 0.90196079015731812 + Red Component + 0.94117647409439087 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.25882354378700256 + Green Component + 0.80784314870834351 + Red Component + 0.71764707565307617 + + Ansi 3 Color + + Blue Component + 0.23529411852359772 + Green Component + 0.65098041296005249 + Red Component + 0.99607843160629272 + + Ansi 4 Color + + Blue Component + 0.70588237047195435 + Green Component + 0.60000002384185791 + Red Component + 0.43529412150382996 + + Ansi 5 Color + + Blue Component + 0.54509806632995605 + Green Component + 0.48235294222831726 + Red Component + 0.54509806632995605 + + Ansi 6 Color + + Blue Component + 0.36862745881080627 + Green Component + 0.63137257099151611 + Red Component + 0.65490198135375977 + + Ansi 7 Color + + Blue Component + 0.86666667461395264 + Green Component + 0.86666667461395264 + Red Component + 0.86666667461395264 + + Ansi 8 Color + + Blue Component + 0.40000000596046448 + Green Component + 0.40000000596046448 + Red Component + 0.40000000596046448 + + Ansi 9 Color + + Blue Component + 0.37647059559822083 + Green Component + 0.0 + Red Component + 0.94117647409439087 + + Background Color + + Blue Component + 0.12941177189350128 + Green Component + 0.12549020349979401 + Red Component + 0.12941177189350128 + + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Color + + Blue Component + 0.16470588743686676 + Green Component + 0.59215688705444336 + Red Component + 0.99215686321258545 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.86666667461395264 + Green Component + 0.86666667461395264 + Red Component + 0.86666667461395264 + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + + square + + Ansi 0 Color + + Blue Component + 0.019607843831181526 + Green Component + 0.019607843831181526 + Red Component + 0.019607843831181526 + + Ansi 1 Color + + Blue Component + 0.48627451062202454 + Green Component + 0.5372549295425415 + Red Component + 0.91372549533843994 + + Ansi 10 Color + + Blue Component + 0.52549022436141968 + Green Component + 0.9686274528503418 + Red Component + 0.76470589637756348 + + Ansi 11 Color + + Blue Component + 0.80000001192092896 + Green Component + 0.9843137264251709 + Red Component + 0.98823529481887817 + + Ansi 12 Color + + Blue Component + 0.9843137264251709 + Green Component + 0.87058824300765991 + Red Component + 0.7137255072593689 + + Ansi 13 Color + + Blue Component + 0.65882354974746704 + Green Component + 0.49803921580314636 + Red Component + 0.67843139171600342 + + Ansi 14 Color + + Blue Component + 0.98823529481887817 + Green Component + 0.85098040103912354 + Red Component + 0.84313726425170898 + + Ansi 15 Color + + Blue Component + 0.88627451658248901 + Green Component + 0.88627451658248901 + Red Component + 0.88627451658248901 + + Ansi 2 Color + + Blue Component + 0.49019607901573181 + Green Component + 0.21568627655506134 + Red Component + 0.7137255072593689 + + Ansi 3 Color + + Blue Component + 0.7450980544090271 + Green Component + 0.92156863212585449 + Red Component + 0.92549020051956177 + + Ansi 4 Color + + Blue Component + 0.92156863212585449 + Green Component + 0.80392158031463623 + Red Component + 0.66274511814117432 + + Ansi 5 Color + + Blue Component + 0.48235294222831726 + Green Component + 0.31372550129890442 + Red Component + 0.45882353186607361 + + Ansi 6 Color + + Blue Component + 0.92549020051956177 + Green Component + 0.7921568751335144 + Red Component + 0.78823530673980713 + + Ansi 7 Color + + Blue Component + 0.94901961088180542 + Green Component + 0.94901961088180542 + Red Component + 0.94901961088180542 + + Ansi 8 Color + + Blue Component + 0.078431375324726105 + Green Component + 0.078431375324726105 + Red Component + 0.078431375324726105 + + Ansi 9 Color + + Blue Component + 0.52549022436141968 + Green Component + 0.57254904508590698 + Red Component + 0.97647058963775635 + + Background Color + + Blue Component + 0.10196078568696976 + Green Component + 0.10196078568696976 + Red Component + 0.10196078568696976 + + Bold Color + + Blue Component + 0.89919352531433105 + Green Component + 0.89919352531433105 + Red Component + 0.89919352531433105 + + Cursor Color + + Blue Component + 0.40000000596046448 + Green Component + 0.80000001192092896 + Red Component + 1 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.67058825492858887 + Green Component + 0.67450982332229614 + Red Component + 0.67450982332229614 + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + + wez + + 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 + 0.80000001192092896 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.80000001192092896 + Red Component + 0.3333333432674408 + + Ansi 3 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.80392158031463623 + Red Component + 0.80392158031463623 + + Ansi 4 Color + + Blue Component + 0.79914551973342896 + Green Component + 0.3342793881893158 + Red Component + 0.33211678266525269 + + Ansi 5 Color + + Blue Component + 0.80000001192092896 + Green Component + 0.3333333432674408 + Red Component + 0.80000001192092896 + + Ansi 6 Color + + Blue Component + 0.7921568751335144 + Green Component + 0.7921568751335144 + Red Component + 0.47843137383460999 + + Ansi 7 Color + + Blue Component + 0.80001527070999146 + Green Component + 0.80001527070999146 + Red Component + 0.80001527070999146 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Bold Color + + Blue Component + 0.27843138575553894 + Green Component + 0.38823530077934265 + Red Component + 1 + + Cursor Color + + Blue Component + 0.44258794188499451 + Green Component + 0.68151366710662842 + Red Component + 0.32484930753707886 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Foreground Color + + Blue Component + 0.70197606086730957 + Green Component + 0.70197606086730957 + Red Component + 0.70197606086730957 + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 0.97329670190811157 + Green Component + 0.32248416543006897 + Red Component + 0.30139619112014771 + + + + Default Arrangement Name + Side-By-Side + Default Bookmark Guid + 04984D44-914B-4A49-8AB5-B2ABB5F8A100 + DeleteSendsCtrlH + 0 + DimBackgroundWindows + + DimInactiveSplitPanes + + DimOnlyText + + DisableFullscreenTransparency + + Displays + + Dark Background + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Anti Alias + 1 + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Bold Color + + Blue Component + 0.49019607843137247 + Green Component + 0.49019607843137247 + Red Component + 1 + + Columns + 80 + 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 + + Disable Bold + 0 + Font + Monaco 12 + Foreground Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Horizontal Character Spacing + 1 + NAFont + Monaco 12 + Rows + 24 + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Transparency + 0.0 + Vertical Character Spacing + 1 + + Light Background + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Anti Alias + 1 + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Columns + 80 + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Default Profile + Yes + Disable Bold + 0 + Font + Monaco 12 + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Horizontal Character Spacing + 1 + NAFont + Monaco 12 + Rows + 24 + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Transparency + 0.0 + Vertical Character Spacing + 1 + + + EnableGrowl + 0 + EnableRendezvous + + FocusFollowsMouse + + FsTabDelay + 1.2331217527389526 + HiddenAFRStrokeThickness + 0.0 + HiddenAdvancedFontRendering + + HideActivityIndicator + + HideMenuBarInFullscreen + + HideScrollbar + + HideTab + + HighlightTabLabels + + HotKeyBookmark + D9F84D29-1805-46B6-8F2F-8E762A933040 + HotKeyTogglesWindow + + Hotkey + + HotkeyChar + 0 + HotkeyCode + 0 + HotkeyModifiers + 0 + IRMemory + 4 + InstantReplay + 1 + JobName + + KeyBindings + + Global + + Global Profile + Yes + Key Mappings + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + + xterm + + Key Mappings + + 0x7f-0x0 + + Action + 11 + Text + 7f + + 0xf700-0x220000 + + Action + 10 + Text + O2A + + 0xf701-0x220000 + + Action + 10 + Text + O2B + + 0xf702-0x220000 + + Action + 10 + Text + O2D + + 0xf702-0x240000 + + Action + 10 + Priority + 1 + Text + O5D + + 0xf703-0x220000 + + Action + 10 + Text + O2C + + 0xf703-0x240000 + + Action + 10 + Priority + 1 + Text + O5C + + 0xf704-0x20000 + + Action + 10 + Text + [11;2~ + + 0xf705-0x20000 + + Action + 10 + Text + [12;2~ + + 0xf706-0x20000 + + Action + 10 + Text + [13;2~ + + 0xf707-0x20000 + + Action + 10 + Text + [14;2~ + + 0xf708-0x20000 + + Action + 10 + Text + [15;2~ + + 0xf709-0x20000 + + Action + 10 + Text + [17;2~ + + 0xf70a-0x20000 + + Action + 10 + Text + [18;2~ + + 0xf70b-0x20000 + + Action + 10 + Text + [19;2~ + + 0xf70c-0x20000 + + Action + 10 + Text + [20;2~ + + 0xf70d-0x20000 + + Action + 10 + Text + [21;2~ + + 0xf70e-0x20000 + + Action + 10 + Text + [23;2~ + + 0xf70f-0x20000 + + Action + 10 + Text + [24;2~ + + 0xf729-0x20000 + + Action + 10 + Text + O2H + + 0xf729-0x40000 + + Action + 10 + Text + O5H + + 0xf72b-0x20000 + + Action + 10 + Text + O2F + + 0xf72b-0x40000 + + Action + 10 + Text + O5F + + + + + Last Updated Version + 0.10 + LeftCommand + 7 + LeftOption + 2 + LoadPrefsFromCustomFolder + + MaxVertically + + MinimumContrast + 0.0 + NSNavLastRootDirectory + ~/.dotfiles + NSNavPanelExpandedSizeForOpenMode + {1106, 813} + NSQuotedKeystrokeBinding + + NSRepeatCountBinding + + NSScrollAnimationEnabled + + NSWindow Frame Preferences + 67 163 924 485 0 0 1440 877 + NSWindow Frame UKCrashReporter + 99 293 592 584 0 0 1440 877 + NSWindow Frame iTerm Window 0 + 162 91 972 697 0 0 1440 877 + NeverWarnAboutShortLivedSessions_04984D44-914B-4A49-8AB5-B2ABB5F8A100 + + New Bookmarks + + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + Yes + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 04984D44-914B-4A49-8AB5-B2ABB5F8A100 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.75966143608093262 + Mouse Reporting + + Name + Black-Solid + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.80000001192092896 + + Ansi 10 Color + + Blue Component + 0.2039216011762619 + Green Component + 0.88627451658248901 + Red Component + 0.54117649793624878 + + Ansi 11 Color + + Blue Component + 0.30980390310287476 + Green Component + 0.91372549533843994 + Red Component + 0.98823529481887817 + + Ansi 12 Color + + Blue Component + 0.81176471710205078 + Green Component + 0.62352937459945679 + Red Component + 0.44705879688262939 + + Ansi 13 Color + + Blue Component + 0.65882349014282227 + Green Component + 0.49803918600082397 + Red Component + 0.67843139171600342 + + Ansi 14 Color + + Blue Component + 0.88627451658248901 + Green Component + 0.88627451658248901 + Red Component + 0.2039216011762619 + + Ansi 15 Color + + Blue Component + 0.92549020051956177 + Green Component + 0.93333327770233154 + Red Component + 0.93333327770233154 + + Ansi 2 Color + + Blue Component + 0.023529410362243652 + Green Component + 0.60392159223556519 + Red Component + 0.30588239431381226 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.62745100259780884 + Red Component + 0.76862752437591553 + + Ansi 4 Color + + Blue Component + 0.64313727617263794 + Green Component + 0.39607840776443481 + Red Component + 0.2039216011762619 + + Ansi 5 Color + + Blue Component + 0.48235291242599487 + Green Component + 0.31372550129890442 + Red Component + 0.45882350206375122 + + Ansi 6 Color + + Blue Component + 0.60392159223556519 + Green Component + 0.59607851505279541 + Red Component + 0.023529410362243652 + + Ansi 7 Color + + Blue Component + 0.81176471710205078 + Green Component + 0.84313732385635376 + Red Component + 0.82745099067687988 + + Ansi 8 Color + + Blue Component + 0.32549020648002625 + Green Component + 0.34117650985717773 + Red Component + 0.33333331346511841 + + Ansi 9 Color + + Blue Component + 0.16078430414199829 + Green Component + 0.16078430414199829 + Red Component + 0.93725490570068359 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + D9F84D29-1805-46B6-8F2F-8E762A933040 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.68596357107162476 + Mouse Reporting + + Name + Scratch-Light + Non Ascii Font + Monaco 24 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + S + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Code + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1.0878773927688599 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Scratch + + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + FFEAAB65-5C55-4E5C-858F-518A99BC1272 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Scratch-White + Non Ascii Font + Monaco 10 + Non-ASCII Anti Aliased + + Normal Font + Monaco 10 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Scratch + + + NoSyncTimeOfLastPromo + 461743666.53294802 + NoSyncTimeOfLastPromoDownload + 474755665.79863501 + NotFirstRun + + OnlyWhenMoreTabs + + OpenArrangementAtStartup + + OpenBookmark + + OpenTmuxWindowsIn + 0 + PassOnControlClick + + PasteFromClipboard + + PointerActions + + Button,1,1,, + + Action + kContextMenuPointerAction + + Gesture,ThreeFingerSwipeDown,, + + Action + kPrevWindowPointerAction + + Gesture,ThreeFingerSwipeLeft,, + + Action + kPrevTabPointerAction + + Gesture,ThreeFingerSwipeRight,, + + Action + kNextTabPointerAction + + Gesture,ThreeFingerSwipeUp,, + + Action + kNextWindowPointerAction + + + PrefsCustomFolder + /Users/matthewmccullough/.dotfiles + PromptOnClose + + PromptOnQuit + + QuitWhenAllWindowsClosed + + RefreshRate + 25 + RightCommand + 8 + RightOption + 3 + SUAutomaticallyUpdate + + SUEnableAutomaticChecks + + SUFeedURL + https://iterm2.com/appcasts/testing.xml + SUHasLaunchedBefore + + SULastCheckTime + 2016-01-17T20:34:09Z + SavePasteHistory + + Secure Input + + Show Toolbelt + + ShowBookmarkName + + ShowFullScreenTabBar + + ShowPaneTitles + + SmartPlacement + + SplitPaneDimmingAmount + 0.51256006956100464 + SwitchTabModifier + 4 + SwitchWindowModifier + 6 + TabViewType + 0 + Terminals + + Default + + Auto Close + 1 + Blink + 0 + Default Profile + Yes + Double Width + 1 + Encoding + 4 + Idle Char + 0 + Scrollback + 1000 + Send Idle Char + 0 + Silence Bell + 0 + Term Type + xterm + + + ThreeFingerEmulates + + TmuxDashboardLimit + 10 + ToolbeltTools + + Jobs + Paste History + Profiles + Notes + + TripleClickSelectsFullWrappedLines + + UKCrashReporterLastCrashReportDate + 1416457728 + URLHandlers + + URLHandlersByGuid + + Use background pattern indicator + + UseBorder + + UseCompactLabel + + UseLionStyleFullscreen + + WebKitDefaultFontSize + 11 + WebKitStandardFont + Lucida Grande + Window Arrangements + + Arrangement 2 + + + Height + 553 + Hide After Opening + + Screen + 0 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + bash -l + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + 7D456D1D-F04B-4D07-AA12-D3E0E4D4B67F + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 10 + Non-ASCII Anti Aliased + + Normal Font + Monaco 10 + Option Key Sends + 0 + Original Guid + FFEAAB65-5C55-4E5C-858F-518A99BC1272 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Scratch + + Columns + 105 + Rows + 36 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 508 + width + 640 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 508 + width + 640 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-774AD051-9E1C-4B93-B308-9F293063B595 + Width + 642 + Window Type + 0 + X Origin + 115 + Y Origin + 561 + + + Height + 720 + Hide After Opening + + Old Height + 715 + Old Width + 1076 + Old X Origin + -1234 + Old Y Origin + 722 + Screen + 1 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 105 + Rows + 16 + Working Directory + /Users/mccm06/Documents/Scratch/hgwmine + + View Type + SessionView + frame + + height + 463 + width + 1280 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + D69A932C-E01C-4AA6-BE8E-AB9106994B34 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 6 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 16 + Option Key Sends + 0 + Original Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 158 + Rows + 12 + Working Directory + /Users/mccm06/Documents/Scratch/hgwmine + + View Type + SessionView + frame + + height + 256 + width + 1280 + x + 0.0 + y + 464 + + + + View Type + Splitter + frame + + height + 720 + width + 1280 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-C5C912B6-14C0-4258-A56E-6F15918B2A2B + Width + 1280 + Window Type + 1 + X Origin + -1280 + Y Origin + 720 + + + Git Class Three Up + + + Height + 720 + Hide After Opening + + Old Height + 697 + Old Width + 972 + Old X Origin + -1092 + Old Y Origin + 721 + Screen + 1 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 71 + Rows + 17 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 496 + width + 868 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 870327C6-0959-4E38-BD97-159A5835FB3A + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 7 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 17 + Option Key Sends + 0 + Original Guid + DAFA969F-672A-4F9B-A9B5-CE8FBF5D290E + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 95 + Rows + 10 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 223 + width + 868 + x + 0.0 + y + 497 + + + + View Type + Splitter + frame + + height + 720 + width + 868 + x + 0.0 + y + 0.0 + + isVertical + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + C8602654-4F12-4E00-BC8A-7EC08E4B3920 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 4 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 14 + Option Key Sends + 0 + Original Guid + 406F1B36-15A4-4AE8-8316-038217CFF083 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 57 + Rows + 43 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes + + View Type + SessionView + frame + + height + 720 + width + 411 + x + 869 + y + 0.0 + + + + View Type + Splitter + frame + + height + 720 + width + 1280 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 + Width + 1280 + Window Type + 1 + X Origin + -1280 + Y Origin + 720 + + + O'Reilly Class Today + + + Desired Columns + 80 + Desired Rows + 24 + Height + 950 + Hide After Opening + + Screen + 0 + Selected Tab Index + 1 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 1 + Red Component + 1 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.43553587794303894 + Green Component + 0.41699209809303284 + Red Component + 0.98909229040145874 + + Guid + D300C14A-8561-493B-AAC9-F58CDF1C112C + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + O'Reilly Logs + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + oreilly + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Downloads + + Columns + 135 + Rows + 33 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 905 + width + 1645 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 905 + width + 1645 + x + 0.0 + y + 0.0 + + isVertical + + + + + Root + + Subviews + + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.99424785375595093 + Green Component + 1 + Red Component + 0.37502476572990417 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + CF1DD721-0FA4-4C34-B8C9-C0DAC1ADB191 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + O'Reilly Commands + Non Ascii Font + Monaco 21 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 31 + Option Key Sends + 0 + Original Guid + EB0940A7-C7AB-4282-A456-68AFF85C893C + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + oreilly + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 66 + Rows + 18 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 685 + width + 1095 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.99424785375595093 + Green Component + 1 + Red Component + 0.37502476572990417 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + B503787A-EF3A-4E03-969C-0549CBEC2AF7 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + O'Reilly Commands + Non Ascii Font + Monaco 7 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 17 + Option Key Sends + 0 + Original Guid + EB0940A7-C7AB-4282-A456-68AFF85C893C + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + oreilly + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 58 + Rows + 34 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 685 + width + 549 + x + 1096 + y + 0.0 + + + + View Type + Splitter + frame + + height + 685 + width + 1645 + x + 0.0 + y + 0.0 + + isVertical + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + bash -l + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + 3538A360-C7BB-4D6F-9974-260202D4EDCD + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + O'Reilly Commands + Non Ascii Font + Monaco 10 + Non-ASCII Anti Aliased + + Normal Font + Monaco 10 + Option Key Sends + 0 + Original Guid + FFEAAB65-5C55-4E5C-858F-518A99BC1272 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Scratch + + Columns + 270 + Rows + 13 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 219 + width + 1645 + x + 0.0 + y + 686 + + + + View Type + Splitter + frame + + height + 905 + width + 1645 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-B8714FBB-AB2A-4D0F-A12F-90A9B99C2DE6 + Width + 1646 + Window Type + 0 + X Origin + 164 + Y Origin + 84 + + + Opaque Black 3 Up + + + Desired Columns + -1 + Desired Rows + -1 + Height + 1200 + Hide After Opening + + Old Height + 697 + Old Width + 972 + Old X Origin + -1092 + Old Y Origin + 721 + Screen + 0 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + Yes + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 2CCDAF72-41C3-4C7B-8E3D-008A728CA275 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.75966143608093262 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Original Guid + ECFB63A4-2E95-41D1-9ECA-65F9EE3DDD8A + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 107 + Rows + 29 + Working Directory + /Users/mccm06/Documents/Scratch/foundations-git-class/project1 + + View Type + SessionView + frame + + height + 827 + width + 1302 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + Yes + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + BD198098-A497-45B4-9BD6-85DCAB0AEE6B + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.75966143608093262 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Original Guid + F54A1F7C-437B-46EA-B1A2-5A8043605E14 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 107 + Rows + 12 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 372 + width + 1302 + x + 0.0 + y + 828 + + + + View Type + Splitter + frame + + height + 1200 + width + 1302 + x + 0.0 + y + 0.0 + + isVertical + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + Yes + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + D09C9431-62EC-4BF9-A081-8F7C15ADC273 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.75966143608093262 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Original Guid + 8F2AB358-E742-408A-AF77-AB23AB652B79 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.3 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 50 + Rows + 43 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes + + View Type + SessionView + frame + + height + 1200 + width + 617 + x + 1303 + y + 0.0 + + + + View Type + Splitter + frame + + height + 1200 + width + 1920 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 + Width + 1920 + Window Type + 1 + X Origin + 0.0 + Y Origin + 0.0 + + + Oreilly + + + Desired Columns + 80 + Desired Rows + 24 + Height + 887 + Hide After Opening + + Screen + 0 + Selected Tab Index + 3 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Allow Title Reporting + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Is Tiled + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + Yes + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 04984D44-914B-4A49-8AB5-B2ABB5F8A100 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Solid + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Use Canonical Parser + + Use Italic Font + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 75 + Rows + 31 + Working Directory + /Users/mccm06/.dotfiles + + View Type + SessionView + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + isVertical + + + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + bash -l + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + FFEAAB65-5C55-4E5C-858F-518A99BC1272 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Scratch-White + Non Ascii Font + Monaco 10 + Non-ASCII Anti Aliased + + Normal Font + Monaco 10 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Scratch + + Columns + 150 + Rows + 59 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + isVertical + + + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + bash -l + Cursor Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Yes + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Guid + 44E0C79E-1887-4867-BF26-64B34F5BCA26 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + HelloGitWorld + Non Ascii Font + Monaco 10 + Non-ASCII Anti Aliased + + Normal Font + Monaco 10 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 1000 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + ~/Documents/Teach/Courses/Git-Going-1Hour/examples/hellogitworld.git + + Columns + 150 + Rows + 59 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + isVertical + + + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.11764705926179886 + Green Component + 0.11372549086809158 + Red Component + 0.10588235408067703 + + Ansi 1 Color + + Blue Component + 0.44705882668495178 + Green Component + 0.14901961386203766 + Red Component + 0.97647058963775635 + + Ansi 10 Color + + Blue Component + 0.37254902720451355 + Green Component + 0.92941176891326904 + Red Component + 0.7450980544090271 + + Ansi 11 Color + + Blue Component + 0.45490196347236633 + Green Component + 0.85882353782653809 + Red Component + 0.90196079015731812 + + Ansi 12 Color + + Blue Component + 0.93725490570068359 + Green Component + 0.85098040103912354 + Red Component + 0.40000000596046448 + + Ansi 13 Color + + Blue Component + 0.99607843160629272 + Green Component + 0.43529412150382996 + Red Component + 0.61960786581039429 + + Ansi 14 Color + + Blue Component + 0.74901962280273438 + Green Component + 0.729411780834198 + Red Component + 0.63921570777893066 + + Ansi 15 Color + + Blue Component + 0.94901961088180542 + Green Component + 0.97254902124404907 + Red Component + 0.97254902124404907 + + Ansi 2 Color + + Blue Component + 0.18039216101169586 + Green Component + 0.88627451658248901 + Red Component + 0.65098041296005249 + + Ansi 3 Color + + Blue Component + 0.12156862765550613 + Green Component + 0.59215688705444336 + Red Component + 0.99215686321258545 + + Ansi 4 Color + + Blue Component + 0.93725490570068359 + Green Component + 0.85098040103912354 + Red Component + 0.40000000596046448 + + Ansi 5 Color + + Blue Component + 0.99607843160629272 + Green Component + 0.43529412150382996 + Red Component + 0.61960786581039429 + + Ansi 6 Color + + Blue Component + 0.45882353186607361 + Green Component + 0.44313725829124451 + Red Component + 0.36862745881080627 + + Ansi 7 Color + + Blue Component + 0.7764706015586853 + Green Component + 0.80000001192092896 + Red Component + 0.80000001192092896 + + Ansi 8 Color + + Blue Component + 0.32941177487373352 + Green Component + 0.32549020648002625 + Red Component + 0.31372550129890442 + + Ansi 9 Color + + Blue Component + 0.61568629741668701 + Green Component + 0.40000000596046448 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.070588238537311554 + Green Component + 0.070588238537311554 + Red Component + 0.070588238537311554 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.89919352531433105 + Green Component + 0.89919352531433105 + Red Component + 0.89919352531433105 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + Cursor Color + + Blue Component + 0.40000000596046448 + Green Component + 0.80000001192092896 + Red Component + 1 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Type + 2 + Custom Command + No + Custom Directory + No + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.62745100259780884 + Green Component + 0.62745100259780884 + Red Component + 0.62745100259780884 + + Guid + 13137829-6CF1-477F-89FD-82F64418F743 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Git Workbook + Non Ascii Font + Monaco 9 + Non-ASCII Anti Aliased + + Normal Font + Monaco 9 + Option Key Sends + 0 + Original Guid + 59AB5D02-1269-4904-B751-83F2B55BA254 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 1000 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Teach/Courses/Git/repos/workbook_and_examples_git + + Columns + 89 + Rows + 62 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 842 + width + 455 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.11764705926179886 + Green Component + 0.11372549086809158 + Red Component + 0.10588235408067703 + + Ansi 1 Color + + Blue Component + 0.44705882668495178 + Green Component + 0.14901961386203766 + Red Component + 0.97647058963775635 + + Ansi 10 Color + + Blue Component + 0.37254902720451355 + Green Component + 0.92941176891326904 + Red Component + 0.7450980544090271 + + Ansi 11 Color + + Blue Component + 0.45490196347236633 + Green Component + 0.85882353782653809 + Red Component + 0.90196079015731812 + + Ansi 12 Color + + Blue Component + 0.93725490570068359 + Green Component + 0.85098040103912354 + Red Component + 0.40000000596046448 + + Ansi 13 Color + + Blue Component + 0.99607843160629272 + Green Component + 0.43529412150382996 + Red Component + 0.61960786581039429 + + Ansi 14 Color + + Blue Component + 0.74901962280273438 + Green Component + 0.729411780834198 + Red Component + 0.63921570777893066 + + Ansi 15 Color + + Blue Component + 0.94901961088180542 + Green Component + 0.97254902124404907 + Red Component + 0.97254902124404907 + + Ansi 2 Color + + Blue Component + 0.18039216101169586 + Green Component + 0.88627451658248901 + Red Component + 0.65098041296005249 + + Ansi 3 Color + + Blue Component + 0.12156862765550613 + Green Component + 0.59215688705444336 + Red Component + 0.99215686321258545 + + Ansi 4 Color + + Blue Component + 0.93725490570068359 + Green Component + 0.85098040103912354 + Red Component + 0.40000000596046448 + + Ansi 5 Color + + Blue Component + 0.99607843160629272 + Green Component + 0.43529412150382996 + Red Component + 0.61960786581039429 + + Ansi 6 Color + + Blue Component + 0.45882353186607361 + Green Component + 0.44313725829124451 + Red Component + 0.36862745881080627 + + Ansi 7 Color + + Blue Component + 0.7764706015586853 + Green Component + 0.80000001192092896 + Red Component + 0.80000001192092896 + + Ansi 8 Color + + Blue Component + 0.32941177487373352 + Green Component + 0.32549020648002625 + Red Component + 0.31372550129890442 + + Ansi 9 Color + + Blue Component + 0.61568629741668701 + Green Component + 0.40000000596046448 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.070588238537311554 + Green Component + 0.070588238537311554 + Red Component + 0.070588238537311554 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 2 + Bold Color + + Blue Component + 0.89919352531433105 + Green Component + 0.89919352531433105 + Red Component + 0.89919352531433105 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + Cursor Color + + Blue Component + 0.40000000596046448 + Green Component + 0.80000001192092896 + Red Component + 1 + + Cursor Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Cursor Type + 2 + Custom Command + No + Custom Directory + No + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.62745100259780884 + Green Component + 0.62745100259780884 + Red Component + 0.62745100259780884 + + Guid + DD7E1D7D-CAFF-4B7B-9403-422E08C54E01 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Git Workbook + Non Ascii Font + Monaco 25 + Non-ASCII Anti Aliased + + Normal Font + Monaco 25 + Option Key Sends + 0 + Original Guid + 59AB5D02-1269-4904-B751-83F2B55BA254 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 1000 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Selection Color + + Blue Component + 0.30241936445236206 + Green Component + 0.30241936445236206 + Red Component + 0.30241936445236206 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + GitGoing + + Terminal Type + xterm + Transparency + 0.0 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Teach/Courses/Git/repos/workbook_and_examples_git + + Columns + 28 + Rows + 24 + Working Directory + /Users/mccm06/.dotfiles/scripts + + View Type + SessionView + frame + + height + 842 + width + 459 + x + 456 + y + 0.0 + + + + View Type + Splitter + frame + + height + 842 + width + 915 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-F273DDA7-A494-4902-9E0C-7BA710D382DE + Width + 917 + Window Type + 0 + X Origin + 549 + Y Origin + 150 + + + Side-By-Side + + + Height + 1024 + Hide After Opening + + Screen + 0 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 69 + Rows + 36 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 979 + width + 838 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 979 + width + 838 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-8F263882-81C3-426D-B419-69B3CA750E01 + Width + 840 + Window Type + 0 + X Origin + 0.0 + Y Origin + 4 + + + Height + 1024 + Hide After Opening + + Screen + 0 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 69 + Rows + 36 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com + + View Type + SessionView + frame + + height + 979 + width + 838 + x + 0.0 + y + 0.0 + + + + View Type + Splitter + frame + + height + 979 + width + 838 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-DF0BE419-ED62-4318-862E-462CFE78FB13 + Width + 840 + Window Type + 0 + X Origin + 840 + Y Origin + 4 + + + Teaching Four-up + + + Desired Columns + 80 + Desired Rows + 24 + Height + 900 + Hide After Opening + + Old Height + 697 + Old Width + 972 + Old X Origin + -1092 + Old Y Origin + 721 + Screen + 0 + Selected Tab Index + 0 + Tabs + + + Root + + Subviews + + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 35B298A6-C7D2-4E51-A93F-7C91B75D95AE + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 14 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 24 + Option Key Sends + 0 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 80 + Rows + 22 + Working Directory + /Users/mccm06/Documents/Scratch/hellogitworld + + View Type + SessionView + frame + + height + 620 + width + 977 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + D8AB0622-7254-4AEA-9364-AB78E782D766 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 7 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 17 + Option Key Sends + 0 + Original Guid + 870327C6-0959-4E38-BD97-159A5835FB3A + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 107 + Rows + 13 + Working Directory + /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes + + View Type + SessionView + frame + + height + 279 + width + 977 + x + 0.0 + y + 621 + + + + View Type + Splitter + frame + + height + 900 + width + 977 + x + 0.0 + y + 0.0 + + isVertical + + + + Subviews + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 6C1D5935-44A2-4D5B-9176-0AE3B3F40BF8 + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 2 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 12 + Option Key Sends + 0 + Original Guid + C8602654-4F12-4E00-BC8A-7EC08E4B3920 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 75 + Rows + 30 + Working Directory + /Users/mccm06/Documents/Scratch/hellogitworld + + View Type + SessionView + frame + + height + 449.5 + width + 462 + x + 0.0 + y + 0.0 + + + + Is Active + + Session + + Bookmark + + ASCII Anti Aliased + + Ambiguous Double Width + + Ansi 0 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 1 Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 10 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 11 Color + + Blue Component + 0.3333333432674408 + Green Component + 1 + Red Component + 1 + + Ansi 12 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 13 Color + + Blue Component + 1 + Green Component + 0.3333333432674408 + Red Component + 1 + + Ansi 14 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 0.3333333432674408 + + Ansi 15 Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Ansi 2 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 3 Color + + Blue Component + 0.0 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 4 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.0 + + Ansi 5 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.0 + Red Component + 0.73333334922790527 + + Ansi 6 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.0 + + Ansi 7 Color + + Blue Component + 0.73333334922790527 + Green Component + 0.73333334922790527 + Red Component + 0.73333334922790527 + + Ansi 8 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 0.3333333432674408 + + Ansi 9 Color + + Blue Component + 0.3333333432674408 + Green Component + 0.3333333432674408 + Red Component + 1 + + Automatically Log + + BM Growl + + Background Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Background Image Location + + Blend + 0.30000001192092896 + Blink Allowed + + Blinking Cursor + + Blur + + Blur Radius + 6.1769638061523438 + Bold Color + + Blue Component + 1 + Green Component + 1 + Red Component + 1 + + Character Encoding + 4 + Close Sessions On End + + Columns + 80 + Command + /bin/zsh -i + 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 + + Cursor Type + 2 + Custom Command + No + Custom Directory + Recycle + Default Bookmark + No + Disable Printing + + Disable Smcup Rmcup + + Disable Window Resizing + + Flashing Bell + + Foreground Color + + Blue Component + 0.99999129772186279 + Green Component + 0.99997437000274658 + Red Component + 1 + + Guid + 12DEDB6F-2FE7-49AC-838C-B393AE33FC0D + Hide After Opening + + Horizontal Spacing + 1 + Idle Code + 0 + Initial Text + + Jobs to Ignore + + rlogin + ssh + slogin + telnet + + Keyboard Map + + 0xf700-0x220000 + + Action + 7 + + 0xf701-0x220000 + + Action + 6 + + 0xf702-0x320000 + + Action + 2 + + 0xf702-0x380000 + + Action + 2 + + 0xf703-0x320000 + + Action + 0 + + 0xf703-0x380000 + + Action + 0 + + 0xf729-0x20000 + + Action + 5 + + 0xf72b-0x20000 + + Action + 4 + + 0xf72c-0x20000 + + Action + 9 + + 0xf72d-0x20000 + + Action + 8 + + + Log Directory + + Minimum Contrast + 0.0 + Mouse Reporting + + Name + Black-Transparent2 + Non Ascii Font + Monaco 7 + Non-ASCII Anti Aliased + + Normal Font + Inconsolata 17 + Option Key Sends + 0 + Original Guid + 6C1D5935-44A2-4D5B-9176-0AE3B3F40BF8 + Prompt Before Closing 2 + 0 + Right Option Key Sends + 0 + Rows + 24 + Screen + -1 + Scrollback Lines + 0 + Scrollback With Status Bar + + Scrollback in Alternate Screen + + Selected Text Color + + Blue Component + 0.0 + Green Component + 0.0 + Red Component + 0.0 + + Selection Color + + Blue Component + 1 + Green Component + 0.8353000283241272 + Red Component + 0.70980000495910645 + + Semantic History + + action + best editor + editor + com.sublimetext.2 + text + + + Send Code When Idle + + Set Local Environment Vars + + Shortcut + + Silence Bell + + Smart Cursor Color + + Smart Selection Rules + + + notes + Word bounded by whitespace + precision + low + regex + \S+ + + + notes + C++ namespace::identifier + precision + normal + regex + ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ + + + notes + Paths + precision + normal + regex + \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? + + + notes + Quoted string + precision + normal + regex + @?"(?:[^"\\]|\\.)*" + + + notes + Java/Python include paths + precision + normal + regex + ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ + + + notes + mailto URL + precision + normal + regex + \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Obj-C selector + precision + high + regex + @selector\([^)]+\) + + + notes + email address + precision + high + regex + \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b + + + notes + HTTP URL + precision + very_high + regex + https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? + + + notes + SSH URL + precision + very_high + regex + \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + notes + Telnet URL + precision + very_high + regex + \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b + + + Sync Title + + Tags + + Terminal Type + xterm + Transparency + 0.16943648457527161 + Triggers + + Unlimited Scrollback + + Use Bold Font + + Use Bright Bold + + Vertical Spacing + 1 + Visual Bell + + Window Type + 0 + Working Directory + /Users/mccm06/Documents/Scratch + + Columns + 50 + Rows + 22 + Working Directory + /Users/mccm06/Documents/Scratch + + View Type + SessionView + frame + + height + 449.5 + width + 462 + x + 0.0 + y + 450.5 + + + + View Type + Splitter + frame + + height + 900 + width + 462 + x + 978 + y + 0.0 + + isVertical + + + + View Type + Splitter + frame + + height + 900 + width + 1440 + x + 0.0 + y + 0.0 + + isVertical + + + + + TerminalGuid + pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 + Width + 1440 + Window Type + 1 + X Origin + 0.0 + Y Origin + 0.0 + + + + WindowNumber + + WindowStyle + 2 + WordCharacters + /-+\~_. + findIgnoreCase_iTerm + + findRegex_iTerm + + iTerm Version + 2.1.4 + + diff --git a/gitconfig b/gitconfig index 3760c49e..4a39b109 100644 --- a/gitconfig +++ b/gitconfig @@ -1,19 +1,14 @@ [user] name = Jim Lawton email = jim.lawton@accenture.com -[core] - safecrlf = warn - deltaBaseCacheLimit = 1G - excludesfile = ~/.gitignore - quotepath = false - editor = vim [push] default = simple +[branch] + # Automatically set up pull to be --rebase + autosetuprebase = always [branch "master"] rebase = true autosetuprebase = true -[branch] - autosetuprebase = always [status] displaycommentprefix = false [rebase] @@ -21,6 +16,12 @@ [hub] protocol = https [color] +# ui = true is a superset of all the more specific color options +# as documented at http://book.git-scm.com/5_customizing_git.html +# When set to always, always use colors in all git commands which are capable of colored output. +# When false, never. When set to true or auto, use colors only when the output is to the terminal. +# When more specific variables of color.* are set, they always take precedence over this setting. +# Defaults to false. ui = auto # diff = auto # status = auto @@ -38,58 +39,22 @@ #added = yellow #changed = green #untracked = cyan -[apply] - whitespace = nowarn -[rerere] - enabled = true -[diff] - tool = bc3 - algorithm = patience -[difftool] - prompt = false -[merge] - tool = bc3 -[mergetool] - prompt = false - keepBackup = false - bc3 = trustExitCode -[url "git://github.com/"] - insteadOf = "ghg://" - pushInsteadOf = "ghg://" - # Example: git clone ghg://ntschutta/emacs -[url "git://github.com/matthewmccullough/"] - insteadOf = "ghgm://" - pushInsteadOf = "ghgm://" - # Example: git clone ghgm://hellogitworld -[url "git@github.com:"] - insteadOf = "ghs://" - pushInsteadOf = "ghs://" -[url "git@github.com:jimlawton/"] - insteadOf = "ghsm://" - pushInsteadOf = "ghsm://" -[url "https://github.com/"] - insteadOf = "ghh://" - pushInsteadOf = "ghh://" -[url "https://github.com/jimlawton/"] - insteadOf = "ghhm://" - pushInsteadOf = "ghhm://" -[http] - # proxy=http://something -[github] - user = jimlawton - #token = PLACEHOLDER -[hub] - protocol = https -[gist] - private = yes - browse = yes -[push] - default = matching + +[gui] +# recentrepo = ~/Documents/Temp/Scratch/hello/hgw1 + +[core] + safecrlf = warn + deltaBaseCacheLimit = 1G + excludesfile = ~/.gitignore + quotepath = false +# autocrlf = input + editor = vim [alias] abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' blg = log --graph --decorate --all --abbrev-commit --pretty=oneline - br = branch + br = branch -a busypeople = shortlog -6 busythisweek = shortlog --since=one.week.ago cam = commit -a -m @@ -107,6 +72,11 @@ dcw = diff --color-words d = diff --color-words dh = diff HEAD + dc = diff --staged + dw = diff --word-diff + dcw = diff --color-words + dm = !git diff | mate + dv = !git diff | vim dump = cat-file -p dw = diff --word-diff empty-tree-sha1 = hash-object -t tree /dev/null @@ -195,13 +165,102 @@ who = shortlog -s -- wipe = reset --hard HEAD url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" +[apply] + whitespace = nowarn +[rerere] + enabled = true + +[difftool] + prompt = false +[difftool "myaraxis"] + cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE +[diff] +# tool = araxis +# tool = Kaleidoscope +# renames = true + tool = bc3 + algorithm = patience +[diff "nodiff"] + command = /bin/true +[mergetool] + prompt = false + keepBackup = false +[mergetool "myaraxis"] + cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED +[merge] +# tool = araxis +# tool = Kaleidoscope + tool = bc3 + bc3 = trustExitCode + +[url "git://github.com/"] + insteadOf = "ghg://" + pushInsteadOf = "ghg://" + # Example: git clone ghg://ntschutta/emacs +[url "git://github.com/jimlawton/"] + insteadOf = "ghgj://" + pushInsteadOf = "ghgj://" + # Example: git clone ghgj://hellogitworld +[url "git@github.com:"] + insteadOf = "ghs://" + pushInsteadOf = "ghs://" +[url "git@github.com:jimlawton/"] + insteadOf = "ghsj://" + pushInsteadOf = "ghsj://" +[url "https://github.com/"] + insteadOf = "ghh://" + pushInsteadOf = "ghh://" +[url "https://github.com/jimlawton/"] + insteadOf = "ghhj://" + pushInsteadOf = "ghhj://" + +[mergetool "sourcetree"] + cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" + trustExitCode = true + +[difftool "p4merge"] + cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\" +[http] + # proxy=http://something + +[hub] + protocol = https +[gist] + private = yes + browse = yes +#[credential] + # helper = cache --timeout=300 + +[push] + default = matching +[difftool "Kaleidoscope"] + cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\" +[mergetool "Kaleidoscope"] + cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot + trustExitCode = true +[filter "media"] + required = true + clean = git media clean %f + smudge = git media smudge %f + +[gh] +protocol = https +#[github] +# user = jimlawton +#[credential] +# helper = osxkeychain + +[github] +[github] + user = jimlawton + #token = PLACEHOLDER + [http] sslVerify = false postBuffer = 524288000 -[diff "nodiff"] - command = /bin/true [credential] helper = osxkeychain + [filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f diff --git a/gitignore b/gitignore index 5643fa81..111c8428 100644 --- a/gitignore +++ b/gitignore @@ -1,9 +1,17 @@ -.DS_Store +*.swp +*.swo *~ +.ruby-version +.rbenv-version +*.sublime-project +*.sublime-workspace +thumbs.db .#* *.pyc *.o - - # srclib build cache .srclib-cache/ +.DS_Store +.gradle +.gradle_targets +.gradletasknamecache diff --git a/vimrc b/vimrc index 3781ab68..0d1593e6 100644 --- a/vimrc +++ b/vimrc @@ -7,6 +7,13 @@ set shell=/bin/bash set term=screen +" set our tabs to four spaces +set ts=4 +set smartindent +set tabstop=4 +set shiftwidth=4 +set expandtab + " turn syntax highlighting on by default syntax on filetype plugin indent on @@ -225,4 +232,3 @@ augroup END autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,( endif " has ("autocmd") - From 953f92a37ebe739dadf8b45a3b5beeddb1ad8f09 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 15:58:11 +0100 Subject: [PATCH 051/973] My Brew setup. --- Brewfile | 88 +++++++++++++++++++++----------------------------------- 1 file changed, 33 insertions(+), 55 deletions(-) diff --git a/Brewfile b/Brewfile index f3640823..ac19bef5 100644 --- a/Brewfile +++ b/Brewfile @@ -1,68 +1,46 @@ tap 'caskroom/cask' +tap 'dinkypumpkin/get_iplayer' tap 'github/bootstrap' tap 'homebrew/bundle' +tap 'homebrew/core' tap 'homebrew/dev-tools' tap 'homebrew/services' tap 'homebrew/versions' -cask 'java' -brew 'ack' brew 'autoconf' +brew 'atomicparsley' +brew 'autojump' brew 'awscli' -brew 'xz' -#brew 'checkbashisms' -brew 'cmake' -brew 'libpng' -brew 'freetype' -brew 'gettext' +brew 'readline' +brew 'bash' +brew 'bash-completion' +brew 'dos2unix' brew 'pkg-config' -brew 'libffi' -brew 'glib' -brew 'grc' -brew 'heroku-toolbelt' -brew 'hub' -brew 'icu4c' -brew 'libtool' -brew 'jpeg' -brew 'libtiff' -brew 'imagemagick' -brew 'jansson' -brew 'jemalloc' -brew 'oniguruma' -brew 'jq' -brew 'launchdns' +brew 'git' +brew 'x264' +brew 'lame' +brew 'xvid' brew 'openssl' -brew 'libevent' -brew 'libgpg-error' -brew 'libgcrypt' -brew 'readline' +brew 'rtmpdump' +brew 'ffmpeg' +brew 'gdbm' +brew 'gnupg' +brew 'go' +brew 'hub' +brew 'id3lib' +brew 'id3v2' +brew 'qt' +brew 'kdiff3' +brew 'md5sha1sum' +brew 'mplayer' +brew 'pyenv' +brew 'pyenv-virtualenv' +brew 'pyenv-virtualenvwrapper' brew 'sqlite' -brew 'libgda' -brew 'memcached' -brew 'pcre' -brew 'nginx' -brew 'node' -brew 'ruby-build' -brew 'rbenv' -brew 'rbenv-default-gems' -brew 'rbenv-readline' -#brew 'redis' +brew 'python' +brew 'repo' +brew 'sloccount' brew 'ssh-copy-id' brew 'wget' -#brew 'homebrew/versions/elasticsearch17' -#brew 'homebrew/versions/go13' -#brew 'homebrew/versions/mysql56' -cask 'appcleaner' -cask 'doxie' -#cask 'dropbox' -#cask 'flux' -cask 'github-desktop' -#cask 'keepingyouawake' -cask 'screenhero' -#cask 'sizeup' -#cask 'subler' -#cask 'textexpander' -#cask 'textmate' -#cask 'transmission' -#cask 'vagrant' -#cask 'viscosity' -#cask 'vmware-fusion' +brew 'dinkypumpkin/get_iplayer/get_iplayer', args: ['with-deps'] +cask 'dockertoolbox' +cask 'virtualbox' From dbea79a48f2c84ab1b91fe7462ac091126d512e1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2016 16:01:57 +0100 Subject: [PATCH 052/973] Add AppStore apps to Brewfile. --- Brewfile | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Brewfile b/Brewfile index ac19bef5..1cce547c 100644 --- a/Brewfile +++ b/Brewfile @@ -30,6 +30,7 @@ brew 'id3lib' brew 'id3v2' brew 'qt' brew 'kdiff3' +brew 'mas' brew 'md5sha1sum' brew 'mplayer' brew 'pyenv' @@ -44,3 +45,20 @@ brew 'wget' brew 'dinkypumpkin/get_iplayer/get_iplayer', args: ['with-deps'] cask 'dockertoolbox' cask 'virtualbox' +mas 'Delicious Library 3', id: 635124250 +mas 'Keynote', id: 409183694 +mas 'iMovie', id: 408981434 +mas 'iStat Mini', id: 927292435 +mas 'The Archive Browser', id: 510232205 +mas 'The Unarchiver', id: 425424353 +mas 'CopyClip', id: 595191960 +mas 'Twitter', id: 409789998 +mas 'Slack', id: 803453959 +mas 'Aware', id: 1082170746 +mas 'Pages', id: 409201541 +mas 'GarageBand', id: 682658836 +mas 'Timenerd', id: 1033051468 +mas 'Battery Monitor', id: 836505650 +mas 'Numbers', id: 409203825 +mas 'Disk Space', id: 603688030 +mas 'LastPass', id: 926036361 From f8ff1996a0fe28c6f3204a9d2b78a9f8a027fcb7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 9 Jun 2016 13:50:22 +0100 Subject: [PATCH 053/973] Add kill-word key. --- inputrc | 1 + 1 file changed, 1 insertion(+) diff --git a/inputrc b/inputrc index 74122c53..0b063553 100644 --- a/inputrc +++ b/inputrc @@ -10,6 +10,7 @@ set match-hidden-files off "\e[D": backward-char "\e[3;5~": backward-kill-word "\C-?": backward-kill-word +"\e(": kill-word "\e[1;5D": backward-word "\e[1;5C": forward-word From bb36d58c0c4a323a0fdad18faa7bc9d8e1ff074c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 9 Jun 2016 16:47:52 +0100 Subject: [PATCH 054/973] Add an alias to greadlink for readlink. --- aliases | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aliases b/aliases index af8463ae..9c36d29e 100644 --- a/aliases +++ b/aliases @@ -68,6 +68,10 @@ if isLinux; then alias ls='ls --color=auto' fi +if isMac; then + alias redlink='greadlink' +fi + alias ls-l='ls -l' alias ls-lt='ls -lt' alias latest='ls -alt | head -20' From 450f0ef1dc4c56858f71a7335749723827a5997e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Aug 2016 14:40:19 +0100 Subject: [PATCH 055/973] Change git br alias to just branch. --- gitconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index 4a39b109..a3c44d64 100644 --- a/gitconfig +++ b/gitconfig @@ -54,7 +54,7 @@ abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' blg = log --graph --decorate --all --abbrev-commit --pretty=oneline - br = branch -a + br = branch busypeople = shortlog -6 busythisweek = shortlog --since=one.week.ago cam = commit -a -m From 06c9edcba8cf8d68bc5877e2c712550a8ddb792b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 19 Aug 2016 10:36:09 +0100 Subject: [PATCH 056/973] Change default email address to gmail. --- gitconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index a3c44d64..fb5583b3 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,7 @@ [user] name = Jim Lawton - email = jim.lawton@accenture.com +# email = jim.lawton@accenture.com + email = jim.lawton@gmail.com [push] default = simple [branch] From c79eda681780f4503df1344e32f8256fe4474181 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 13 Sep 2016 14:11:32 +0100 Subject: [PATCH 057/973] Fix GOROOT for Brew installation on Mac. --- vars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars b/vars index 830578d8..2c05ee14 100644 --- a/vars +++ b/vars @@ -51,7 +51,7 @@ export TMOUT=0 # Go. export GOPATH=~/go -export GOROOT=/usr/local/opt/go +export GOROOT=/usr/local/opt/go/libexec # Manpages colour schemes. # Mostly magenta... From 581ade9583d454f6a24d11f30e32158250459a07 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Oct 2016 22:27:58 +0100 Subject: [PATCH 058/973] No tab expanding for makefiles. --- vimrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vimrc b/vimrc index 0d1593e6..63b53248 100644 --- a/vimrc +++ b/vimrc @@ -227,6 +227,8 @@ augroup bzip2 autocmd FileAppendPre *.bz2 !mv :r autocmd FileAppendPost *.bz2 !mv :r autocmd FileAppendPost *.bz2 !bzip2 -9 --repetitive-best :r + + autocmd FileType make setlocal noexpandtab augroup END autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,( From 0ee5b57f914b76a47b1d9530b04f48231a48b05e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Oct 2016 22:28:27 +0100 Subject: [PATCH 059/973] Update submodule SHA1. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index d5a029ad..3a4cda4f 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit d5a029ada5fbb11411ea1541f313025cb6aedeee +Subproject commit 3a4cda4fd0fe0e0807a90798c0e87a2b2ba6a23d From 995012712e340e294e723616a65e6cea38c37695 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 17 Oct 2016 13:35:50 +0100 Subject: [PATCH 060/973] Add alias to use mtr to check network setup. --- aliases | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aliases b/aliases index 9c36d29e..1bd8a6a7 100644 --- a/aliases +++ b/aliases @@ -159,3 +159,6 @@ alias phgrep='cat ~/.persistent_history|grep --color' # Kill ssh or sshpass sessions (e.g. if VPN hangs). alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9" + +# http://randsinrepose.com/links/2016/10/16/nesting-and-networking/ +alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8' From 81bf01c702e5a44c797747a96e84561755be93bb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 5 Apr 2017 12:05:43 +0100 Subject: [PATCH 061/973] Use Sublime for commit message editing. --- gitconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index fb5583b3..d5a231dd 100644 --- a/gitconfig +++ b/gitconfig @@ -50,7 +50,7 @@ excludesfile = ~/.gitignore quotepath = false # autocrlf = input - editor = vim + editor = subl -n -w [alias] abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' From 750a7fa39deaa30a1ba2917b33242b069f1cdc5b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 5 Apr 2017 12:08:25 +0100 Subject: [PATCH 062/973] Add GOROOT and GOPATH to path. --- paths | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/paths b/paths index c77225af..de89266d 100644 --- a/paths +++ b/paths @@ -8,10 +8,9 @@ export PATH=$PATH:~/bin export PATH=$PATH:~/dotfiles/scripts export PATH=$PATH:~/utils export PATH=$PATH:~/dotfiles/git/git-identify/bin +export PATH=$PATH:$GOPATH/bin +export PATH=$PATH:$GOROOT/bin #export PATH=~/pebble-dev/sdk/bin:$PATH -if isMac; then - export PATH=$PATH:/usr/local/opt/go/libexec/bin -fi # Path setup. #export PATH= From 3b620e8f726cfa3680387213a72cb28ca7f57010 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 5 Apr 2017 12:09:09 +0100 Subject: [PATCH 063/973] Add Kite plugin. --- vim/plugin/kite.vim | 176 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 vim/plugin/kite.vim diff --git a/vim/plugin/kite.vim b/vim/plugin/kite.vim new file mode 100644 index 00000000..60f5e94c --- /dev/null +++ b/vim/plugin/kite.vim @@ -0,0 +1,176 @@ +" This plugin sets up a few event handlers that allow it to function with Kite + +function! PyKiteEvent(action) + let l:filename = expand("%:p") + let l:nvim = has('nvim') +KitePython << endpython +import vim +import os +import json +import threading + + +PYTHON3 = sys.version_info >= (3,) + +if PYTHON3: + from queue import Queue, Full +else: + from Queue import Queue, Full + + +SOURCE = 'nvim' if int(vim.eval('l:nvim')) else 'vim' + +KITED_HOSTPORT = "127.0.0.1:46624" +EVENT_ENDPOINT = "/clientapi/editor/event" +HTTP_TIMEOUT = 0.09 # timeout for HTTP requests in seconds +EVENT_QUEUE_SIZE = 3 # small queue because we want to throw away old events + +LOG_FILE = os.path.expanduser("~/.kite/logs/vim-plugin.log") +VERBOSE = False + + +def log(*args): + """ + Print a log message + """ + try: + with open(LOG_FILE, "a") as f: + f.write(" ".join(map(str, args)) + "\n") + except: + pass + + +def verbose(*args): + """ + Print a log message (or noop if verbose mode is off) + """ + if VERBOSE: + log(*args) + + +def cursor_pos(buf, pos): + """ + Get the cursor position as an offset from the beginning of the file + """ + (line, col) = pos + return sum(len(l) for l in buf[:line-1]) + col + (line-1) + + +def realpath(p): + """ + Evaluate any symlinks and return a symlink-free path + """ + try: + return os.path.realpath(p) + except: + return p + + +def event_loop(): + """ + Read events from the event queue and send them to kited via HTTP + """ + while True: + ev = event_queue.get(block=True) + if ev == None: # this is the stop signal + verbose("event_queue recieved stop signal") + break + http_roundtrip(EVENT_ENDPOINT, ev) + + +def http_roundtrip(endpoint, payload): + """ + Send a json payload to kited at the specified endpoint + """ + try: + verbose("sending to", endpoint, ":", payload) + req = json.dumps(payload) + + if PYTHON3: + import http.client + conn = http.client.HTTPConnection(KITED_HOSTPORT, timeout=HTTP_TIMEOUT) + conn.request("POST", endpoint, body=req.encode('utf-8')) + response = conn.getresponse() + resp = response.read().decode('utf-8') + conn.close() + else: + import urllib2 + url = "http://" + KITED_HOSTPORT + endpoint + conn = urllib2.urlopen(url, data=req, timeout=HTTP_TIMEOUT) + resp = conn.read() + conn.close() + + verbose("response was:", resp) + + except Exception as ex: + verbose("error during http roundtrip to %s: %s" % (endpoint, ex)) + return None + + +def enqueue_event(action, filename): + """ + Add an event for the current buffer state to the outgoing queue + """ + verbose("at enqueue_event:", action) + pos = cursor_pos(list(vim.current.buffer), vim.current.window.cursor) + + event = { + 'source': SOURCE, + 'action': action, + 'filename': realpath(filename), + 'text': '\n'.join(vim.current.buffer), + 'selections': [{'start': pos, 'end': pos}], + } + + if len(event['text']) > (1 << 20): # 1mb + event['action'] = 'skip' + event['text'] = 'file_too_large' + + try: + event_queue.put(event, block=False) + except Full: + verbose("event queue was full") + + +# start the outgoing event loop +try: + event_queue +except NameError: + verbose("starting event queue...") + event_queue = Queue(maxsize=EVENT_QUEUE_SIZE) + event_thread = threading.Thread(target=event_loop) + event_thread.start() + +enqueue_event(vim.eval("a:action"), vim.eval("l:filename")) + +endpython +endfunction + + +function! PyKiteShutdown() +KitePython << endpython + +verbose("sending stop signal to event_queue") +event_queue.put(None, block=False) + +endpython +endfunction + + +" use a version of python that exists in the current vim build +if has('python') + command! -nargs=1 KitePython python +elseif has('python3') + command! -nargs=1 KitePython python3 +endif + +if has('python') || has('python3') + augroup KitePlugin + autocmd VimLeavePre * :call PyKiteShutdown() + autocmd CursorMoved * :call PyKiteEvent('selection') + autocmd CursorMovedI * :call PyKiteEvent('edit') + autocmd BufEnter * :call PyKiteEvent('focus') + autocmd FocusGained * :call PyKiteEvent('focus') + autocmd BufLeave * :call PyKiteEvent('lost_focus') + augroup END +endif From 042e75f6f58b0ea32f11448474f5fc09e3a99436 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Tue, 18 Apr 2017 00:02:45 -0700 Subject: [PATCH 064/973] Remove MacPorts and updated Brew to not be Boxen --- shellpaths | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/shellpaths b/shellpaths index eea22f27..1fb34ab9 100644 --- a/shellpaths +++ b/shellpaths @@ -8,15 +8,7 @@ export PATH=$PATH:~/bin export PATH=$PATH:~/.dotfiles/scripts # Brew -export PATH=/opt/boxen/homebrew/sbin:$PATH -#export PATH=/opt/boxen/homebrew/bin:$PATH - -# MacPorts -## Having MacPorts first instead of after $PATH causes a GitK error -## http://stackoverflow.com/questions/2629292/starting-gitk-error -export PATH=$PATH:/opt/local/bin -export PATH=$PATH:/opt/local/sbin -export MANPATH=$MANPATH:/opt/local/share/man +export PATH="/usr/local/sbin:$PATH" # Dev frameworks #export PATH=$PATH:$ANT_HOME/bin @@ -43,9 +35,5 @@ export PATH=~/.rbenv/bin:$PATH # Haskell export PATH=$PATH:~/.cabal/bin -# Git Tools -PATH=$PATH:/Applications/Dev/jgit - # Node JS Packages (from Brew Install of Node and NPM) PATH=$PATH:/usr/local/share/npm/bin - From 8412e8e3a2783edbf2b8bd544f56fd3bbc7ef1d4 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Tue, 18 Apr 2017 00:03:02 -0700 Subject: [PATCH 065/973] Update ob-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4a1e89c5..66bae5a5 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4a1e89c58b3b924ec7caed2b7e33afb8ee0825d6 +Subproject commit 66bae5a5deb7a053adfb05b38a93fe47295841eb From 8a87dc88cfca0eaa53c7956ee6b087a0edf61b1f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Apr 2017 10:05:10 +0100 Subject: [PATCH 066/973] Add my hyper-hacks fork. --- .gitmodules | 3 +++ hyper-hacks | 1 + 2 files changed, 4 insertions(+) create mode 160000 hyper-hacks diff --git a/.gitmodules b/.gitmodules index 916fae10..60d8c8b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,6 @@ [submodule "tmux/plugins/tpm"] path = tmux/plugins/tpm url = https://github.com/tmux-plugins/tpm +[submodule "hyper-hacks"] + path = hyper-hacks + url = https://github.com/jimlawton/hyper-hacks.git diff --git a/hyper-hacks b/hyper-hacks new file mode 160000 index 00000000..44695074 --- /dev/null +++ b/hyper-hacks @@ -0,0 +1 @@ +Subproject commit 44695074b7b1db7606af8ef1fd5c0170453d76e4 From 1863c173fe2dbf44928a9943164f6ab554bd5357 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Apr 2017 10:11:16 +0100 Subject: [PATCH 067/973] Add initial Karabiner config. --- karabiner/karabiner.json | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 karabiner/karabiner.json diff --git a/karabiner/karabiner.json b/karabiner/karabiner.json new file mode 100644 index 00000000..44e71a0d --- /dev/null +++ b/karabiner/karabiner.json @@ -0,0 +1,33 @@ +{ + "global": { + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false + }, + "profiles": [ + { + "devices": [], + "fn_function_keys": { + "f1": "display_brightness_decrement", + "f10": "mute", + "f11": "volume_decrement", + "f12": "volume_increment", + "f2": "display_brightness_increment", + "f3": "mission_control", + "f4": "launchpad", + "f5": "illumination_decrement", + "f6": "illumination_increment", + "f7": "rewind", + "f8": "play_or_pause", + "f9": "fastforward" + }, + "name": "Default profile", + "selected": true, + "simple_modifications": {}, + "virtual_hid_keyboard": { + "caps_lock_delay_milliseconds": 0, + "keyboard_type": "ansi" + } + } + ] +} From d9c529941867c5fed1006cfa5dcd340af6ed3619 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Apr 2017 10:11:57 +0100 Subject: [PATCH 068/973] Add initial Hammerspoon config. --- hammerspoon/init.lua | 1 + 1 file changed, 1 insertion(+) create mode 120000 hammerspoon/init.lua diff --git a/hammerspoon/init.lua b/hammerspoon/init.lua new file mode 120000 index 00000000..82d8b0bf --- /dev/null +++ b/hammerspoon/init.lua @@ -0,0 +1 @@ +../hyper-hacks/hammerspoon/init.lua \ No newline at end of file From 916250fedf2d543c6c594ea5323b928b81c43715 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Apr 2017 10:12:42 +0100 Subject: [PATCH 069/973] Use Karabiner config in hyper-hacks. --- karabiner/karabiner.json | 34 +--------------------------------- 1 file changed, 1 insertion(+), 33 deletions(-) mode change 100644 => 120000 karabiner/karabiner.json diff --git a/karabiner/karabiner.json b/karabiner/karabiner.json deleted file mode 100644 index 44e71a0d..00000000 --- a/karabiner/karabiner.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "global": { - "check_for_updates_on_startup": true, - "show_in_menu_bar": true, - "show_profile_name_in_menu_bar": false - }, - "profiles": [ - { - "devices": [], - "fn_function_keys": { - "f1": "display_brightness_decrement", - "f10": "mute", - "f11": "volume_decrement", - "f12": "volume_increment", - "f2": "display_brightness_increment", - "f3": "mission_control", - "f4": "launchpad", - "f5": "illumination_decrement", - "f6": "illumination_increment", - "f7": "rewind", - "f8": "play_or_pause", - "f9": "fastforward" - }, - "name": "Default profile", - "selected": true, - "simple_modifications": {}, - "virtual_hid_keyboard": { - "caps_lock_delay_milliseconds": 0, - "keyboard_type": "ansi" - } - } - ] -} diff --git a/karabiner/karabiner.json b/karabiner/karabiner.json new file mode 120000 index 00000000..059b3494 --- /dev/null +++ b/karabiner/karabiner.json @@ -0,0 +1 @@ +../hyper-hacks/karabiner/karabiner.json \ No newline at end of file From e420a6ee661461df0ed65f6ce210a55107b2689c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Apr 2017 13:57:28 +0100 Subject: [PATCH 070/973] Update hyper-hacks rev. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 44695074..060a4714 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 44695074b7b1db7606af8ef1fd5c0170453d76e4 +Subproject commit 060a47143bf6ea0c07463d6837270d054fddf1de From 5466985c46077201365652cd62d276ca8a50c55b Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Thu, 11 May 2017 18:16:38 -0700 Subject: [PATCH 071/973] Updated oh-my-zsh submodule to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 66bae5a5..291e96dc 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 66bae5a5deb7a053adfb05b38a93fe47295841eb +Subproject commit 291e96dcd034750fbe7473482508c08833b168e3 From 20c1011f64075cdbb57e28ad6d46818d00dcdf09 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Thu, 11 May 2017 18:20:05 -0700 Subject: [PATCH 072/973] No longer need to call dirpersiststore --- zlogout | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zlogout b/zlogout index 80bd101e..a4f7ddcb 100644 --- a/zlogout +++ b/zlogout @@ -2,4 +2,4 @@ # Store recent directory stack # See ~/.dotfiles/oh-my-zsh/plugins/dirspersist.plugin.zsh ################################################################# -dirpersiststore +# dirpersiststore # No longer needed per https://github.com/atomantic/dotfiles/issues/22 From 477c5f4bafaa7f335a1a52dc43038fb1d91eabb4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 19 May 2017 09:19:45 +0100 Subject: [PATCH 073/973] Switch back to default editor. --- gitconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/gitconfig b/gitconfig index d5a231dd..f10c968b 100644 --- a/gitconfig +++ b/gitconfig @@ -50,7 +50,6 @@ excludesfile = ~/.gitignore quotepath = false # autocrlf = input - editor = subl -n -w [alias] abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' From ff1aaf3606b65ba89030ee8c833b84e24bb50cd7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 19 May 2017 09:20:16 +0100 Subject: [PATCH 074/973] Update hyper-hacks module. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 060a4714..b9da0d32 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 060a47143bf6ea0c07463d6837270d054fddf1de +Subproject commit b9da0d32f1d5a922497f6f0f9fa9455c0a912d8f From 4a033ecd6ff9b6bfb5904339ab24e7e3c834ce44 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Thu, 8 Jun 2017 23:13:12 -0400 Subject: [PATCH 075/973] Upgrade z-rupa to latest features such as -e and -c --- z-rupa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/z-rupa b/z-rupa index dfd4308a..1a361f6d 160000 --- a/z-rupa +++ b/z-rupa @@ -1 +1 @@ -Subproject commit dfd4308ae84da481f774b3f5e732ee277d9d8769 +Subproject commit 1a361f6dc10e54e34e42f1e03850692959c6b413 From 9672d99146b1aee0725276e5d2a179e07288145b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 1 Aug 2017 10:16:11 +0100 Subject: [PATCH 076/973] Comment out old path stuff. --- paths | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/paths b/paths index de89266d..962e0167 100644 --- a/paths +++ b/paths @@ -31,28 +31,28 @@ export PATH=$PATH:$GOROOT/bin ######################################## # Set up Git path. # ######################################## -GITPATH=/proj/STBTools/tools/git/`uname -p` -if [ -d $GITPATH ]; then - GITPATH=/proj/STBTools/tools/git/`uname -p` - if ! echo $PATH | /bin/egrep -q "(^|:)$GITPATH/bin($|:)" ; then - PATH=$GITPATH/bin:$PATH - fi - export LD_LIBRARY_PATH=${GITPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} -fi +#GITPATH=/proj/STBTools/tools/git/`uname -p` +#if [ -d $GITPATH ]; then +# GITPATH=/proj/STBTools/tools/git/`uname -p` +# if ! echo $PATH | /bin/egrep -q "(^|:)$GITPATH/bin($|:)" ; then +# PATH=$GITPATH/bin:$PATH +# fi +# export LD_LIBRARY_PATH=${GITPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} +#fi ######################################## # Set up Subversion path. # ######################################## -SVNPATH=/proj/STBTools/tools/svn/`uname -p` -if [ -d $SVNPATH ]; then - export PYTHONPATH=$SVNPATH/lib/svn-python - if ! echo $PATH | /bin/egrep -q "(^|:)$SVNPATH/bin($|:)" ; then - export PATH=$SVNPATH/bin:$PATH - fi - export LD_LIBRARY_PATH=${SVNPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} -fi - -if [ -d "$HOME/.cabal/bin" ]; then - export PATH="$HOME/.cabal/bin:$PATH" -fi +#SVNPATH=/proj/STBTools/tools/svn/`uname -p` +#if [ -d $SVNPATH ]; then +# export PYTHONPATH=$SVNPATH/lib/svn-python +# if ! echo $PATH | /bin/egrep -q "(^|:)$SVNPATH/bin($|:)" ; then +# export PATH=$SVNPATH/bin:$PATH +# fi +# export LD_LIBRARY_PATH=${SVNPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} +#fi + +#if [ -d "$HOME/.cabal/bin" ]; then +# export PATH="$HOME/.cabal/bin:$PATH" +#fi From 56024d29426c573368ffd1a89c4620d1e34d961d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 1 Aug 2017 10:16:33 +0100 Subject: [PATCH 077/973] Paths for Anaconda. --- bash_profile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bash_profile b/bash_profile index c190291b..d7478bed 100644 --- a/bash_profile +++ b/bash_profile @@ -109,3 +109,9 @@ fi # All done. test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" + +# added by Anaconda3 4.4.0 installer +export PATH="/anaconda/bin:$PATH" + +# added by Anaconda3 4.4.0 installer +export PATH="/Users/jim.lawton/anaconda/bin:$PATH" From ee937937a597ceb134512a2a2b49239101bc982f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 1 Aug 2017 10:17:29 +0100 Subject: [PATCH 078/973] Update submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index b9da0d32..42b372c0 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit b9da0d32f1d5a922497f6f0f9fa9455c0a912d8f +Subproject commit 42b372c09e7255054cbed6086cf596b48441c5c5 From 32c351a5b1c67900d596c1e9c505ae5396414cfb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 1 Aug 2017 10:20:53 +0100 Subject: [PATCH 079/973] Add Brew Python paths. --- paths | 3 +++ 1 file changed, 3 insertions(+) diff --git a/paths b/paths index 962e0167..b144f11f 100644 --- a/paths +++ b/paths @@ -56,3 +56,6 @@ export PATH=$PATH:$GOROOT/bin # export PATH="$HOME/.cabal/bin:$PATH" #fi +# Path setup for Brew Python. +export PATH="/usr/local/opt/python/libexec/bin:$PATH" +export PATH="/usr/local/sbin:$PATH" From c5cbd972263d45e9f35eaff5069beed546c3f551 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 3 Aug 2017 10:14:34 +0100 Subject: [PATCH 080/973] Clean Anaconda path stuff. --- bash_profile | 3 --- 1 file changed, 3 deletions(-) diff --git a/bash_profile b/bash_profile index d7478bed..26481d42 100644 --- a/bash_profile +++ b/bash_profile @@ -110,8 +110,5 @@ fi test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" -# added by Anaconda3 4.4.0 installer -export PATH="/anaconda/bin:$PATH" - # added by Anaconda3 4.4.0 installer export PATH="/Users/jim.lawton/anaconda/bin:$PATH" From 0daafcc3406146ca9c790f401522d7c73d6b2a22 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 1 Sep 2017 15:13:58 +0100 Subject: [PATCH 081/973] Add alias for OSX gatekeeper. --- aliases | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aliases b/aliases index 1bd8a6a7..f4fca739 100644 --- a/aliases +++ b/aliases @@ -162,3 +162,6 @@ alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$ # http://randsinrepose.com/links/2016/10/16/nesting-and-networking/ alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8' + +# OSX gatekeeper disable... +alias gatekeeper='sudo xattr -d com.apple.quarantine' From 6f3a1b08c2603ea3047aed75151dd0e23552982b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 1 Sep 2017 15:16:19 +0100 Subject: [PATCH 082/973] Add more usernames. --- personalisation | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/personalisation b/personalisation index 49fd1a7a..546b9bd5 100644 --- a/personalisation +++ b/personalisation @@ -2,7 +2,7 @@ # User-specific configuration. ######################################################################### -export _USERNAMES="jiml jlawton jim.lawton" +export _USERNAMES="jiml jlawton jim.lawton jlawto001c jlawto001" export _NAME="Jim Lawton" export _EMAIL="jim.lawton@accenture.com" export _SHORTUSER="jim" From cc637a036d3dad27fe4cec18f21bcc4ebb843eee Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Sep 2017 10:17:40 +0100 Subject: [PATCH 083/973] Add dbl quotes. --- functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions b/functions index 056d6cf6..ff3c5411 100644 --- a/functions +++ b/functions @@ -268,7 +268,7 @@ function log_bash_persistent_history() { if contains "$command_part" "$USER"; then return fi - for username in $_USERNAMES; do + for username in "$_USERNAMES"; do if contains "$command_part" "$username"; then return fi From e2b76c8fabe913724445dd018472b03340628431 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 8 Oct 2017 19:15:10 +0100 Subject: [PATCH 084/973] Clean up my hacky recursive grep aliases. --- aliases | 53 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/aliases b/aliases index f4fca739..1cf6a939 100644 --- a/aliases +++ b/aliases @@ -127,25 +127,40 @@ alias pgrep='ps auxww | grep \!* | grep -v grep' #alias a2ps='a2ps -r -1 -C -E -g -l120 -s2' alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color' -alias mfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \) -print \) | xargs -r egrep --color=auto -n' -alias mnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \) -print \) | xargs -r egrep --color=auto -n -v' -alias sfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \) -print \) | xargs -r egrep --color=auto -n' -alias snotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \) -print \) | xargs -r egrep --color=auto -n -v' -alias shfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \) -print \) | xargs -r egrep --color=auto -n' -alias shnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \) -print \) | xargs -r egrep --color=auto -n -v' -alias cfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \) -print \) | xargs -r egrep --color=auto -n' -alias cnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \) -print \) | xargs -r egrep --color=auto -n -v' -alias hfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[hH]" -print \) | xargs -r egrep --color=auto -n' -alias hnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[hH]" -print \) | xargs -r egrep --color=auto -n -v' -alias jfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.java" -print \) | xargs -r egrep --color=auto -n' -alias jnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.java" -print \) | xargs -r egrep --color=auto -n -v' -alias pyfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.py" -print \) | xargs -r egrep --color=auto -n' -alias pynotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.py" -print \) | xargs -r egrep --color=auto -n -v' -alias dfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[dD]" -print \) | xargs -r egrep --color=auto -n' -alias dnotfind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.[dD]" -print \) | xargs -r egrep --color=auto -n -v' -alias ofind='find . \( -name .svn -prune \) -o \( -xtype f -name "*\.o" -print \) | xargs -r nm | egrep --color=auto -n' -alias rstfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.rst" \) -print \) | xargs -r egrep --color=auto -n' -alias rstnotfind='find . \( -name .svn -prune \) -o \( -xtype f \( -name "*\.rst" \) -print \) | xargs -r egrep --color=auto -n -v' +_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \)' +_mfiles='\( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \)' +_sfiles='\( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \)' +_shfiles='\( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \)' +_cfiles='\( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \)' +_hfiles='\( -name "*\.[hH]" -o -name "*\.hpp" \)' +_jfiles='\( -name "*\.java" \)' +_pyfiles='\( -name "*\.py" \)' +_dfiles='\( -name "*\.[dD]" \)' +_rstfiles='\( -name "*\.rst" \)' +_gofiles='\( -name "*\.go" \)' +_grepargs='xargs egrep --color=auto -n' + +alias mfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs" +alias mnotfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs -v" +alias sfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs" +alias snotfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs -v" +alias shfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs" +alias shnotfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs -v" +alias cfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs" +alias cnotfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs -v" +alias hfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs" +alias hnotfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs -v" +alias jfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs" +alias jnotfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs -v" +alias pyfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs" +alias pynotfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs -v" +alias dfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs" +alias dnotfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs -v" +alias rstfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs" +alias rstnotfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs -v" +alias gofind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs" +alias gonotfind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs -v" + if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe" alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe" From a3a3a8940621d24c1c380da64e7f367d46ea321c Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sun, 19 Nov 2017 14:52:17 -0800 Subject: [PATCH 085/973] Identity and alias updates --- gitconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gitconfig b/gitconfig index 78f15bb4..358cb61b 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,6 @@ [user] name = Matthew McCullough - email = matthew@github.com + email = matthew@mccullough.io username = matthewmccullough signingkey = FC9C6E47 @@ -275,6 +275,7 @@ protocol = https helper = osxkeychain [filter "lfs"] - clean = git-lfs clean %f - smudge = git-lfs smudge %f required = true + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process From 2998b4edbdc4b45f3881c5cef08f467cadbee84b Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sun, 19 Nov 2017 14:52:44 -0800 Subject: [PATCH 086/973] Alias to list third party kernel extensions --- shellaliases | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shellaliases b/shellaliases index 976fb597..2b4ea26c 100755 --- a/shellaliases +++ b/shellaliases @@ -181,3 +181,6 @@ function screenshot.setpng() { defaults write com.apple.screencapture type png killall SystemUIServer } + +## Show third party kernel extensions +alias thirdpartykernelextensions='kextstat | grep -v apple' From a8715bb306fbafcb9e2bdd357056115afc5c6ffd Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sun, 19 Nov 2017 14:53:35 -0800 Subject: [PATCH 087/973] Identify file type as shell --- shellpaths | 2 ++ shellvars | 2 ++ 2 files changed, 4 insertions(+) diff --git a/shellpaths b/shellpaths index 1fb34ab9..54332db8 100644 --- a/shellpaths +++ b/shellpaths @@ -1,3 +1,5 @@ +#!/bin/sh + ######################################################################## # Shell agnostic path setup ######################################################################## diff --git a/shellvars b/shellvars index f7fa0948..5638131e 100644 --- a/shellvars +++ b/shellvars @@ -1,3 +1,5 @@ +#!/bin/sh + ######################################################################### # Temporary aliases useful for demos, other current projects ######################################################################### From ab5922fa925613d66030c6695c55714b841cebcf Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sun, 19 Nov 2017 14:54:08 -0800 Subject: [PATCH 088/973] Load rbenv ruby version selector --- zshrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zshrc b/zshrc index 1f28e1b2..daefbf85 100644 --- a/zshrc +++ b/zshrc @@ -35,3 +35,7 @@ source $ZSH/oh-my-zsh.sh ### Added by the Heroku Toolbelt export PATH="/usr/local/heroku/bin:$PATH" + +# Load rbenv ruby version selector +# https://github.com/rbenv/rbenv#homebrew-on-macos +eval "$(rbenv init -)" From 036e891d6cc1eb8e6a3e0d0b550398bf1d7eda46 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sun, 19 Nov 2017 14:57:03 -0800 Subject: [PATCH 089/973] iTerm config --- com.googlecode.iterm2.plist | 104 ++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 11 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index 8d390f35..b9c03c46 100644 --- a/com.googlecode.iterm2.plist +++ b/com.googlecode.iterm2.plist @@ -18,6 +18,8 @@ 0 AppleSmoothFixedFontsSizeThreshold 1 + AppleWindowTabbingMode + manual AutoHideTmuxClientSession CheckTestRelease @@ -2391,6 +2393,8 @@ 0 HotkeyCode 0 + HotkeyMigratedFromSingleToMulti + HotkeyModifiers 0 IRMemory @@ -2645,20 +2649,56 @@ 0.0 NSNavLastRootDirectory ~/.dotfiles - NSNavPanelExpandedSizeForOpenMode - {1106, 813} NSQuotedKeystrokeBinding NSRepeatCountBinding NSScrollAnimationEnabled + NSScrollViewShouldScrollUnderTitlebar + + NSTableView Columns v2 KeyBingingTable + + YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN + gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm + aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz + ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA + DIAIgAlRMSNAdCAAAAAAANIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP + TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA + ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe + AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA + AAAAADoAAAAAAAAAAAAAAAAAAAFM + + NSTableView Sort Ordering v2 KeyBingingTable + + YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz + c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf + EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt + swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 + + NSTableView Supports v2 KeyBingingTable + + NSToolbar Configuration com.apple.NSColorPanel + + TB Is Shown + 1 + + NSWindow Frame NSColorPanel + 265 225 231 329 0 0 1280 777 NSWindow Frame Preferences - 67 163 924 485 0 0 1440 877 + 284 412 606 456 0 0 1440 877 + NSWindow Frame SUStatusFrame + 838 106 384 129 0 0 1440 878 + NSWindow Frame SharedPreferences + 269 122 796 473 0 0 1680 1028 NSWindow Frame UKCrashReporter - 99 293 592 584 0 0 1440 877 + 80 193 592 584 0 0 1280 777 NSWindow Frame iTerm Window 0 - 162 91 972 697 0 0 1440 877 + 708 148 972 699 0 0 2560 1418 + NSWindow Frame iTerm Window 1 + 854 54 570 451 0 0 1440 878 NeverWarnAboutShortLivedSessions_04984D44-914B-4A49-8AB5-B2ABB5F8A100 New Bookmarks @@ -4648,10 +4688,50 @@ ~/Documents/Scratch + NoSyncConfirmBeta + + NoSyncHaveShownPromoWithId_4 + + NoSyncHaveWarnedAboutPasteConfirmationChange + + NoSyncInstallationId + EBB08AEE-D146-4427-A69E-16689D1B6C23 + NoSyncLastTipTime + 490466268.685619 + NoSyncNeverRemindPrefsChangesLostForFile + + NoSyncNeverRemindPrefsChangesLostForFile_selection + 0 + NoSyncPermissionToShowTip + + NoSyncTimeOfFirstLaunchOfVersionWithTip + 478235921.85160202 NoSyncTimeOfLastPromo - 461743666.53294802 + 478032308.39368999 NoSyncTimeOfLastPromoDownload - 474755665.79863501 + 478218472.20757103 + NoSyncTipsDisabled + + NoSyncTipsToNotShow + + 000 + 0000 + 0001 + 0002 + 0003 + 0004 + 0005 + 0006 + 0007 + 0008 + 0009 + 0010 + 0011 + 0012 + 0013 + 0014 + 0015 + NotFirstRun OnlyWhenMoreTabs @@ -4712,12 +4792,14 @@ SUEnableAutomaticChecks + SUFeedAlternateAppNameKey + iTerm SUFeedURL - https://iterm2.com/appcasts/testing.xml + https://iterm2.com/appcasts/testing.xml?shard=19 SUHasLaunchedBefore SULastCheckTime - 2016-01-17T20:34:09Z + 2017-10-13T20:02:37Z SavePasteHistory Secure Input @@ -4780,7 +4862,7 @@ TripleClickSelectsFullWrappedLines UKCrashReporterLastCrashReportDate - 1416457728 + 1415110784 URLHandlers URLHandlersByGuid @@ -17934,6 +18016,6 @@ findRegex_iTerm iTerm Version - 2.1.4 + 3.1.3.beta.1 From a8bb6a16d3a8470cc7c1776f25cde5ae85a93985 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Dec 2017 17:07:24 +0000 Subject: [PATCH 090/973] Add Git lgp alias. --- gitconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/gitconfig b/gitconfig index f10c968b..172a74fd 100644 --- a/gitconfig +++ b/gitconfig @@ -94,6 +94,7 @@ latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' lf = log --pretty=fuller lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgorigin = log --oneline --graph --decorate origin/master...master --left-right lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' listconf = config --global --list From ca38ef4367e1b115541e717ed286af480cae32f8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Dec 2017 12:02:57 +0000 Subject: [PATCH 091/973] Update submodule reference. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 42b372c0..515dab3f 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 42b372c09e7255054cbed6086cf596b48441c5c5 +Subproject commit 515dab3f39da841256ead4f12532460d5dcca26b From 79a8d053f928db2d1a1d9d0e73b95dea744571f6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Dec 2017 13:47:34 +0000 Subject: [PATCH 092/973] Update all submodules. --- autoenv | 2 +- icdiff | 2 +- tmux/plugins/tpm | 2 +- vim/bundle/vim-easymotion | 2 +- vim/bundle/vundle | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/autoenv b/autoenv index efb7e7e9..13898853 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit efb7e7e9d9c59c6452157b4760b8521b08db705a +Subproject commit 138988537b26470cfa11b64fe2facb4d0c6001ba diff --git a/icdiff b/icdiff index 828991e1..44041be8 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 828991e18acc537fd883dbffdc41d73e33672218 +Subproject commit 44041be8c22ba1d13afe886304fa12fbd507b77e diff --git a/tmux/plugins/tpm b/tmux/plugins/tpm index 51ff07a7..95f78336 160000 --- a/tmux/plugins/tpm +++ b/tmux/plugins/tpm @@ -1 +1 @@ -Subproject commit 51ff07a729b4b67f692936ad75cb0650149afbb4 +Subproject commit 95f78336c3972f3e6648b7b3db754f2224320a5e diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion index 5c6f3cd9..342549e7 160000 --- a/vim/bundle/vim-easymotion +++ b/vim/bundle/vim-easymotion @@ -1 +1 @@ -Subproject commit 5c6f3cd9a713491e6b32752a05c45198aa91540a +Subproject commit 342549e7a1e5b07a030803e0e4b6f0415aa51275 diff --git a/vim/bundle/vundle b/vim/bundle/vundle index 49847675..fcc20420 160000 --- a/vim/bundle/vundle +++ b/vim/bundle/vundle @@ -1 +1 @@ -Subproject commit 4984767509e3d05ca051e253c8a8b37de784be45 +Subproject commit fcc204205e3305c4f86f07e09cd756c7d06f0f00 From 1c10a5240b7d4333ff9b1a46827bbabfc86c967f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Dec 2017 17:56:28 +0000 Subject: [PATCH 093/973] Save Brew configuration. --- Brewfile | 166 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 102 insertions(+), 64 deletions(-) diff --git a/Brewfile b/Brewfile index 1cce547c..515bfaec 100644 --- a/Brewfile +++ b/Brewfile @@ -1,64 +1,102 @@ -tap 'caskroom/cask' -tap 'dinkypumpkin/get_iplayer' -tap 'github/bootstrap' -tap 'homebrew/bundle' -tap 'homebrew/core' -tap 'homebrew/dev-tools' -tap 'homebrew/services' -tap 'homebrew/versions' -brew 'autoconf' -brew 'atomicparsley' -brew 'autojump' -brew 'awscli' -brew 'readline' -brew 'bash' -brew 'bash-completion' -brew 'dos2unix' -brew 'pkg-config' -brew 'git' -brew 'x264' -brew 'lame' -brew 'xvid' -brew 'openssl' -brew 'rtmpdump' -brew 'ffmpeg' -brew 'gdbm' -brew 'gnupg' -brew 'go' -brew 'hub' -brew 'id3lib' -brew 'id3v2' -brew 'qt' -brew 'kdiff3' -brew 'mas' -brew 'md5sha1sum' -brew 'mplayer' -brew 'pyenv' -brew 'pyenv-virtualenv' -brew 'pyenv-virtualenvwrapper' -brew 'sqlite' -brew 'python' -brew 'repo' -brew 'sloccount' -brew 'ssh-copy-id' -brew 'wget' -brew 'dinkypumpkin/get_iplayer/get_iplayer', args: ['with-deps'] -cask 'dockertoolbox' -cask 'virtualbox' -mas 'Delicious Library 3', id: 635124250 -mas 'Keynote', id: 409183694 -mas 'iMovie', id: 408981434 -mas 'iStat Mini', id: 927292435 -mas 'The Archive Browser', id: 510232205 -mas 'The Unarchiver', id: 425424353 -mas 'CopyClip', id: 595191960 -mas 'Twitter', id: 409789998 -mas 'Slack', id: 803453959 -mas 'Aware', id: 1082170746 -mas 'Pages', id: 409201541 -mas 'GarageBand', id: 682658836 -mas 'Timenerd', id: 1033051468 -mas 'Battery Monitor', id: 836505650 -mas 'Numbers', id: 409203825 -mas 'Disk Space', id: 603688030 -mas 'LastPass', id: 926036361 +tap "sachaos/todoist" +tap "dinkypumpkin/get_iplayer" +tap "homebrew/core" +tap "homebrew/versions" +tap "homebrew/dev-tools" +tap "homebrew/bundle" +tap "homebrew/services" +tap "d12frosted/emacs-plus" +tap "github/bootstrap" +tap "caskroom/cask" +brew "a2ps" +brew "apr" +brew "apr-util" +brew "atomicparsley" +brew "autoconf" +brew "autojump" +brew "gdbm" +brew "sqlite" +brew "python3" +brew "awscli" +brew "bash" +brew "bash-completion" +brew "coreutils" +brew "curl" +brew "git" +brew "go" +brew "diffutils" +brew "libksba" +brew "pth" +brew "dirmngr" +brew "dos2unix" +brew "lame" +brew "xvid" +brew "flake8" +brew "gdb" +brew "pkg-config" +brew "get_iplayer" +brew "gist" +brew "libusb" +brew "pinentry" +brew "gnupg" +brew "httpie" +brew "hub" +brew "id3lib" +brew "id3v2" +brew "jq" +brew "leptonica" +brew "libusb-compat" +brew "mas" +brew "md5sha1sum" +brew "mosh" +brew "mplayer" +brew "mtr" +brew "ocrad" +brew "patchutils" +brew "peco" +brew "progress" +brew "pyenv" +brew "pyenv-virtualenvwrapper" +brew "qt" +brew "repo" +brew "rtmpdump" +brew "rust" +brew "sloccount" +brew "ssh-copy-id" +brew "tesseract" +brew "tig" +brew "wget" +brew "sachaos/todoist/todoist" +cask "cakebrew" +cask "dockertoolbox" +cask "jedit" +cask "jupyter-notebook-ql" +cask "kdiff3" +cask "lumen" +cask "virtualbox" +mas "App for Trello", id: 693021365 +mas "Battery Monitor", id: 836505650 +mas "CopyClip", id: 595191960 +mas "CopyClip 2", id: 1020812363 +mas "Delicious Library 3", id: 635124250 +mas "Disk Space", id: 603688030 +mas "GarageBand", id: 682658836 +mas "iMovie", id: 408981434 +mas "iStat Mini", id: 927292435 +mas "Keynote", id: 409183694 +mas "Kindle", id: 405399194 +mas "LastPass", id: 926036361 +mas "Magnet", id: 441258766 +mas "Numbers", id: 409203825 +mas "OneDrive", id: 823766827 +mas "Pages", id: 409201541 +mas "Slack", id: 803453959 +mas "Speedtest", id: 1153157709 +mas "TermHere", id: 1114363220 +mas "The Archive Browser", id: 510232205 +mas "The Unarchiver", id: 425424353 +mas "Todoist", id: 585829637 +mas "Trello", id: 1278508951 +mas "Twitter", id: 409789998 +mas "Typist", id: 415166115 +mas "Wire", id: 931134707 From fcb14245e53fe2969a924645e282fea0f91ec20f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 21 Dec 2017 15:54:30 +0000 Subject: [PATCH 094/973] Don't set PRINTER. --- vars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars b/vars index 2c05ee14..e184002c 100644 --- a/vars +++ b/vars @@ -79,7 +79,7 @@ export EDITOR='vim' export XXDIFF_EDITOR="xterm -e 'vi %s'" export PYTHONSTARTUP=~/.pythonrc -export PRINTER=baird +#export PRINTER=baird # Set work proxy defaults. #export S3_PROXY="http://193.120.90.34:3128/" From 1e48b5823b7f2322c1a6c369b013f04555947bec Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Dec 2017 16:05:19 +0000 Subject: [PATCH 095/973] Fix for macOS. --- git/forest2manifest.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 194cd060..f016977f 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -6,7 +6,12 @@ else top=$1 fi -repos=`find $top -type d -name .git | xargs dirname | sort` +gitdirs=`cd $top; find . -type d -name .git` +repos="" +for g in $gitdirs; do + repos="$repos `dirname $g`" +done +repos=`echo $repos | sort` remotes="" for repo in $repos; do From 52f92333063f56ec0ab5b42df012dba52cbd6113 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Dec 2017 16:05:46 +0000 Subject: [PATCH 096/973] Allow running in a different directory. --- git/forest2manifest.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index f016977f..27429fc1 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -15,7 +15,7 @@ repos=`echo $repos | sort` remotes="" for repo in $repos; do - url=`git config -f $repo/.git/config --get remote.origin.url` + url=`git config -f $top/$repo/.git/config --get remote.origin.url` scheme=`echo $url | sed 's;://.*;;'` host=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;/.*;;'` remote="$scheme://$host" @@ -45,13 +45,13 @@ cat >>default.xml <>default.xml < EOF From 3e12549e3b091e39ce9af3f846757c3bd7094fd7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 12:30:08 +0000 Subject: [PATCH 097/973] Add pip config, disable legacy warning. --- pip/pip.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 pip/pip.conf diff --git a/pip/pip.conf b/pip/pip.conf new file mode 100644 index 00000000..ae2efd73 --- /dev/null +++ b/pip/pip.conf @@ -0,0 +1,2 @@ +[list] +format=columns From 18a6227ac1c9858fb650365113d6e8dd4f5f297a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 13:17:15 +0000 Subject: [PATCH 098/973] Fix message. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 0e7587a0..2a0b7805 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -42,7 +42,7 @@ if [ ! -d dotfiles ]; then echo "The dotfiles dir does not exist in your home directory!" echo "You need to do:" echo "# cd ~" - echo "# git clone --recurse-submodules https://github.com/matthewmccullough/dotfiles" + echo "# git clone --recurse-submodules https://github.com/jimlawton/dotfiles" echo "# cd dotfile" echo "# ./_setupdotfiles.sh" exit 1 From 4d496903b55a27c48ef386b09f29bd554590133b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 13:20:18 +0000 Subject: [PATCH 099/973] Moved to dropbox instead. --- pip/pip.conf | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 pip/pip.conf diff --git a/pip/pip.conf b/pip/pip.conf deleted file mode 100644 index ae2efd73..00000000 --- a/pip/pip.conf +++ /dev/null @@ -1,2 +0,0 @@ -[list] -format=columns From 1b3fbf8a250b558a416d346f38fecb281df57977 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 13:23:31 +0000 Subject: [PATCH 100/973] Handle symlinking of list of dirs from Dropbox. --- _setupdotfiles.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 2a0b7805..ebd16f8e 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,6 +1,7 @@ SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .colordiffrc .colorgccrc .git_identities .gitconfig .gitignore .inputrc .profile .pythonrc .tmux .tmux.conf .vimrc .vim .xxdiffrc" +DROPDIRS="bin .pip" MOVE=true SAVEDIR=~/.old @@ -52,9 +53,11 @@ for dotfile in $DOTFILES; do symlinkifne $dotfile done -if [ ! -e ~/bin ]; then - ln -s ~/Dropbox/unixhome/bin ~ -fi +for dropdir in $DROPDIRS; do + if [ ! -e ~/$dropdir ]; then + ln -s ~/Dropbox/unixhome/$dropdir ~/ + fi +done popd From 9a394f418debb616e81590dbdc2e92e728fe46dd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 14:43:24 +0000 Subject: [PATCH 101/973] Merge upstream master. --- .Rhistory | 0 README.markdown | 5 +- bash_profile | 1 + com.googlecode.iterm2.plist | 126 ++++++++++++++++++++++++++++++++++++ gitconfig | 46 +++++++------ netrc | 0 6 files changed, 157 insertions(+), 21 deletions(-) create mode 100644 .Rhistory create mode 100644 netrc diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 00000000..e69de29b diff --git a/README.markdown b/README.markdown index 39f3ad93..9a5fff65 100644 --- a/README.markdown +++ b/README.markdown @@ -15,9 +15,10 @@ This project contains submodules. It is suggested that you clone this into your # Setup There is a set up script that establishes the symlinks in your home directory. Run this once. -* `_setupdotfiles.sh` +* For Bash (needs some fixes) + `~/dotfiles/_setupdotfiles.sh` -> NOTE: Some personal configuration of Jim's will remain after setup. You should fork and tweak to your specific needs. +> NOTE: Some of my personal configuration will remain after setup. You should fork and tweak to your specific needs. # Contributions Contributions are always welcome in the form of pull requests with explanatory comments. diff --git a/bash_profile b/bash_profile index 26481d42..1d193aaf 100644 --- a/bash_profile +++ b/bash_profile @@ -25,6 +25,7 @@ source ~/dotfiles/bash_options # Load my Git bash prompt source ~/dotfiles/bash_prompt_current +# source ~/.dotfiles/bash_gitprompt # Load Brew's git bash completion # source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-completion.bash diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index 8d390f35..bc9621b7 100644 --- a/com.googlecode.iterm2.plist +++ b/com.googlecode.iterm2.plist @@ -18,6 +18,11 @@ 0 AppleSmoothFixedFontsSizeThreshold 1 +<<<<<<< HEAD +======= + AppleWindowTabbingMode + manual +>>>>>>> upstream/master AutoHideTmuxClientSession CheckTestRelease @@ -2391,6 +2396,11 @@ 0 HotkeyCode 0 +<<<<<<< HEAD +======= + HotkeyMigratedFromSingleToMulti + +>>>>>>> upstream/master HotkeyModifiers 0 IRMemory @@ -2645,20 +2655,70 @@ 0.0 NSNavLastRootDirectory ~/.dotfiles +<<<<<<< HEAD NSNavPanelExpandedSizeForOpenMode {1106, 813} +======= +>>>>>>> upstream/master NSQuotedKeystrokeBinding NSRepeatCountBinding NSScrollAnimationEnabled +<<<<<<< HEAD NSWindow Frame Preferences 67 163 924 485 0 0 1440 877 NSWindow Frame UKCrashReporter 99 293 592 584 0 0 1440 877 NSWindow Frame iTerm Window 0 162 91 972 697 0 0 1440 877 +======= + NSScrollViewShouldScrollUnderTitlebar + + NSTableView Columns v2 KeyBingingTable + + YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN + gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm + aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz + ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA + DIAIgAlRMSNAdCAAAAAAANIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP + TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA + ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe + AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA + AAAAADoAAAAAAAAAAAAAAAAAAAFM + + NSTableView Sort Ordering v2 KeyBingingTable + + YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz + c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf + EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt + swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 + + NSTableView Supports v2 KeyBingingTable + + NSToolbar Configuration com.apple.NSColorPanel + + TB Is Shown + 1 + + NSWindow Frame NSColorPanel + 265 225 231 329 0 0 1280 777 + NSWindow Frame Preferences + 284 412 606 456 0 0 1440 877 + NSWindow Frame SUStatusFrame + 838 106 384 129 0 0 1440 878 + NSWindow Frame SharedPreferences + 269 122 796 473 0 0 1680 1028 + NSWindow Frame UKCrashReporter + 80 193 592 584 0 0 1280 777 + NSWindow Frame iTerm Window 0 + 708 148 972 699 0 0 2560 1418 + NSWindow Frame iTerm Window 1 + 854 54 570 451 0 0 1440 878 +>>>>>>> upstream/master NeverWarnAboutShortLivedSessions_04984D44-914B-4A49-8AB5-B2ABB5F8A100 New Bookmarks @@ -4648,10 +4708,57 @@ ~/Documents/Scratch +<<<<<<< HEAD NoSyncTimeOfLastPromo 461743666.53294802 NoSyncTimeOfLastPromoDownload 474755665.79863501 +======= + NoSyncConfirmBeta + + NoSyncHaveShownPromoWithId_4 + + NoSyncHaveWarnedAboutPasteConfirmationChange + + NoSyncInstallationId + EBB08AEE-D146-4427-A69E-16689D1B6C23 + NoSyncLastTipTime + 490466268.685619 + NoSyncNeverRemindPrefsChangesLostForFile + + NoSyncNeverRemindPrefsChangesLostForFile_selection + 0 + NoSyncPermissionToShowTip + + NoSyncTimeOfFirstLaunchOfVersionWithTip + 478235921.85160202 + NoSyncTimeOfLastPromo + 478032308.39368999 + NoSyncTimeOfLastPromoDownload + 478218472.20757103 + NoSyncTipsDisabled + + NoSyncTipsToNotShow + + 000 + 0000 + 0001 + 0002 + 0003 + 0004 + 0005 + 0006 + 0007 + 0008 + 0009 + 0010 + 0011 + 0012 + 0013 + 0014 + 0015 + +>>>>>>> upstream/master NotFirstRun OnlyWhenMoreTabs @@ -4712,12 +4819,23 @@ SUEnableAutomaticChecks +<<<<<<< HEAD SUFeedURL https://iterm2.com/appcasts/testing.xml SUHasLaunchedBefore SULastCheckTime 2016-01-17T20:34:09Z +======= + SUFeedAlternateAppNameKey + iTerm + SUFeedURL + https://iterm2.com/appcasts/testing.xml?shard=19 + SUHasLaunchedBefore + + SULastCheckTime + 2017-10-13T20:02:37Z +>>>>>>> upstream/master SavePasteHistory Secure Input @@ -4780,7 +4898,11 @@ TripleClickSelectsFullWrappedLines UKCrashReporterLastCrashReportDate +<<<<<<< HEAD 1416457728 +======= + 1415110784 +>>>>>>> upstream/master URLHandlers URLHandlersByGuid @@ -17934,6 +18056,10 @@ findRegex_iTerm iTerm Version +<<<<<<< HEAD 2.1.4 +======= + 3.1.3.beta.1 +>>>>>>> upstream/master diff --git a/gitconfig b/gitconfig index 172a74fd..3540dcc1 100644 --- a/gitconfig +++ b/gitconfig @@ -27,6 +27,7 @@ # diff = auto # status = auto # branch = auto + [color "branch"] #current = yellow reverse #local = yellow @@ -50,34 +51,33 @@ excludesfile = ~/.gitignore quotepath = false # autocrlf = input +# editor = vim + [alias] abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' blg = log --graph --decorate --all --abbrev-commit --pretty=oneline - br = branch + br = branch -a busypeople = shortlog -6 busythisweek = shortlog --since=one.week.ago - cam = commit -a -m c = commit + cam = commit -a -m ci = commit cl = log --stat -C -2 - cob = checkout -b co = checkout + cob = checkout -b configpushcurrent = config push.default current configpushnothing = config push.default nothing configpushtracking = config push.default matching configpushtracking = config push.default tracking configsimplelog = config format.pretty oneline - dc = diff --staged - dcw = diff --color-words d = diff --color-words - dh = diff HEAD dc = diff --staged - dw = diff --word-diff dcw = diff --color-words + dh = diff HEAD dm = !git diff | mate - dv = !git diff | vim dump = cat-file -p + dv = !git diff | vim dw = diff --word-diff empty-tree-sha1 = hash-object -t tree /dev/null fetchnotes = !sh -c 'git fetch $1 refs/notes/*:refs/notes/*' - @@ -94,8 +94,8 @@ latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' lf = log --pretty=fuller lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative - lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgorigin = log --oneline --graph --decorate origin/master...master --left-right + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' listconf = config --global --list listhistory = log --name-status @@ -107,17 +107,18 @@ logcpy = log --stat -1 -C -C logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 logit = log --stat -M - logme = log --author=Jim --stat -C logm = log --stat -M + logme = log --author=Jim --stat -C logn = log --oneline --name-only - logr2 = log --stat -M -2 logr = log -M + logr2 = log --stat -M -2 logsimple = log --graph --abbrev-commit --pretty=oneline --all --decorate lol = log --pretty=oneline --graph --abbrev-commit --all lp = log -p lpo = log --pretty=oneline --abbrev-commit --graph --decorate --all lsm = log -M --stat lwr = log --stat -C + me = !git config --get user.name && git config --get user.email mergekeepoursonly = merge -s ours nfjsunpushed = log origin/master..master --oneline noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' @@ -130,10 +131,10 @@ ph = push pl = pull prunenow = gc --prune=now - pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf pub = push -u origin - purgeme = !git clean -fd && git reset --hard + pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf pur = pull --rebase + purgeme = !git clean -fd && git reset --hard pushnotes = !sh -c 'git push $1 refs/notes/*' - ready = rebase -i @{u} redocommit = reset --soft HEAD^ @@ -143,29 +144,30 @@ ro = !git fetch origin && git reset --hard origin/master rtheirs = !git checkout --theirs ./ && git add . && git rebase --continue rv = remote -v + s = status -u -s scrub = !git reset --hard && git clean -fd servehere = daemon --verbose --informative-errors --reuseaddr --export-all --base-path=. --enable=receive-pack shorten = "!sh -c 'curl -i http://git.io -F url=$1' -" - showignored2 = ls-files --others --ignored --exclude-standard showignored = clean -ndX + showignored2 = ls-files --others --ignored --exclude-standard showuntracked = ls-files --others --exclude-standard slog = log --graph --simplify-by-decoration --all --abbrev-commit --pretty=oneline sno = show --name-only squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" - s = status -u -s + st = status standup = log --all --since yesterday --author jim.lawton@s3group.com stat = status - st = status sync = !git pull && git push tagcontains = git tag -l --contains HEAD tips = "!_() { t=$(git rev-list --no-merges --max-count=1 \"$@\"); if test -n \"$t\"; then echo $t; _ \"$@\" ^$t; fi; }; _" type = cat-file -t + url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" weekly = !git --no-pager log --author=\"`git config --global user.name`\" --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short whitespaceviolations = "!git diff --check $(git empty-tree-sha1)" who = shortlog -s -- wipe = reset --hard HEAD - url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" + [apply] whitespace = nowarn [rerere] @@ -194,6 +196,10 @@ tool = bc3 bc3 = trustExitCode +[branch] + # Automatically set up pull to be --rebase + #autosetuprebase = always + [url "git://github.com/"] insteadOf = "ghg://" pushInsteadOf = "ghg://" @@ -259,10 +265,12 @@ protocol = https [http] sslVerify = false postBuffer = 524288000 + [credential] helper = osxkeychain [filter "lfs"] - clean = git-lfs clean %f - smudge = git-lfs smudge %f required = true + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process diff --git a/netrc b/netrc new file mode 100644 index 00000000..e69de29b From 44afa970e1948b27dfed38d09611afd64ff5c3f1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 14:46:26 +0000 Subject: [PATCH 102/973] Save iTerm2 settings. --- com.googlecode.iterm2.plist | 21866 ++++++---------------------------- 1 file changed, 3801 insertions(+), 18065 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index bc9621b7..88acd374 100644 --- a/com.googlecode.iterm2.plist +++ b/com.googlecode.iterm2.plist @@ -1,18065 +1,3801 @@ - - - - - AFRStrokeThickness - 0.0 - AdjustWindowForFontSizeChange - - AdvancedFontRendering - 0 - AllowClipboardAccess - - AnimateDimming - - AppleAntiAliasingThreshold - 1 - AppleScrollAnimationEnabled - 0 - AppleSmoothFixedFontsSizeThreshold - 1 -<<<<<<< HEAD -======= - AppleWindowTabbingMode - manual ->>>>>>> upstream/master - AutoHideTmuxClientSession - - CheckTestRelease - - ClosingHotkeySwitchesSpaces - - ColorInvertedCursor - 1 - CommandSelection - - Control - 1 - CopyLastNewline - - CopySelection - - CursorType - 2 - Custom Color Presets - - Solarized Dark - - Ansi 0 Color - - Blue Component - 0.19370138645172119 - Green Component - 0.15575926005840302 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.14145714044570923 - Green Component - 0.10840655118227005 - Red Component - 0.81926977634429932 - - Ansi 10 Color - - Blue Component - 0.38298487663269043 - Green Component - 0.35665956139564514 - Red Component - 0.27671992778778076 - - Ansi 11 Color - - Blue Component - 0.43850564956665039 - Green Component - 0.40717673301696777 - Red Component - 0.32436618208885193 - - Ansi 12 Color - - Blue Component - 0.51685798168182373 - Green Component - 0.50962930917739868 - Red Component - 0.44058024883270264 - - Ansi 13 Color - - Blue Component - 0.72908437252044678 - Green Component - 0.33896297216415405 - Red Component - 0.34798634052276611 - - Ansi 14 Color - - Blue Component - 0.56363654136657715 - Green Component - 0.56485837697982788 - Red Component - 0.50599193572998047 - - Ansi 15 Color - - Blue Component - 0.86405980587005615 - Green Component - 0.95794391632080078 - Red Component - 0.98943418264389038 - - Ansi 2 Color - - Blue Component - 0.020208755508065224 - Green Component - 0.54115492105484009 - Red Component - 0.44977453351020813 - - Ansi 3 Color - - Blue Component - 0.023484811186790466 - Green Component - 0.46751424670219421 - Red Component - 0.64746475219726562 - - Ansi 4 Color - - Blue Component - 0.78231418132781982 - Green Component - 0.46265947818756104 - Red Component - 0.12754884362220764 - - Ansi 5 Color - - Blue Component - 0.43516635894775391 - Green Component - 0.10802463442087173 - Red Component - 0.77738940715789795 - - Ansi 6 Color - - Blue Component - 0.52502274513244629 - Green Component - 0.57082360982894897 - Red Component - 0.14679534733295441 - - Ansi 7 Color - - Blue Component - 0.79781103134155273 - Green Component - 0.89001238346099854 - Red Component - 0.91611063480377197 - - Ansi 8 Color - - Blue Component - 0.15170273184776306 - Green Component - 0.11783610284328461 - Red Component - 0.0 - - Ansi 9 Color - - Blue Component - 0.073530435562133789 - Green Component - 0.21325300633907318 - Red Component - 0.74176257848739624 - - Background Color - - Blue Component - 0.15170273184776306 - Green Component - 0.11783610284328461 - Red Component - 0.0 - - Bold Color - - Blue Component - 0.56363654136657715 - Green Component - 0.56485837697982788 - Red Component - 0.50599193572998047 - - Cursor Color - - Blue Component - 0.51685798168182373 - Green Component - 0.50962930917739868 - Red Component - 0.44058024883270264 - - Cursor Text Color - - Blue Component - 0.19370138645172119 - Green Component - 0.15575926005840302 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.51685798168182373 - Green Component - 0.50962930917739868 - Red Component - 0.44058024883270264 - - Selected Text Color - - Blue Component - 0.56363654136657715 - Green Component - 0.56485837697982788 - Red Component - 0.50599193572998047 - - Selection Color - - Blue Component - 0.19370138645172119 - Green Component - 0.15575926005840302 - Red Component - 0.0 - - - Solarized Light - - Ansi 0 Color - - Blue Component - 0.19370138645172119 - Green Component - 0.15575926005840302 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.14145712554454803 - Green Component - 0.10840645432472229 - Red Component - 0.81926983594894409 - - Ansi 10 Color - - Blue Component - 0.38298487663269043 - Green Component - 0.35665956139564514 - Red Component - 0.27671992778778076 - - Ansi 11 Color - - Blue Component - 0.43850564956665039 - Green Component - 0.40717673301696777 - Red Component - 0.32436618208885193 - - Ansi 12 Color - - Blue Component - 0.51685798168182373 - Green Component - 0.50962930917739868 - Red Component - 0.44058024883270264 - - Ansi 13 Color - - Blue Component - 0.72908437252044678 - Green Component - 0.33896297216415405 - Red Component - 0.34798634052276611 - - Ansi 14 Color - - Blue Component - 0.56363654136657715 - Green Component - 0.56485837697982788 - Red Component - 0.50599193572998047 - - Ansi 15 Color - - Blue Component - 0.86405980587005615 - Green Component - 0.95794391632080078 - Red Component - 0.98943418264389038 - - Ansi 2 Color - - Blue Component - 0.020208755508065224 - Green Component - 0.54115492105484009 - Red Component - 0.44977453351020813 - - Ansi 3 Color - - Blue Component - 0.023484811186790466 - Green Component - 0.46751424670219421 - Red Component - 0.64746475219726562 - - Ansi 4 Color - - Blue Component - 0.78231418132781982 - Green Component - 0.46265947818756104 - Red Component - 0.12754884362220764 - - Ansi 5 Color - - Blue Component - 0.43516635894775391 - Green Component - 0.10802463442087173 - Red Component - 0.77738940715789795 - - Ansi 6 Color - - Blue Component - 0.52502274513244629 - Green Component - 0.57082360982894897 - Red Component - 0.14679534733295441 - - Ansi 7 Color - - Blue Component - 0.79781103134155273 - Green Component - 0.89001238346099854 - Red Component - 0.91611063480377197 - - Ansi 8 Color - - Blue Component - 0.15170273184776306 - Green Component - 0.11783610284328461 - Red Component - 0.0 - - Ansi 9 Color - - Blue Component - 0.073530435562133789 - Green Component - 0.21325300633907318 - Red Component - 0.74176257848739624 - - Background Color - - Blue Component - 0.86405980587005615 - Green Component - 0.95794391632080078 - Red Component - 0.98943418264389038 - - Bold Color - - Blue Component - 0.38298487663269043 - Green Component - 0.35665956139564514 - Red Component - 0.27671992778778076 - - Cursor Color - - Blue Component - 0.43850564956665039 - Green Component - 0.40717673301696777 - Red Component - 0.32436618208885193 - - Cursor Text Color - - Blue Component - 0.79781103134155273 - Green Component - 0.89001238346099854 - Red Component - 0.91611063480377197 - - Foreground Color - - Blue Component - 0.43850564956665039 - Green Component - 0.40717673301696777 - Red Component - 0.32436618208885193 - - Selected Text Color - - Blue Component - 0.38298487663269043 - Green Component - 0.35665956139564514 - Red Component - 0.27671992778778076 - - Selection Color - - Blue Component - 0.79781103134155273 - Green Component - 0.89001238346099854 - Red Component - 0.91611063480377197 - - - arthur - - Ansi 0 Color - - Blue Component - 0.16470588743686676 - Green Component - 0.20784313976764679 - Red Component - 0.23921568691730499 - - Ansi 1 Color - - Blue Component - 0.36078432202339172 - Green Component - 0.36078432202339172 - Red Component - 0.80392158031463623 - - Ansi 10 Color - - Blue Component - 0.13333334028720856 - Green Component - 0.66666668653488159 - Red Component - 0.53333336114883423 - - Ansi 11 Color - - Blue Component - 0.364705890417099 - Green Component - 0.65490198135375977 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 0.92156863212585449 - Green Component - 0.80784314870834351 - Red Component - 0.52941179275512695 - - Ansi 13 Color - - Blue Component - 0.0 - Green Component - 0.40000000596046448 - Red Component - 0.60000002384185791 - - Ansi 14 Color - - Blue Component - 0.87058824300765991 - Green Component - 0.76862746477127075 - Red Component - 0.69019609689712524 - - Ansi 15 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.80000001192092896 - Red Component - 0.86666667461395264 - - Ansi 2 Color - - Blue Component - 0.50196081399917603 - Green Component - 0.68627452850341797 - Red Component - 0.52549022436141968 - - Ansi 3 Color - - Blue Component - 0.35686275362968445 - Green Component - 0.68235296010971069 - Red Component - 0.90980392694473267 - - Ansi 4 Color - - Blue Component - 0.92941176891326904 - Green Component - 0.58431375026702881 - Red Component - 0.39215686917304993 - - Ansi 5 Color - - Blue Component - 0.52941179275512695 - Green Component - 0.72156864404678345 - Red Component - 0.87058824300765991 - - Ansi 6 Color - - Blue Component - 0.87058824300765991 - Green Component - 0.76862746477127075 - Red Component - 0.69019609689712524 - - Ansi 7 Color - - Blue Component - 0.60000002384185791 - Green Component - 0.66666668653488159 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.26666668057441711 - Green Component - 0.26666668057441711 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.20000000298023224 - Green Component - 0.3333333432674408 - Red Component - 0.80000001192092896 - - Background Color - - Blue Component - 0.10980392247438431 - Green Component - 0.10980392247438431 - Red Component - 0.10980392247438431 - - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Color - - Blue Component - 0.93725490570068359 - Green Component - 0.73333334922790527 - Red Component - 0.88627451658248901 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.86666667461395264 - Green Component - 0.93333333730697632 - Red Component - 0.86666667461395264 - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - - hardcore - - Ansi 0 Color - - Blue Component - 0.11764705882352899 - Green Component - 0.113725490196078 - Red Component - 0.105882352941176 - - Ansi 1 Color - - Blue Component - 0.44705882352941201 - Green Component - 0.149019607843137 - Red Component - 0.97647058823529398 - - Ansi 10 Color - - Blue Component - 0.37254901960784298 - Green Component - 0.92941176470588205 - Red Component - 0.74509803921568596 - - Ansi 11 Color - - Blue Component - 0.454901960784314 - Green Component - 0.85882352941176499 - Red Component - 0.90196078431372595 - - Ansi 12 Color - - Blue Component - 0.93725490196078398 - Green Component - 0.85098039215686305 - Red Component - 0.40000000000000002 - - Ansi 13 Color - - Blue Component - 0.99607843137254903 - Green Component - 0.435294117647059 - Red Component - 0.61960784313725503 - - Ansi 14 Color - - Blue Component - 0.74901960784313704 - Green Component - 0.72941176470588198 - Red Component - 0.63921568627450998 - - Ansi 15 Color - - Blue Component - 0.94901960784313699 - Green Component - 0.97254901960784301 - Red Component - 0.97254901960784301 - - Ansi 2 Color - - Blue Component - 0.18039215686274501 - Green Component - 0.88627450980392197 - Red Component - 0.65098039215686299 - - Ansi 3 Color - - Blue Component - 0.12156862745098 - Green Component - 0.59215686274509804 - Red Component - 0.99215686274509796 - - Ansi 4 Color - - Blue Component - 0.93725490196078398 - Green Component - 0.85098039215686305 - Red Component - 0.40000000000000002 - - Ansi 5 Color - - Blue Component - 0.99607843137254903 - Green Component - 0.435294117647059 - Red Component - 0.61960784313725503 - - Ansi 6 Color - - Blue Component - 0.45882352941176502 - Green Component - 0.44313725490196099 - Red Component - 0.36862745098039201 - - Ansi 7 Color - - Blue Component - 0.77647058823529402 - Green Component - 0.80000000000000004 - Red Component - 0.80000000000000004 - - Ansi 8 Color - - Blue Component - 0.32941176470588202 - Green Component - 0.32549019607843099 - Red Component - 0.31372549019607798 - - Ansi 9 Color - - Blue Component - 0.61568627450980395 - Green Component - 0.40000000000000002 - Red Component - 1 - - Background Color - - Blue Component - 0.070588235294117604 - Green Component - 0.070588235294117604 - Red Component - 0.070588235294117604 - - Foreground Color - - Blue Component - 0.62745098039215697 - Green Component - 0.62745098039215697 - Red Component - 0.62745098039215697 - - - n0tch2k - - Ansi 0 Color - - Blue Component - 0.21960784494876862 - Green Component - 0.21960784494876862 - Red Component - 0.21960784494876862 - - Ansi 1 Color - - Blue Component - 0.31764706969261169 - Green Component - 0.3333333432674408 - Red Component - 0.66274511814117432 - - Ansi 10 Color - - Blue Component - 0.54901963472366333 - Green Component - 0.54901963472366333 - Red Component - 0.54901963472366333 - - Ansi 11 Color - - Blue Component - 0.45882353186607361 - Green Component - 0.56862747669219971 - Red Component - 0.66274511814117432 - - Ansi 12 Color - - Blue Component - 0.36862745881080627 - Green Component - 0.74117648601531982 - Red Component - 0.59607845544815063 - - Ansi 13 Color - - Blue Component - 0.63921570777893066 - Green Component - 0.63921570777893066 - Red Component - 0.63921570777893066 - - Ansi 14 Color - - Blue Component - 0.86274510622024536 - Green Component - 0.86274510622024536 - Red Component - 0.86274510622024536 - - Ansi 15 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.78431373834609985 - Red Component - 0.84705883264541626 - - Ansi 2 Color - - Blue Component - 0.40000000596046448 - Green Component - 0.40000000596046448 - Red Component - 0.40000000596046448 - - Ansi 3 Color - - Blue Component - 0.31764706969261169 - Green Component - 0.50196081399917603 - Red Component - 0.66274511814117432 - - Ansi 4 Color - - Blue Component - 0.24313725531101227 - Green Component - 0.49019607901573181 - Red Component - 0.3960784375667572 - - Ansi 5 Color - - Blue Component - 0.46274510025978088 - Green Component - 0.46274510025978088 - Red Component - 0.46274510025978088 - - Ansi 6 Color - - Blue Component - 0.78823530673980713 - Green Component - 0.78823530673980713 - Red Component - 0.78823530673980713 - - Ansi 7 Color - - Blue Component - 0.63921570777893066 - Green Component - 0.72156864404678345 - Red Component - 0.81568628549575806 - - Ansi 8 Color - - Blue Component - 0.27843138575553894 - Green Component - 0.27843138575553894 - Red Component - 0.27843138575553894 - - Ansi 9 Color - - Blue Component - 0.45882353186607361 - Green Component - 0.46666666865348816 - Red Component - 0.66274511814117432 - - Background Color - - Blue Component - 0.13333334028720856 - Green Component - 0.13333334028720856 - Red Component - 0.13333334028720856 - - Bold Color - - Blue Component - 0.89919352531433105 - Green Component - 0.89919352531433105 - Red Component - 0.89919352531433105 - - Cursor Color - - Blue Component - 0.40000000596046448 - Green Component - 0.80000001192092896 - Red Component - 1 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.62745100259780884 - Green Component - 0.62745100259780884 - Red Component - 0.62745100259780884 - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - - pnevma - - Ansi 0 Color - - Blue Component - 0.17647059261798859 - Green Component - 0.18039216101169586 - Red Component - 0.18431372940540314 - - Ansi 1 Color - - Blue Component - 0.40000000596046448 - Green Component - 0.40000000596046448 - Red Component - 0.63921570777893066 - - Ansi 10 Color - - Blue Component - 0.63529413938522339 - Green Component - 0.7450980544090271 - Red Component - 0.68627452850341797 - - Ansi 11 Color - - Blue Component - 0.68627452850341797 - Green Component - 0.78823530673980713 - Red Component - 0.89411765336990356 - - Ansi 12 Color - - Blue Component - 0.80784314870834351 - Green Component - 0.74117648601531982 - Red Component - 0.63137257099151611 - - Ansi 13 Color - - Blue Component - 0.85490196943283081 - Green Component - 0.7450980544090271 - Red Component - 0.84313726425170898 - - Ansi 14 Color - - Blue Component - 0.86666667461395264 - Green Component - 0.90588235855102539 - Red Component - 0.69411766529083252 - - Ansi 15 Color - - Blue Component - 0.93725490570068359 - Green Component - 0.93725490570068359 - Red Component - 0.93725490570068359 - - Ansi 2 Color - - Blue Component - 0.49019607901573181 - Green Component - 0.64705884456634521 - Red Component - 0.56470590829849243 - - Ansi 3 Color - - Blue Component - 0.52941179275512695 - Green Component - 0.68627452850341797 - Red Component - 0.84313726425170898 - - Ansi 4 Color - - Blue Component - 0.74117648601531982 - Green Component - 0.64705884456634521 - Red Component - 0.49803921580314636 - - Ansi 5 Color - - Blue Component - 0.76862746477127075 - Green Component - 0.61960786581039429 - Red Component - 0.78039216995239258 - - Ansi 6 Color - - Blue Component - 0.70588237047195435 - Green Component - 0.85882353782653809 - Red Component - 0.54117649793624878 - - Ansi 7 Color - - Blue Component - 0.81568628549575806 - Green Component - 0.81568628549575806 - Red Component - 0.81568628549575806 - - Ansi 8 Color - - Blue Component - 0.27058824896812439 - Green Component - 0.28235295414924622 - Red Component - 0.29019609093666077 - - Ansi 9 Color - - Blue Component - 0.52941179275512695 - Green Component - 0.52941179275512695 - Red Component - 0.84313726425170898 - - Background Color - - Blue Component - 0.10980392247438431 - Green Component - 0.10980392247438431 - Red Component - 0.10980392247438431 - - Bold Color - - Blue Component - 0.89919352531433105 - Green Component - 0.89919352531433105 - Red Component - 0.89919352531433105 - - Cursor Color - - Blue Component - 0.40000000596046448 - Green Component - 0.80000001192092896 - Red Component - 1 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.81568628549575806 - Green Component - 0.81568628549575806 - Red Component - 0.81568628549575806 - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - - robina - - Ansi 0 Color - - Blue Component - 0.20784313976764679 - Green Component - 0.20784313976764679 - Red Component - 0.20784313976764679 - - Ansi 1 Color - - Blue Component - 0.37647059559822083 - Green Component - 0.094117648899555206 - Red Component - 0.84705883264541626 - - Ansi 10 Color - - Blue Component - 0.46666666865348816 - Green Component - 0.87843137979507446 - Red Component - 0.74117648601531982 - - Ansi 11 Color - - Blue Component - 0.38823530077934265 - Green Component - 0.90980392694473267 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 0.69019609689712524 - Green Component - 0.58823531866073608 - Red Component - 0.48627451062202454 - - Ansi 13 Color - - Blue Component - 0.84705883264541626 - Green Component - 0.74901962280273438 - Red Component - 0.84705883264541626 - - Ansi 14 Color - - Blue Component - 0.54901963472366333 - Green Component - 0.90196079015731812 - Red Component - 0.94117647409439087 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.25882354378700256 - Green Component - 0.80784314870834351 - Red Component - 0.71764707565307617 - - Ansi 3 Color - - Blue Component - 0.23529411852359772 - Green Component - 0.65098041296005249 - Red Component - 0.99607843160629272 - - Ansi 4 Color - - Blue Component - 0.70588237047195435 - Green Component - 0.60000002384185791 - Red Component - 0.43529412150382996 - - Ansi 5 Color - - Blue Component - 0.54509806632995605 - Green Component - 0.48235294222831726 - Red Component - 0.54509806632995605 - - Ansi 6 Color - - Blue Component - 0.36862745881080627 - Green Component - 0.63137257099151611 - Red Component - 0.65490198135375977 - - Ansi 7 Color - - Blue Component - 0.86666667461395264 - Green Component - 0.86666667461395264 - Red Component - 0.86666667461395264 - - Ansi 8 Color - - Blue Component - 0.40000000596046448 - Green Component - 0.40000000596046448 - Red Component - 0.40000000596046448 - - Ansi 9 Color - - Blue Component - 0.37647059559822083 - Green Component - 0.0 - Red Component - 0.94117647409439087 - - Background Color - - Blue Component - 0.12941177189350128 - Green Component - 0.12549020349979401 - Red Component - 0.12941177189350128 - - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Color - - Blue Component - 0.16470588743686676 - Green Component - 0.59215688705444336 - Red Component - 0.99215686321258545 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.86666667461395264 - Green Component - 0.86666667461395264 - Red Component - 0.86666667461395264 - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - - square - - Ansi 0 Color - - Blue Component - 0.019607843831181526 - Green Component - 0.019607843831181526 - Red Component - 0.019607843831181526 - - Ansi 1 Color - - Blue Component - 0.48627451062202454 - Green Component - 0.5372549295425415 - Red Component - 0.91372549533843994 - - Ansi 10 Color - - Blue Component - 0.52549022436141968 - Green Component - 0.9686274528503418 - Red Component - 0.76470589637756348 - - Ansi 11 Color - - Blue Component - 0.80000001192092896 - Green Component - 0.9843137264251709 - Red Component - 0.98823529481887817 - - Ansi 12 Color - - Blue Component - 0.9843137264251709 - Green Component - 0.87058824300765991 - Red Component - 0.7137255072593689 - - Ansi 13 Color - - Blue Component - 0.65882354974746704 - Green Component - 0.49803921580314636 - Red Component - 0.67843139171600342 - - Ansi 14 Color - - Blue Component - 0.98823529481887817 - Green Component - 0.85098040103912354 - Red Component - 0.84313726425170898 - - Ansi 15 Color - - Blue Component - 0.88627451658248901 - Green Component - 0.88627451658248901 - Red Component - 0.88627451658248901 - - Ansi 2 Color - - Blue Component - 0.49019607901573181 - Green Component - 0.21568627655506134 - Red Component - 0.7137255072593689 - - Ansi 3 Color - - Blue Component - 0.7450980544090271 - Green Component - 0.92156863212585449 - Red Component - 0.92549020051956177 - - Ansi 4 Color - - Blue Component - 0.92156863212585449 - Green Component - 0.80392158031463623 - Red Component - 0.66274511814117432 - - Ansi 5 Color - - Blue Component - 0.48235294222831726 - Green Component - 0.31372550129890442 - Red Component - 0.45882353186607361 - - Ansi 6 Color - - Blue Component - 0.92549020051956177 - Green Component - 0.7921568751335144 - Red Component - 0.78823530673980713 - - Ansi 7 Color - - Blue Component - 0.94901961088180542 - Green Component - 0.94901961088180542 - Red Component - 0.94901961088180542 - - Ansi 8 Color - - Blue Component - 0.078431375324726105 - Green Component - 0.078431375324726105 - Red Component - 0.078431375324726105 - - Ansi 9 Color - - Blue Component - 0.52549022436141968 - Green Component - 0.57254904508590698 - Red Component - 0.97647058963775635 - - Background Color - - Blue Component - 0.10196078568696976 - Green Component - 0.10196078568696976 - Red Component - 0.10196078568696976 - - Bold Color - - Blue Component - 0.89919352531433105 - Green Component - 0.89919352531433105 - Red Component - 0.89919352531433105 - - Cursor Color - - Blue Component - 0.40000000596046448 - Green Component - 0.80000001192092896 - Red Component - 1 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.67058825492858887 - Green Component - 0.67450982332229614 - Red Component - 0.67450982332229614 - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - - wez - - 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 - 0.80000001192092896 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.80000001192092896 - Red Component - 0.3333333432674408 - - Ansi 3 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.80392158031463623 - Red Component - 0.80392158031463623 - - Ansi 4 Color - - Blue Component - 0.79914551973342896 - Green Component - 0.3342793881893158 - Red Component - 0.33211678266525269 - - Ansi 5 Color - - Blue Component - 0.80000001192092896 - Green Component - 0.3333333432674408 - Red Component - 0.80000001192092896 - - Ansi 6 Color - - Blue Component - 0.7921568751335144 - Green Component - 0.7921568751335144 - Red Component - 0.47843137383460999 - - Ansi 7 Color - - Blue Component - 0.80001527070999146 - Green Component - 0.80001527070999146 - Red Component - 0.80001527070999146 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Bold Color - - Blue Component - 0.27843138575553894 - Green Component - 0.38823530077934265 - Red Component - 1 - - Cursor Color - - Blue Component - 0.44258794188499451 - Green Component - 0.68151366710662842 - Red Component - 0.32484930753707886 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Foreground Color - - Blue Component - 0.70197606086730957 - Green Component - 0.70197606086730957 - Red Component - 0.70197606086730957 - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 0.97329670190811157 - Green Component - 0.32248416543006897 - Red Component - 0.30139619112014771 - - - - Default Arrangement Name - Side-By-Side - Default Bookmark Guid - 04984D44-914B-4A49-8AB5-B2ABB5F8A100 - DeleteSendsCtrlH - 0 - DimBackgroundWindows - - DimInactiveSplitPanes - - DimOnlyText - - DisableFullscreenTransparency - - Displays - - Dark Background - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Anti Alias - 1 - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Bold Color - - Blue Component - 0.49019607843137247 - Green Component - 0.49019607843137247 - Red Component - 1 - - Columns - 80 - 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 - - Disable Bold - 0 - Font - Monaco 12 - Foreground Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Horizontal Character Spacing - 1 - NAFont - Monaco 12 - Rows - 24 - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Transparency - 0.0 - Vertical Character Spacing - 1 - - Light Background - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Anti Alias - 1 - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Columns - 80 - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Default Profile - Yes - Disable Bold - 0 - Font - Monaco 12 - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Horizontal Character Spacing - 1 - NAFont - Monaco 12 - Rows - 24 - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Transparency - 0.0 - Vertical Character Spacing - 1 - - - EnableGrowl - 0 - EnableRendezvous - - FocusFollowsMouse - - FsTabDelay - 1.2331217527389526 - HiddenAFRStrokeThickness - 0.0 - HiddenAdvancedFontRendering - - HideActivityIndicator - - HideMenuBarInFullscreen - - HideScrollbar - - HideTab - - HighlightTabLabels - - HotKeyBookmark - D9F84D29-1805-46B6-8F2F-8E762A933040 - HotKeyTogglesWindow - - Hotkey - - HotkeyChar - 0 - HotkeyCode - 0 -<<<<<<< HEAD -======= - HotkeyMigratedFromSingleToMulti - ->>>>>>> upstream/master - HotkeyModifiers - 0 - IRMemory - 4 - InstantReplay - 1 - JobName - - KeyBindings - - Global - - Global Profile - Yes - Key Mappings - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - - xterm - - Key Mappings - - 0x7f-0x0 - - Action - 11 - Text - 7f - - 0xf700-0x220000 - - Action - 10 - Text - O2A - - 0xf701-0x220000 - - Action - 10 - Text - O2B - - 0xf702-0x220000 - - Action - 10 - Text - O2D - - 0xf702-0x240000 - - Action - 10 - Priority - 1 - Text - O5D - - 0xf703-0x220000 - - Action - 10 - Text - O2C - - 0xf703-0x240000 - - Action - 10 - Priority - 1 - Text - O5C - - 0xf704-0x20000 - - Action - 10 - Text - [11;2~ - - 0xf705-0x20000 - - Action - 10 - Text - [12;2~ - - 0xf706-0x20000 - - Action - 10 - Text - [13;2~ - - 0xf707-0x20000 - - Action - 10 - Text - [14;2~ - - 0xf708-0x20000 - - Action - 10 - Text - [15;2~ - - 0xf709-0x20000 - - Action - 10 - Text - [17;2~ - - 0xf70a-0x20000 - - Action - 10 - Text - [18;2~ - - 0xf70b-0x20000 - - Action - 10 - Text - [19;2~ - - 0xf70c-0x20000 - - Action - 10 - Text - [20;2~ - - 0xf70d-0x20000 - - Action - 10 - Text - [21;2~ - - 0xf70e-0x20000 - - Action - 10 - Text - [23;2~ - - 0xf70f-0x20000 - - Action - 10 - Text - [24;2~ - - 0xf729-0x20000 - - Action - 10 - Text - O2H - - 0xf729-0x40000 - - Action - 10 - Text - O5H - - 0xf72b-0x20000 - - Action - 10 - Text - O2F - - 0xf72b-0x40000 - - Action - 10 - Text - O5F - - - - - Last Updated Version - 0.10 - LeftCommand - 7 - LeftOption - 2 - LoadPrefsFromCustomFolder - - MaxVertically - - MinimumContrast - 0.0 - NSNavLastRootDirectory - ~/.dotfiles -<<<<<<< HEAD - NSNavPanelExpandedSizeForOpenMode - {1106, 813} -======= ->>>>>>> upstream/master - NSQuotedKeystrokeBinding - - NSRepeatCountBinding - - NSScrollAnimationEnabled - -<<<<<<< HEAD - NSWindow Frame Preferences - 67 163 924 485 0 0 1440 877 - NSWindow Frame UKCrashReporter - 99 293 592 584 0 0 1440 877 - NSWindow Frame iTerm Window 0 - 162 91 972 697 0 0 1440 877 -======= - NSScrollViewShouldScrollUnderTitlebar - - NSTableView Columns v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN - gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm - aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz - ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA - DIAIgAlRMSNAdCAAAAAAANIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP - TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA - ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe - AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA - AAAAADoAAAAAAAAAAAAAAAAAAAFM - - NSTableView Sort Ordering v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz - c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf - EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt - swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 - - NSTableView Supports v2 KeyBingingTable - - NSToolbar Configuration com.apple.NSColorPanel - - TB Is Shown - 1 - - NSWindow Frame NSColorPanel - 265 225 231 329 0 0 1280 777 - NSWindow Frame Preferences - 284 412 606 456 0 0 1440 877 - NSWindow Frame SUStatusFrame - 838 106 384 129 0 0 1440 878 - NSWindow Frame SharedPreferences - 269 122 796 473 0 0 1680 1028 - NSWindow Frame UKCrashReporter - 80 193 592 584 0 0 1280 777 - NSWindow Frame iTerm Window 0 - 708 148 972 699 0 0 2560 1418 - NSWindow Frame iTerm Window 1 - 854 54 570 451 0 0 1440 878 ->>>>>>> upstream/master - NeverWarnAboutShortLivedSessions_04984D44-914B-4A49-8AB5-B2ABB5F8A100 - - New Bookmarks - - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - Yes - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 04984D44-914B-4A49-8AB5-B2ABB5F8A100 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.75966143608093262 - Mouse Reporting - - Name - Black-Solid - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.3 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.80000001192092896 - - Ansi 10 Color - - Blue Component - 0.2039216011762619 - Green Component - 0.88627451658248901 - Red Component - 0.54117649793624878 - - Ansi 11 Color - - Blue Component - 0.30980390310287476 - Green Component - 0.91372549533843994 - Red Component - 0.98823529481887817 - - Ansi 12 Color - - Blue Component - 0.81176471710205078 - Green Component - 0.62352937459945679 - Red Component - 0.44705879688262939 - - Ansi 13 Color - - Blue Component - 0.65882349014282227 - Green Component - 0.49803918600082397 - Red Component - 0.67843139171600342 - - Ansi 14 Color - - Blue Component - 0.88627451658248901 - Green Component - 0.88627451658248901 - Red Component - 0.2039216011762619 - - Ansi 15 Color - - Blue Component - 0.92549020051956177 - Green Component - 0.93333327770233154 - Red Component - 0.93333327770233154 - - Ansi 2 Color - - Blue Component - 0.023529410362243652 - Green Component - 0.60392159223556519 - Red Component - 0.30588239431381226 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.62745100259780884 - Red Component - 0.76862752437591553 - - Ansi 4 Color - - Blue Component - 0.64313727617263794 - Green Component - 0.39607840776443481 - Red Component - 0.2039216011762619 - - Ansi 5 Color - - Blue Component - 0.48235291242599487 - Green Component - 0.31372550129890442 - Red Component - 0.45882350206375122 - - Ansi 6 Color - - Blue Component - 0.60392159223556519 - Green Component - 0.59607851505279541 - Red Component - 0.023529410362243652 - - Ansi 7 Color - - Blue Component - 0.81176471710205078 - Green Component - 0.84313732385635376 - Red Component - 0.82745099067687988 - - Ansi 8 Color - - Blue Component - 0.32549020648002625 - Green Component - 0.34117650985717773 - Red Component - 0.33333331346511841 - - Ansi 9 Color - - Blue Component - 0.16078430414199829 - Green Component - 0.16078430414199829 - Red Component - 0.93725490570068359 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - D9F84D29-1805-46B6-8F2F-8E762A933040 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.68596357107162476 - Mouse Reporting - - Name - Scratch-Light - Non Ascii Font - Monaco 24 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - S - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Code - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1.0878773927688599 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Scratch - - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - FFEAAB65-5C55-4E5C-858F-518A99BC1272 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Scratch-White - Non Ascii Font - Monaco 10 - Non-ASCII Anti Aliased - - Normal Font - Monaco 10 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Scratch - - -<<<<<<< HEAD - NoSyncTimeOfLastPromo - 461743666.53294802 - NoSyncTimeOfLastPromoDownload - 474755665.79863501 -======= - NoSyncConfirmBeta - - NoSyncHaveShownPromoWithId_4 - - NoSyncHaveWarnedAboutPasteConfirmationChange - - NoSyncInstallationId - EBB08AEE-D146-4427-A69E-16689D1B6C23 - NoSyncLastTipTime - 490466268.685619 - NoSyncNeverRemindPrefsChangesLostForFile - - NoSyncNeverRemindPrefsChangesLostForFile_selection - 0 - NoSyncPermissionToShowTip - - NoSyncTimeOfFirstLaunchOfVersionWithTip - 478235921.85160202 - NoSyncTimeOfLastPromo - 478032308.39368999 - NoSyncTimeOfLastPromoDownload - 478218472.20757103 - NoSyncTipsDisabled - - NoSyncTipsToNotShow - - 000 - 0000 - 0001 - 0002 - 0003 - 0004 - 0005 - 0006 - 0007 - 0008 - 0009 - 0010 - 0011 - 0012 - 0013 - 0014 - 0015 - ->>>>>>> upstream/master - NotFirstRun - - OnlyWhenMoreTabs - - OpenArrangementAtStartup - - OpenBookmark - - OpenTmuxWindowsIn - 0 - PassOnControlClick - - PasteFromClipboard - - PointerActions - - Button,1,1,, - - Action - kContextMenuPointerAction - - Gesture,ThreeFingerSwipeDown,, - - Action - kPrevWindowPointerAction - - Gesture,ThreeFingerSwipeLeft,, - - Action - kPrevTabPointerAction - - Gesture,ThreeFingerSwipeRight,, - - Action - kNextTabPointerAction - - Gesture,ThreeFingerSwipeUp,, - - Action - kNextWindowPointerAction - - - PrefsCustomFolder - /Users/matthewmccullough/.dotfiles - PromptOnClose - - PromptOnQuit - - QuitWhenAllWindowsClosed - - RefreshRate - 25 - RightCommand - 8 - RightOption - 3 - SUAutomaticallyUpdate - - SUEnableAutomaticChecks - -<<<<<<< HEAD - SUFeedURL - https://iterm2.com/appcasts/testing.xml - SUHasLaunchedBefore - - SULastCheckTime - 2016-01-17T20:34:09Z -======= - SUFeedAlternateAppNameKey - iTerm - SUFeedURL - https://iterm2.com/appcasts/testing.xml?shard=19 - SUHasLaunchedBefore - - SULastCheckTime - 2017-10-13T20:02:37Z ->>>>>>> upstream/master - SavePasteHistory - - Secure Input - - Show Toolbelt - - ShowBookmarkName - - ShowFullScreenTabBar - - ShowPaneTitles - - SmartPlacement - - SplitPaneDimmingAmount - 0.51256006956100464 - SwitchTabModifier - 4 - SwitchWindowModifier - 6 - TabViewType - 0 - Terminals - - Default - - Auto Close - 1 - Blink - 0 - Default Profile - Yes - Double Width - 1 - Encoding - 4 - Idle Char - 0 - Scrollback - 1000 - Send Idle Char - 0 - Silence Bell - 0 - Term Type - xterm - - - ThreeFingerEmulates - - TmuxDashboardLimit - 10 - ToolbeltTools - - Jobs - Paste History - Profiles - Notes - - TripleClickSelectsFullWrappedLines - - UKCrashReporterLastCrashReportDate -<<<<<<< HEAD - 1416457728 -======= - 1415110784 ->>>>>>> upstream/master - URLHandlers - - URLHandlersByGuid - - Use background pattern indicator - - UseBorder - - UseCompactLabel - - UseLionStyleFullscreen - - WebKitDefaultFontSize - 11 - WebKitStandardFont - Lucida Grande - Window Arrangements - - Arrangement 2 - - - Height - 553 - Hide After Opening - - Screen - 0 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - bash -l - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - 7D456D1D-F04B-4D07-AA12-D3E0E4D4B67F - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 10 - Non-ASCII Anti Aliased - - Normal Font - Monaco 10 - Option Key Sends - 0 - Original Guid - FFEAAB65-5C55-4E5C-858F-518A99BC1272 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Scratch - - Columns - 105 - Rows - 36 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 508 - width - 640 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 508 - width - 640 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-774AD051-9E1C-4B93-B308-9F293063B595 - Width - 642 - Window Type - 0 - X Origin - 115 - Y Origin - 561 - - - Height - 720 - Hide After Opening - - Old Height - 715 - Old Width - 1076 - Old X Origin - -1234 - Old Y Origin - 722 - Screen - 1 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 105 - Rows - 16 - Working Directory - /Users/mccm06/Documents/Scratch/hgwmine - - View Type - SessionView - frame - - height - 463 - width - 1280 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - D69A932C-E01C-4AA6-BE8E-AB9106994B34 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 6 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 16 - Option Key Sends - 0 - Original Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 158 - Rows - 12 - Working Directory - /Users/mccm06/Documents/Scratch/hgwmine - - View Type - SessionView - frame - - height - 256 - width - 1280 - x - 0.0 - y - 464 - - - - View Type - Splitter - frame - - height - 720 - width - 1280 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-C5C912B6-14C0-4258-A56E-6F15918B2A2B - Width - 1280 - Window Type - 1 - X Origin - -1280 - Y Origin - 720 - - - Git Class Three Up - - - Height - 720 - Hide After Opening - - Old Height - 697 - Old Width - 972 - Old X Origin - -1092 - Old Y Origin - 721 - Screen - 1 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 71 - Rows - 17 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 496 - width - 868 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 870327C6-0959-4E38-BD97-159A5835FB3A - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 7 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 17 - Option Key Sends - 0 - Original Guid - DAFA969F-672A-4F9B-A9B5-CE8FBF5D290E - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 95 - Rows - 10 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 223 - width - 868 - x - 0.0 - y - 497 - - - - View Type - Splitter - frame - - height - 720 - width - 868 - x - 0.0 - y - 0.0 - - isVertical - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - C8602654-4F12-4E00-BC8A-7EC08E4B3920 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 4 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 14 - Option Key Sends - 0 - Original Guid - 406F1B36-15A4-4AE8-8316-038217CFF083 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 57 - Rows - 43 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes - - View Type - SessionView - frame - - height - 720 - width - 411 - x - 869 - y - 0.0 - - - - View Type - Splitter - frame - - height - 720 - width - 1280 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 - Width - 1280 - Window Type - 1 - X Origin - -1280 - Y Origin - 720 - - - O'Reilly Class Today - - - Desired Columns - 80 - Desired Rows - 24 - Height - 950 - Hide After Opening - - Screen - 0 - Selected Tab Index - 1 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 1 - Red Component - 1 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.43553587794303894 - Green Component - 0.41699209809303284 - Red Component - 0.98909229040145874 - - Guid - D300C14A-8561-493B-AAC9-F58CDF1C112C - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - O'Reilly Logs - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - oreilly - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Downloads - - Columns - 135 - Rows - 33 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 905 - width - 1645 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 905 - width - 1645 - x - 0.0 - y - 0.0 - - isVertical - - - - - Root - - Subviews - - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.99424785375595093 - Green Component - 1 - Red Component - 0.37502476572990417 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - CF1DD721-0FA4-4C34-B8C9-C0DAC1ADB191 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - O'Reilly Commands - Non Ascii Font - Monaco 21 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 31 - Option Key Sends - 0 - Original Guid - EB0940A7-C7AB-4282-A456-68AFF85C893C - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - oreilly - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 66 - Rows - 18 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 685 - width - 1095 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.99424785375595093 - Green Component - 1 - Red Component - 0.37502476572990417 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - B503787A-EF3A-4E03-969C-0549CBEC2AF7 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - O'Reilly Commands - Non Ascii Font - Monaco 7 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 17 - Option Key Sends - 0 - Original Guid - EB0940A7-C7AB-4282-A456-68AFF85C893C - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - oreilly - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 58 - Rows - 34 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 685 - width - 549 - x - 1096 - y - 0.0 - - - - View Type - Splitter - frame - - height - 685 - width - 1645 - x - 0.0 - y - 0.0 - - isVertical - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - bash -l - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - 3538A360-C7BB-4D6F-9974-260202D4EDCD - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - O'Reilly Commands - Non Ascii Font - Monaco 10 - Non-ASCII Anti Aliased - - Normal Font - Monaco 10 - Option Key Sends - 0 - Original Guid - FFEAAB65-5C55-4E5C-858F-518A99BC1272 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.3 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Scratch - - Columns - 270 - Rows - 13 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 219 - width - 1645 - x - 0.0 - y - 686 - - - - View Type - Splitter - frame - - height - 905 - width - 1645 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-B8714FBB-AB2A-4D0F-A12F-90A9B99C2DE6 - Width - 1646 - Window Type - 0 - X Origin - 164 - Y Origin - 84 - - - Opaque Black 3 Up - - - Desired Columns - -1 - Desired Rows - -1 - Height - 1200 - Hide After Opening - - Old Height - 697 - Old Width - 972 - Old X Origin - -1092 - Old Y Origin - 721 - Screen - 0 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - Yes - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 2CCDAF72-41C3-4C7B-8E3D-008A728CA275 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.75966143608093262 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Original Guid - ECFB63A4-2E95-41D1-9ECA-65F9EE3DDD8A - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.3 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 107 - Rows - 29 - Working Directory - /Users/mccm06/Documents/Scratch/foundations-git-class/project1 - - View Type - SessionView - frame - - height - 827 - width - 1302 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - Yes - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - BD198098-A497-45B4-9BD6-85DCAB0AEE6B - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.75966143608093262 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Original Guid - F54A1F7C-437B-46EA-B1A2-5A8043605E14 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.3 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 107 - Rows - 12 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 372 - width - 1302 - x - 0.0 - y - 828 - - - - View Type - Splitter - frame - - height - 1200 - width - 1302 - x - 0.0 - y - 0.0 - - isVertical - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - Yes - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - D09C9431-62EC-4BF9-A081-8F7C15ADC273 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.75966143608093262 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Original Guid - 8F2AB358-E742-408A-AF77-AB23AB652B79 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.3 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 50 - Rows - 43 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes - - View Type - SessionView - frame - - height - 1200 - width - 617 - x - 1303 - y - 0.0 - - - - View Type - Splitter - frame - - height - 1200 - width - 1920 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 - Width - 1920 - Window Type - 1 - X Origin - 0.0 - Y Origin - 0.0 - - - Oreilly - - - Desired Columns - 80 - Desired Rows - 24 - Height - 887 - Hide After Opening - - Screen - 0 - Selected Tab Index - 3 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Allow Title Reporting - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Is Tiled - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - Yes - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 04984D44-914B-4A49-8AB5-B2ABB5F8A100 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Solid - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Use Canonical Parser - - Use Italic Font - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 75 - Rows - 31 - Working Directory - /Users/mccm06/.dotfiles - - View Type - SessionView - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - isVertical - - - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - bash -l - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - FFEAAB65-5C55-4E5C-858F-518A99BC1272 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Scratch-White - Non Ascii Font - Monaco 10 - Non-ASCII Anti Aliased - - Normal Font - Monaco 10 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Scratch - - Columns - 150 - Rows - 59 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - isVertical - - - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - bash -l - Cursor Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Yes - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Guid - 44E0C79E-1887-4867-BF26-64B34F5BCA26 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - HelloGitWorld - Non Ascii Font - Monaco 10 - Non-ASCII Anti Aliased - - Normal Font - Monaco 10 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 1000 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - ~/Documents/Teach/Courses/Git-Going-1Hour/examples/hellogitworld.git - - Columns - 150 - Rows - 59 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - isVertical - - - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.11764705926179886 - Green Component - 0.11372549086809158 - Red Component - 0.10588235408067703 - - Ansi 1 Color - - Blue Component - 0.44705882668495178 - Green Component - 0.14901961386203766 - Red Component - 0.97647058963775635 - - Ansi 10 Color - - Blue Component - 0.37254902720451355 - Green Component - 0.92941176891326904 - Red Component - 0.7450980544090271 - - Ansi 11 Color - - Blue Component - 0.45490196347236633 - Green Component - 0.85882353782653809 - Red Component - 0.90196079015731812 - - Ansi 12 Color - - Blue Component - 0.93725490570068359 - Green Component - 0.85098040103912354 - Red Component - 0.40000000596046448 - - Ansi 13 Color - - Blue Component - 0.99607843160629272 - Green Component - 0.43529412150382996 - Red Component - 0.61960786581039429 - - Ansi 14 Color - - Blue Component - 0.74901962280273438 - Green Component - 0.729411780834198 - Red Component - 0.63921570777893066 - - Ansi 15 Color - - Blue Component - 0.94901961088180542 - Green Component - 0.97254902124404907 - Red Component - 0.97254902124404907 - - Ansi 2 Color - - Blue Component - 0.18039216101169586 - Green Component - 0.88627451658248901 - Red Component - 0.65098041296005249 - - Ansi 3 Color - - Blue Component - 0.12156862765550613 - Green Component - 0.59215688705444336 - Red Component - 0.99215686321258545 - - Ansi 4 Color - - Blue Component - 0.93725490570068359 - Green Component - 0.85098040103912354 - Red Component - 0.40000000596046448 - - Ansi 5 Color - - Blue Component - 0.99607843160629272 - Green Component - 0.43529412150382996 - Red Component - 0.61960786581039429 - - Ansi 6 Color - - Blue Component - 0.45882353186607361 - Green Component - 0.44313725829124451 - Red Component - 0.36862745881080627 - - Ansi 7 Color - - Blue Component - 0.7764706015586853 - Green Component - 0.80000001192092896 - Red Component - 0.80000001192092896 - - Ansi 8 Color - - Blue Component - 0.32941177487373352 - Green Component - 0.32549020648002625 - Red Component - 0.31372550129890442 - - Ansi 9 Color - - Blue Component - 0.61568629741668701 - Green Component - 0.40000000596046448 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.070588238537311554 - Green Component - 0.070588238537311554 - Red Component - 0.070588238537311554 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.89919352531433105 - Green Component - 0.89919352531433105 - Red Component - 0.89919352531433105 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - Cursor Color - - Blue Component - 0.40000000596046448 - Green Component - 0.80000001192092896 - Red Component - 1 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Type - 2 - Custom Command - No - Custom Directory - No - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.62745100259780884 - Green Component - 0.62745100259780884 - Red Component - 0.62745100259780884 - - Guid - 13137829-6CF1-477F-89FD-82F64418F743 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Git Workbook - Non Ascii Font - Monaco 9 - Non-ASCII Anti Aliased - - Normal Font - Monaco 9 - Option Key Sends - 0 - Original Guid - 59AB5D02-1269-4904-B751-83F2B55BA254 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 1000 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Teach/Courses/Git/repos/workbook_and_examples_git - - Columns - 89 - Rows - 62 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 842 - width - 455 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.11764705926179886 - Green Component - 0.11372549086809158 - Red Component - 0.10588235408067703 - - Ansi 1 Color - - Blue Component - 0.44705882668495178 - Green Component - 0.14901961386203766 - Red Component - 0.97647058963775635 - - Ansi 10 Color - - Blue Component - 0.37254902720451355 - Green Component - 0.92941176891326904 - Red Component - 0.7450980544090271 - - Ansi 11 Color - - Blue Component - 0.45490196347236633 - Green Component - 0.85882353782653809 - Red Component - 0.90196079015731812 - - Ansi 12 Color - - Blue Component - 0.93725490570068359 - Green Component - 0.85098040103912354 - Red Component - 0.40000000596046448 - - Ansi 13 Color - - Blue Component - 0.99607843160629272 - Green Component - 0.43529412150382996 - Red Component - 0.61960786581039429 - - Ansi 14 Color - - Blue Component - 0.74901962280273438 - Green Component - 0.729411780834198 - Red Component - 0.63921570777893066 - - Ansi 15 Color - - Blue Component - 0.94901961088180542 - Green Component - 0.97254902124404907 - Red Component - 0.97254902124404907 - - Ansi 2 Color - - Blue Component - 0.18039216101169586 - Green Component - 0.88627451658248901 - Red Component - 0.65098041296005249 - - Ansi 3 Color - - Blue Component - 0.12156862765550613 - Green Component - 0.59215688705444336 - Red Component - 0.99215686321258545 - - Ansi 4 Color - - Blue Component - 0.93725490570068359 - Green Component - 0.85098040103912354 - Red Component - 0.40000000596046448 - - Ansi 5 Color - - Blue Component - 0.99607843160629272 - Green Component - 0.43529412150382996 - Red Component - 0.61960786581039429 - - Ansi 6 Color - - Blue Component - 0.45882353186607361 - Green Component - 0.44313725829124451 - Red Component - 0.36862745881080627 - - Ansi 7 Color - - Blue Component - 0.7764706015586853 - Green Component - 0.80000001192092896 - Red Component - 0.80000001192092896 - - Ansi 8 Color - - Blue Component - 0.32941177487373352 - Green Component - 0.32549020648002625 - Red Component - 0.31372550129890442 - - Ansi 9 Color - - Blue Component - 0.61568629741668701 - Green Component - 0.40000000596046448 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.070588238537311554 - Green Component - 0.070588238537311554 - Red Component - 0.070588238537311554 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 2 - Bold Color - - Blue Component - 0.89919352531433105 - Green Component - 0.89919352531433105 - Red Component - 0.89919352531433105 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - Cursor Color - - Blue Component - 0.40000000596046448 - Green Component - 0.80000001192092896 - Red Component - 1 - - Cursor Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Cursor Type - 2 - Custom Command - No - Custom Directory - No - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.62745100259780884 - Green Component - 0.62745100259780884 - Red Component - 0.62745100259780884 - - Guid - DD7E1D7D-CAFF-4B7B-9403-422E08C54E01 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Git Workbook - Non Ascii Font - Monaco 25 - Non-ASCII Anti Aliased - - Normal Font - Monaco 25 - Option Key Sends - 0 - Original Guid - 59AB5D02-1269-4904-B751-83F2B55BA254 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 1000 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Selection Color - - Blue Component - 0.30241936445236206 - Green Component - 0.30241936445236206 - Red Component - 0.30241936445236206 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - GitGoing - - Terminal Type - xterm - Transparency - 0.0 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Teach/Courses/Git/repos/workbook_and_examples_git - - Columns - 28 - Rows - 24 - Working Directory - /Users/mccm06/.dotfiles/scripts - - View Type - SessionView - frame - - height - 842 - width - 459 - x - 456 - y - 0.0 - - - - View Type - Splitter - frame - - height - 842 - width - 915 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-F273DDA7-A494-4902-9E0C-7BA710D382DE - Width - 917 - Window Type - 0 - X Origin - 549 - Y Origin - 150 - - - Side-By-Side - - - Height - 1024 - Hide After Opening - - Screen - 0 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 69 - Rows - 36 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 979 - width - 838 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 979 - width - 838 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-8F263882-81C3-426D-B419-69B3CA750E01 - Width - 840 - Window Type - 0 - X Origin - 0.0 - Y Origin - 4 - - - Height - 1024 - Hide After Opening - - Screen - 0 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 69 - Rows - 36 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com - - View Type - SessionView - frame - - height - 979 - width - 838 - x - 0.0 - y - 0.0 - - - - View Type - Splitter - frame - - height - 979 - width - 838 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-DF0BE419-ED62-4318-862E-462CFE78FB13 - Width - 840 - Window Type - 0 - X Origin - 840 - Y Origin - 4 - - - Teaching Four-up - - - Desired Columns - 80 - Desired Rows - 24 - Height - 900 - Hide After Opening - - Old Height - 697 - Old Width - 972 - Old X Origin - -1092 - Old Y Origin - 721 - Screen - 0 - Selected Tab Index - 0 - Tabs - - - Root - - Subviews - - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 35B298A6-C7D2-4E51-A93F-7C91B75D95AE - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 14 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 24 - Option Key Sends - 0 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 80 - Rows - 22 - Working Directory - /Users/mccm06/Documents/Scratch/hellogitworld - - View Type - SessionView - frame - - height - 620 - width - 977 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - D8AB0622-7254-4AEA-9364-AB78E782D766 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 7 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 17 - Option Key Sends - 0 - Original Guid - 870327C6-0959-4E38-BD97-159A5835FB3A - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 107 - Rows - 13 - Working Directory - /Users/mccm06/Documents/Code/GitHub/teach.github.com/classnotes - - View Type - SessionView - frame - - height - 279 - width - 977 - x - 0.0 - y - 621 - - - - View Type - Splitter - frame - - height - 900 - width - 977 - x - 0.0 - y - 0.0 - - isVertical - - - - Subviews - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 6C1D5935-44A2-4D5B-9176-0AE3B3F40BF8 - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 2 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 12 - Option Key Sends - 0 - Original Guid - C8602654-4F12-4E00-BC8A-7EC08E4B3920 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 75 - Rows - 30 - Working Directory - /Users/mccm06/Documents/Scratch/hellogitworld - - View Type - SessionView - frame - - height - 449.5 - width - 462 - x - 0.0 - y - 0.0 - - - - Is Active - - Session - - Bookmark - - ASCII Anti Aliased - - Ambiguous Double Width - - Ansi 0 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 1 Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 10 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 11 Color - - Blue Component - 0.3333333432674408 - Green Component - 1 - Red Component - 1 - - Ansi 12 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 13 Color - - Blue Component - 1 - Green Component - 0.3333333432674408 - Red Component - 1 - - Ansi 14 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 0.3333333432674408 - - Ansi 15 Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Ansi 2 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 3 Color - - Blue Component - 0.0 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 4 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.0 - - Ansi 5 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.0 - Red Component - 0.73333334922790527 - - Ansi 6 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.0 - - Ansi 7 Color - - Blue Component - 0.73333334922790527 - Green Component - 0.73333334922790527 - Red Component - 0.73333334922790527 - - Ansi 8 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 0.3333333432674408 - - Ansi 9 Color - - Blue Component - 0.3333333432674408 - Green Component - 0.3333333432674408 - Red Component - 1 - - Automatically Log - - BM Growl - - Background Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Background Image Location - - Blend - 0.30000001192092896 - Blink Allowed - - Blinking Cursor - - Blur - - Blur Radius - 6.1769638061523438 - Bold Color - - Blue Component - 1 - Green Component - 1 - Red Component - 1 - - Character Encoding - 4 - Close Sessions On End - - Columns - 80 - Command - /bin/zsh -i - 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 - - Cursor Type - 2 - Custom Command - No - Custom Directory - Recycle - Default Bookmark - No - Disable Printing - - Disable Smcup Rmcup - - Disable Window Resizing - - Flashing Bell - - Foreground Color - - Blue Component - 0.99999129772186279 - Green Component - 0.99997437000274658 - Red Component - 1 - - Guid - 12DEDB6F-2FE7-49AC-838C-B393AE33FC0D - Hide After Opening - - Horizontal Spacing - 1 - Idle Code - 0 - Initial Text - - Jobs to Ignore - - rlogin - ssh - slogin - telnet - - Keyboard Map - - 0xf700-0x220000 - - Action - 7 - - 0xf701-0x220000 - - Action - 6 - - 0xf702-0x320000 - - Action - 2 - - 0xf702-0x380000 - - Action - 2 - - 0xf703-0x320000 - - Action - 0 - - 0xf703-0x380000 - - Action - 0 - - 0xf729-0x20000 - - Action - 5 - - 0xf72b-0x20000 - - Action - 4 - - 0xf72c-0x20000 - - Action - 9 - - 0xf72d-0x20000 - - Action - 8 - - - Log Directory - - Minimum Contrast - 0.0 - Mouse Reporting - - Name - Black-Transparent2 - Non Ascii Font - Monaco 7 - Non-ASCII Anti Aliased - - Normal Font - Inconsolata 17 - Option Key Sends - 0 - Original Guid - 6C1D5935-44A2-4D5B-9176-0AE3B3F40BF8 - Prompt Before Closing 2 - 0 - Right Option Key Sends - 0 - Rows - 24 - Screen - -1 - Scrollback Lines - 0 - Scrollback With Status Bar - - Scrollback in Alternate Screen - - Selected Text Color - - Blue Component - 0.0 - Green Component - 0.0 - Red Component - 0.0 - - Selection Color - - Blue Component - 1 - Green Component - 0.8353000283241272 - Red Component - 0.70980000495910645 - - Semantic History - - action - best editor - editor - com.sublimetext.2 - text - - - Send Code When Idle - - Set Local Environment Vars - - Shortcut - - Silence Bell - - Smart Cursor Color - - Smart Selection Rules - - - notes - Word bounded by whitespace - precision - low - regex - \S+ - - - notes - C++ namespace::identifier - precision - normal - regex - ([a-zA-Z0-9_]+::)+[a-zA-Z0-9_]+ - - - notes - Paths - precision - normal - regex - \~?/?([[:letter:][:number:]._-]+/+)+[[:letter:][:number:]._-]+/? - - - notes - Quoted string - precision - normal - regex - @?"(?:[^"\\]|\\.)*" - - - notes - Java/Python include paths - precision - normal - regex - ([[:letter:][:number:]._]+\.)+[[:letter:][:number:]._]+ - - - notes - mailto URL - precision - normal - regex - \bmailto:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Obj-C selector - precision - high - regex - @selector\([^)]+\) - - - notes - email address - precision - high - regex - \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b - - - notes - HTTP URL - precision - very_high - regex - https?://([a-z0-9A-Z]+(:[a-zA-Z0-9]+)?@)?([a-z0-9A-Z]+\.)+[A-Za-z]+((:[0-9]+)?)(/[a-zA-Z0-9;/\.\-_+%?&@=#\(\)]*)? - - - notes - SSH URL - precision - very_high - regex - \bssh:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - notes - Telnet URL - precision - very_high - regex - \btelnet:([a-z0-9A-Z_]+@)?([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\b - - - Sync Title - - Tags - - Terminal Type - xterm - Transparency - 0.16943648457527161 - Triggers - - Unlimited Scrollback - - Use Bold Font - - Use Bright Bold - - Vertical Spacing - 1 - Visual Bell - - Window Type - 0 - Working Directory - /Users/mccm06/Documents/Scratch - - Columns - 50 - Rows - 22 - Working Directory - /Users/mccm06/Documents/Scratch - - View Type - SessionView - frame - - height - 449.5 - width - 462 - x - 0.0 - y - 450.5 - - - - View Type - Splitter - frame - - height - 900 - width - 462 - x - 978 - y - 0.0 - - isVertical - - - - View Type - Splitter - frame - - height - 900 - width - 1440 - x - 0.0 - y - 0.0 - - isVertical - - - - - TerminalGuid - pty-A8FEAF28-10B8-4B78-8945-0246B9AE11C9 - Width - 1440 - Window Type - 1 - X Origin - 0.0 - Y Origin - 0.0 - - - - WindowNumber - - WindowStyle - 2 - WordCharacters - /-+\~_. - findIgnoreCase_iTerm - - findRegex_iTerm - - iTerm Version -<<<<<<< HEAD - 2.1.4 -======= - 3.1.3.beta.1 ->>>>>>> upstream/master - - +{ + AboutToPasteTabsWithCancel = 1; + "AboutToPasteTabsWithCancel_selection" = 0; + AllowDragOfTabIntoNewWindow = 0; + AlternateMouseScroll = 1; + AppleAntiAliasingThreshold = 1; + AppleScrollAnimationEnabled = 0; + AppleSmoothFixedFontsSizeThreshold = 1; + AppleWindowTabbingMode = manual; + AutoCommandHistory = 0; + ClosingTmuxWindowKillsTmuxWindows = 1; + "ClosingTmuxWindowKillsTmuxWindows_selection" = 1; + "Default Arrangement Name" = "No Windows"; + "Default Bookmark Guid" = "824B8E92-749D-4068-8289-0534F17B1A40"; + DockIconTogglesWindow = 1; + GlobalKeyMap = { + "0x19-0x60000" = { + Action = 39; + Text = ""; + }; + "0x9-0x40000" = { + Action = 32; + Text = ""; + }; + "0xf700-0x300000" = { + Action = 7; + Text = ""; + }; + "0xf700-0x320000" = { + Action = 9; + Text = ""; + }; + "0xf701-0x300000" = { + Action = 6; + Text = ""; + }; + "0xf701-0x320000" = { + Action = 8; + Text = ""; + }; + "0xf702-0x280000" = { + Action = 10; + Text = b; + }; + "0xf702-0x300000" = { + Action = 11; + Text = 0x01; + }; + "0xf702-0x320000" = { + Action = 33; + Text = ""; + }; + "0xf703-0x280000" = { + Action = 10; + Text = f; + }; + "0xf703-0x300000" = { + Action = 11; + Text = 0x05; + }; + "0xf703-0x320000" = { + Action = 34; + Text = ""; + }; + "0xf729-0x100000" = { + Action = 5; + Text = ""; + }; + "0xf72b-0x100000" = { + Action = 4; + Text = ""; + }; + "0xf72c-0x100000" = { + Action = 9; + Text = ""; + }; + "0xf72c-0x20000" = { + Action = 9; + Text = ""; + }; + "0xf72d-0x100000" = { + Action = 8; + Text = ""; + }; + "0xf72d-0x20000" = { + Action = 8; + Text = ""; + }; + }; + HideStuckTooltips = 1; + HideTab = 0; + HotKeyBookmark = "32542093-3E41-43F6-B9F6-F699B3E269B9"; + HotKeyTogglesWindow = 1; + Hotkey = 0; + HotkeyAutoHides = 1; + HotkeyChar = 0; + HotkeyCode = 0; + HotkeyMigratedFromSingleToMulti = 1; + HotkeyModifiers = 9437448; + LeftOption = 2; + NSNavLastRootDirectory = "~/Documents"; + NSNavPanelExpandedSizeForOpenMode = "{712, 448}"; + NSQuotedKeystrokeBinding = ""; + NSRepeatCountBinding = ""; + NSScrollAnimationEnabled = 0; + NSScrollViewShouldScrollUnderTitlebar = 0; + "NSTableView Columns v2 KeyBingingTable" = <62706c69 73743030 d4010203 04050636 37582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0ae 07080f1a 1b1c1d1e 1f202630 31325524 6e756c6c d2090a0b 0e5a4e53 2e6f626a 65637473 5624636c 617373a2 0c0d8002 800a800d d310090a 11151957 4e532e6b 657973a3 12131480 03800480 05a31617 18800680 07800880 095a4964 656e7469 66696572 55576964 74685648 69646465 6e513023 4068c000 00000000 08d22122 23245a24 636c6173 736e616d 65582463 6c617373 65735c4e 53446963 74696f6e 617279a2 2325584e 534f626a 656374d3 10090a27 2b19a312 13148003 80048005 a32c2d18 800b800c 80088009 51312340 74a00000 000000d2 21223334 5e4e534d 75746162 6c654172 726179a3 33352557 4e534172 7261795f 100f4e53 4b657965 64417263 68697665 72d13839 55417272 61798001 00080011 001a0023 002d0032 00370046 004c0051 005c0063 00660068 006a006c 0073007b 007f0081 00830085 0089008b 008d008f 0091009c 00a200a9 00ab00b4 00b500ba 00c500ce 00db00de 00e700ee 00f200f4 00f600f8 00fc00fe 01000102 01040106 010f0114 01230127 012f0141 0144014a 00000000 00000201 00000000 0000003a 00000000 00000000 00000000 0000014c>; + "NSTableView Sort Ordering v2 KeyBingingTable" = <62706c69 73743030 d4010203 04050614 15582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0a3 07080d55 246e756c 6cd2090a 0b0c5a4e 532e6f62 6a656374 73562463 6c617373 a08002d2 0e0f1011 5a24636c 6173736e 616d6558 24636c61 73736573 5e4e534d 75746162 6c654172 726179a3 10121357 4e534172 72617958 4e534f62 6a656374 5f100f4e 534b6579 65644172 63686976 6572d116 17554172 72617980 0108111a 232d3237 3b414651 58595b60 6b748387 8f98aaad b3000000 00000001 01000000 00000000 18000000 00000000 00000000 00000000 b5>; + "NSTableView Supports v2 KeyBingingTable" = 1; + "NSToolbar Configuration com.apple.NSColorPanel" = { + "TB Is Shown" = 1; + }; + "NSWindow Frame Preferences" = "519 594 606 456 0 0 1680 1050 "; + "NSWindow Frame SUUpdateAlert" = "610 434 700 622 0 0 1920 1200 "; + "NSWindow Frame SessionsPreferences" = "220 66 606 456 0 0 1680 1028 "; + "NSWindow Frame SharedPreferences" = "8 403 1018 447 0 0 1680 1028 "; + "NSWindow Frame iTerm Window 0" = "67 33 1634 968 0 0 1920 1178 "; + "NSWindow Frame iTerm Window 1" = "1 12 1431 866 0 0 1920 1178 "; + "NSWindow Frame iTerm Window 2" = "242 28 1438 864 0 0 1920 1200 "; + "NSWindow Frame iTerm Window 3" = "353 261 1438 864 0 0 1920 1200 "; + "NSWindow Frame iTerm Window 4" = "13 21 1368 932 0 0 1920 1200 "; + "NSWindow Frame iTerm Window 5" = "139 80 1368 932 0 0 1920 1200 "; + "NeverWarnAboutShortLivedSessions_32542093-3E41-43F6-B9F6-F699B3E269B9" = 1; + "NeverWarnAboutShortLivedSessions_32542093-3E41-43F6-B9F6-F699B3E269B9_selection" = 0; + "NeverWarnAboutShortLivedSessions_824B8E92-749D-4068-8289-0534F17B1A40" = 1; + "NeverWarnAboutShortLivedSessions_824B8E92-749D-4068-8289-0534F17B1A40_selection" = 0; + "New Bookmarks" = ( + { + "ASCII Anti Aliased" = 1; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "824B8E92-749D-4068-8289-0534F17B1A40"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = Default; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-1"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 0; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 160; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "21E8213B-9C8E-487A-B9C0-A877B92E9935"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = Guake; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 50; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = "0.4171528291420118"; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 9; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + Blend = "0.5"; + "Blinking Cursor" = 0; + Blur = 1; + "Blur Radius" = 2; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "32542093-3E41-43F6-B9F6-F699B3E269B9"; + "Has Hotkey" = 1; + "Horizontal Spacing" = 1; + "HotKey Activated By Modifier" = 0; + "HotKey Alternate Shortcuts" = ( + ); + "HotKey Characters" = "\\Uf70f"; + "HotKey Characters Ignoring Modifiers" = "\\Uf70f"; + "HotKey Key Code" = 111; + "HotKey Modifier Activation" = 0; + "HotKey Modifier Flags" = 1048576; + "HotKey Window Animates" = 1; + "HotKey Window AutoHides" = 0; + "HotKey Window Dock Click Action" = 2; + "HotKey Window Floats" = 0; + "HotKey Window Reopens On Activation" = 0; + "Idle Code" = 0; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "Hotkey Window"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 50; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = "0.04531482331146148"; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "AWDS Pane Directory" = ""; + "AWDS Pane Option" = No; + "AWDS Tab Directory" = ""; + "AWDS Tab Option" = No; + "AWDS Window Directory" = ""; + "AWDS Window Option" = No; + "Allow Title Setting" = 0; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blink Allowed" = 1; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "34A1BD77-0386-40E7-8756-A45C901DBCCF"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "/Users/jim.lawton/git/cmf/tools/amazon/vpc_ssh -u jiml -t rdkcmf-emulator-dev"; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "rdkcmf-emulator-dev"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "AWDS Pane Directory" = ""; + "AWDS Pane Option" = No; + "AWDS Tab Directory" = ""; + "AWDS Tab Option" = No; + "AWDS Window Directory" = ""; + "AWDS Window Option" = No; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blink Allowed" = 1; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "53575FCB-E859-4072-95EC-D99DFF3F6F8B"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "/Users/jim.lawton/git/cmf/tools/amazon/vpc_ssh -u jiml -t rdkcmf-gerritmaster"; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "rdkcmf-gerritmaster"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "AWDS Pane Directory" = ""; + "AWDS Pane Option" = No; + "AWDS Tab Directory" = ""; + "AWDS Tab Option" = No; + "AWDS Window Directory" = ""; + "AWDS Window Option" = No; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blink Allowed" = 1; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "E2F2671D-3B2D-4D81-B8AD-8E9EA72584E1"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "/Users/jim.lawton/git/cmf/tools/amazon/vpc_ssh -u jiml -t rdkcmf-gitmirrors"; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "rdkcmf-gitmirrors"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "AWDS Pane Directory" = ""; + "AWDS Pane Option" = No; + "AWDS Tab Directory" = ""; + "AWDS Tab Option" = No; + "AWDS Window Directory" = ""; + "AWDS Window Option" = No; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blink Allowed" = 1; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "560A2423-2BED-49F1-94AA-5B354033D0D1"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "/Users/jim.lawton/git/cmf/tools/amazon/vpc_ssh -u jiml -t rdkcmf-jenkins"; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "rdkcmf-jenkins"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "AWDS Pane Directory" = ""; + "AWDS Pane Option" = No; + "AWDS Tab Directory" = ""; + "AWDS Tab Option" = No; + "AWDS Window Directory" = ""; + "AWDS Window Option" = No; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blink Allowed" = 1; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "50857DDA-6FCF-460B-AF14-CE7D341F6992"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "/Users/jim.lawton/git/cmf/tools/amazon/vpc_ssh -u jiml -t rdkcmf-scm"; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "rdkcmf-scm"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-2"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = S; + "Silence Bell" = 0; + Space = "-1"; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 1; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "89C3D4CB-7B39-4196-ACAF-7C83C00E7569"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = tmux; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-1"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 0; + "Working Directory" = "/Users/jim.lawton"; + }, + { + "ASCII Anti Aliased" = 1; + "Ambiguous Double Width" = 0; + "Ansi 0 Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Ansi 1 Color" = { + "Blue Component" = "0.1414571404457092"; + "Green Component" = "0.1084065511822701"; + "Red Component" = "0.8192697763442993"; + }; + "Ansi 10 Color" = { + "Blue Component" = "0.3829848766326904"; + "Green Component" = "0.3566595613956451"; + "Red Component" = "0.2767199277877808"; + }; + "Ansi 11 Color" = { + "Blue Component" = "0.4385056495666504"; + "Green Component" = "0.4071767330169678"; + "Red Component" = "0.3243661820888519"; + }; + "Ansi 12 Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Ansi 13 Color" = { + "Blue Component" = "0.7290843725204468"; + "Green Component" = "0.3389629721641541"; + "Red Component" = "0.3479863405227661"; + }; + "Ansi 14 Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Ansi 15 Color" = { + "Blue Component" = "0.8640598058700562"; + "Green Component" = "0.9579439163208008"; + "Red Component" = "0.9894341826438904"; + }; + "Ansi 2 Color" = { + "Blue Component" = "0.02020875550806522"; + "Green Component" = "0.5411549210548401"; + "Red Component" = "0.4497745335102081"; + }; + "Ansi 3 Color" = { + "Blue Component" = "0.02348481118679047"; + "Green Component" = "0.4675142467021942"; + "Red Component" = "0.6474647521972656"; + }; + "Ansi 4 Color" = { + "Blue Component" = "0.7823141813278198"; + "Green Component" = "0.462659478187561"; + "Red Component" = "0.1275488436222076"; + }; + "Ansi 5 Color" = { + "Blue Component" = "0.4351663589477539"; + "Green Component" = "0.1080246344208717"; + "Red Component" = "0.7773894071578979"; + }; + "Ansi 6 Color" = { + "Blue Component" = "0.5250227451324463"; + "Green Component" = "0.570823609828949"; + "Red Component" = "0.1467953473329544"; + }; + "Ansi 7 Color" = { + "Blue Component" = "0.7978110313415527"; + "Green Component" = "0.8900123834609985"; + "Red Component" = "0.916110634803772"; + }; + "Ansi 8 Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Ansi 9 Color" = { + "Blue Component" = "0.07353043556213379"; + "Green Component" = "0.2132530063390732"; + "Red Component" = "0.7417625784873962"; + }; + "BM Growl" = 1; + "Background Color" = { + "Blue Component" = "0.1517027318477631"; + "Green Component" = "0.1178361028432846"; + "Red Component" = 0; + }; + "Background Image Location" = ""; + "Badge Color" = { + "Alpha Component" = "0.5"; + "Blue Component" = 0; + "Color Space" = Calibrated; + "Green Component" = 0; + "Red Component" = 1; + }; + "Blinking Cursor" = 0; + Blur = 0; + "Bold Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Bound Hosts" = ( + ); + "Character Encoding" = 4; + "Close Sessions On End" = 1; + Columns = 80; + Command = ""; + "Cursor Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + "Cursor Guide Color" = { + "Alpha Component" = "0.25"; + "Blue Component" = 1; + "Color Space" = Calibrated; + "Green Component" = "0.91"; + "Red Component" = "0.65"; + }; + "Cursor Text Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Custom Command" = No; + "Custom Directory" = No; + "Default Bookmark" = No; + Description = Default; + "Disable Window Resizing" = 1; + "Flashing Bell" = 0; + "Foreground Color" = { + "Blue Component" = "0.5168579816818237"; + "Green Component" = "0.5096293091773987"; + "Red Component" = "0.4405802488327026"; + }; + Guid = "138EC294-A6AE-4830-A0B8-360A4AC455E5"; + "Horizontal Spacing" = 1; + "Idle Code" = 0; + "Initial Text" = "ssh jiml@saturn.cork.s3group.com -t \\"tmux -CC attach || tmux -CC\\" "; + "Jobs to Ignore" = ( + rlogin, + ssh, + slogin, + telnet + ); + "Keyboard Map" = { + "0x2d-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x32-0x40000" = { + Action = 11; + Text = 0x00; + }; + "0x33-0x40000" = { + Action = 11; + Text = 0x1b; + }; + "0x34-0x40000" = { + Action = 11; + Text = 0x1c; + }; + "0x35-0x40000" = { + Action = 11; + Text = 0x1d; + }; + "0x36-0x40000" = { + Action = 11; + Text = 0x1e; + }; + "0x37-0x40000" = { + Action = 11; + Text = 0x1f; + }; + "0x38-0x40000" = { + Action = 11; + Text = 0x7f; + }; + "0xf700-0x220000" = { + Action = 10; + Text = "[1;2A"; + }; + "0xf700-0x240000" = { + Action = 10; + Text = "[1;5A"; + }; + "0xf700-0x260000" = { + Action = 10; + Text = "[1;6A"; + }; + "0xf700-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x41"; + }; + "0xf701-0x220000" = { + Action = 10; + Text = "[1;2B"; + }; + "0xf701-0x240000" = { + Action = 10; + Text = "[1;5B"; + }; + "0xf701-0x260000" = { + Action = 10; + Text = "[1;6B"; + }; + "0xf701-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x42"; + }; + "0xf702-0x220000" = { + Action = 10; + Text = "[1;2D"; + }; + "0xf702-0x240000" = { + Action = 10; + Text = "[1;5D"; + }; + "0xf702-0x260000" = { + Action = 10; + Text = "[1;6D"; + }; + "0xf702-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x44"; + }; + "0xf703-0x220000" = { + Action = 10; + Text = "[1;2C"; + }; + "0xf703-0x240000" = { + Action = 10; + Text = "[1;5C"; + }; + "0xf703-0x260000" = { + Action = 10; + Text = "[1;6C"; + }; + "0xf703-0x280000" = { + Action = 11; + Text = "0x1b 0x1b 0x5b 0x43"; + }; + "0xf704-0x20000" = { + Action = 10; + Text = "[1;2P"; + }; + "0xf705-0x20000" = { + Action = 10; + Text = "[1;2Q"; + }; + "0xf706-0x20000" = { + Action = 10; + Text = "[1;2R"; + }; + "0xf707-0x20000" = { + Action = 10; + Text = "[1;2S"; + }; + "0xf708-0x20000" = { + Action = 10; + Text = "[15;2~"; + }; + "0xf709-0x20000" = { + Action = 10; + Text = "[17;2~"; + }; + "0xf70a-0x20000" = { + Action = 10; + Text = "[18;2~"; + }; + "0xf70b-0x20000" = { + Action = 10; + Text = "[19;2~"; + }; + "0xf70c-0x20000" = { + Action = 10; + Text = "[20;2~"; + }; + "0xf70d-0x20000" = { + Action = 10; + Text = "[21;2~"; + }; + "0xf70e-0x20000" = { + Action = 10; + Text = "[23;2~"; + }; + "0xf70f-0x20000" = { + Action = 10; + Text = "[24;2~"; + }; + "0xf729-0x20000" = { + Action = 10; + Text = "[1;2H"; + }; + "0xf729-0x40000" = { + Action = 10; + Text = "[1;5H"; + }; + "0xf72b-0x20000" = { + Action = 10; + Text = "[1;2F"; + }; + "0xf72b-0x40000" = { + Action = 10; + Text = "[1;5F"; + }; + }; + "Link Color" = { + "Alpha Component" = 1; + "Blue Component" = "0.678"; + "Color Space" = Calibrated; + "Green Component" = "0.27"; + "Red Component" = "0.023"; + }; + "Mouse Reporting" = 1; + Name = "saturn.cork.s3group.com"; + "Non Ascii Font" = "Monaco 12"; + "Non-ASCII Anti Aliased" = 1; + "Normal Font" = "Monaco 12"; + "Option Key Sends" = 0; + "Prompt Before Closing 2" = 0; + "Right Option Key Sends" = 0; + Rows = 25; + Screen = "-1"; + "Scrollback Lines" = 1000; + "Selected Text Color" = { + "Blue Component" = "0.5636365413665771"; + "Green Component" = "0.5648583769798279"; + "Red Component" = "0.5059919357299805"; + }; + "Selection Color" = { + "Blue Component" = "0.1937013864517212"; + "Green Component" = "0.155759260058403"; + "Red Component" = 0; + }; + "Send Code When Idle" = 0; + Shortcut = ""; + "Silence Bell" = 0; + "Sync Title" = 0; + Tags = ( + ); + "Terminal Type" = "xterm-256color"; + Transparency = 0; + "Unlimited Scrollback" = 0; + "Use Bold Font" = 1; + "Use Bright Bold" = 1; + "Use Italic Font" = 1; + "Use Non-ASCII Font" = 0; + "Vertical Spacing" = 1; + "Visual Bell" = 1; + "Window Type" = 0; + "Working Directory" = "/Users/jim.lawton"; + } + ); + NoSyncCommandHistoryHasEverBeenUsed = 1; + NoSyncConfirmBeta = 1; + NoSyncDoNotWarnBeforeMultilinePaste = 1; + "NoSyncDoNotWarnBeforeMultilinePaste_selection" = 0; + NoSyncHaveWarnedAboutIncompatibleSoftware = 1; + NoSyncInstallUtilitiesPackage = 1; + "NoSyncInstallUtilitiesPackage_selection" = 0; + NoSyncInstallationId = "C7707766-515C-4630-B82A-5CDFE61E5D9F"; + NoSyncNewWindowOrTabFromTmuxOpensTmux = 1; + "NoSyncNewWindowOrTabFromTmuxOpensTmux_selection" = 0; + NoSyncPermissionToShowTip = 0; + NoSyncTimeOfFirstLaunchOfVersionWithTip = "477619599.436869"; + OnlyWhenMoreTabs = 0; + OpenArrangementAtStartup = 0; + OpenNoWindowsAtStartup = 0; + OpenTmuxWindowsIn = 0; + PMPrintingExpandedStateForPrint2 = 0; + PasteTabToStringTabStopSize = 4; + PerformDNSLookups = 0; + PointerActions = { + "Button,1,1,," = { + Action = kContextMenuPointerAction; + }; + "Button,2,1,," = { + Action = kPasteFromSelectionPointerAction; + }; + "Gesture,ThreeFingerSwipeDown,," = { + Action = kPrevWindowPointerAction; + }; + "Gesture,ThreeFingerSwipeLeft,," = { + Action = kPrevTabPointerAction; + }; + "Gesture,ThreeFingerSwipeRight,," = { + Action = kNextTabPointerAction; + }; + "Gesture,ThreeFingerSwipeUp,," = { + Action = kNextWindowPointerAction; + }; + }; + "Print In Black And White" = 1; + PromptOnQuit = 0; + SUEnableAutomaticChecks = 1; + SUFeedAlternateAppNameKey = iTerm; + SUFeedURL = "https://iterm2.com/appcasts/final.xml?shard=61"; + SUHasLaunchedBefore = 1; + SULastCheckTime = "2018-01-03 14:23:29 +0000"; + SUSendProfileInfo = 0; + SavePasteHistory = 1; + TabStyle = 1; + ToolbeltTools = ( + Profiles, + "Paste History", + "Command History" + ); + "Window Arrangements" = { + "No Windows" = ( + ); + }; + WordCharacters = "/-+\\\\~_."; + "findIgnoreCase_iTerm" = 1; + "findMode_iTerm" = 0; + "findRegex_iTerm" = 0; + "iTerm Version" = "3.1.5"; +} From 1e2d6c170846c2a49a05049065d074495e61df40 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2018 20:15:47 +0000 Subject: [PATCH 103/973] Update submodule versions. --- icdiff | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/icdiff b/icdiff index 44041be8..031573c6 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 44041be8c22ba1d13afe886304fa12fbd507b77e +Subproject commit 031573c6f8a9eb7c57939948fcdf8e152ca25b96 diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 39b75707..7147ba92 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 39b75707640493795afb4fb90b2d74cade84cee8 +Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 3439f999..f3ccb0c1 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 3439f999b138254e4bb56187fc91f91f545b4b12 +Subproject commit f3ccb0c12ee4985b8808f83059830a24cc92821c diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index 5c21f167..8cd41796 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit 5c21f1677180b76310a05e5a9fce46de64c23041 +Subproject commit 8cd41796fdafb50977f7f3cd0338716b379f988b diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 3fa4aaba..9dc2518d 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 3fa4aabaecc00a3ccec376d8e6e1af19465eefe2 +Subproject commit 9dc2518dade14fabf42639be6567ac6bddbce47e diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 9e91be7e..49ee3642 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 9e91be7e0fb42949831fe3161ef583363648aa58 +Subproject commit 49ee364222dc2a5a00dddf89fd61880e3e39d46a diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index 2d05440a..e49d6c24 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit 2d05440ad23f97a7874ebd9b5de3a0e65d25d85c +Subproject commit e49d6c2459e0f5569ff2d533b4df995dd7f98313 From d6b8c7c8fc249727d4d009c6bc0d3df3c5c47a50 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Jan 2018 17:42:12 +0000 Subject: [PATCH 104/973] Add Jupyter pipenv config. --- virtualenvs/jupyter/Pipfile | 21 ++ virtualenvs/jupyter/Pipfile.lock | 348 +++++++++++++++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 virtualenvs/jupyter/Pipfile create mode 100644 virtualenvs/jupyter/Pipfile.lock diff --git a/virtualenvs/jupyter/Pipfile b/virtualenvs/jupyter/Pipfile new file mode 100644 index 00000000..7b6abc40 --- /dev/null +++ b/virtualenvs/jupyter/Pipfile @@ -0,0 +1,21 @@ +[[source]] + +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + + +[packages] + +pip = "*" +setuptools = "*" +jupyter = "*" + + +[dev-packages] + + + +[requires] + +python_version = "3.6" diff --git a/virtualenvs/jupyter/Pipfile.lock b/virtualenvs/jupyter/Pipfile.lock new file mode 100644 index 00000000..a3237a4a --- /dev/null +++ b/virtualenvs/jupyter/Pipfile.lock @@ -0,0 +1,348 @@ +{ + "_meta": { + "hash": { + "sha256": "fc8293a48dc28fd78c7f4af038a52851fba1a7b4ef46496b308166109d8f5ced" + }, + "host-environment-markers": { + "implementation_name": "cpython", + "implementation_version": "3.6.4", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "17.3.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64", + "python_full_version": "3.6.4", + "python_version": "3.6", + "sys_platform": "darwin" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.6" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "appnope": { + "hashes": [ + "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", + "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.0" + }, + "bleach": { + "hashes": [ + "sha256:cf567e7ed30ea5e05b31231d88ae170af1c5544758b9d7bebbc20590b7c30b1e", + "sha256:38fc8cbebea4e787d8db55d6f324820c7f74362b70db9142c1ac7920452d1a19" + ], + "version": "==2.1.2" + }, + "decorator": { + "hashes": [ + "sha256:94d1d8905f5010d74bbbd86c30471255661a14187c45f8d7f3e5aa8540fdb2e5", + "sha256:7d46dd9f3ea1cf5f06ee0e4e1277ae618cf48dfb10ada7c8427cd46c42702a0e" + ], + "version": "==4.2.1" + }, + "entrypoints": { + "hashes": [ + "sha256:10ad569bb245e7e2ba425285b9fa3e8178a0dc92fc53b1e1c553805e15a8825b", + "sha256:d2d587dde06f99545fb13a383d2cd336a8ff1f359c5839ce3a64c917d10c029f" + ], + "version": "==0.2.3" + }, + "html5lib": { + "hashes": [ + "sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3", + "sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736" + ], + "version": "==1.0.1" + }, + "ipykernel": { + "hashes": [ + "sha256:9b9a9c1c566eabed6dc1536e9ea0cdb7b3a642cdb8a23b67e2047d8d7d61f5f7", + "sha256:8622cd42d952849057db38b81f0837a0ee6b865dea65d4b0b660164c96e6d052", + "sha256:dedc199df6a38725c732986dfa606c245fb8fe0fe999b33a0c305b73d80c6774" + ], + "version": "==4.8.0" + }, + "ipython": { + "hashes": [ + "sha256:fcc6d46f08c3c4de7b15ae1c426e15be1b7932bcda9d83ce1a4304e8c1129df3", + "sha256:51c158a6c8b899898d1c91c6b51a34110196815cc905f9be0fa5878e19355608" + ], + "version": "==6.2.1" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "ipywidgets": { + "hashes": [ + "sha256:05e10c4eccd8505cda16c6bb3cf78d3ddee913004c557f8da7ea9c81162d78bd", + "sha256:3e2be7dea4f97c9a4df71ef065cad9f2e420dd901127bf7cb690fb56d2b34ea3" + ], + "version": "==7.1.0" + }, + "jedi": { + "hashes": [ + "sha256:d795f2c2e659f5ea39a839e5230d70a0b045d0daee7ca2403568d8f348d0ad89", + "sha256:d6e799d04d1ade9459ed0f20de47c32f2285438956a677d083d3c98def59fa97" + ], + "version": "==0.11.1" + }, + "jinja2": { + "hashes": [ + "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", + "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" + ], + "version": "==2.10" + }, + "jsonschema": { + "hashes": [ + "sha256:000e68abd33c972a5248544925a0cae7d1125f9bf6c58280d37546b946769a08", + "sha256:6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02" + ], + "version": "==2.6.0" + }, + "jupyter": { + "hashes": [ + "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78", + "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f", + "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7" + ], + "version": "==1.0.0" + }, + "jupyter-client": { + "hashes": [ + "sha256:ce1434979e7d1c0a4db351bc263b4da80de20f6515dc6059a8b05106b8eb0187", + "sha256:462790d46b244f0a631ea5e3cd5cdbad6874d5d24cc0ff512deb7c16cdf8653d" + ], + "version": "==5.2.1" + }, + "jupyter-console": { + "hashes": [ + "sha256:3f928b817fc82cda95e431eb4c2b5eb21be5c483c2b43f424761a966bb808094", + "sha256:545dedd3aaaa355148093c5609f0229aeb121b4852995c2accfa64fe3e0e55cd" + ], + "version": "==5.2.0" + }, + "jupyter-core": { + "hashes": [ + "sha256:927d713ffa616ea11972534411544589976b2493fc7e09ad946e010aa7eb9970", + "sha256:ba70754aa680300306c699790128f6fbd8c306ee5927976cbe48adacf240c0b7" + ], + "version": "==4.4.0" + }, + "markupsafe": { + "hashes": [ + "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" + ], + "version": "==1.0" + }, + "mistune": { + "hashes": [ + "sha256:b4c512ce2fc99e5a62eb95a4aba4b73e5f90264115c40b70a21e1f7d4e0eac91", + "sha256:bc10c33bfdcaa4e749b779f62f60d6e12f8215c46a292d05e486b869ae306619" + ], + "version": "==0.8.3" + }, + "nbconvert": { + "hashes": [ + "sha256:260d390b989a647575b8ecae2cd06a9eaead10d396733d6e50185d5ebd08996e", + "sha256:12b1a4671d4463ab73af6e4cbcc965b62254e05d182cd54995dda0d0ef9e2db9" + ], + "version": "==5.3.1" + }, + "nbformat": { + "hashes": [ + "sha256:b9a0dbdbd45bb034f4f8893cafd6f652ea08c8c1674ba83f2dc55d3955743b0b", + "sha256:f7494ef0df60766b7cabe0a3651556345a963b74dbc16bc7c18479041170d402" + ], + "version": "==4.4.0" + }, + "notebook": { + "hashes": [ + "sha256:dbce87812b7f2025e0f83eaab1701a71d874a7aba0766cd8c03ba9be77760643", + "sha256:380bbed63117accbb13e42d01d06153c72da6a386f75c81ae4c174eaa11e738b" + ], + "version": "==5.3.1" + }, + "pandocfilters": { + "hashes": [ + "sha256:b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9" + ], + "version": "==1.4.2" + }, + "parso": { + "hashes": [ + "sha256:a7bb86fe0844304869d1c08e8bd0e52be931228483025c422917411ab82d628a", + "sha256:5815f3fe254e5665f3c5d6f54f086c2502035cb631a91341591b5a564203cffb" + ], + "version": "==0.1.1" + }, + "pexpect": { + "hashes": [ + "sha256:144939a072a46d32f6e5ecc866509e1d613276781f7182148a08df52eaa7b022", + "sha256:8e287b171dbaf249d0b06b5f2e88cb7e694651d2d0b8c15bccb83170d3c55575" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.3.1" + }, + "pickleshare": { + "hashes": [ + "sha256:c9a2541f25aeabc070f12f452e1f2a8eae2abd51e1cd19e8430402bdf4c1d8b5", + "sha256:84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b" + ], + "version": "==0.7.4" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:3f473ae040ddaa52b52f97f6b4a493cfa9f5920c255a12dc56a7d34397a398a4", + "sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381", + "sha256:858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917" + ], + "version": "==1.0.15" + }, + "ptyprocess": { + "hashes": [ + "sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a", + "sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365" + ], + "markers": "os_name != 'nt'", + "version": "==0.5.2" + }, + "pygments": { + "hashes": [ + "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", + "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc" + ], + "version": "==2.2.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c", + "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca" + ], + "version": "==2.6.1" + }, + "pyzmq": { + "hashes": [ + "sha256:f88d8ffa32bf729bed806ca3205846ed98b61f149562dc828db5c3a2194ca0c3", + "sha256:83c30a7fa401d5f26378414c6e67bdf8633780cf514b31bd2084b9ab4b226484", + "sha256:5f357871b560bfacfa62a737292c59b42fe06c6e3433567f49f42dec32b45b11", + "sha256:6602d9958656a255a067ab87b569695a51e275bb77111b057c12ac702544fdca", + "sha256:068977e0f5cfba05d910df9899bcbd379e6536666ddabb2ce6a1218673229c65", + "sha256:29fe1d6a79ea3b4cfcb3b23ef2159b34a42a347f74010fe5510484543a5367e2", + "sha256:09ecf151c912f1d0907bfda331fa0ed5cd0032bf1d8733512f1befc8e89b387f", + "sha256:edde3830b2ac4c97f11fdafeea02dffd2343b470482864a3cd3894c839a0a416", + "sha256:37d7c8bfa3c7e8121ca7a71fe807cd5b63793d05ad598df53449d49e5dea1cc3", + "sha256:9848772e952f2addbb77182ae14ef201fd4f0e394e6e73c4620b9fd8f154f4a9", + "sha256:4d2bda85a2fe827fe1cce007f4bab20dae4bf56fa468d19bc730bb225c349bf3", + "sha256:7ded1d19978e52557348fd89f2c3f67eb73c19700b248355bcc50ac582387a95", + "sha256:b3c6abbebd79866465d6bbc0ab239cc4d1ba3bcce203b5294bb494665dcf4105", + "sha256:c382cb87d65de9718c738ee3a2f4f7c8444bd5d1a002bd370b5365d906c13f27", + "sha256:f41626459031c36457a6af56dd91e432b315b0bce8458ba08edbf6e4de88b467", + "sha256:afe36a0ab8ada3b8d9a005c6aaca8a434c425bd019b7fa6d323b9fda46157389", + "sha256:686ffacf9c62bdd4253ab3e093b32aaf195961c7545583a416cc534caa8a5900", + "sha256:09802528d0092b70131a9df92c975bb625cf2038fc0f53915bf51ffa665a7957", + "sha256:22ea664f4d115cd9fa0f2dc8c907298437f4d2fcf0677c18eddf45da2436f923", + "sha256:505d2a4fc2a899d30663e12550dca3d17d48c5796dd1307a0197656bc40b67c8", + "sha256:657147db62a16794aca7a18b51139180bc98d6249931507b1c8ef696607ada43", + "sha256:3a942e278f79ddcf455ba160881a95de474123667c3c847683bc3ae1929093f5", + "sha256:8a883824147523c0fe76d247dd58994c1c28ef07f1cc5dde595a4fd1c28f2580" + ], + "version": "==16.0.3" + }, + "qtconsole": { + "hashes": [ + "sha256:b3d10314cbaad76c3157cf922eb410812cde472e8e7c6bd3d5a92d30145bcde1", + "sha256:eff8c2faeda567a0bef5781f419a64e9977988db101652b312b9d74ec0a5109c" + ], + "version": "==4.3.1" + }, + "send2trash": { + "hashes": [ + "sha256:b308bfafe781617f57b69315f7f0636662405137da667dde3913bf5ff720a3c4", + "sha256:725fbce571dffe0b640e2f1788d52c3c544b510f9d8f69b2597c8c2555bc8441" + ], + "version": "==1.4.2" + }, + "simplegeneric": { + "hashes": [ + "sha256:dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173" + ], + "version": "==0.8.1" + }, + "six": { + "hashes": [ + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb", + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9" + ], + "version": "==1.11.0" + }, + "terminado": { + "hashes": [ + "sha256:65011551baff97f5414c67018e908110693143cfbaeb16831b743fe7cad8b927", + "sha256:55abf9ade563b8f9be1f34e4233c7b7bde726059947a593322e8a553cc4c067a" + ], + "version": "==0.8.1" + }, + "testpath": { + "hashes": [ + "sha256:039fa6a6c9fd3488f8336d23aebbfead5fa602c4a47d49d83845f55a595ec1b4", + "sha256:0d5337839c788da5900df70f8e01015aec141aa3fe7936cb0d0a2953f7ac7609" + ], + "version": "==0.3.1" + }, + "tornado": { + "hashes": [ + "sha256:92b7ca81e18ba9ec3031a7ee73d4577ac21d41a0c9b775a9182f43301c3b5f8e", + "sha256:b36298e9f63f18cad97378db2222c0e0ca6a55f6304e605515e05a25483ed51a", + "sha256:ab587996fe6fb9ce65abfda440f9b61e4f9f2cf921967723540679176915e4c3", + "sha256:5ef073ac6180038ccf99411fe05ae9aafb675952a2c8db60592d5daf8401f803", + "sha256:6d14e47eab0e15799cf3cdcc86b0b98279da68522caace2bd7ce644287685f0a" + ], + "version": "==4.5.3" + }, + "traitlets": { + "hashes": [ + "sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9", + "sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835" + ], + "version": "==4.3.2" + }, + "wcwidth": { + "hashes": [ + "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c", + "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e" + ], + "version": "==0.1.7" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "widgetsnbextension": { + "hashes": [ + "sha256:d38e6873ea18f22c2a2b32025cdde35b635efa46b234e8738c81eec993f0bf1e", + "sha256:67fc28c3b9fede955d69bccbd92784e3f0c6d0dee3a71532cd3367c257feb178" + ], + "version": "==3.1.0" + } + }, + "develop": {} +} From 9668425f9cb16e05b2923d1ecca0cc98b3daa46d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Jan 2018 17:43:42 +0000 Subject: [PATCH 105/973] Add youtube-dl pipenv config. --- virtualenvs/youtube-dl/Pipfile | 21 +++++++++++++++ virtualenvs/youtube-dl/Pipfile.lock | 41 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 virtualenvs/youtube-dl/Pipfile create mode 100644 virtualenvs/youtube-dl/Pipfile.lock diff --git a/virtualenvs/youtube-dl/Pipfile b/virtualenvs/youtube-dl/Pipfile new file mode 100644 index 00000000..c43d88b6 --- /dev/null +++ b/virtualenvs/youtube-dl/Pipfile @@ -0,0 +1,21 @@ +[[source]] + +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + + +[packages] + +pip = "*" +setuptools = "*" +youtube-dl = "*" + + +[dev-packages] + + + +[requires] + +python_version = "3.6" diff --git a/virtualenvs/youtube-dl/Pipfile.lock b/virtualenvs/youtube-dl/Pipfile.lock new file mode 100644 index 00000000..cb2a0d61 --- /dev/null +++ b/virtualenvs/youtube-dl/Pipfile.lock @@ -0,0 +1,41 @@ +{ + "_meta": { + "hash": { + "sha256": "2969da49d42908416e4bf97b5347926df0e4541d9a56a5b4e004a0efe46a3f2d" + }, + "host-environment-markers": { + "implementation_name": "cpython", + "implementation_version": "3.6.4", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_python_implementation": "CPython", + "platform_release": "17.3.0", + "platform_system": "Darwin", + "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64", + "python_full_version": "3.6.4", + "python_version": "3.6", + "sys_platform": "darwin" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.6" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "youtube-dl": { + "hashes": [ + "sha256:de9967ed2dcfef1bbce66165f7636573a6825dd49ca9a08127179fd421ac8a33", + "sha256:94fd80f8a12baa8ae9614b4d3c447687ae96baf2c18dd69cb07483850164e880" + ], + "version": "==2018.1.18" + } + }, + "develop": {} +} From ba130cf758a790a8a7f6cb284e6584f586e4afe3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Jan 2018 10:11:35 +0000 Subject: [PATCH 106/973] Add rsyp alias. --- aliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aliases b/aliases index 1cf6a939..ea669757 100644 --- a/aliases +++ b/aliases @@ -36,10 +36,10 @@ alias gsy='git pull && git push' # repo shortcuts alias rsy='repo sync' -alias rsy='repo sync' alias rst='repo status' alias rpu='repo forall -e -c git push' alias rcm='repo forall -e -c git checkout master' +alias rsyp='repo sync && repo forall -e -c git push' # Show network connections # Often useful to prefix with SUDO to see more system level network usage From c11a58e4329b170b7fd25a0143648891ccbb6224 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Jan 2018 10:27:34 +0000 Subject: [PATCH 107/973] Add reward as alias for blame :-). --- gitconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/gitconfig b/gitconfig index 3540dcc1..edd79ea7 100644 --- a/gitconfig +++ b/gitconfig @@ -138,6 +138,7 @@ pushnotes = !sh -c 'git push $1 refs/notes/*' - ready = rebase -i @{u} redocommit = reset --soft HEAD^ + reward = blame ri = rebase --interactive --autosquash rlog = log --color-words --stat -3 rmmissing = !git rm $(git ls-files --deleted) From ea3a498d0fb55948db4ec4fd83a9fd7351efe701 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Jan 2018 10:30:50 +0000 Subject: [PATCH 108/973] Enable fzf. --- bashrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bashrc b/bashrc index 29a9d34b..19aa71b3 100644 --- a/bashrc +++ b/bashrc @@ -6,3 +6,5 @@ # Bash non-interactive shell will load the same functions as the interactive shell source ~/.bash_profile + +[ -f ~/.fzf.bash ] && source ~/.fzf.bash From b5325f9439a66619f2334bab06f92e36acf10115 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Jan 2018 12:18:55 +0000 Subject: [PATCH 109/973] Add recent alias. --- gitconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/gitconfig b/gitconfig index edd79ea7..1639bc64 100644 --- a/gitconfig +++ b/gitconfig @@ -137,6 +137,7 @@ purgeme = !git clean -fd && git reset --hard pushnotes = !sh -c 'git push $1 refs/notes/*' - ready = rebase -i @{u} + recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f" redocommit = reset --soft HEAD^ reward = blame ri = rebase --interactive --autosquash From fb691c840eee4afd9edb1a60c8a0fbec521e9323 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 28 Feb 2018 23:41:13 +0000 Subject: [PATCH 110/973] Update Brewfile. --- Brewfile | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Brewfile b/Brewfile index 515bfaec..78772422 100644 --- a/Brewfile +++ b/Brewfile @@ -1,3 +1,4 @@ +tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" tap "dinkypumpkin/get_iplayer" tap "homebrew/core" @@ -9,12 +10,12 @@ tap "d12frosted/emacs-plus" tap "github/bootstrap" tap "caskroom/cask" brew "a2ps" +brew "adr-tools" brew "apr" brew "apr-util" brew "atomicparsley" brew "autoconf" brew "autojump" -brew "gdbm" brew "sqlite" brew "python3" brew "awscli" @@ -22,20 +23,20 @@ brew "bash" brew "bash-completion" brew "coreutils" brew "curl" -brew "git" brew "go" brew "diffutils" brew "libksba" brew "pth" brew "dirmngr" brew "dos2unix" -brew "lame" brew "xvid" brew "flake8" +brew "fzf" brew "gdb" brew "pkg-config" brew "get_iplayer" brew "gist" +brew "git" brew "libusb" brew "pinentry" brew "gnupg" @@ -51,9 +52,13 @@ brew "md5sha1sum" brew "mosh" brew "mplayer" brew "mtr" +brew "node" brew "ocrad" +brew "parallel" brew "patchutils" brew "peco" +brew "percol" +brew "pipenv" brew "progress" brew "pyenv" brew "pyenv-virtualenvwrapper" @@ -65,7 +70,9 @@ brew "sloccount" brew "ssh-copy-id" brew "tesseract" brew "tig" +brew "todo-txt" brew "wget" +brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "cakebrew" cask "dockertoolbox" @@ -74,11 +81,12 @@ cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" cask "virtualbox" -mas "App for Trello", id: 693021365 mas "Battery Monitor", id: 836505650 +mas "Bear", id: 1091189122 mas "CopyClip", id: 595191960 mas "CopyClip 2", id: 1020812363 mas "Delicious Library 3", id: 635124250 +mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 mas "GarageBand", id: 682658836 mas "iMovie", id: 408981434 @@ -87,6 +95,7 @@ mas "Keynote", id: 409183694 mas "Kindle", id: 405399194 mas "LastPass", id: 926036361 mas "Magnet", id: 441258766 +mas "my41cx", id: 949272407 mas "Numbers", id: 409203825 mas "OneDrive", id: 823766827 mas "Pages", id: 409201541 @@ -95,8 +104,7 @@ mas "Speedtest", id: 1153157709 mas "TermHere", id: 1114363220 mas "The Archive Browser", id: 510232205 mas "The Unarchiver", id: 425424353 -mas "Todoist", id: 585829637 -mas "Trello", id: 1278508951 mas "Twitter", id: 409789998 mas "Typist", id: 415166115 +mas "Unsplash Wallpapers", id: 1284863847 mas "Wire", id: 931134707 From 342d0a744683cd28f848c6571e4283737f45f1fc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 27 Mar 2018 15:48:02 +0100 Subject: [PATCH 111/973] Update Brewfile. --- Brewfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 78772422..77487be7 100644 --- a/Brewfile +++ b/Brewfile @@ -17,7 +17,6 @@ brew "atomicparsley" brew "autoconf" brew "autojump" brew "sqlite" -brew "python3" brew "awscli" brew "bash" brew "bash-completion" @@ -33,13 +32,13 @@ brew "xvid" brew "flake8" brew "fzf" brew "gdb" -brew "pkg-config" brew "get_iplayer" brew "gist" brew "git" brew "libusb" brew "pinentry" brew "gnupg" +brew "pkg-config" brew "httpie" brew "hub" brew "id3lib" From e4d8246f9ab3b77f48049f2e7a25f8fe32d2faf4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 27 Mar 2018 16:08:34 +0100 Subject: [PATCH 112/973] Add lits of Mac apps. --- macapps.txt | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 macapps.txt diff --git a/macapps.txt b/macapps.txt new file mode 100644 index 00000000..a0c0a638 --- /dev/null +++ b/macapps.txt @@ -0,0 +1,233 @@ +/Users/jim.lawton/Library/Application Support/Juniper Networks/HostChecker.app +/Users/jim.lawton/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app +/Users/jim.lawton/Library/Application Support/Java/Java 1.8.91.14/Java 8 Update 91.app +/Users/jim.lawton/Library/Application Support/Skype.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/CiscoWebExUpdate.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/Cisco WebEx Start.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/as.bundle/Contents/Resources/aswatcher.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/convertpdf.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/atmsupload.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/Meeting Center.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/asannotation2.app +/Users/jim.lawton/Library/Application Support/Pulse Secure/SetupClient/PulseSetupClient.app +/Users/jim.lawton/Library/Application Support/de.gtfd.application.App +/Users/jim.lawton/Library/Application Support/PortableSSD/Samsung Portable SSD.app +/Users/jim.lawton/Library/Application Support/PortableSSD/T3 Log In Activator for Mac.app +/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app +/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app/Contents/Resources/T3 Log In Activator for Mac.app +/Users/jim.lawton/Library/Printers/ACN Cork.app +/Users/jim.lawton/Library/Printers/Canon MP630 series.app +/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app +/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app +/Users/jim.lawton/Library/Dropbox/DropboxMacUpdate.app +/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPass.app +/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPassHelper.app +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Library/LoginItems/CopyClipHelper.app +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/finish_installation.app +/Users/jim.lawton/Library/XMind/configuration-cathy_macosx-R3.7.6.201711210129/org.eclipse.equinox.app +/Users/jim.lawton/Downloads/SamsungPortableSSD.app +/Applications/The Archive Browser.app +/Applications/VIP Access/VIP Access Uninstaller.app +/Applications/VIP Access/VIP Access Proximity.app +/Applications/VIP Access/VIP Access.app +/Applications/DVD Player.app +/Applications/Pineapple.app +/Applications/LastPass.app +/Applications/CopyClip 2.app +/Applications/Pastebot.app +/Applications/Siri.app +/Applications/Toolkit.app +/Applications/TreeSheets.app +/Applications/jEdit.app +/Applications/OLM Extractor Pro.app +/Applications/SourceTree.app +/Applications/CrossOver.app +/Applications/MusicManager.app +/Applications/XMind.app +/Applications/QuickTime Player.app +/Applications/Chess.app +/Applications/TaskPaper.app +/Applications/Go2Shell.app +/Applications/Photo Booth.app +/Applications/Opera Developer.app +/Applications/Keybase.app +/Applications/SoftU2F.app +/Applications/EasyMP Network Projection/Tools/EasyMP Network Projection Uninstaller.app +/Applications/EasyMP Network Projection/EasyMP Network Projection.app +/Applications/Docker/Kitematic (Beta).app +/Applications/Docker/Docker Quickstart Terminal.app +/Applications/XMind ZEN.app +/Applications/my Accenture Mac.app +/Applications/Amazon Drive.app +/Applications/Junos Pulse.app +/Applications/Notes.app +/Applications/cool-retro-term.app +/Applications/Speedtest.app +/Applications/Image Capture.app +/Applications/BeardedSpice.app +/Applications/iBooks.app +/Applications/Google Chrome.app +/Applications/Karabiner-Elements.app +/Applications/Itsycal.app +/Applications/Karabiner-EventViewer.app +/Applications/Numbers.app +/Applications/Dropbox.app +/Applications/Android File Transfer.app +/Applications/aText.app +/Applications/Google Photos Backup.app +/Applications/Beyond Compare.app +/Applications/CopyClip 2 Helper.app +/Applications/Preview.app +/Applications/Display Menu.app +/Applications/Unsplash Wallpapers.app +/Applications/Dashboard.app +/Applications/OneDrive.app +/Applications/Spotify.app +/Applications/Delicious Library 3.app +/Applications/TLA+ Toolbox.app +/Applications/iMovie.app +/Applications/Dash.app +/Applications/TextEdit.app +/Applications/Microsoft Word.app +/Applications/Yammer.app +/Applications/Radiant Player.app +/Applications/Garmin BaseCamp.app +/Applications/DeskCover.app +/Applications/Skype for Business.app +/Applications/Garmin MapManager.app +/Applications/Commander One.app +/Applications/Audacity.app +/Applications/CopyClip.app +/Applications/Docker.app +/Applications/Disk Space.app +/Applications/Plantronics Hub.app +/Applications/GoPro Quik.app +/Applications/Magnet.app +/Applications/Mail.app +/Applications/Safari.app +/Applications/GPG Keychain.app +/Applications/Dictionary.app +/Applications/Contacts.app +/Applications/iStat Mini.app +/Applications/Bricksmith.app +/Applications/Kindle.app +/Applications/Microsoft Excel.app +/Applications/my41cx.app +/Applications/Time Machine.app +/Applications/OpenVPN/Uninstall OpenVPN Connect.app +/Applications/OpenVPN/OpenVPN Connect.app +/Applications/Utilities/AirPort Utility.app +/Applications/Utilities/Adobe AIR Uninstaller.app +/Applications/Utilities/Adobe Flash Player Install Manager.app +/Applications/Utilities/VoiceOver Utility.app +/Applications/Utilities/Terminal.app +/Applications/Utilities/Activity Monitor.app +/Applications/Utilities/Grapher.app +/Applications/Utilities/Audio MIDI Setup.app +/Applications/Utilities/System Information.app +/Applications/Utilities/Adobe AIR Application Installer.app +/Applications/Utilities/Keychain Access.app +/Applications/Utilities/Grab.app +/Applications/Utilities/Migration Assistant.app +/Applications/Utilities/Script Editor.app +/Applications/Utilities/ColorSync Utility.app +/Applications/Utilities/Console.app +/Applications/Utilities/Disk Utility.app +/Applications/Utilities/Bluetooth File Exchange.app +/Applications/Utilities/Boot Camp Assistant.app +/Applications/Utilities/Digital Color Meter.app +/Applications/Font Book.app +/Applications/FaceTime.app +/Applications/Report Phishing.app +/Applications/calibre.app +/Applications/zoom.us.app +/Applications/Symantec Solutions/Symantec Endpoint Protection.app +/Applications/Symantec Solutions/SyLinkDrop.app +/Applications/WhatsApp.app +/Applications/Microsoft Outlook.app +/Applications/GitHub Desktop.app +/Applications/Marked 2.app +/Applications/Wire.app +/Applications/Keynote.app +/Applications/Insync.app +/Applications/Thunderbird.app +/Applications/Cakebrew.app +/Applications/TodoTxtMac.app +/Applications/Wireshark.app +/Applications/TermHere.app +/Applications/Wolfram CDF Player.app +/Applications/Quicksilver.app +/Applications/FreeMind.app +/Applications/Backup and Sync.app +/Applications/Freeplane.app +/Applications/Bear.app +/Applications/Hammerspoon.app +/Applications/Processing.app +/Applications/LEGO Digital Designer.app +/Applications/Maps.app +/Applications/Mission Control.app +/Applications/Pages.app +/Applications/GarageBand.app +/Applications/VirtualBox.app +/Applications/Etcher.app +/Applications/Enterprise Connect.app +/Applications/Paragon NTFS for Mac 15.app +/Applications/Stickies.app +/Applications/Photos.app +/Applications/Remote Desktop Connection.app +/Applications/Messages.app +/Applications/Flux.app +/Applications/Lumen.app +/Applications/The Unarchiver.app +/Applications/Microsoft OneNote.app +/Applications/Atom.app +/Applications/LeoCAD.app +/Applications/Calculator.app +/Applications/Joplin.app +/Applications/nvALT.app +/Applications/kdiff3.app +/Applications/Pulse Secure.app +/Applications/Amazon Music.app +/Applications/iTerm.app +/Applications/SamsungPortableSSD.app +/Applications/Skype.app +/Applications/Rocket.app +/Applications/GitKraken.app +/Applications/Typist.app +/Applications/iTunes.app +/Applications/Tower.app +/Applications/Firefox.app +/Applications/MyWorkspace.app +/Applications/Launchpad.app +/Applications/GitUp.app +/Applications/PyCharm CE.app +/Applications/Funter.app +/Applications/Boostnote.app +/Applications/Slate.app +/Applications/Wally.app +/Applications/GoPro Studio.app +/Applications/Reminders.app +/Applications/App Store.app +/Applications/Flycut.app +/Applications/Microsoft PowerPoint.app +/Applications/Evernote.app +/Applications/Anaconda-Navigator.app +/Applications/Garmin MapInstall.app +/Applications/GTask for Desktop.app +/Applications/Contexts.app +/Applications/Übersicht.app +/Applications/VIP Access.app +/Applications/Automator.app +/Applications/Slack.app +/Applications/Scrivener.app +/Applications/Twitter.app +/Applications/Discord.app +/Applications/Calendar.app +/Applications/Microsoft Messenger.app +/Applications/Battery Monitor.app +/Applications/Garmin Express.app +/Applications/System Preferences.app +/Applications/nteract.app +/Applications/Alfred 3.app +/Applications/Sublime Text.app From e67d8609319f2e6406b6b99ac007cb1552c32245 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 Apr 2018 09:43:14 +0100 Subject: [PATCH 113/973] Cleanup vars --- vars | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/vars b/vars index e184002c..ac4d1e9a 100644 --- a/vars +++ b/vars @@ -79,18 +79,16 @@ export EDITOR='vim' export XXDIFF_EDITOR="xterm -e 'vi %s'" export PYTHONSTARTUP=~/.pythonrc -#export PRINTER=baird +#export PRINTER=xxx # Set work proxy defaults. -#export S3_PROXY="http://193.120.90.34:3128/" -#export S3_PROXY="http://avproxyvlan.dublin.s3group.com:8080/" -export S3_PROXY="http://avproxylan.dublin.s3group.com:8080/" -export S3_AUTO_PROXY="http://proxy.s3group.com/proxy.pac" +# export XXX_PROXY="http://xxx.example.com:8080/" +# export XXX_AUTO_PROXY="http://proxy.example.com/proxy.pac" # Split into host and port. -export S3_PROXY_HOST=$(echo ${S3_PROXY} | awk -F: '{printf("%s:%s\n",$1,$2);}') -export S3_PROXY_PORT=$(echo ${S3_PROXY} | awk -F: '{print $3}' | sed 's:/::') -export S3_NO_PROXY="localhost,127.0.0.0/8,10.0.0.0/8,.local,.s3group.com,192.168.249.0/24,192.168.248.0/24,193.120.88.0/24,192.168.249.25,git-mirrors,cmf-jenkins,jenkins-rdkcmf,rdkcmf-gerritmaster,protex" +# export XXX_PROXY_HOST=$(echo ${XXX_PROXY} | awk -F: '{printf("%s:%s\n",$1,$2);}') +# export XXX_PROXY_PORT=$(echo ${XXX_PROXY} | awk -F: '{print $3}' | sed 's:/::') +# export XXX_NO_PROXY="localhost,127.0.0.0/8,10.0.0.0/8,.local" # virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs @@ -102,4 +100,3 @@ export PIP_VIRTUALENV_BASE=$WORKON_HOME export PIP_RESPECT_VIRTUALENV=true # Make pip only install into a virtualenv. export PIP_REQUIRE_VIRTUALENV=true - From 66bae87e7631b86808afe9a10debb2929f221f22 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 Apr 2018 09:47:09 +0100 Subject: [PATCH 114/973] Rename proxy vars --- functions | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/functions b/functions index ff3c5411..5084bc30 100644 --- a/functions +++ b/functions @@ -122,11 +122,11 @@ function checkproxy { for netdev in $NETDEV; do IP_ADDR=`/sbin/ifconfig $netdev | grep inet | grep -v inet6 | awk '{print $2}' | sed 's/addr://'` SUBNET=`echo ${IP_ADDR} | awk -F. '{printf("%s.%s.%s", $1, $2, $3);}'` - if [ "$SUBNET" == "193.120.91" -o "$SUBNET" == "192.168.91" -o "$SUBNET" == "192.168.92" -o "$SUBNET" == "192.168.93" ]; then - proxyon - else - proxyoff - fi + # if [ "$SUBNET" == "193.120.91" -o "$SUBNET" == "192.168.91" -o "$SUBNET" == "192.168.92" -o "$SUBNET" == "192.168.93" ]; then + # proxyon + # else + # proxyoff + # fi done } @@ -175,9 +175,9 @@ function gnomeproxy { # Turn on proxy. function proxyon { - export http_proxy="${S3_PROXY}" - export https_proxy="${S3_PROXY}" - export no_proxy="${S3_NO_PROXY}" + export http_proxy="${XXX_PROXY}" + export https_proxy="${XXX_PROXY}" + export no_proxy="${XXX_NO_PROXY}" rm -f ~/.subversion/servers ~/.subversion/config if [ -f ~/.subversion/servers.proxy ]; then ln -sf ~/.subversion/servers.proxy ~/.subversion/servers @@ -187,8 +187,8 @@ function proxyon { fi ~/dotfiles/sublime-text/sublime-set-proxy.py $http_proxy ~/dotfiles/atom/atom-set-proxy.py $https_proxy - #gnomeproxy "auto" "${S3_AUTO_PROXY}" - #gnomeproxy "manual" "${S3_PROXY_HOST}" "${S3_PROXY_PORT}" + #gnomeproxy "auto" "${XXX_AUTO_PROXY}" + #gnomeproxy "manual" "${XXX_PROXY_HOST}" "${XXX_PROXY_PORT}" # echo "Proxy enabled." } From 7dd91ee4cdb530c9c5c77b12311ccb83f68ce981 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 4 May 2018 23:12:08 +0100 Subject: [PATCH 115/973] Disable OSX keychain helper. --- gitconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index 1639bc64..dfca1e3a 100644 --- a/gitconfig +++ b/gitconfig @@ -269,7 +269,7 @@ protocol = https postBuffer = 524288000 [credential] - helper = osxkeychain +# helper = osxkeychain [filter "lfs"] required = true From 21b77d1233eb3e409ff7ac41c378545de85bb652 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 4 May 2018 23:52:42 +0100 Subject: [PATCH 116/973] Add comment. --- vimrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vimrc b/vimrc index 63b53248..08f86505 100644 --- a/vimrc +++ b/vimrc @@ -1,6 +1,10 @@ " ######################################################################## " # VI text editor setup " ######################################################################## + +" NOTE: make sure vim ins actually installed, and that you're not trying +" to run this in vi! + execute pathogen#infect() set shell=/bin/bash From e510e6ba9c6a71afe2246b24ae87929c55da52ba Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 4 May 2018 23:53:06 +0100 Subject: [PATCH 117/973] Set paste mode, line numbers on. --- vimrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vimrc b/vimrc index 08f86505..4d37626a 100644 --- a/vimrc +++ b/vimrc @@ -11,6 +11,9 @@ set shell=/bin/bash set term=screen +set paste +set number + " set our tabs to four spaces set ts=4 set smartindent From c6fd4ab08cababcbc539dc7aed2b964d97326ab8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:31:00 +0100 Subject: [PATCH 118/973] Remove Centrify stuff. --- bash_profile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/bash_profile b/bash_profile index 1d193aaf..865dc4b3 100644 --- a/bash_profile +++ b/bash_profile @@ -74,15 +74,6 @@ if [ "$HOSTNAME" == "apollo" ]; then fi fi -# Stop Centrify. It seems to cause major hangs in bash tab completion. -if [ "$HOSTNAME" == "apollo" ]; then - ps auxww | grep /usr/sbin/adclient | grep -v grep > /dev/null - if [ $? -eq 0 ]; then - echo "Stopping Centrify..." - sudo service centrifydc stop - fi -fi - # Load mingit aliases. source ~/dotfiles/git/mingit/.bashrc From 19273a9acb7d5f3c2acd40746ea61d1dbcec51f8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:32:10 +0100 Subject: [PATCH 119/973] Remove obsolete SVN paths. --- cshrc | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/cshrc b/cshrc index 4bcb72c2..d2fad673 100644 --- a/cshrc +++ b/cshrc @@ -18,17 +18,3 @@ if ($?loginsh || $?command) then # switch to bash exec /bin/bash -c "$command" endif # go ahead, use csh - -######################################## -# Set up Subversion path. # -######################################## -if [ -d /proj/STBTools/tools/svn ]; then - setenv SVNPATH /proj/STBTools/tools/svn/`uname -m` - setenv PATH ${SVNPATH}/bin:${PATH} - setenv PYTHONPATH $SVNPATH/lib/svn-python - if ($?LD_LIBRARY_PATH) then - setenv LD_LIBRARY_PATH ${SVNPATH}/lib:${LD_LIBRARY_PATH} - else - setenv LD_LIBRARY_PATH ${SVNPATH}/lib - endif -fi From 8637177c3c4eded93932a28bc04000c5a62239d9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:35:15 +0100 Subject: [PATCH 120/973] Remove old cluster ssh stuff. --- functions | 20 -------------------- vars | 2 -- 2 files changed, 22 deletions(-) diff --git a/functions b/functions index 5084bc30..2b5a14f4 100644 --- a/functions +++ b/functions @@ -81,26 +81,6 @@ function chext { } -# Execute a command via SSH on a set of machines. -function cluster { - for mach in $CLUSTER; do - (echo -n "$mach: "; ssh -q $mach $*) - done -} - - -# Yum update a set of hosts. -function clupdate { - for mach in $CLUSTER; do - echo -n "$mach: " - ssh -q -t $mach sudo yum update -q -y - if [ $? -ne 0 ]; then - break - fi - done -} - - function tools { pushd . >/dev/null brtop diff --git a/vars b/vars index ac4d1e9a..4391749c 100644 --- a/vars +++ b/vars @@ -39,8 +39,6 @@ export EDITOR=vi export PAGER=less export PSSH_HOSTS=~/.hosts_file -# List of all machines in our desktop "cluster". -export CLUSTER="lightning gemini saturn jalapeno blackhawk hydrogen helium lithium nitrogen neon boron beryllium carbon oxygen" export POWER_IP="193.120.91.113" export POWER_PORT=2 export POWERCYCLE="/local/$USER/work/svn/stbtools/trunk/share/python/power.py $POWER_IP $POWER_PORT cycle" From 91b1a77c281e3c92b91407edaf262e4f1592d1e6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:35:54 +0100 Subject: [PATCH 121/973] Remove old power control vars. --- vars | 3 --- 1 file changed, 3 deletions(-) diff --git a/vars b/vars index 4391749c..6e292076 100644 --- a/vars +++ b/vars @@ -39,9 +39,6 @@ export EDITOR=vi export PAGER=less export PSSH_HOSTS=~/.hosts_file -export POWER_IP="193.120.91.113" -export POWER_PORT=2 -export POWERCYCLE="/local/$USER/work/svn/stbtools/trunk/share/python/power.py $POWER_IP $POWER_PORT cycle" if [ -d /local/$USER ]; then export CCACHE_DIR=/local/$USER/.ccache fi From e59b3c6fb8d8fdb9a099e353872beac050f24d77 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:36:38 +0100 Subject: [PATCH 122/973] Remove proxy functions. --- functions | 114 ------------------------------------------------------ 1 file changed, 114 deletions(-) diff --git a/functions b/functions index 2b5a14f4..b9232364 100644 --- a/functions +++ b/functions @@ -95,120 +95,6 @@ function tools { } -# Determine if proxy is needed. -function checkproxy { - NETDEV=`netstat -nr | grep '^0.0.0.0' | awk '{print $8}'` - #IP_ADDR=`ip addr | grep inet | egrep '(eth|em)[0-9]' | awk '{print $2}' | awk -F/ '{print $1}'` - for netdev in $NETDEV; do - IP_ADDR=`/sbin/ifconfig $netdev | grep inet | grep -v inet6 | awk '{print $2}' | sed 's/addr://'` - SUBNET=`echo ${IP_ADDR} | awk -F. '{printf("%s.%s.%s", $1, $2, $3);}'` - # if [ "$SUBNET" == "193.120.91" -o "$SUBNET" == "192.168.91" -o "$SUBNET" == "192.168.92" -o "$SUBNET" == "192.168.93" ]; then - # proxyon - # else - # proxyoff - # fi - done -} - - -# Gnome: set proxy. -# Args: -# 1: mode - 'none', 'manual', 'auto'. -# 2: mode=none: ignored -# mode=manual: host -# mode=auto: url -# 3: mode=manual: port -function gnomeproxy { - if [ -z "$DISPLAY" ]; then - return - fi - machineid=$(dbus-uuidgen --get) - export $(DISPLAY=$DISPLAY dbus-launch --autolaunch="$machineid") - ignorelist=`echo $no_proxy | sed 's/^\[\(.*\)\]$/\1/'` - quoted_ignorelist=`echo $ignorelist | sed "s/[^,]\+/'\0'/g"` - gnome3_ignorelist="[${quoted_ignorelist}]" - gsettings set org.gnome.system.proxy ignore-hosts "${gnome3_ignorelist}" - if [ "$1" == 'auto' ]; then - #echo "Setting auto proxy url: $2" - gsettings set org.gnome.system.proxy autoconfig-url "$2" - gsettings set org.gnome.system.proxy.http enabled 'true' - gsettings set org.gnome.system.proxy mode 'auto' - elif [ "$1" == 'manual' ]; then - #echo "Setting manual proxy: $2 $3" - gsettings set org.gnome.system.proxy.http host "$2" - gsettings set org.gnome.system.proxy.http port "$3" - gsettings set org.gnome.system.proxy use-same-proxy "true" - gsettings set org.gnome.system.proxy.https host "$2" - gsettings set org.gnome.system.proxy.https port "$3" - gsettings set org.gnome.system.proxy.ftp host "$2" - gsettings set org.gnome.system.proxy.ftp port "$3" - gsettings set org.gnome.system.proxy.socks host "$2" - gsettings set org.gnome.system.proxy.socks port "$3" - gsettings set org.gnome.system.proxy.http enabled 'true' - gsettings set org.gnome.system.proxy mode 'manual' - else - gsettings set org.gnome.system.proxy.http enabled 'false' - gsettings set org.gnome.system.proxy mode 'none' - fi -} - - -# Turn on proxy. -function proxyon { - export http_proxy="${XXX_PROXY}" - export https_proxy="${XXX_PROXY}" - export no_proxy="${XXX_NO_PROXY}" - rm -f ~/.subversion/servers ~/.subversion/config - if [ -f ~/.subversion/servers.proxy ]; then - ln -sf ~/.subversion/servers.proxy ~/.subversion/servers - fi - if [ -f ~/.subversion/config.work ]; then - ln -sf ~/.subversion/config.work ~/.subversion/config - fi - ~/dotfiles/sublime-text/sublime-set-proxy.py $http_proxy - ~/dotfiles/atom/atom-set-proxy.py $https_proxy - #gnomeproxy "auto" "${XXX_AUTO_PROXY}" - #gnomeproxy "manual" "${XXX_PROXY_HOST}" "${XXX_PROXY_PORT}" - # echo "Proxy enabled." -} - - -# Turn off proxy. -function proxyoff { - unset https_proxy - unset http_proxy - unset no_proxy - unset ftp_proxy - unset all_proxy - unset HTTPS_PROXY - unset HTTP_PROXY - unset NO_PROXY - unset FTP_PROXY - unset ALL_PROXY - rm -f ~/.subversion/servers ~/.subversion/config - if [ -f ~/.subversion/servers.noproxy ]; then - ln -sf ~/.subversion/servers.noproxy ~/.subversion/servers - fi - if [ -f ~/.subversion/config.home ]; then - ln -sf ~/.subversion/config.home ~/.subversion/config - fi - ~/dotfiles/sublime-text/sublime-set-proxy.py - ~/dotfiles/atom/atom-set-proxy.py - #gnomeproxy "none" - # echo "Proxy disabled." -} - - -# Toggle proxy. -function proxy { - if [ -z "$http_proxy" ]; then - proxyon - else - proxyoff - fi -} - - # Create a new git repo with one README commit and cd into it function git.nr() { mkdir $1 From 5327980b6edff0d30c1afc8fa7997e653e8f3fe4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:37:57 +0100 Subject: [PATCH 123/973] Remove proxy vars. --- vars | 9 --------- 1 file changed, 9 deletions(-) diff --git a/vars b/vars index 6e292076..8b5d8a8c 100644 --- a/vars +++ b/vars @@ -76,15 +76,6 @@ export XXDIFF_EDITOR="xterm -e 'vi %s'" export PYTHONSTARTUP=~/.pythonrc #export PRINTER=xxx -# Set work proxy defaults. -# export XXX_PROXY="http://xxx.example.com:8080/" -# export XXX_AUTO_PROXY="http://proxy.example.com/proxy.pac" - -# Split into host and port. -# export XXX_PROXY_HOST=$(echo ${XXX_PROXY} | awk -F: '{printf("%s:%s\n",$1,$2);}') -# export XXX_PROXY_PORT=$(echo ${XXX_PROXY} | awk -F: '{print $3}' | sed 's:/::') -# export XXX_NO_PROXY="localhost,127.0.0.0/8,10.0.0.0/8,.local" - # virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs # All new environments isolated from the site-packages directory. From 94eb281699ecea7c2bd80ea16aead9865a3f9766 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:38:55 +0100 Subject: [PATCH 124/973] Remove proxy function call. --- bash_profile | 2 -- 1 file changed, 2 deletions(-) diff --git a/bash_profile b/bash_profile index 865dc4b3..2923feb6 100644 --- a/bash_profile +++ b/bash_profile @@ -60,8 +60,6 @@ fi #xmodmap -e "keycode 24 = q Q at at at at" #fi -checkproxy - # Unison sync script... # Only run on the client host, and only if interactive. if [ "$HOSTNAME" == "apollo" ]; then From b6571201056c0eaf359a50c6e012ecdc8ef0bd71 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:41:52 +0100 Subject: [PATCH 125/973] Remove obsolete paths. --- paths | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/paths b/paths index b144f11f..bf8b8faa 100644 --- a/paths +++ b/paths @@ -21,41 +21,6 @@ export PATH=$PATH:$GOROOT/bin #pathmunge /usr/sbin #pathmunge /sbin -#if [ "$HOSTNAME" == "apollo" -o "$HOSTNAME" == "saturn" -o "$HOSTNAME" == "lightning" ]; then -# pathmunge /usr/local/bin -#fi - -#export LD_LIBRARY_PATH=${PYPATH}/lib:${SVNPATH}/lib:${HOME}/lib:/usr/lib64:/lib64:${LD_LIBRARY_PATH} -#export LD_LIBRARY_PATH=${SVNPATH}/lib:${HOME}/lib:/usr/lib64:/lib64 - -######################################## -# Set up Git path. # -######################################## -#GITPATH=/proj/STBTools/tools/git/`uname -p` -#if [ -d $GITPATH ]; then -# GITPATH=/proj/STBTools/tools/git/`uname -p` -# if ! echo $PATH | /bin/egrep -q "(^|:)$GITPATH/bin($|:)" ; then -# PATH=$GITPATH/bin:$PATH -# fi -# export LD_LIBRARY_PATH=${GITPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} -#fi - -######################################## -# Set up Subversion path. # -######################################## -#SVNPATH=/proj/STBTools/tools/svn/`uname -p` -#if [ -d $SVNPATH ]; then -# export PYTHONPATH=$SVNPATH/lib/svn-python -# if ! echo $PATH | /bin/egrep -q "(^|:)$SVNPATH/bin($|:)" ; then -# export PATH=$SVNPATH/bin:$PATH -# fi -# export LD_LIBRARY_PATH=${SVNPATH}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-} -#fi - -#if [ -d "$HOME/.cabal/bin" ]; then -# export PATH="$HOME/.cabal/bin:$PATH" -#fi - # Path setup for Brew Python. export PATH="/usr/local/opt/python/libexec/bin:$PATH" export PATH="/usr/local/sbin:$PATH" From 15d9f108d785bd16f8375e13c76fa03239114923 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:42:54 +0100 Subject: [PATCH 126/973] Update personalisation. --- personalisation | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/personalisation b/personalisation index 546b9bd5..c7de261d 100644 --- a/personalisation +++ b/personalisation @@ -2,8 +2,8 @@ # User-specific configuration. ######################################################################### -export _USERNAMES="jiml jlawton jim.lawton jlawto001c jlawto001" +export _USERNAMES="jiml jlawton jim.lawton jlawto001c jlawto001 james.lawton" export _NAME="Jim Lawton" -export _EMAIL="jim.lawton@accenture.com" +export _EMAIL="james.lawton@forcepoint.com" export _SHORTUSER="jim" export _MACHNAME="mac" From d302ca13d7bdf2bdec62810c52feb5d2106e75cf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:44:01 +0100 Subject: [PATCH 127/973] Update Git identities. --- git_identities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git_identities b/git_identities index 63de3612..c96d5c25 100644 --- a/git_identities +++ b/git_identities @@ -1,6 +1,6 @@ [identity:work] name = Jim Lawton - email = jim.lawton@accenture.com + email = james.lawton@forcepoint.com [identity:personal] name = Jim Lawton From b9887d3a1540bc2a4901cc22c6f84fe3f9fac884 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:44:52 +0100 Subject: [PATCH 128/973] Fix emails. --- gitconfig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gitconfig b/gitconfig index dfca1e3a..35647a12 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,5 @@ [user] name = Jim Lawton -# email = jim.lawton@accenture.com email = jim.lawton@gmail.com [push] default = simple @@ -157,7 +156,7 @@ sno = show --name-only squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" st = status - standup = log --all --since yesterday --author jim.lawton@s3group.com + standup = log --all --since yesterday --author jimlawton@gmail.com stat = status sync = !git pull && git push tagcontains = git tag -l --contains HEAD From fe3ae2dde8ecc71dee46dbc3a6630ebb06761d30 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:46:08 +0100 Subject: [PATCH 129/973] Remove obsolete functions. --- functions | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/functions b/functions index b9232364..aaeb60b4 100644 --- a/functions +++ b/functions @@ -151,26 +151,6 @@ function gi() { curl http://www.gitignore.io/api/$@ ; } -# CMF Git wrapper -function cmf() { - if [ -z "$1" -o -z "$2" ]; then - echo "usage: cmf " - return - fi - local baseurl="https://code.rdkcentral.com/r" - git $1 ${baseurl}/$2 $3 $4 $5 $6 $7 $8 $9 -} - -# CCP Git wrapper -function ccp() { - if [ -z "$1" -o -z "$2" ]; then - echo "usage: cmf " - return - fi - local baseurl="https://gerrit.teamccp.com/rdk" - git $1 ${baseurl}/$2 $3 $4 $5 $6 $7 $8 $9 -} - # Linux? function isLinux { if [ "$OS" = "Linux" ]; then From cfaaa5814ff7bb02e12a79b0f422bed70f8fa839 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 May 2018 11:48:02 +0100 Subject: [PATCH 130/973] Disable line numbers on by default. --- vimrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vimrc b/vimrc index 4d37626a..9579ea4c 100644 --- a/vimrc +++ b/vimrc @@ -12,7 +12,7 @@ set shell=/bin/bash set term=screen set paste -set number +" set number " set our tabs to four spaces set ts=4 From c3f5b592cd3f8c367355cfbd0299ad4eb012cd8a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 22:31:52 +0100 Subject: [PATCH 131/973] Update submodules. --- autoenv | 2 +- icdiff | 2 +- vim/bundle/vim-easymotion | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- vim/bundle/vundle | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/autoenv b/autoenv index 13898853..17b94df4 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit 138988537b26470cfa11b64fe2facb4d0c6001ba +Subproject commit 17b94df45d7407c2c0bf7843e7336c97f13fc331 diff --git a/icdiff b/icdiff index 031573c6..408a1b94 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 031573c6f8a9eb7c57939948fcdf8e152ca25b96 +Subproject commit 408a1b94da46921710f145209250b33c190a912e diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion index 342549e7..1a0244c9 160000 --- a/vim/bundle/vim-easymotion +++ b/vim/bundle/vim-easymotion @@ -1 +1 @@ -Subproject commit 342549e7a1e5b07a030803e0e4b6f0415aa51275 +Subproject commit 1a0244c90c3ff46219cf9597bb13662be4232407 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index f3ccb0c1..b571bff9 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit f3ccb0c12ee4985b8808f83059830a24cc92821c +Subproject commit b571bff9ec146685947ab91a2f11dd73d0d7ae44 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index 8cd41796..e2d7fcd6 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit 8cd41796fdafb50977f7f3cd0338716b379f988b +Subproject commit e2d7fcd682a461a3951e8b5067cc8a0083e75e35 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 9dc2518d..6072cb2e 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 9dc2518dade14fabf42639be6567ac6bddbce47e +Subproject commit 6072cb2e5176e2798040723c2233c291ff881e2d diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 49ee3642..2d60332f 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 49ee364222dc2a5a00dddf89fd61880e3e39d46a +Subproject commit 2d60332fa5b2b1ea346864245569df426052865a diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index e49d6c24..643a4245 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit e49d6c2459e0f5569ff2d533b4df995dd7f98313 +Subproject commit 643a42454bc8c2b2735de14f309523ce733a5358 diff --git a/vim/bundle/vundle b/vim/bundle/vundle index fcc20420..9a38216a 160000 --- a/vim/bundle/vundle +++ b/vim/bundle/vundle @@ -1 +1 @@ -Subproject commit fcc204205e3305c4f86f07e09cd756c7d06f0f00 +Subproject commit 9a38216a1c0c597f978d73547d37681fc689c90d From 5d4f700ae22b095a9e7d7eeb156b364f66405864 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 22:36:47 +0100 Subject: [PATCH 132/973] Update submodule. --- vim/bundle/command-t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 7147ba92..5ee22caf 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 +Subproject commit 5ee22caf6e7ea9661fb4031b21f5818e839ba645 From 77f25bafd258eef36a32a4907977de97691833e1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 22:37:46 +0100 Subject: [PATCH 133/973] Update submodule. --- tmux/plugins/tpm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmux/plugins/tpm b/tmux/plugins/tpm index 95f78336..e4ee75f2 160000 --- a/tmux/plugins/tpm +++ b/tmux/plugins/tpm @@ -1 +1 @@ -Subproject commit 95f78336c3972f3e6648b7b3db754f2224320a5e +Subproject commit e4ee75f23816d17f607b3b9e7e11f857cb3a6737 From e84cdcd52cd05365099cda086ba658a7768c8c43 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 22:52:44 +0100 Subject: [PATCH 134/973] Remove tpm plugin. --- .gitmodules | 3 --- tmux/plugins/tpm | 1 - 2 files changed, 4 deletions(-) delete mode 160000 tmux/plugins/tpm diff --git a/.gitmodules b/.gitmodules index 60d8c8b2..80eef056 100644 --- a/.gitmodules +++ b/.gitmodules @@ -55,9 +55,6 @@ [submodule "git/git-identify"] path = git/git-identify url = https://github.com/ConnorAtherton/git-identify.git -[submodule "tmux/plugins/tpm"] - path = tmux/plugins/tpm - url = https://github.com/tmux-plugins/tpm [submodule "hyper-hacks"] path = hyper-hacks url = https://github.com/jimlawton/hyper-hacks.git diff --git a/tmux/plugins/tpm b/tmux/plugins/tpm deleted file mode 160000 index e4ee75f2..00000000 --- a/tmux/plugins/tpm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e4ee75f23816d17f607b3b9e7e11f857cb3a6737 From cc8205a55905ef6b420c7cc3bcf8ff344dd249a7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 23:04:47 +0100 Subject: [PATCH 135/973] Fix issues with strange characters in Vim in a Linux VM. --- vimrc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vimrc b/vimrc index 9579ea4c..b43cb4c7 100644 --- a/vimrc +++ b/vimrc @@ -9,7 +9,8 @@ execute pathogen#infect() set shell=/bin/bash -set term=screen +"set term=screen +set term=linux set paste " set number @@ -32,7 +33,8 @@ set ai set nocompatible " turn on the "visual bell" - which is much quieter than the "audio blink" -set vb +set visualbell +set t_vb= " automatically show matching brackets. works like it does in bbedit. set showmatch From 3438b2abaaafeee5d4c7426676b1bb29ca54027d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jun 2018 23:22:30 +0100 Subject: [PATCH 136/973] Change Git br alias, it's too annoying the way it was. --- gitconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig b/gitconfig index 35647a12..d40db6ed 100644 --- a/gitconfig +++ b/gitconfig @@ -56,7 +56,7 @@ abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' blg = log --graph --decorate --all --abbrev-commit --pretty=oneline - br = branch -a + br = branch busypeople = shortlog -6 busythisweek = shortlog --since=one.week.ago c = commit From 93d2bb7e8cf14d6eb8f7fa282dfef1655f1af4ca Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 11 Jun 2018 11:52:15 +0100 Subject: [PATCH 137/973] Terraform bash completion, if available. --- bash_profile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bash_profile b/bash_profile index 2923feb6..3085e0bf 100644 --- a/bash_profile +++ b/bash_profile @@ -102,3 +102,9 @@ test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shel # added by Anaconda3 4.4.0 installer export PATH="/Users/jim.lawton/anaconda/bin:$PATH" + +# Added by terraform -install-autocomplete, modifiued by me. +if [ -e "${HOME}/terraform/terraform" ]; then + complete -C "${HOME}/terraform/terraform" terraform +fi + From 2e65d2d1ae3422fd2f6e93c10a5c29342a30a5ae Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 11 Jun 2018 12:00:03 +0100 Subject: [PATCH 138/973] AWS CLI completion. --- bash_profile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bash_profile b/bash_profile index 3085e0bf..1a4dfff1 100644 --- a/bash_profile +++ b/bash_profile @@ -103,8 +103,13 @@ test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shel # added by Anaconda3 4.4.0 installer export PATH="/Users/jim.lawton/anaconda/bin:$PATH" -# Added by terraform -install-autocomplete, modifiued by me. +# Added by terraform -install-autocomplete, modified by me. if [ -e "${HOME}/terraform/terraform" ]; then complete -C "${HOME}/terraform/terraform" terraform fi +# AWS CLI completion. +if [ -e "/usr/bin/aws_completer" ]; then + complete -C "/usr/bin/aws_completer" aws +fi + From 76cb7ad190ffad58ac1bd50b21bdf5e8878eaf70 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 12 Jul 2018 20:40:20 +0100 Subject: [PATCH 139/973] Add adr-tools to paths. --- paths | 1 + 1 file changed, 1 insertion(+) diff --git a/paths b/paths index bf8b8faa..c9c41930 100644 --- a/paths +++ b/paths @@ -11,6 +11,7 @@ export PATH=$PATH:~/dotfiles/git/git-identify/bin export PATH=$PATH:$GOPATH/bin export PATH=$PATH:$GOROOT/bin #export PATH=~/pebble-dev/sdk/bin:$PATH +export PATH=$PATH:~/adr-tools/src # Path setup. #export PATH= From 43b5d0e2772010f9d269c8e311aad76a83f638ba Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 12 Jul 2018 20:47:24 +0100 Subject: [PATCH 140/973] Be careful with PROMPT_COMMAND, autojump uses it. --- bash_prompt_current | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bash_prompt_current b/bash_prompt_current index f64646ce..fea06dc4 100644 --- a/bash_prompt_current +++ b/bash_prompt_current @@ -13,12 +13,12 @@ export GIT_PS1_SHOWCOLORHINTS="true" if isMac; then if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then - export PROMPT_COMMAND='title; log_bash_persistent_history; __git_ps1 "\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} title; log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" else - export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" fi else - export PROMPT_COMMAND='log_bash_persistent_history; __git_ps1 "\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w" "\[$IBlue\]> \[$White\]"' + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" fi export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n' From 46aa2ba37105a49a8a1dd7034743371b1e80842f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 7 Aug 2018 11:10:06 +0100 Subject: [PATCH 141/973] Source Okta bash functions. --- bash_profile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bash_profile b/bash_profile index 1a4dfff1..70a7c757 100644 --- a/bash_profile +++ b/bash_profile @@ -113,3 +113,9 @@ if [ -e "/usr/bin/aws_completer" ]; then complete -C "/usr/bin/aws_completer" aws fi + +#OktaAWSCLI +if [ -f "/home/jim/.okta/bash_functions" ]; then + . "/home/jim/.okta/bash_functions" +fi + From 61f96e2a8b9bf90a69e7380e0254b10111936c48 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Sep 2018 23:06:06 +0100 Subject: [PATCH 142/973] Disable deprecated/missing packages. --- Brewfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 77487be7..8684ddc4 100644 --- a/Brewfile +++ b/Brewfile @@ -2,7 +2,7 @@ tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" tap "dinkypumpkin/get_iplayer" tap "homebrew/core" -tap "homebrew/versions" +# tap "homebrew/versions" # Deprecated? tap "homebrew/dev-tools" tap "homebrew/bundle" tap "homebrew/services" @@ -26,7 +26,7 @@ brew "go" brew "diffutils" brew "libksba" brew "pth" -brew "dirmngr" +# brew "dirmngr" # Missing? brew "dos2unix" brew "xvid" brew "flake8" From d33ec73e98809b25b0382cdfd3013468497e8a43 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Sep 2018 23:06:37 +0100 Subject: [PATCH 143/973] Mark failing 4 packages. --- Brewfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 8684ddc4..4aea7797 100644 --- a/Brewfile +++ b/Brewfile @@ -62,7 +62,7 @@ brew "progress" brew "pyenv" brew "pyenv-virtualenvwrapper" brew "qt" -brew "repo" +brew "repo" # Failed! brew "rtmpdump" brew "rust" brew "sloccount" @@ -72,14 +72,14 @@ brew "tig" brew "todo-txt" brew "wget" brew "mkchoi212/fac/fac" -brew "sachaos/todoist/todoist" +brew "sachaos/todoist/todoist" # Failed! cask "cakebrew" -cask "dockertoolbox" +cask "docker-toolbox" # Failed! cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" -cask "virtualbox" +cask "virtualbox" # Failed! mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 mas "CopyClip", id: 595191960 From 2e30f961334d5fa3b69c1282b7cfdf80fbafa6ad Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Sep 2018 23:07:16 +0100 Subject: [PATCH 144/973] Update submodules. --- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 5ee22caf..7147ba92 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 5ee22caf6e7ea9661fb4031b21f5818e839ba645 +Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index b571bff9..61b09ca6 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit b571bff9ec146685947ab91a2f11dd73d0d7ae44 +Subproject commit 61b09ca6b7ed63933ca6ab27def6f3bbfa4352f6 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 6072cb2e..2619a1f5 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 6072cb2e5176e2798040723c2233c291ff881e2d +Subproject commit 2619a1f5f63b670578ed0a504a6f844807804436 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 2d60332f..c82c6d49 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 2d60332fa5b2b1ea346864245569df426052865a +Subproject commit c82c6d4978be28adcf85dc1e61fa428e801bd525 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index 643a4245..59706887 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit 643a42454bc8c2b2735de14f309523ce733a5358 +Subproject commit 597068870b8f093a8b2d11536c62ff31222ee8d0 From 205a0641abd452474ad92c4685243d93405034fe Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 6 Sep 2018 22:34:31 +0100 Subject: [PATCH 145/973] Update submodules. --- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 7147ba92..5ee22caf 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 +Subproject commit 5ee22caf6e7ea9661fb4031b21f5818e839ba645 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 61b09ca6..b571bff9 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 61b09ca6b7ed63933ca6ab27def6f3bbfa4352f6 +Subproject commit b571bff9ec146685947ab91a2f11dd73d0d7ae44 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 2619a1f5..6072cb2e 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 2619a1f5f63b670578ed0a504a6f844807804436 +Subproject commit 6072cb2e5176e2798040723c2233c291ff881e2d diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index c82c6d49..2d60332f 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit c82c6d4978be28adcf85dc1e61fa428e801bd525 +Subproject commit 2d60332fa5b2b1ea346864245569df426052865a diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index 59706887..643a4245 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit 597068870b8f093a8b2d11536c62ff31222ee8d0 +Subproject commit 643a42454bc8c2b2735de14f309523ce733a5358 From ee67359bf6c7306ddd4fc29b277417b1502cc52b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 9 Sep 2018 10:03:44 +0100 Subject: [PATCH 146/973] Re-enable osxkeychain helper. --- gitconfig | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gitconfig b/gitconfig index d40db6ed..e7ac9baf 100644 --- a/gitconfig +++ b/gitconfig @@ -253,12 +253,7 @@ [gh] protocol = https -#[github] -# user = jimlawton -#[credential] -# helper = osxkeychain -[github] [github] user = jimlawton #token = PLACEHOLDER @@ -268,7 +263,7 @@ protocol = https postBuffer = 524288000 [credential] -# helper = osxkeychain + helper = osxkeychain [filter "lfs"] required = true From e5de9d76a5b35186b63599ff4e2a829d74ae7749 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 15 Sep 2018 22:15:32 +0100 Subject: [PATCH 147/973] Update submodules. --- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 5ee22caf..7147ba92 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 5ee22caf6e7ea9661fb4031b21f5818e839ba645 +Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index b571bff9..61b09ca6 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit b571bff9ec146685947ab91a2f11dd73d0d7ae44 +Subproject commit 61b09ca6b7ed63933ca6ab27def6f3bbfa4352f6 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 6072cb2e..2619a1f5 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 6072cb2e5176e2798040723c2233c291ff881e2d +Subproject commit 2619a1f5f63b670578ed0a504a6f844807804436 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 2d60332f..c82c6d49 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 2d60332fa5b2b1ea346864245569df426052865a +Subproject commit c82c6d4978be28adcf85dc1e61fa428e801bd525 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index 643a4245..59706887 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit 643a42454bc8c2b2735de14f309523ce733a5358 +Subproject commit 597068870b8f093a8b2d11536c62ff31222ee8d0 From d2b8b6d429e1ca44b83eb1187c989fded1cbe281 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 17 Sep 2018 23:44:51 +0100 Subject: [PATCH 148/973] Update Brewfile. --- Brewfile | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/Brewfile b/Brewfile index 4aea7797..48d50ece 100644 --- a/Brewfile +++ b/Brewfile @@ -1,22 +1,22 @@ -tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" -tap "sachaos/todoist" +tap "d12frosted/emacs-plus" tap "dinkypumpkin/get_iplayer" +tap "github/bootstrap" +tap "homebrew/bundle" +tap "homebrew/cask" tap "homebrew/core" -# tap "homebrew/versions" # Deprecated? tap "homebrew/dev-tools" -tap "homebrew/bundle" tap "homebrew/services" -tap "d12frosted/emacs-plus" -tap "github/bootstrap" -tap "caskroom/cask" +tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" +tap "sachaos/todoist" brew "a2ps" brew "adr-tools" +brew "ansible" brew "apr" brew "apr-util" brew "atomicparsley" -brew "autoconf" brew "autojump" -brew "sqlite" +brew "awk" +brew "aws-okta" brew "awscli" brew "bash" brew "bash-completion" @@ -24,9 +24,6 @@ brew "coreutils" brew "curl" brew "go" brew "diffutils" -brew "libksba" -brew "pth" -# brew "dirmngr" # Missing? brew "dos2unix" brew "xvid" brew "flake8" @@ -35,16 +32,17 @@ brew "gdb" brew "get_iplayer" brew "gist" brew "git" +brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" -brew "pkg-config" brew "httpie" brew "hub" brew "id3lib" brew "id3v2" brew "jq" brew "leptonica" +brew "libressl" brew "libusb-compat" brew "mas" brew "md5sha1sum" @@ -59,10 +57,12 @@ brew "peco" brew "percol" brew "pipenv" brew "progress" +brew "pth" brew "pyenv" +brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "qt" -brew "repo" # Failed! +brew "repo" brew "rtmpdump" brew "rust" brew "sloccount" @@ -70,16 +70,19 @@ brew "ssh-copy-id" brew "tesseract" brew "tig" brew "todo-txt" +brew "vim" brew "wget" +brew "youtube-dl" brew "mkchoi212/fac/fac" -brew "sachaos/todoist/todoist" # Failed! +brew "sachaos/todoist/todoist" cask "cakebrew" -cask "docker-toolbox" # Failed! +cask "docker-toolbox" cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" -cask "virtualbox" # Failed! +cask "virtualbox" +mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 mas "CopyClip", id: 595191960 @@ -87,6 +90,7 @@ mas "CopyClip 2", id: 1020812363 mas "Delicious Library 3", id: 635124250 mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 +mas "Funter", id: 1109422934 mas "GarageBand", id: 682658836 mas "iMovie", id: 408981434 mas "iStat Mini", id: 927292435 @@ -107,3 +111,4 @@ mas "Twitter", id: 409789998 mas "Typist", id: 415166115 mas "Unsplash Wallpapers", id: 1284863847 mas "Wire", id: 931134707 +mas "Xcode", id: 497799835 From 133d72f6ca6c3e5124c1ba499f223c49738549d8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 22 Sep 2018 22:24:17 +0100 Subject: [PATCH 149/973] Add functions to do global Pip installs. --- functions | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/functions b/functions index aaeb60b4..91eae17e 100644 --- a/functions +++ b/functions @@ -183,3 +183,11 @@ function title { fi } +gpip2(){ + PIP_REQUIRE_VIRTUALENV="0" pip2 "$@" +} + +gpip(){ + PIP_REQUIRE_VIRTUALENV="0" pip3 "$@" +} + From ab915bda4954ba17b36577c493f5951ec80aff9f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 30 Sep 2018 10:17:24 +0100 Subject: [PATCH 150/973] Update Brewfile packages. --- Brewfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Brewfile b/Brewfile index 48d50ece..c22be00e 100644 --- a/Brewfile +++ b/Brewfile @@ -20,11 +20,14 @@ brew "aws-okta" brew "awscli" brew "bash" brew "bash-completion" +brew "consul" +brew "consul-template" brew "coreutils" brew "curl" brew "go" brew "diffutils" brew "dos2unix" +brew "envconsul" brew "xvid" brew "flake8" brew "fzf" @@ -70,6 +73,8 @@ brew "ssh-copy-id" brew "tesseract" brew "tig" brew "todo-txt" +brew "vault" +brew "vault-cli" brew "vim" brew "wget" brew "youtube-dl" From 49ac4257bc1819152e0b8633fab953f4a5e36bb8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 30 Sep 2018 17:23:21 +0100 Subject: [PATCH 151/973] Update Brewfile (packer, wallpaper app). --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index c22be00e..02df4229 100644 --- a/Brewfile +++ b/Brewfile @@ -54,6 +54,7 @@ brew "mplayer" brew "mtr" brew "node" brew "ocrad" +brew "packer" brew "parallel" brew "patchutils" brew "peco" @@ -87,6 +88,7 @@ cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" cask "virtualbox" +mas "24 Hour Wallpaper", id: 1226087575 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 From 0f35d3abad31a25b0eb3ed79a85fcc0c2c41132d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Oct 2018 10:56:57 +0100 Subject: [PATCH 152/973] Support separate personal and work git configs. --- .gitconfig-personal | 3 +++ gitignore | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitconfig-personal diff --git a/.gitconfig-personal b/.gitconfig-personal new file mode 100644 index 00000000..cfbd14fb --- /dev/null +++ b/.gitconfig-personal @@ -0,0 +1,3 @@ +[user] + name = Jim Lawton + email = jim.lawton@gmail.com diff --git a/gitignore b/gitignore index 111c8428..587b9b0e 100644 --- a/gitignore +++ b/gitignore @@ -15,3 +15,4 @@ thumbs.db .gradle .gradle_targets .gradletasknamecache +.gitconfig-work From bb30ebd4fa1c2b8915cf0fc68069b8c89dbd283b Mon Sep 17 00:00:00 2001 From: James Lawton Date: Tue, 2 Oct 2018 10:52:41 +0100 Subject: [PATCH 153/973] Add conditional includes of work/personal configs. --- gitconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gitconfig b/gitconfig index e7ac9baf..4212e6a0 100644 --- a/gitconfig +++ b/gitconfig @@ -1,6 +1,7 @@ -[user] - name = Jim Lawton - email = jim.lawton@gmail.com +[includeIf "gitdir:Work/"] + path = dotfiles/.gitconfig-work +[includeIf "gitdir:Personal/"] + path = dotfiles/.gitconfig-personal [push] default = simple [branch] From 5faa50a6a7ecbbcfe8559b12b775bebe6675ff2b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Oct 2018 11:09:30 +0100 Subject: [PATCH 154/973] Move Git aliases to separate file. --- git-aliases | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++ gitconfig | 120 ++-------------------------------------------------- 2 files changed, 120 insertions(+), 117 deletions(-) create mode 100644 git-aliases diff --git a/git-aliases b/git-aliases new file mode 100644 index 00000000..f260b09f --- /dev/null +++ b/git-aliases @@ -0,0 +1,117 @@ +[alias] + abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" + aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' + blg = log --graph --decorate --all --abbrev-commit --pretty=oneline + br = branch + busypeople = shortlog -6 + busythisweek = shortlog --since=one.week.ago + c = commit + cam = commit -a -m + ci = commit + cl = log --stat -C -2 + co = checkout + cob = checkout -b + configpushcurrent = config push.default current + configpushnothing = config push.default nothing + configpushtracking = config push.default matching + configpushtracking = config push.default tracking + configsimplelog = config format.pretty oneline + d = diff --color-words + dc = diff --staged + dcw = diff --color-words + dh = diff HEAD + dm = !git diff | mate + dump = cat-file -p + dv = !git diff | vim + dw = diff --word-diff + empty-tree-sha1 = hash-object -t tree /dev/null + fetchnotes = !sh -c 'git fetch $1 refs/notes/*:refs/notes/*' - + fixup = "!sh -c 'git commit -m \"fixup! $(git log -1 --format='\\''%s'\\'' $@)\"' -" + gc-ap = gc --aggressive --prune + graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/\"&\"/g' ; echo '}'; }; f" + gwcl = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative + hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short + hse = log --stat -5 + ignorechanges = update-index --assume-unchanged + ignored = ls-files --others --i --exclude-standard + k = !exec gitk --all& + last = log -1 HEAD + latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' + lf = log --pretty=fuller + lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgorigin = log --oneline --graph --decorate origin/master...master --left-right + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' + listconf = config --global --list + listhistory = log --name-status + liststaged = diff --name-status --staged + listunstaged = diff --name-status + ll = log --stat -C -3 + lm = log --stat -M + lod = log --oneline --decorate + logcpy = log --stat -1 -C -C + logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 + logit = log --stat -M + logm = log --stat -M + logme = log --author=Jim --stat -C + logn = log --oneline --name-only + logr = log -M + logr2 = log --stat -M -2 + logsimple = log --graph --abbrev-commit --pretty=oneline --all --decorate + lol = log --pretty=oneline --graph --abbrev-commit --all + lp = log -p + lpo = log --pretty=oneline --abbrev-commit --graph --decorate --all + lsm = log -M --stat + lwr = log --stat -C + me = !git config --get user.name && git config --get user.email + mergekeepoursonly = merge -s ours + nfjsunpushed = log origin/master..master --oneline + noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' + noticechanges = update-index --no-assume-unchanged + nr = "!sh -c 'git init $0'" + oneline ="!_() { $(test $# -eq 0 && echo xargs -L1) git log --no-walk --decorate --oneline \"$@\"; }; _" + orphank = !gitk --all `git reflog | cut -c1-7`& + orphanl = !git log --pretty=oneline --abbrev-commit --graph --decorate `git reflog | cut -c1-7` + patchforthis = "!git diff -p $(git empty-tree-sha1)" + ph = push + pl = pull + prunenow = gc --prune=now + pub = push -u origin + pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf + pur = pull --rebase + purgeme = !git clean -fd && git reset --hard + pushnotes = !sh -c 'git push $1 refs/notes/*' - + ready = rebase -i @{u} + recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f" + redocommit = reset --soft HEAD^ + reward = blame + ri = rebase --interactive --autosquash + rlog = log --color-words --stat -3 + rmmissing = !git rm $(git ls-files --deleted) + ro = !git fetch origin && git reset --hard origin/master + rtheirs = !git checkout --theirs ./ && git add . && git rebase --continue + rv = remote -v + s = status -u -s + scrub = !git reset --hard && git clean -fd + servehere = daemon --verbose --informative-errors --reuseaddr --export-all --base-path=. --enable=receive-pack + shorten = "!sh -c 'curl -i http://git.io -F url=$1' -" + showignored = clean -ndX + showignored2 = ls-files --others --ignored --exclude-standard + showuntracked = ls-files --others --exclude-standard + slog = log --graph --simplify-by-decoration --all --abbrev-commit --pretty=oneline + sno = show --name-only + squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" + st = status + standup = log --all --since yesterday --author jimlawton@gmail.com + stat = status + sync = !git pull && git push + tagcontains = git tag -l --contains HEAD + tips = "!_() { t=$(git rev-list --no-merges --max-count=1 \"$@\"); if test -n \"$t\"; then echo $t; _ \"$@\" ^$t; fi; }; _" + type = cat-file -t + url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" + weekly = !git --no-pager log --author=\"`git config --global user.name`\" --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' + whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short + whitespaceviolations = "!git diff --check $(git empty-tree-sha1)" + who = shortlog -s -- + wipe = reset --hard HEAD + diff --git a/gitconfig b/gitconfig index 4212e6a0..22272ede 100644 --- a/gitconfig +++ b/gitconfig @@ -2,6 +2,9 @@ path = dotfiles/.gitconfig-work [includeIf "gitdir:Personal/"] path = dotfiles/.gitconfig-personal +[include] + path = dotfiles/git-aliases + [push] default = simple [branch] @@ -53,123 +56,6 @@ # autocrlf = input # editor = vim -[alias] - abbr = "!sh -c 'git rev-list --all | grep ^$1 | while read commit; do git --no-pager log -n1 --pretty=format:\"%H %ci %an %s%n\" $commit; done' -" - aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' - blg = log --graph --decorate --all --abbrev-commit --pretty=oneline - br = branch - busypeople = shortlog -6 - busythisweek = shortlog --since=one.week.ago - c = commit - cam = commit -a -m - ci = commit - cl = log --stat -C -2 - co = checkout - cob = checkout -b - configpushcurrent = config push.default current - configpushnothing = config push.default nothing - configpushtracking = config push.default matching - configpushtracking = config push.default tracking - configsimplelog = config format.pretty oneline - d = diff --color-words - dc = diff --staged - dcw = diff --color-words - dh = diff HEAD - dm = !git diff | mate - dump = cat-file -p - dv = !git diff | vim - dw = diff --word-diff - empty-tree-sha1 = hash-object -t tree /dev/null - fetchnotes = !sh -c 'git fetch $1 refs/notes/*:refs/notes/*' - - fixup = "!sh -c 'git commit -m \"fixup! $(git log -1 --format='\\''%s'\\'' $@)\"' -" - gc-ap = gc --aggressive --prune - graphviz = "!f() { echo 'digraph git {' ; git log --pretty='format: %h -> { %p }' \"$@\" | sed 's/[0-9a-f][0-9a-f]*/\"&\"/g' ; echo '}'; }; f" - gwcl = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative - hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short - hse = log --stat -5 - ignorechanges = update-index --assume-unchanged - ignored = ls-files --others --i --exclude-standard - k = !exec gitk --all& - last = log -1 HEAD - latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' - lf = log --pretty=fuller - lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative - lgorigin = log --oneline --graph --decorate origin/master...master --left-right - lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative - lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' - listconf = config --global --list - listhistory = log --name-status - liststaged = diff --name-status --staged - listunstaged = diff --name-status - ll = log --stat -C -3 - lm = log --stat -M - lod = log --oneline --decorate - logcpy = log --stat -1 -C -C - logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 - logit = log --stat -M - logm = log --stat -M - logme = log --author=Jim --stat -C - logn = log --oneline --name-only - logr = log -M - logr2 = log --stat -M -2 - logsimple = log --graph --abbrev-commit --pretty=oneline --all --decorate - lol = log --pretty=oneline --graph --abbrev-commit --all - lp = log -p - lpo = log --pretty=oneline --abbrev-commit --graph --decorate --all - lsm = log -M --stat - lwr = log --stat -C - me = !git config --get user.name && git config --get user.email - mergekeepoursonly = merge -s ours - nfjsunpushed = log origin/master..master --oneline - noderelnotes = git log --graph --pretty=format:'%h%d %s (%an)' - noticechanges = update-index --no-assume-unchanged - nr = "!sh -c 'git init $0'" - oneline ="!_() { $(test $# -eq 0 && echo xargs -L1) git log --no-walk --decorate --oneline \"$@\"; }; _" - orphank = !gitk --all `git reflog | cut -c1-7`& - orphanl = !git log --pretty=oneline --abbrev-commit --graph --decorate `git reflog | cut -c1-7` - patchforthis = "!git diff -p $(git empty-tree-sha1)" - ph = push - pl = pull - prunenow = gc --prune=now - pub = push -u origin - pubdev = !git pub checkout master && git pull && git checkout dev && git rebase master && git checkout master && git merge dev && git wtf - pur = pull --rebase - purgeme = !git clean -fd && git reset --hard - pushnotes = !sh -c 'git push $1 refs/notes/*' - - ready = rebase -i @{u} - recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f" - redocommit = reset --soft HEAD^ - reward = blame - ri = rebase --interactive --autosquash - rlog = log --color-words --stat -3 - rmmissing = !git rm $(git ls-files --deleted) - ro = !git fetch origin && git reset --hard origin/master - rtheirs = !git checkout --theirs ./ && git add . && git rebase --continue - rv = remote -v - s = status -u -s - scrub = !git reset --hard && git clean -fd - servehere = daemon --verbose --informative-errors --reuseaddr --export-all --base-path=. --enable=receive-pack - shorten = "!sh -c 'curl -i http://git.io -F url=$1' -" - showignored = clean -ndX - showignored2 = ls-files --others --ignored --exclude-standard - showuntracked = ls-files --others --exclude-standard - slog = log --graph --simplify-by-decoration --all --abbrev-commit --pretty=oneline - sno = show --name-only - squash = "!sh -c 'git commit -m \"squash! $(git log -1 --format='\\''%s'\\'' $@)\"' -" - st = status - standup = log --all --since yesterday --author jimlawton@gmail.com - stat = status - sync = !git pull && git push - tagcontains = git tag -l --contains HEAD - tips = "!_() { t=$(git rev-list --no-merges --max-count=1 \"$@\"); if test -n \"$t\"; then echo $t; _ \"$@\" ^$t; fi; }; _" - type = cat-file -t - url = !git info | grep ^remote | grep \\.url | awk -F= \"{print $2}\" - weekly = !git --no-pager log --author=\"`git config --global user.name`\" --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' - whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short - whitespaceviolations = "!git diff --check $(git empty-tree-sha1)" - who = shortlog -s -- - wipe = reset --hard HEAD - [apply] whitespace = nowarn [rerere] From e96172ef3dfda983ec41f309ad4b1141a2337873 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Oct 2018 22:12:08 +0100 Subject: [PATCH 155/973] Update Brewfile: add jupyter, ipython. --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index 02df4229..26d1db60 100644 --- a/Brewfile +++ b/Brewfile @@ -43,7 +43,9 @@ brew "httpie" brew "hub" brew "id3lib" brew "id3v2" +brew "ipython" brew "jq" +brew "jupyter" brew "leptonica" brew "libressl" brew "libusb-compat" From ffcc873df6c6c885cce38103f6421d6caf24c570 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 17 Oct 2018 17:32:40 +0100 Subject: [PATCH 156/973] Add pyenv shim. --- bash_profile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bash_profile b/bash_profile index 70a7c757..4f2b5f5b 100644 --- a/bash_profile +++ b/bash_profile @@ -119,3 +119,6 @@ if [ -f "/home/jim/.okta/bash_functions" ]; then . "/home/jim/.okta/bash_functions" fi +if command -v pyenv 1>/dev/null 2>&1; then + eval "$(pyenv init -)" +fi From eb33b54332fe51ae696cd469984b1c24ec5d60bd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 11:24:39 +0100 Subject: [PATCH 157/973] Move virtualenvwrapper setup to end of file. --- bash_profile | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/bash_profile b/bash_profile index 4f2b5f5b..e83ece15 100644 --- a/bash_profile +++ b/bash_profile @@ -75,17 +75,6 @@ fi # Load mingit aliases. source ~/dotfiles/git/mingit/.bashrc -# Set up virtualenvwrapper. -if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then - source /usr/share/virtualenvwrapper/virtualenvwrapper.sh -elif [ -f /usr/local/bin/virtualenvwrapper.sh ]; then - source /usr/local/bin/virtualenvwrapper.sh -elif [ -f /usr/bin/virtualenvwrapper.sh ]; then - source /usr/bin/virtualenvwrapper.sh -else - echo "WARNING: Can't find virtualenvwrapper.sh" -fi - # Set up Bash completion. if [ -f /etc/bash_completion ]; then source /etc/bash_completion @@ -122,3 +111,15 @@ fi if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi + +# Set up virtualenvwrapper. +if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then + source /usr/share/virtualenvwrapper/virtualenvwrapper.sh +elif [ -f /usr/local/bin/virtualenvwrapper.sh ]; then + source /usr/local/bin/virtualenvwrapper.sh +elif [ -f /usr/bin/virtualenvwrapper.sh ]; then + source /usr/bin/virtualenvwrapper.sh +else + echo "WARNING: Can't find virtualenvwrapper.sh" +fi + From 1aa198168224ec4a72eb61b6f26982626f7be68e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 11:24:58 +0100 Subject: [PATCH 158/973] Tell virtualenvwrapper to use pyenv. --- bash_profile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bash_profile b/bash_profile index e83ece15..18fc2e49 100644 --- a/bash_profile +++ b/bash_profile @@ -112,6 +112,8 @@ if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi +export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" + # Set up virtualenvwrapper. if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then source /usr/share/virtualenvwrapper/virtualenvwrapper.sh From feed93fc233ce6cd1c71bff3cdddeb5e4014a997 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 11:53:23 +0100 Subject: [PATCH 159/973] Specify Python executable to use for virtualenvwrapper. --- vars | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vars b/vars index 8b5d8a8c..f63d5053 100644 --- a/vars +++ b/vars @@ -80,6 +80,8 @@ export PYTHONSTARTUP=~/.pythonrc export WORKON_HOME=$HOME/.virtualenvs # All new environments isolated from the site-packages directory. export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' +# Specify Python to use with virtualenvwrapper. +export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # Use the same directory for virtualenvs as virtualenvwrapper. export PIP_VIRTUALENV_BASE=$WORKON_HOME # Make pip detect an active virtualenv and install to it From 35ef4e8c9124efc63143c05eadeb3032dc84e3a4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 12:07:57 +0100 Subject: [PATCH 160/973] Setting this always forces the use of the system Python. --- bash_profile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bash_profile b/bash_profile index 18fc2e49..c88cc1f4 100644 --- a/bash_profile +++ b/bash_profile @@ -112,7 +112,7 @@ if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi -export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" +# export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" # Set up virtualenvwrapper. if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then From c6386c41389ad6457c6776177557c3de6e40a159 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 12:13:07 +0100 Subject: [PATCH 161/973] Oops, commented the wrong line previously. --- bash_profile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bash_profile b/bash_profile index c88cc1f4..18fc2e49 100644 --- a/bash_profile +++ b/bash_profile @@ -112,7 +112,7 @@ if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi -# export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" +export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" # Set up virtualenvwrapper. if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then From 136228be2a7daa7f13380ea407ecdeffcabc057a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 18 Oct 2018 12:15:18 +0100 Subject: [PATCH 162/973] This always enforces Brew python3 on virtualenvs. --- vars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars b/vars index f63d5053..3d292cc3 100644 --- a/vars +++ b/vars @@ -81,7 +81,7 @@ export WORKON_HOME=$HOME/.virtualenvs # All new environments isolated from the site-packages directory. export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # Specify Python to use with virtualenvwrapper. -export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 +# export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # Use the same directory for virtualenvs as virtualenvwrapper. export PIP_VIRTUALENV_BASE=$WORKON_HOME # Make pip detect an active virtualenv and install to it From 9f22050cd5cde49db32ab2b5067a9ec28ca02357 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Mon, 29 Oct 2018 07:43:42 -0700 Subject: [PATCH 163/973] Create install_apps.sh --- install_apps.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 install_apps.sh diff --git a/install_apps.sh b/install_apps.sh new file mode 100644 index 00000000..f4ab639a --- /dev/null +++ b/install_apps.sh @@ -0,0 +1,86 @@ +#!/bin/bash +set -e # Failed commands will cause an immediate exit + +####################################################### +# Install brew, install casks, install app store apps, +# install Apple OS updates. +# +# Inspired by: https://gist.github.com/t-io/8255711 +####################################################### + +test_for_home_brew_installation() +{ + if hash brew 2>/dev/null; then + echo "Homebrew 'brew' is already installed. Continuing." + else + # Install brew + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + fi +} + +# FYI: A list of casks can be found at +# /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks + +brewcasks=( + adobe-creative-cloud + alfred + appcleaner + araxis-merge + atom + box-sync + carbon-copy-cloner + duet + dropbox + encryptme + github + google-chrome + iterm2 + java + keepingyouawake + mailplane + microsoft-office + microsoft-teams + skype + sublime-text + textmate + visual-studio-code + vlc + vmware-fusion + whatsapp + zoomus + ) + +for brewcask in "${brewcasks[@]}" +do + brew cask install $brewcask +done + + +# App Store automation: https://github.com/mas-cli/mas +brew install mas + +# App Store Apps +appstoreapps=( + 406056744 # Evernote + 904280696 # Things 3 + 540348655 # Monosnap + 443987910 # 1Password 6 + 419330170 # Moom + 540348655 # Monosnap + 975937182 # Fantastical 2 + 1289197285 # MindNode 5 + 1090488118 # Gemini 2 + 1091189122 # Bear + 803453959 # Slack + 409203825 # Numbers + 409201541 # Pages + 409183694 # Keynote + ) + +for appstoreapp in "${appstoreapps[@]}" +do + mas install $appstoreapp +done + +# Maintenance +softwareupdate -i -a # Install all software updates From ec7b67a6cddc35b4e9475ce02ec807af71f4a36b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 3 Nov 2018 19:30:52 +0000 Subject: [PATCH 164/973] Update brewfile. --- Brewfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Brewfile b/Brewfile index 26d1db60..26797365 100644 --- a/Brewfile +++ b/Brewfile @@ -10,6 +10,9 @@ tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" brew "a2ps" brew "adr-tools" +brew "readline" +brew "xz" +brew "python" brew "ansible" brew "apr" brew "apr-util" @@ -17,6 +20,7 @@ brew "atomicparsley" brew "autojump" brew "awk" brew "aws-okta" +brew "aws-shell" brew "awscli" brew "bash" brew "bash-completion" @@ -73,6 +77,8 @@ brew "rtmpdump" brew "rust" brew "sloccount" brew "ssh-copy-id" +brew "terraform" +brew "terraform-docs" brew "tesseract" brew "tig" brew "todo-txt" From d4bfa56eee91a5ca0dfabf1a437ebf2b0bfff5cf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:51:16 +0000 Subject: [PATCH 165/973] Add persistent_history Github reference. --- functions | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/functions b/functions index 91eae17e..2161bb97 100644 --- a/functions +++ b/functions @@ -10,8 +10,8 @@ function killxscreensaver() } -function col { - awk '{print $'$(echo $* | sed -e 's/ /,$/g')'}'; +function col { + awk '{print $'$(echo $* | sed -e 's/ /,$/g')'}'; } @@ -37,7 +37,7 @@ function pathmunge { # # Usage .. [n] # Go up n-levels. -# i.e.: .. 3 will go up 3 levels +# i.e.: .. 3 will go up 3 levels function .. { local arg=${1:-1}; local dir="" @@ -51,7 +51,7 @@ function .. { # Usage ... Thing/Some # Go up until you encounter Thing/Some, then go there # i.e.: I'm in /usr/share/X11 -# ... src will go up to /usr, then change to /usr/src +# ... src will go up to /usr, then change to /usr/src function ... { if [ -z "$1" ]; then return @@ -61,7 +61,7 @@ function ... { while [ $maxlvl -gt 0 ]; do dir="../$dir" maxlvl=$(($maxlvl - 1)); - if [ -d "$dir" ]; then + if [ -d "$dir" ]; then cd $dir >&/dev/null fi done @@ -96,7 +96,7 @@ function tools { # Create a new git repo with one README commit and cd into it -function git.nr() { +function git.nr() { mkdir $1 cd $1 git init @@ -125,6 +125,7 @@ function contains() { # From Eli Bendersky # http://eli.thegreenplace.net/2013/06/11/keeping-persistent-history-in-bash/ +# https://github.com/eliben/code-for-blog/blob/master/2016/persistent-history/add-persistent-history.sh function log_bash_persistent_history() { local rc=$? [[ $(history 1) =~ ^\ *[0-9]+\ +([^\ ]+\ [^\ ]+)\ +(.*)$ ]] @@ -148,7 +149,7 @@ function log_bash_persistent_history() { # gitignore.io # http://www.gitignore.io/cli function gi() { - curl http://www.gitignore.io/api/$@ ; + curl http://www.gitignore.io/api/$@ ; } # Linux? From f42f3669d408b0bd192e3ea56c87fbec07a2f3b8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:52:02 +0000 Subject: [PATCH 166/973] Comment out Unison stuff. --- bash_profile | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/bash_profile b/bash_profile index 18fc2e49..50ef7945 100644 --- a/bash_profile +++ b/bash_profile @@ -53,7 +53,7 @@ fi # bind '"\e[1;5C":forward-word' #fi -#if [ ! -z "$DISPLAY" ]; then +#if [ ! -z "$DISPLAY" ]; then #export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'; #xmodmap -e 'clear lock' #xmodmap -e "remove Lock = Caps_Lock" @@ -62,15 +62,15 @@ fi # Unison sync script... # Only run on the client host, and only if interactive. -if [ "$HOSTNAME" == "apollo" ]; then - echo $- | grep -q i - if [ $? -eq 0 ]; then - sync_proc_count=`ps auxww | grep unison-sync.py | grep -vc grep` - if [ $sync_proc_count -eq 0 ]; then - python ${HOME}/dotfiles/unison-sync/unison-sync.py >${HOME}/.unison_sync/unison_sync.log 2>&1 & - fi - fi -fi +# if [ "$HOSTNAME" == "apollo" ]; then +# echo $- | grep -q i +# if [ $? -eq 0 ]; then +# sync_proc_count=`ps auxww | grep unison-sync.py | grep -vc grep` +# if [ $sync_proc_count -eq 0 ]; then +# python ${HOME}/dotfiles/unison-sync/unison-sync.py >${HOME}/.unison_sync/unison_sync.log 2>&1 & +# fi +# fi +# fi # Load mingit aliases. source ~/dotfiles/git/mingit/.bashrc @@ -102,7 +102,6 @@ if [ -e "/usr/bin/aws_completer" ]; then complete -C "/usr/bin/aws_completer" aws fi - #OktaAWSCLI if [ -f "/home/jim/.okta/bash_functions" ]; then . "/home/jim/.okta/bash_functions" From c64ac19ca6b7c41bb6d66496f80d28df38207ee6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:52:24 +0000 Subject: [PATCH 167/973] Remove Anaconda export. --- bash_profile | 3 --- 1 file changed, 3 deletions(-) diff --git a/bash_profile b/bash_profile index 50ef7945..b162b92f 100644 --- a/bash_profile +++ b/bash_profile @@ -89,9 +89,6 @@ fi test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" -# added by Anaconda3 4.4.0 installer -export PATH="/Users/jim.lawton/anaconda/bin:$PATH" - # Added by terraform -install-autocomplete, modified by me. if [ -e "${HOME}/terraform/terraform" ]; then complete -C "${HOME}/terraform/terraform" terraform From 61c0841deed5f39ccbb16712c4994794fb2bec0e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:54:04 +0000 Subject: [PATCH 168/973] Add bash shebang. --- bash_prompt_current | 1 + 1 file changed, 1 insertion(+) diff --git a/bash_prompt_current b/bash_prompt_current index fea06dc4..55cb818a 100644 --- a/bash_prompt_current +++ b/bash_prompt_current @@ -1,3 +1,4 @@ +#!/bin/bash # Bash shell prompting. # Old trusty prompt. From 654089afb0062ba6046283803367f977bdf0e35e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:56:17 +0000 Subject: [PATCH 169/973] Rename bash prompt scripts. --- bash_profile | 6 +--- bash_prompt | 83 +++++++++++++++------------------------------ bash_prompt_current | 36 -------------------- bash_prompt_old | 63 ++++++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 96 deletions(-) delete mode 100644 bash_prompt_current create mode 100644 bash_prompt_old diff --git a/bash_profile b/bash_profile index b162b92f..38ee67f7 100644 --- a/bash_profile +++ b/bash_profile @@ -20,12 +20,8 @@ source ~/dotfiles/bash_options #PROMPT_COMMAND='history -a' -# Load Matthew's Git bash prompt -#source ~/dotfiles/bash_prompt - # Load my Git bash prompt -source ~/dotfiles/bash_prompt_current -# source ~/.dotfiles/bash_gitprompt +source ~/dotfiles/bash_prompt # Load Brew's git bash completion # source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-completion.bash diff --git a/bash_prompt b/bash_prompt index aada5431..55cb818a 100644 --- a/bash_prompt +++ b/bash_prompt @@ -1,63 +1,36 @@ #!/bin/bash +# Bash shell prompting. -######################################################################## -# Matthew's Git Bash Prompt -######################################################################## - RED="\[\033[0;31m\]" - YELLOW="\[\033[0;33m\]" - GREEN="\[\033[0;32m\]" - BLUE="\[\033[0;34m\]" - LIGHT_RED="\[\033[1;31m\]" -LIGHT_GREEN="\[\033[1;32m\]" - WHITE="\[\033[1;37m\]" - LIGHT_GRAY="\[\033[0;37m\]" - COLOR_NONE="\[\e[0m\]" +# Old trusty prompt. +#export PS1='\[\033[1;34m\]\h:\W>\[\033[0m\] ' -function parse_git_branch { - git rev-parse --git-dir &> /dev/null - git_status="$(git status 2> /dev/null)" - branch_pattern="^# On branch ([^${IFS}]*)" - remote_pattern="# Your branch is (.*) '" - diverge_pattern="# Your branch and (.*) have diverged" - - if [[ ! ${git_status}} =~ "working directory clean" ]]; then - state="${RED}⚡" - fi - # add an else if or two here if you want to get more specific - if [[ ${git_status} =~ ${remote_pattern} ]]; then - if [[ ${BASH_REMATCH[1]} == "ahead of" ]]; then - remote="${YELLOW}↑" +# New shiny Git prompt. +source ~/dotfiles/git/git-prompt.sh +export GIT_PS1_SHOWDIRTYSTATE="true" +export GIT_PS1_SHOWSTASHSTATE="true" +export GIT_PS1_SHOWUNTRACKEDFILES="true" +export GIT_PS1_SHOWUPSTREAM="auto" +export GIT_PS1_SHOWCOLORHINTS="true" + +if isMac; then + if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} title; log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" else - remote="${YELLOW}↓" + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" fi - fi - if [[ ${git_status} =~ ${diverge_pattern} ]]; then - remote="${YELLOW}↕" - fi - if [[ ${git_status} =~ ${branch_pattern} ]]; then - branch=${BASH_REMATCH[1]} - echo " (${branch})${remote}${state}" - fi -} +else + export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" +fi -function git_dirty_flag { - git status 2> /dev/null | grep -c : | awk '{if ($1 > 0) print "⚡"}' -} +export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n' -function prompt_func() { - previous_return_value=$?; - #The lowercase w is the full current working directory - #prompt="${TITLEBAR}${BLUE}[${RED}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" - - #Capital W is just the trailing part of the current working directory - prompt="${TITLEBAR}${BLUE}[${RED}\W${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" - - if test $previous_return_value -eq 0 - then - PS1="${prompt}> " - else - PS1="${prompt}${RED}>${COLOR_NONE} " - fi -} +#export PROMPT_COMMAND=' +#if [ -d .svn ]; then +# SVNURL=$(svn info | awk "/^URL:/ {print \$2}") +# SVNPTH=$(svn info | awk "/^URL:/ {print \$2}" | cut -d/ -f4-) +# SVNREPOS=$(svn info | awk "/^Repository Root:/ {print \$3}") +# echo -ne "\033]0;/$SVNPTH"; echo -ne "\007" +#else +# echo -ne "\033]0;${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007" +#fi' -PROMPT_COMMAND=prompt_func diff --git a/bash_prompt_current b/bash_prompt_current deleted file mode 100644 index 55cb818a..00000000 --- a/bash_prompt_current +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# Bash shell prompting. - -# Old trusty prompt. -#export PS1='\[\033[1;34m\]\h:\W>\[\033[0m\] ' - -# New shiny Git prompt. -source ~/dotfiles/git/git-prompt.sh -export GIT_PS1_SHOWDIRTYSTATE="true" -export GIT_PS1_SHOWSTASHSTATE="true" -export GIT_PS1_SHOWUNTRACKEDFILES="true" -export GIT_PS1_SHOWUPSTREAM="auto" -export GIT_PS1_SHOWCOLORHINTS="true" - -if isMac; then - if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then - export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} title; log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" - else - export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" - fi -else - export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\"" -fi - -export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n' - -#export PROMPT_COMMAND=' -#if [ -d .svn ]; then -# SVNURL=$(svn info | awk "/^URL:/ {print \$2}") -# SVNPTH=$(svn info | awk "/^URL:/ {print \$2}" | cut -d/ -f4-) -# SVNREPOS=$(svn info | awk "/^Repository Root:/ {print \$3}") -# echo -ne "\033]0;/$SVNPTH"; echo -ne "\007" -#else -# echo -ne "\033]0;${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007" -#fi' - diff --git a/bash_prompt_old b/bash_prompt_old new file mode 100644 index 00000000..aada5431 --- /dev/null +++ b/bash_prompt_old @@ -0,0 +1,63 @@ +#!/bin/bash + +######################################################################## +# Matthew's Git Bash Prompt +######################################################################## + RED="\[\033[0;31m\]" + YELLOW="\[\033[0;33m\]" + GREEN="\[\033[0;32m\]" + BLUE="\[\033[0;34m\]" + LIGHT_RED="\[\033[1;31m\]" +LIGHT_GREEN="\[\033[1;32m\]" + WHITE="\[\033[1;37m\]" + LIGHT_GRAY="\[\033[0;37m\]" + COLOR_NONE="\[\e[0m\]" + +function parse_git_branch { + git rev-parse --git-dir &> /dev/null + git_status="$(git status 2> /dev/null)" + branch_pattern="^# On branch ([^${IFS}]*)" + remote_pattern="# Your branch is (.*) '" + diverge_pattern="# Your branch and (.*) have diverged" + + if [[ ! ${git_status}} =~ "working directory clean" ]]; then + state="${RED}⚡" + fi + # add an else if or two here if you want to get more specific + if [[ ${git_status} =~ ${remote_pattern} ]]; then + if [[ ${BASH_REMATCH[1]} == "ahead of" ]]; then + remote="${YELLOW}↑" + else + remote="${YELLOW}↓" + fi + fi + if [[ ${git_status} =~ ${diverge_pattern} ]]; then + remote="${YELLOW}↕" + fi + if [[ ${git_status} =~ ${branch_pattern} ]]; then + branch=${BASH_REMATCH[1]} + echo " (${branch})${remote}${state}" + fi +} + +function git_dirty_flag { + git status 2> /dev/null | grep -c : | awk '{if ($1 > 0) print "⚡"}' +} + +function prompt_func() { + previous_return_value=$?; + #The lowercase w is the full current working directory + #prompt="${TITLEBAR}${BLUE}[${RED}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" + + #Capital W is just the trailing part of the current working directory + prompt="${TITLEBAR}${BLUE}[${RED}\W${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}" + + if test $previous_return_value -eq 0 + then + PS1="${prompt}> " + else + PS1="${prompt}${RED}>${COLOR_NONE} " + fi +} + +PROMPT_COMMAND=prompt_func From 4ce2bb45a9e893e950c39cd42f5f45db93f4b957 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Nov 2018 10:59:07 +0000 Subject: [PATCH 170/973] Remove old SVN prompt code. --- bash_prompt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/bash_prompt b/bash_prompt index 55cb818a..294856e7 100644 --- a/bash_prompt +++ b/bash_prompt @@ -23,14 +23,3 @@ else fi export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n' - -#export PROMPT_COMMAND=' -#if [ -d .svn ]; then -# SVNURL=$(svn info | awk "/^URL:/ {print \$2}") -# SVNPTH=$(svn info | awk "/^URL:/ {print \$2}" | cut -d/ -f4-) -# SVNREPOS=$(svn info | awk "/^Repository Root:/ {print \$3}") -# echo -ne "\033]0;/$SVNPTH"; echo -ne "\007" -#else -# echo -ne "\033]0;${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007" -#fi' - From 23a1964f8345c2025e7fd39d0801fe8d737e1e32 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 20 Nov 2018 10:38:07 +0000 Subject: [PATCH 171/973] Filter out hgrep/phgrep from those aliases. --- aliases | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aliases b/aliases index ea669757..d974efb9 100644 --- a/aliases +++ b/aliases @@ -169,8 +169,8 @@ if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 20 fi # History search. -alias hgrep='history|grep --color' -alias phgrep='cat ~/.persistent_history|grep --color' +alias hgrep='history | grep --color' +alias phgrep='cat ~/.persistent_history | grep -v phgrep | grep --color' # Kill ssh or sshpass sessions (e.g. if VPN hangs). alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9" From d3107ed6e2b3552921160b03e2f6d8e99ec1019a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Dec 2018 14:33:43 +0000 Subject: [PATCH 172/973] Update Brewfile. --- Brewfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 26797365..be2de97b 100644 --- a/Brewfile +++ b/Brewfile @@ -1,5 +1,4 @@ tap "d12frosted/emacs-plus" -tap "dinkypumpkin/get_iplayer" tap "github/bootstrap" tap "homebrew/bundle" tap "homebrew/cask" @@ -36,7 +35,6 @@ brew "xvid" brew "flake8" brew "fzf" brew "gdb" -brew "get_iplayer" brew "gist" brew "git" brew "libksba" @@ -47,6 +45,7 @@ brew "httpie" brew "hub" brew "id3lib" brew "id3v2" +brew "iproute2mac" brew "ipython" brew "jq" brew "jupyter" @@ -68,6 +67,7 @@ brew "percol" brew "pipenv" brew "progress" brew "pth" +brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" @@ -75,6 +75,7 @@ brew "qt" brew "repo" brew "rtmpdump" brew "rust" +brew "shellcheck" brew "sloccount" brew "ssh-copy-id" brew "terraform" @@ -87,6 +88,7 @@ brew "vault-cli" brew "vim" brew "wget" brew "youtube-dl" +brew "zsh" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "cakebrew" @@ -96,6 +98,7 @@ cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" cask "virtualbox" +cask "vlc" mas "24 Hour Wallpaper", id: 1226087575 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 From c7b50bccf7fe409e33f4e5720d477f1707fe2626 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 10:31:28 -0800 Subject: [PATCH 173/973] Pruning and adding unused and new brews and casks --- Brewfile | 68 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/Brewfile b/Brewfile index f3640823..17fdd94b 100644 --- a/Brewfile +++ b/Brewfile @@ -3,13 +3,39 @@ tap 'github/bootstrap' tap 'homebrew/bundle' tap 'homebrew/dev-tools' tap 'homebrew/services' -tap 'homebrew/versions' + +cask 'adobe-creative-cloud' +cask 'alfred' +cask 'appcleaner' +cask 'araxis-merge' +cask 'atom' +cask 'box-sync' +cask 'carbon-copy-cloner' +cask 'duet' +cask 'dropbox' +cask 'encryptme' +cask 'github' +cask 'google-chrome' +cask 'iterm2' +cask 'java' +cask 'keepingyouawake' +cask 'mailplane' +cask 'microsoft-office' +cask 'microsoft-teams' +cask 'noun-project' +cask 'skype' +cask 'sublime-text' +cask 'textmate' +cask 'visual-studio-code' +cask 'vlc' +cask 'vmware-fusion' +cask 'whatsapp' +cask 'zoomus' cask 'java' + brew 'ack' brew 'autoconf' -brew 'awscli' brew 'xz' -#brew 'checkbashisms' brew 'cmake' brew 'libpng' brew 'freetype' @@ -18,7 +44,7 @@ brew 'pkg-config' brew 'libffi' brew 'glib' brew 'grc' -brew 'heroku-toolbelt' +# brew 'heroku-toolbelt' brew 'hub' brew 'icu4c' brew 'libtool' @@ -44,25 +70,19 @@ brew 'node' brew 'ruby-build' brew 'rbenv' brew 'rbenv-default-gems' -brew 'rbenv-readline' -#brew 'redis' +# brew 'rbenv-read line' brew 'ssh-copy-id' brew 'wget' -#brew 'homebrew/versions/elasticsearch17' -#brew 'homebrew/versions/go13' -#brew 'homebrew/versions/mysql56' -cask 'appcleaner' -cask 'doxie' -#cask 'dropbox' -#cask 'flux' -cask 'github-desktop' -#cask 'keepingyouawake' -cask 'screenhero' -#cask 'sizeup' -#cask 'subler' -#cask 'textexpander' -#cask 'textmate' -#cask 'transmission' -#cask 'vagrant' -#cask 'viscosity' -#cask 'vmware-fusion' + +# autojump +# the_silver_searcher +# geoip +# youtube-dl +# jq +# ncdu +# wget +# hh +# dos2unix +# tree +# ack +# z From 1b22334d9ec09bbf7164b41c91a667a8bf6441f1 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 11:03:13 -0800 Subject: [PATCH 174/973] Incorporate several new brew formulae --- Brewfile | 25 ++++++--------- install_apps.sh | 84 +++++++++++++++++++++++++------------------------ 2 files changed, 53 insertions(+), 56 deletions(-) diff --git a/Brewfile b/Brewfile index 17fdd94b..65e3c1c9 100644 --- a/Brewfile +++ b/Brewfile @@ -35,16 +35,20 @@ cask 'java' brew 'ack' brew 'autoconf' +brew 'autojump' brew 'xz' brew 'cmake' +brew 'dos2unix' brew 'libpng' brew 'freetype' brew 'gettext' brew 'pkg-config' brew 'libffi' brew 'glib' +brew 'geoip' brew 'grc' -# brew 'heroku-toolbelt' +brew 'heroku-toolbelt' +brew 'hh' brew 'hub' brew 'icu4c' brew 'libtool' @@ -57,11 +61,13 @@ brew 'oniguruma' brew 'jq' brew 'launchdns' brew 'openssl' +brew 'ncdu' brew 'libevent' brew 'libgpg-error' brew 'libgcrypt' brew 'readline' brew 'sqlite' +brew 'tree' brew 'libgda' brew 'memcached' brew 'pcre' @@ -70,19 +76,8 @@ brew 'node' brew 'ruby-build' brew 'rbenv' brew 'rbenv-default-gems' -# brew 'rbenv-read line' brew 'ssh-copy-id' +brew 'the_silver_searcher' brew 'wget' - -# autojump -# the_silver_searcher -# geoip -# youtube-dl -# jq -# ncdu -# wget -# hh -# dos2unix -# tree -# ack -# z +brew 'z' +brew 'youtube-dl' diff --git a/install_apps.sh b/install_apps.sh index f4ab639a..3d1519d2 100644 --- a/install_apps.sh +++ b/install_apps.sh @@ -1,12 +1,7 @@ #!/bin/bash set -e # Failed commands will cause an immediate exit -####################################################### -# Install brew, install casks, install app store apps, -# install Apple OS updates. -# # Inspired by: https://gist.github.com/t-io/8255711 -####################################################### test_for_home_brew_installation() { @@ -18,45 +13,48 @@ test_for_home_brew_installation() fi } -# FYI: A list of casks can be found at -# /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks +## Use Brewfile in $CWD to install formulae and casks +brew tap homebrew/bundle +brew bundle -brewcasks=( - adobe-creative-cloud - alfred - appcleaner - araxis-merge - atom - box-sync - carbon-copy-cloner - duet - dropbox - encryptme - github - google-chrome - iterm2 - java - keepingyouawake - mailplane - microsoft-office - microsoft-teams - skype - sublime-text - textmate - visual-studio-code - vlc - vmware-fusion - whatsapp - zoomus - ) +## DEPRECATED: Now controlled by Brewfile +# Find all casks at /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks +# brewcasks=( +# alfred +# ) +# +# for brewcask in "${brewcasks[@]}" +# do +# brew cask install $brewcask +# done -for brewcask in "${brewcasks[@]}" -do - brew cask install $brewcask -done +test_for_xcode_installation() +{ + if hash xcode-select -v 2>/dev/null; then + echo "XCode is already installed. Continuing." + else + # Install XCode + xcode-select --install + fi +} + +## DEPRECATED: Now controlled by Brewfile +# Homebrew formulae +# brewformulae=( +# dos2unix +# ack +# z +# ) +# +# for brewformula in "${brewformulae[@]}" +# do +# brew install $brewformula +# done +## Install Oh My Zsh +sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" -# App Store automation: https://github.com/mas-cli/mas +# Install App Store automation: https://github.com/mas-cli/mas brew install mas # App Store Apps @@ -82,5 +80,9 @@ do mas install $appstoreapp done -# Maintenance + +## TODO: Find out how to automatedly install +# Box desktop + +## Maintenance softwareupdate -i -a # Install all software updates From 3ae2c5ecfb43fbb55a07a2925a8aeb9d11834764 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 11:26:27 -0800 Subject: [PATCH 175/973] Tune my selected pacakges --- Brewfile | 49 ++++++++++++++++++++++++++----------------------- install_apps.sh | 1 + 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Brewfile b/Brewfile index 65e3c1c9..aac9b7bb 100644 --- a/Brewfile +++ b/Brewfile @@ -1,5 +1,5 @@ tap 'caskroom/cask' -tap 'github/bootstrap' +tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap tap 'homebrew/bundle' tap 'homebrew/dev-tools' tap 'homebrew/services' @@ -11,13 +11,14 @@ cask 'araxis-merge' cask 'atom' cask 'box-sync' cask 'carbon-copy-cloner' -cask 'duet' cask 'dropbox' +cask 'duet' cask 'encryptme' cask 'github' cask 'google-chrome' cask 'iterm2' cask 'java' +cask 'java' cask 'keepingyouawake' cask 'mailplane' cask 'microsoft-office' @@ -31,53 +32,55 @@ cask 'vlc' cask 'vmware-fusion' cask 'whatsapp' cask 'zoomus' -cask 'java' brew 'ack' brew 'autoconf' brew 'autojump' -brew 'xz' brew 'cmake' brew 'dos2unix' -brew 'libpng' brew 'freetype' +brew 'geoip' brew 'gettext' -brew 'pkg-config' -brew 'libffi' brew 'glib' -brew 'geoip' +brew 'go' +brew 'gradle' brew 'grc' -brew 'heroku-toolbelt' brew 'hh' brew 'hub' brew 'icu4c' -brew 'libtool' -brew 'jpeg' -brew 'libtiff' brew 'imagemagick' brew 'jansson' brew 'jemalloc' -brew 'oniguruma' +brew 'jpeg' brew 'jq' brew 'launchdns' -brew 'openssl' -brew 'ncdu' brew 'libevent' -brew 'libgpg-error' +brew 'libffi' brew 'libgcrypt' -brew 'readline' -brew 'sqlite' -brew 'tree' brew 'libgda' +brew 'libgpg-error' +brew 'libpng' +brew 'libtiff' +brew 'libtool' +brew 'maven' brew 'memcached' -brew 'pcre' +brew 'ncdu' brew 'nginx' brew 'node' -brew 'ruby-build' -brew 'rbenv' +brew 'nodenv' +brew 'oniguruma' +brew 'openssl' +brew 'pcre' +brew 'pkg-config' brew 'rbenv-default-gems' +brew 'rbenv' +brew 'readline' +brew 'ruby-build' +brew 'sqlite' brew 'ssh-copy-id' brew 'the_silver_searcher' +brew 'tree' brew 'wget' -brew 'z' +brew 'xz' brew 'youtube-dl' +brew 'z' diff --git a/install_apps.sh b/install_apps.sh index 3d1519d2..54a859d3 100644 --- a/install_apps.sh +++ b/install_apps.sh @@ -14,6 +14,7 @@ test_for_home_brew_installation() } ## Use Brewfile in $CWD to install formulae and casks +## Info at https://github.com/Homebrew/homebrew-bundle brew tap homebrew/bundle brew bundle From d08df0476997b0da1a2f6e58559168cd09c6d269 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 11:33:47 -0800 Subject: [PATCH 176/973] Moving more to the Brewfile --- Brewfile | 2 +- install_apps.sh | 24 ------------------------ 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/Brewfile b/Brewfile index aac9b7bb..2c3de053 100644 --- a/Brewfile +++ b/Brewfile @@ -78,7 +78,7 @@ brew 'readline' brew 'ruby-build' brew 'sqlite' brew 'ssh-copy-id' -brew 'the_silver_searcher' +brew 'the_silver_searcher' # ag texttofind filestosearch brew 'tree' brew 'wget' brew 'xz' diff --git a/install_apps.sh b/install_apps.sh index 54a859d3..3468e181 100644 --- a/install_apps.sh +++ b/install_apps.sh @@ -18,17 +18,6 @@ test_for_home_brew_installation() brew tap homebrew/bundle brew bundle -## DEPRECATED: Now controlled by Brewfile -# Find all casks at /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks -# brewcasks=( -# alfred -# ) -# -# for brewcask in "${brewcasks[@]}" -# do -# brew cask install $brewcask -# done - test_for_xcode_installation() { if hash xcode-select -v 2>/dev/null; then @@ -39,19 +28,6 @@ test_for_xcode_installation() fi } -## DEPRECATED: Now controlled by Brewfile -# Homebrew formulae -# brewformulae=( -# dos2unix -# ack -# z -# ) -# -# for brewformula in "${brewformulae[@]}" -# do -# brew install $brewformula -# done - ## Install Oh My Zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" From afbdffa6127885985559b4db7ba93fc13082e984 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 11:40:24 -0800 Subject: [PATCH 177/973] Moved mas app store installs to Brewfile --- Brewfile | 16 ++++++++++++++++ install_apps.sh | 27 --------------------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/Brewfile b/Brewfile index 2c3de053..52d5571e 100644 --- a/Brewfile +++ b/Brewfile @@ -84,3 +84,19 @@ brew 'wget' brew 'xz' brew 'youtube-dl' brew 'z' + +# Install App Store automation: https://github.com/mas-cli/mas +mas "Evernote", id: 406056744 +mas "Things 3", id: 904280696 +mas "Monosnap", id: 540348655 +mas "1Password 6", id: 443987910 +mas "Moom", id: 419330170 +mas "Monosnap", id: 540348655 +mas "Fantastical 2", id: 975937182 +mas "MindNode 5", id: 1289197285 +mas "Gemini 2", id: 1090488118 +mas "Bear", id: 1091189122 +mas "Slack", id: 803453959 +mas "Numbers", id: 409203825 +mas "Pages", id: 409201541 +mas "Keynote", id: 409183694 diff --git a/install_apps.sh b/install_apps.sh index 3468e181..d86e68a7 100644 --- a/install_apps.sh +++ b/install_apps.sh @@ -31,33 +31,6 @@ test_for_xcode_installation() ## Install Oh My Zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" -# Install App Store automation: https://github.com/mas-cli/mas -brew install mas - -# App Store Apps -appstoreapps=( - 406056744 # Evernote - 904280696 # Things 3 - 540348655 # Monosnap - 443987910 # 1Password 6 - 419330170 # Moom - 540348655 # Monosnap - 975937182 # Fantastical 2 - 1289197285 # MindNode 5 - 1090488118 # Gemini 2 - 1091189122 # Bear - 803453959 # Slack - 409203825 # Numbers - 409201541 # Pages - 409183694 # Keynote - ) - -for appstoreapp in "${appstoreapps[@]}" -do - mas install $appstoreapp -done - - ## TODO: Find out how to automatedly install # Box desktop From cdb2d99b895c930540eea5cc610446432f03abb4 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 11:46:23 -0800 Subject: [PATCH 178/973] Moving mas instructions to Brewfile --- Brewfile | 2 +- install_apps.sh | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) mode change 100644 => 100755 install_apps.sh diff --git a/Brewfile b/Brewfile index 52d5571e..e64bdb0b 100644 --- a/Brewfile +++ b/Brewfile @@ -1,6 +1,6 @@ tap 'caskroom/cask' tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap -tap 'homebrew/bundle' +tap 'homebrew/bundle' # https://github.com/Homebrew/homebrew-bundle tap 'homebrew/dev-tools' tap 'homebrew/services' diff --git a/install_apps.sh b/install_apps.sh old mode 100644 new mode 100755 index d86e68a7..996aec4d --- a/install_apps.sh +++ b/install_apps.sh @@ -5,12 +5,14 @@ set -e # Failed commands will cause an immediate exit test_for_home_brew_installation() { - if hash brew 2>/dev/null; then - echo "Homebrew 'brew' is already installed. Continuing." - else - # Install brew - /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - fi + which -s brew + if [[ $? != 0 ]] ; then + echo "Installing Homebrew." + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + else + echo "Homebrew 'brew' is already installed. Now updating." + brew update + fi } ## Use Brewfile in $CWD to install formulae and casks From 5dd23774b6aa40c024933a21f757db080b7e7579 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 9 Dec 2018 22:28:20 -0800 Subject: [PATCH 179/973] Document cask sources and remove deprecated one --- Brewfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index e64bdb0b..47b224aa 100644 --- a/Brewfile +++ b/Brewfile @@ -1,8 +1,7 @@ -tap 'caskroom/cask' +tap 'caskroom/cask' # https://github.com/Homebrew/homebrew-cask tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap tap 'homebrew/bundle' # https://github.com/Homebrew/homebrew-bundle -tap 'homebrew/dev-tools' -tap 'homebrew/services' +tap 'homebrew/services' # https://github.com/Homebrew/homebrew-services cask 'adobe-creative-cloud' cask 'alfred' From b16b0edca71b686bd344235ad3891aa8178565a2 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 20 Dec 2018 22:20:19 -0800 Subject: [PATCH 180/973] Document the Silver Surfer --- Brewfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 47b224aa..01e3e951 100644 --- a/Brewfile +++ b/Brewfile @@ -77,7 +77,9 @@ brew 'readline' brew 'ruby-build' brew 'sqlite' brew 'ssh-copy-id' -brew 'the_silver_searcher' # ag texttofind filestosearch +brew 'the_silver_searcher' # A code-searching tool similar to ack, but faster. + # http://geoff.greer.fm/ag/ + # Example: ag texttofind filestosearch brew 'tree' brew 'wget' brew 'xz' From 8ed52ebbeccfa48d489d865bba77ec76c480718f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 23 Dec 2018 19:37:59 +0000 Subject: [PATCH 181/973] Update Brew inventory. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index be2de97b..6906d382 100644 --- a/Brewfile +++ b/Brewfile @@ -100,6 +100,7 @@ cask "lumen" cask "virtualbox" cask "vlc" mas "24 Hour Wallpaper", id: 1226087575 +mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 From 322e228000c4e2d2f7456f91ef1319d9b893f173 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 29 Dec 2018 12:13:47 +0000 Subject: [PATCH 182/973] Fix typo. --- aliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aliases b/aliases index d974efb9..d096fab7 100644 --- a/aliases +++ b/aliases @@ -69,7 +69,7 @@ if isLinux; then fi if isMac; then - alias redlink='greadlink' + alias readlink='greadlink' fi alias ls-l='ls -l' From 3883d45b6b393581b40e6560bddb2460bdc63a53 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 29 Dec 2018 12:15:50 +0000 Subject: [PATCH 183/973] Add a get_iplayer alias to force it to use system Perl ahead of Homebrew. --- aliases | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aliases b/aliases index d096fab7..bb8865be 100644 --- a/aliases +++ b/aliases @@ -72,6 +72,10 @@ if isMac; then alias readlink='greadlink' fi +if isMac; then + alias get_iplayer='PATH=/usr/bin:/usr/local/bin get_iplayer' +fi + alias ls-l='ls -l' alias ls-lt='ls -lt' alias latest='ls -alt | head -20' From a04b93d003398700b2cce6f1f3685d94e02edd78 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 2 Jan 2019 13:25:52 +0000 Subject: [PATCH 184/973] Add option to override default remote. --- git/forest2manifest.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 27429fc1..5d3cc24b 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -6,6 +6,12 @@ else top=$1 fi +if [ -z "$2" ]; then + remote="github.com" +else + remote=$2 +fi + gitdirs=`cd $top; find . -type d -name .git` repos="" for g in $gitdirs; do @@ -39,9 +45,7 @@ EOF done cat >>default.xml < - + EOF for repo in $repos; do From 626865e5b474e1129ab954f2032a73d077a2aa4c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 2 Jan 2019 13:30:26 +0000 Subject: [PATCH 185/973] Fix default remote handling. --- git/forest2manifest.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 5d3cc24b..c0e75add 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -7,9 +7,9 @@ else fi if [ -z "$2" ]; then - remote="github.com" + defremote="github.com" else - remote=$2 + defremote=$2 fi gitdirs=`cd $top; find . -type d -name .git` @@ -32,6 +32,10 @@ done remotes=`echo $remotes | sort` +if [ ${#remotes[@]} -eq 1 ]; then + defremote="${remotes[0]}" +fi + cat >default.xml < From 0f6464bf225443700c85160d7d76d169ce9ed3b3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 21 Jan 2019 15:43:39 +0000 Subject: [PATCH 186/973] Update Python startup file. --- pythonrc | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/pythonrc b/pythonrc index bc22d151..b3fd2b2e 100644 --- a/pythonrc +++ b/pythonrc @@ -12,36 +12,33 @@ from __future__ import print_function -import atexit -import os -import sys -import datetime -import json - try: import readline -except ImportError: - print("Module readline not available.") + import atexit + import os + import sys + import platform + import gnureadline as readline +except ImportError as exception: + print('Python shell enhancement module problem: {0}'.format(exception)) else: - import rlcompleter - if 'libedit' in readline.__doc__: + # Enable Tab Completion + # OSX's bind should only be applied with legacy readline. + if sys.platform == 'darwin' and 'libedit' in readline.__doc__: readline.parse_and_bind("bind ^I rl_complete") else: readline.parse_and_bind("tab: complete") -# change autocomplete to tab -readline.parse_and_bind("tab: complete") - -historyPath = os.path.expanduser("~/.pyhistory") - -def save_history(historyPath=historyPath): - import readline - readline.write_history_file(historyPath) - -if os.path.exists(historyPath): - readline.read_history_file(historyPath) - -atexit.register(save_history) + # Enable History File + history_file = os.environ.get("PYTHON_HISTORY_FILE", + os.path.join(os.environ['HOME'], + '.pyhistory')) + if os.path.isfile(history_file): + readline.read_history_file(history_file) + else: + open(history_file, 'a').close() + atexit.register(readline.write_history_file, history_file) + print('Completed ~/pythonstartup.py') -# anything not deleted (sys and os) will remain in the interpreter session -del atexit, readline, rlcompleter, save_history, historyPath + # anything not deleted (sys and os) will remain in the interpreter session + del atexit, readline, history_file From 94ab7fbec76032e824ebec99df1e8d624cebe6a3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 21 Jan 2019 15:46:46 +0000 Subject: [PATCH 187/973] Add Applescript for Finder Open in iTerm2. --- mac/Open in iTerm2.scpt | Bin 0 -> 2878 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mac/Open in iTerm2.scpt diff --git a/mac/Open in iTerm2.scpt b/mac/Open in iTerm2.scpt new file mode 100644 index 0000000000000000000000000000000000000000..a3458a7eeecc73d393bb7215c9c2cde64caf65b8 GIT binary patch literal 2878 zcmcImX?Ijb5WVjuY;UF~$*=^COQJ$>j2YriL?8r^2r)>);qx#IGMY@rnUUojKll^; z1%7rz#eH9J!4(x{5tSVT+1wXguD9MKCLZHC=+QS*_x0u-h-SsWa zEz^x+04l3Uc<@o-sR5_9cdPpCsq|5)kx>}!1Qoq%18o??-}tM;82DWwTN}n=oD+l- zD=`Owk3h^3M4cdBC<1c{6pAAk!Tv3rj%nAI0Y1P~+R6BuxMfg3IKcOZN zR0ip_*_=ZSygrSLmMK40@JDzK)$sa5Yrr2O`~k7)7}d94-1b_Y&H0E)PaNZ&Ahalg z2*2ld{MO_5X3Td6-uxYWSEa$6bI6ogj2^Eoym` zNBFtNqbBNz!RO}U3q==UiW7vps1~y@6^%|1?xH$ehiN{hiS1$}oFEifhdLhSAs+O2 z*km0tIA{VBqD#=^1Qi`>*P)&Va4Gi(dQEQbC>8p0YuDy;xA*pvcgmqaLXX3xWiKcy zXpW&7-bN&AkW|EOKo)&yL{UCof&%)nNE_}p(Qn?%#m;sl{_4QSv#?&Thj`^>Jr z278RNMRXZ1cY@Hk22AB{e#TD&?v`(y& zMl|vh?&8NDKQTSK3_do_D@9k~Y9|O?+lXs%4Q4n&=-MP&(dr9)4a{_cP+$^C?&J<` z_qfw!?J(GG0%wY@!z?EVtxw__ZsSLo9dO%#Ym2$kxN3oo-V59Twm^QM1pSzd|UnPg|#XxS4-VOzU8p6tZpV|@=dY=%Hg#{A zy2kQKYgIWqs?g!xG1mO`-##5ZOFQ9vuyi)bo@xfXXlE*&&6WC#tLqoe8$sdRc`{Vb zxNJ|R(AS*G=SN^VgD#UXoUQyF)TeJB-iv5kKHr;7r%KuWTv7I&m24f})B1-MNvL#B zz&Pbz4>HQbK4obNdHt%CrBQV1E3MHSO3Kk9Rx4i@YV*V~X}HAX9}-pIy(G*^A5%m( z@O7tb57S^aX7e?^%2zzTW|4c<;1vts>lVIok25yZe6#UuRo;_n*Qy=bwZx zSdh)F%oP50{LVCd?fr#Jcc!o=o6cDHE>5;~uP>G|eXWbLD+;N?`qtqLtwTnI;hdy1 zenA+rm0?KFG@w(&z+WxYqeY9+=>%b@wH>*MFY_gjn~dpY zgO`j`*@GMTqQi|toG(j*E`o s5=GFJ5JtKZ$D2+x#o-bsPi>yk8%1^3l4a$8RjQaSDAl8<{9 literal 0 HcmV?d00001 From 806a89cf3f5f015cbe4f553952c8595fd1e516e5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Feb 2019 21:31:06 +0000 Subject: [PATCH 188/973] Prune out .repo subtreees. --- git/forest2manifest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index c0e75add..46fdc44f 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -12,7 +12,7 @@ else defremote=$2 fi -gitdirs=`cd $top; find . -type d -name .git` +gitdirs=`cd $top; find . -type d -name .repo -prune -o -type d -name .git` repos="" for g in $gitdirs; do repos="$repos `dirname $g`" From 8e10b384af6ad3ba809790dd8f3c47c3b66edc17 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Feb 2019 21:31:22 +0000 Subject: [PATCH 189/973] Fix sort order. --- git/forest2manifest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 46fdc44f..1cae2b44 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -17,7 +17,7 @@ repos="" for g in $gitdirs; do repos="$repos `dirname $g`" done -repos=`echo $repos | sort` +repos=`echo $repos | tr ' ' '\n' | sort | tr '\n' ' '` remotes="" for repo in $repos; do From d69f802e9f472300e0e1f53a19299c581377fe03 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Feb 2019 21:31:41 +0000 Subject: [PATCH 190/973] Fix default remotes. --- git/forest2manifest.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 1cae2b44..4b2a45b0 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -34,6 +34,7 @@ remotes=`echo $remotes | sort` if [ ${#remotes[@]} -eq 1 ]; then defremote="${remotes[0]}" + defremote=`echo $defremote | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'` fi cat >default.xml < Date: Wed, 13 Feb 2019 14:09:57 +0000 Subject: [PATCH 191/973] Really oit .repo directories. Add descriptions of parameters. Add param to set output file path. --- git/forest2manifest.sh | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh index 4b2a45b0..4f9c2bba 100755 --- a/git/forest2manifest.sh +++ b/git/forest2manifest.sh @@ -1,18 +1,32 @@ #!/bin/bash +# Script to walk a tree of Git clones and build an XML manifest +# for use with the git-repo tool. +# +# Parameters (all optional): +# 1: path to manifest file to write (default: ./default.xml). +# 2: path to the root of the Git clone tree (default: current directory). +# 3: default Git remote for the repo manifest (default: first found in the tree of Git clones). + if [ -z "$1" ]; then - top=`pwd` + mfile="default.xml" else - top=$1 + mfile=$1 fi if [ -z "$2" ]; then + top=`pwd` +else + top=$2 +fi + +if [ -z "$3" ]; then defremote="github.com" else - defremote=$2 + defremote=$3 fi -gitdirs=`cd $top; find . -type d -name .repo -prune -o -type d -name .git` +gitdirs=`cd $top; find . -not -path \*/.repo/\* -type d -name .git` repos="" for g in $gitdirs; do repos="$repos `dirname $g`" @@ -37,19 +51,19 @@ if [ ${#remotes[@]} -eq 1 ]; then defremote=`echo $defremote | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'` fi -cat >default.xml <$mfile < EOF for remote in $remotes; do rname=`echo $remote | sed 's;.*://;;'` - cat >>default.xml <>$mfile < EOF done -cat >>default.xml <>$mfile < EOF @@ -61,12 +75,12 @@ for repo in $repos; do rname=`echo $remote | sed 's;.*://;;'` name=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'` clonepath=`echo $repo | sed "s;$(pwd)/;;" | sed "s;./;;"` - cat >>default.xml <>$mfile < EOF done -cat >>default.xml <>$mfile < EOF From 3ac658a33a756872e994725478bf1633508f9100 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Feb 2019 10:12:37 +0000 Subject: [PATCH 192/973] Add Terraform bash completion. --- bashrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bashrc b/bashrc index 19aa71b3..f81b1f90 100644 --- a/bashrc +++ b/bashrc @@ -8,3 +8,5 @@ source ~/.bash_profile [ -f ~/.fzf.bash ] && source ~/.fzf.bash + +[ -f ~/terraform/current/terraform ] && complete -C ~/terraform/current/terraform terraform From ddeb0602a12f90cf5abdd863b9aa17bc1b457fa4 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 17 Feb 2019 11:27:32 -0800 Subject: [PATCH 193/973] Add gotop process manager and ghi CLI for Issues --- Brewfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Brewfile b/Brewfile index 01e3e951..3888330c 100644 --- a/Brewfile +++ b/Brewfile @@ -2,6 +2,7 @@ tap 'caskroom/cask' # https://github.com/Homebrew/homebrew-cask tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap tap 'homebrew/bundle' # https://github.com/Homebrew/homebrew-bundle tap 'homebrew/services' # https://github.com/Homebrew/homebrew-services +tap 'cjbassi/gotop' # https://github.com/cjbassi/gotop cask 'adobe-creative-cloud' cask 'alfred' @@ -42,6 +43,8 @@ brew 'geoip' brew 'gettext' brew 'glib' brew 'go' +brew 'gotop' +brew 'ghi' brew 'gradle' brew 'grc' brew 'hh' From 99a91f3f803b259624987d775ebf4c72b7c31b58 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 7 Mar 2019 10:21:15 -0800 Subject: [PATCH 194/973] Add gawk to support `matrix` shell scripts --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 3888330c..9d11d5cc 100644 --- a/Brewfile +++ b/Brewfile @@ -14,6 +14,7 @@ cask 'carbon-copy-cloner' cask 'dropbox' cask 'duet' cask 'encryptme' +cask 'gawk' cask 'github' cask 'google-chrome' cask 'iterm2' From 7801a020c7ea28a4cf5d76484c5e5784365267f0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Mar 2019 10:08:37 +0000 Subject: [PATCH 195/973] Update Brewfile. MAS not working correctly atmo, so ignoring app store apps for now. --- Brewfile | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Brewfile b/Brewfile index 6906d382..167a11f2 100644 --- a/Brewfile +++ b/Brewfile @@ -7,6 +7,7 @@ tap "homebrew/dev-tools" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" +cask "java" brew "a2ps" brew "adr-tools" brew "readline" @@ -31,16 +32,21 @@ brew "go" brew "diffutils" brew "dos2unix" brew "envconsul" +brew "leptonica" +brew "rtmpdump" +brew "tesseract" brew "xvid" brew "flake8" brew "fzf" brew "gdb" brew "gist" brew "git" +brew "git-quick-stats" brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" +brew "graphviz" brew "httpie" brew "hub" brew "id3lib" @@ -49,11 +55,11 @@ brew "iproute2mac" brew "ipython" brew "jq" brew "jupyter" -brew "leptonica" brew "libressl" brew "libusb-compat" brew "mas" -brew "md5sha1sum" +brew "maven" +brew "md5sha1sum", link: false brew "mosh" brew "mplayer" brew "mtr" @@ -65,6 +71,7 @@ brew "patchutils" brew "peco" brew "percol" brew "pipenv" +brew "plantuml" brew "progress" brew "pth" brew "pycodestyle" @@ -73,14 +80,11 @@ brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "qt" brew "repo" -brew "rtmpdump" brew "rust" brew "shellcheck" brew "sloccount" brew "ssh-copy-id" -brew "terraform" brew "terraform-docs" -brew "tesseract" brew "tig" brew "todo-txt" brew "vault" @@ -91,12 +95,15 @@ brew "youtube-dl" brew "zsh" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" +cask "aws-vault" cask "cakebrew" cask "docker-toolbox" cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" +cask "meld" +cask "staruml" cask "virtualbox" cask "vlc" mas "24 Hour Wallpaper", id: 1226087575 From a124ef2a3815cb86c70febaf3a003162acbd99e9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 2 Jun 2019 16:44:30 +0100 Subject: [PATCH 196/973] Try to fix screen restore. --- vimrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vimrc b/vimrc index b43cb4c7..222206bf 100644 --- a/vimrc +++ b/vimrc @@ -36,6 +36,9 @@ set nocompatible set visualbell set t_vb= +" disable screen restoring +set t_ti= t_te= + " automatically show matching brackets. works like it does in bbedit. set showmatch From 6df8f05dc8eae0fe45d7d96a7978121528d8be49 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 2 Jun 2019 16:45:59 +0100 Subject: [PATCH 197/973] Update brewfile. --- Brewfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 167a11f2..9994fb69 100644 --- a/Brewfile +++ b/Brewfile @@ -7,7 +7,6 @@ tap "homebrew/dev-tools" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" -cask "java" brew "a2ps" brew "adr-tools" brew "readline" @@ -65,6 +64,7 @@ brew "mplayer" brew "mtr" brew "node" brew "ocrad" +brew "openapi-generator" brew "packer" brew "parallel" brew "patchutils" @@ -98,6 +98,7 @@ brew "sachaos/todoist/todoist" cask "aws-vault" cask "cakebrew" cask "docker-toolbox" +cask "java" cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" @@ -106,14 +107,14 @@ cask "meld" cask "staruml" cask "virtualbox" cask "vlc" +cask "xquartz" mas "24 Hour Wallpaper", id: 1226087575 mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 -mas "CopyClip", id: 595191960 -mas "CopyClip 2", id: 1020812363 -mas "Delicious Library 3", id: 635124250 +mas "CopyClip", id: 1020812363 +mas "Delicious Library", id: 635124250 mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 mas "Funter", id: 1109422934 @@ -124,17 +125,24 @@ mas "Keynote", id: 409183694 mas "Kindle", id: 405399194 mas "LastPass", id: 926036361 mas "Magnet", id: 441258766 +mas "Microsoft Excel", id: 462058435 +mas "Microsoft OneNote", id: 784801555 +mas "Microsoft Outlook", id: 985367838 +mas "Microsoft PowerPoint", id: 462062816 +mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 mas "Numbers", id: 409203825 mas "OneDrive", id: 823766827 mas "Pages", id: 409201541 mas "Slack", id: 803453959 mas "Speedtest", id: 1153157709 +mas "SubEthaEdit", id: 728530824 mas "TermHere", id: 1114363220 mas "The Archive Browser", id: 510232205 mas "The Unarchiver", id: 425424353 mas "Twitter", id: 409789998 mas "Typist", id: 415166115 mas "Unsplash Wallpapers", id: 1284863847 +mas "WhatsApp", id: 1147396723 mas "Wire", id: 931134707 mas "Xcode", id: 497799835 From ae8c2311c0e638f2a6a6b611e6d2fdf7f4647884 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 2 Aug 2019 14:38:33 +0100 Subject: [PATCH 198/973] Update Okta stuff. --- bash_profile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bash_profile b/bash_profile index 38ee67f7..aefdbca1 100644 --- a/bash_profile +++ b/bash_profile @@ -95,11 +95,6 @@ if [ -e "/usr/bin/aws_completer" ]; then complete -C "/usr/bin/aws_completer" aws fi -#OktaAWSCLI -if [ -f "/home/jim/.okta/bash_functions" ]; then - . "/home/jim/.okta/bash_functions" -fi - if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi @@ -117,3 +112,10 @@ else echo "WARNING: Can't find virtualenvwrapper.sh" fi +#OktaAWSCLI +if [[ -f "$HOME/.okta/bash_functions" ]]; then + . "$HOME/.okta/bash_functions" +fi +if [[ -d "$HOME/.okta/bin" && ":$PATH:" != *":$HOME/.okta/bin:"* ]]; then + PATH="$HOME/.okta/bin:$PATH" +fi From 78b8f701fb10f573f0d1d1fc2cced68b8c3fc3b0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 20 Aug 2019 10:53:13 +0100 Subject: [PATCH 199/973] Add TabNine. --- .gitmodules | 3 +++ vim/bundle/tabnine-vim | 1 + vimrc | 2 ++ 3 files changed, 6 insertions(+) create mode 160000 vim/bundle/tabnine-vim diff --git a/.gitmodules b/.gitmodules index 80eef056..e8f375d2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,6 +40,9 @@ [submodule "vim/bundle/command-t"] path = vim/bundle/command-t url = git://github.com/wincent/Command-T.git +[submodule "vim/bundle/tabnine-vim"] + path = vim/bundle/tabnine-vim + url = git://github.com/zxqfl/tabnine-vim.git [submodule "icdiff"] path = icdiff url = https://github.com/jeffkaufman/icdiff.git diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim new file mode 160000 index 00000000..c20d73f3 --- /dev/null +++ b/vim/bundle/tabnine-vim @@ -0,0 +1 @@ +Subproject commit c20d73f3e007d4b8804c344f114eb03b5c9466a3 diff --git a/vimrc b/vimrc index 222206bf..551e5fa4 100644 --- a/vimrc +++ b/vimrc @@ -73,6 +73,8 @@ Bundle 'FuzzyFinder' Bundle 'git://git.wincent.com/command-t.git' " ... +Plugin 'zxqfl/tabnine-vim' + filetype plugin indent on " required! "let g:syntastic_enable_signs=1 From 797d2e0bdc95d773cf45631b687050a64aa1b33b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 11 Nov 2019 13:43:35 +0000 Subject: [PATCH 200/973] Update aliases. --- git-aliases | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/git-aliases b/git-aliases index f260b09f..6cc91e2d 100644 --- a/git-aliases +++ b/git-aliases @@ -39,6 +39,7 @@ latest-branches = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)' lf = log --pretty=fuller lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgme = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --author=me lgorigin = log --oneline --graph --decorate origin/master...master --left-right lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' @@ -53,7 +54,7 @@ logfive = log --graph --pretty=oneline --abbrev-commit --decorate --all -5 logit = log --stat -M logm = log --stat -M - logme = log --author=Jim --stat -C + logme = log --author=me --stat -C logn = log --oneline --name-only logr = log -M logr2 = log --stat -M -2 From 4e04a8eaaed06d6546d67a21db4cb731c653ddbf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 11 Nov 2019 13:48:16 +0000 Subject: [PATCH 201/973] Update Brewfile. --- Brewfile | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 9994fb69..9a69a1af 100644 --- a/Brewfile +++ b/Brewfile @@ -1,15 +1,19 @@ +tap "chef/chef" +tap "coretech/terrafile" tap "d12frosted/emacs-plus" +tap "domt4/autoupdate" tap "github/bootstrap" tap "homebrew/bundle" tap "homebrew/cask" tap "homebrew/core" -tap "homebrew/dev-tools" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "sachaos/todoist" +cask "xquartz" brew "a2ps" brew "adr-tools" brew "readline" +brew "sqlite" brew "xz" brew "python" brew "ansible" @@ -18,29 +22,48 @@ brew "apr-util" brew "atomicparsley" brew "autojump" brew "awk" +brew "node" +brew "aws-cdk" brew "aws-okta" +brew "openssl" brew "aws-shell" brew "awscli" brew "bash" brew "bash-completion" +brew "black" +brew "freetype" +brew "gettext" +brew "cairo" brew "consul" brew "consul-template" brew "coreutils" brew "curl" brew "go" +brew "dep" brew "diffutils" brew "dos2unix" brew "envconsul" +brew "fribidi" +brew "libidn2" +brew "unbound" +brew "gnutls" +brew "harfbuzz" +brew "libtiff" brew "leptonica" brew "rtmpdump" +brew "sdl2" brew "tesseract" +brew "x265" brew "xvid" +brew "ffmpeg" brew "flake8" brew "fzf" brew "gdb" +brew "ghostscript" brew "gist" brew "git" brew "git-quick-stats" +brew "libgcrypt" brew "libksba" brew "libusb" brew "pinentry" @@ -51,18 +74,26 @@ brew "hub" brew "id3lib" brew "id3v2" brew "iproute2mac" +brew "zeromq" brew "ipython" +brew "jfrog-cli-go" +brew "oniguruma" brew "jq" -brew "jupyter" +brew "jupyterlab" +brew "lastpass-cli" +brew "libcaca" brew "libressl" +brew "libssh2" brew "libusb-compat" +brew "make" brew "mas" brew "maven" brew "md5sha1sum", link: false +brew "protobuf" brew "mosh" brew "mplayer" brew "mtr" -brew "node" +brew "mypy" brew "ocrad" brew "openapi-generator" brew "packer" @@ -72,18 +103,23 @@ brew "peco" brew "percol" brew "pipenv" brew "plantuml" +brew "pre-commit" brew "progress" brew "pth" brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" +brew "python@2" brew "qt" brew "repo" +brew "ruby" brew "rust" brew "shellcheck" brew "sloccount" +brew "sphinx-doc" brew "ssh-copy-id" +brew "terminal-notifier" brew "terraform-docs" brew "tig" brew "todo-txt" @@ -91,8 +127,10 @@ brew "vault" brew "vault-cli" brew "vim" brew "wget" +brew "xpdf" brew "youtube-dl" brew "zsh" +brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "aws-vault" @@ -103,11 +141,12 @@ cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" +cask "mactex" cask "meld" cask "staruml" cask "virtualbox" cask "vlc" -cask "xquartz" +cask "chef/chef/inspec" mas "24 Hour Wallpaper", id: 1226087575 mas "Agenda", id: 1287445660 mas "aText", id: 488566438 From d9a4d226e45ac8a405024f22f44a313aad770772 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 13 Nov 2019 10:37:55 +0000 Subject: [PATCH 202/973] Update hyper-hacks submodule after merge from upstream. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 515dab3f..d55852f6 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 515dab3f39da841256ead4f12532460d5dcca26b +Subproject commit d55852f612965a06b9e0ba9a17b574be7e35e796 From b705f409fd76cce1c1c9e24eee6977d6a6f325e3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 14 Nov 2019 10:39:49 +0000 Subject: [PATCH 203/973] Update hyper-hacks submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index d55852f6..67829b5d 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit d55852f612965a06b9e0ba9a17b574be7e35e796 +Subproject commit 67829b5dd0023f31d38998747544b0b64df99ee2 From d72e7a6d541939c442b140936f66b6f662cf0f06 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 14 Nov 2019 10:44:50 +0000 Subject: [PATCH 204/973] Move terraform and fzf completion to bash profile. --- bash_profile | 8 ++++++-- bashrc | 4 ---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bash_profile b/bash_profile index aefdbca1..13112d0d 100644 --- a/bash_profile +++ b/bash_profile @@ -86,8 +86,12 @@ fi test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" # Added by terraform -install-autocomplete, modified by me. -if [ -e "${HOME}/terraform/terraform" ]; then - complete -C "${HOME}/terraform/terraform" terraform +if [ -f "${HOME}/terraform/current/terraform" ]; then + complete -C "${HOME}/terraform/current/terraform" terraform +fi + +if [ -f "${HOME}/.fzf.bash" ]; then + source "${HOME}/.fzf.bash" fi # AWS CLI completion. diff --git a/bashrc b/bashrc index f81b1f90..29a9d34b 100644 --- a/bashrc +++ b/bashrc @@ -6,7 +6,3 @@ # Bash non-interactive shell will load the same functions as the interactive shell source ~/.bash_profile - -[ -f ~/.fzf.bash ] && source ~/.fzf.bash - -[ -f ~/terraform/current/terraform ] && complete -C ~/terraform/current/terraform terraform From 540fff9d583df72ab45f38752240871485b0d455 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 14 Nov 2019 14:33:33 +0000 Subject: [PATCH 205/973] Don't capture API keys. --- functions | 3 +++ 1 file changed, 3 insertions(+) diff --git a/functions b/functions index 2161bb97..6dbb6325 100644 --- a/functions +++ b/functions @@ -135,6 +135,9 @@ function log_bash_persistent_history() { if contains "$command_part" "$USER"; then return fi + if contains "$command_part" "API_KEY"; then + return + fi for username in "$_USERNAMES"; do if contains "$command_part" "$username"; then return From 62978325d0663cbc4f70169127a7ddb58b0b01af Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 14 Nov 2019 14:46:25 +0000 Subject: [PATCH 206/973] Fix persistent history to avoid capturing anything secret. --- functions | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/functions b/functions index 6dbb6325..f4a99a0d 100644 --- a/functions +++ b/functions @@ -132,14 +132,17 @@ function log_bash_persistent_history() { local date_part="${BASH_REMATCH[1]}" local command_part="${BASH_REMATCH[2]}" # Try to skip usernames/passwords. - if contains "$command_part" "$USER"; then + if [[ $command_part == *"$USER"* ]]; then return fi - if contains "$command_part" "API_KEY"; then + if [[ $command_part == *"API_KEY"* ]]; then + return + fi + if [[ $command_part == *"PASSWORD"* ]]; then return fi for username in "$_USERNAMES"; do - if contains "$command_part" "$username"; then + if [[ $command_part == *"$username"* ]]; then return fi done From 12f8ef2d855682c5131e596cbf22b91025d2c819 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 2 Jan 2020 14:06:11 +0000 Subject: [PATCH 207/973] User per-session saved history. --- bash_options | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bash_options b/bash_options index 74689834..06172a8f 100644 --- a/bash_options +++ b/bash_options @@ -27,7 +27,11 @@ export HISTCONTROL=ignoreboth # Store a lot of history entries in a file for grep-age shopt -s histappend -export HISTFILE=~/long_history +if [ -z "${ITERM_SESSION_ID}" ]; then + export HISTFILE=~/long_history +else + export HISTFILE=~/long-history-${ITERM_SESSION_ID} +fi export HISTFILESIZE=100000 # No reason not to save a bunch in history @@ -40,5 +44,3 @@ export HISTIGNORE="&:[ ]*:exit:ls:pwd:[bf]g" # Old way to save history across multiple sessions. #export PROMPT_COMMAND="history -a; history -n; $PROMPT_COMMAND" - - From 516eb17b2a8eaab06e9b5e811004f1bd7f414c26 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 2 Jan 2020 14:06:28 +0000 Subject: [PATCH 208/973] Docker command completion. --- bash_profile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bash_profile b/bash_profile index 13112d0d..28a82230 100644 --- a/bash_profile +++ b/bash_profile @@ -99,6 +99,13 @@ if [ -e "/usr/bin/aws_completer" ]; then complete -C "/usr/bin/aws_completer" aws fi +# Docker command completion. +if isMac; then + if [ -f $(brew --prefix)/etc/bash_completion ]; then + . $(brew --prefix)/etc/bash_completion + fi +fi + if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi From 6f904451752d70e8db5f553862eff90929792ae5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 2 Jan 2020 14:08:29 +0000 Subject: [PATCH 209/973] Update Brewfile. --- Brewfile | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 9a69a1af..c19ddd23 100644 --- a/Brewfile +++ b/Brewfile @@ -19,18 +19,19 @@ brew "python" brew "ansible" brew "apr" brew "apr-util" +brew "asciinema" brew "atomicparsley" brew "autojump" brew "awk" brew "node" brew "aws-cdk" brew "aws-okta" -brew "openssl" brew "aws-shell" brew "awscli" brew "bash" brew "bash-completion" brew "black" +brew "brew-cask-completion" brew "freetype" brew "gettext" brew "cairo" @@ -41,9 +42,13 @@ brew "curl" brew "go" brew "dep" brew "diffutils" +brew "docker-completion" +brew "docker-compose-completion" +brew "docker-machine-completion" brew "dos2unix" brew "envconsul" brew "fribidi" +brew "giflib" brew "libidn2" brew "unbound" brew "gnutls" @@ -68,7 +73,10 @@ brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" +brew "netpbm" +brew "gts" brew "graphviz" +brew "grunt-completion" brew "httpie" brew "hub" brew "id3lib" @@ -79,6 +87,7 @@ brew "ipython" brew "jfrog-cli-go" brew "oniguruma" brew "jq" +brew "pandoc" brew "jupyterlab" brew "lastpass-cli" brew "libcaca" @@ -97,10 +106,12 @@ brew "mypy" brew "ocrad" brew "openapi-generator" brew "packer" +brew "packer-completion" brew "parallel" brew "patchutils" brew "peco" brew "percol" +brew "pip-completion" brew "pipenv" brew "plantuml" brew "pre-commit" @@ -112,6 +123,7 @@ brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "python@2" brew "qt" +brew "rake-completion" brew "repo" brew "ruby" brew "rust" @@ -123,6 +135,7 @@ brew "terminal-notifier" brew "terraform-docs" brew "tig" brew "todo-txt" +brew "vagrant-completion" brew "vault" brew "vault-cli" brew "vim" @@ -136,6 +149,8 @@ brew "sachaos/todoist/todoist" cask "aws-vault" cask "cakebrew" cask "docker-toolbox" +cask "emacs" +cask "inspec" cask "java" cask "jedit" cask "jupyter-notebook-ql" @@ -143,11 +158,12 @@ cask "kdiff3" cask "lumen" cask "mactex" cask "meld" +cask "openconnect-gui" cask "staruml" cask "virtualbox" cask "vlc" -cask "chef/chef/inspec" mas "24 Hour Wallpaper", id: 1226087575 +mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 @@ -156,27 +172,28 @@ mas "CopyClip", id: 1020812363 mas "Delicious Library", id: 635124250 mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 +mas "EtreCheck", id: 1423715984 mas "Funter", id: 1109422934 mas "GarageBand", id: 682658836 mas "iMovie", id: 408981434 mas "iStat Mini", id: 927292435 mas "Keynote", id: 409183694 mas "Kindle", id: 405399194 -mas "LastPass", id: 926036361 mas "Magnet", id: 441258766 mas "Microsoft Excel", id: 462058435 mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 mas "Microsoft PowerPoint", id: 462062816 +mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 mas "Numbers", id: 409203825 +mas "Okta Extension App", id: 1439967473 mas "OneDrive", id: 823766827 mas "Pages", id: 409201541 mas "Slack", id: 803453959 mas "Speedtest", id: 1153157709 mas "SubEthaEdit", id: 728530824 -mas "TermHere", id: 1114363220 mas "The Archive Browser", id: 510232205 mas "The Unarchiver", id: 425424353 mas "Twitter", id: 409789998 From 087811ed9a165f3c1e15c506c00c658e5ba7a6c0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 2 Jan 2020 14:22:33 +0000 Subject: [PATCH 210/973] Update Brewfile. --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index c19ddd23..b621dcdc 100644 --- a/Brewfile +++ b/Brewfile @@ -172,7 +172,9 @@ mas "CopyClip", id: 1020812363 mas "Delicious Library", id: 635124250 mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 +mas "Elisi", id: 1406239881 mas "EtreCheck", id: 1423715984 +mas "feedly", id: 865500966 mas "Funter", id: 1109422934 mas "GarageBand", id: 682658836 mas "iMovie", id: 408981434 From 1dac55e21f3ea35fecb3969bdb7cfbc975a2f240 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 6 Jan 2020 13:20:14 +0000 Subject: [PATCH 211/973] Update Brewfile. --- Brewfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index b621dcdc..d29d30ab 100644 --- a/Brewfile +++ b/Brewfile @@ -5,6 +5,7 @@ tap "domt4/autoupdate" tap "github/bootstrap" tap "homebrew/bundle" tap "homebrew/cask" +tap "homebrew/cask-versions" tap "homebrew/core" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" @@ -46,12 +47,12 @@ brew "docker-completion" brew "docker-compose-completion" brew "docker-machine-completion" brew "dos2unix" -brew "envconsul" -brew "fribidi" -brew "giflib" brew "libidn2" brew "unbound" brew "gnutls" +brew "envconsul" +brew "fribidi" +brew "giflib" brew "harfbuzz" brew "libtiff" brew "leptonica" @@ -121,6 +122,7 @@ brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" +brew "pygments" brew "python@2" brew "qt" brew "rake-completion" @@ -146,6 +148,8 @@ brew "zsh" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" +cask "atom" +cask "atom-beta" cask "aws-vault" cask "cakebrew" cask "docker-toolbox" From 4a5a83ab7e3eb76e5574c8220317b9a4d2be9eb4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 6 Jan 2020 14:14:12 +0000 Subject: [PATCH 212/973] Update Brewfile. --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index d29d30ab..32eabb35 100644 --- a/Brewfile +++ b/Brewfile @@ -164,6 +164,8 @@ cask "mactex" cask "meld" cask "openconnect-gui" cask "staruml" +cask "sublime-merge-dev" +cask "sublime-text-dev" cask "virtualbox" cask "vlc" mas "24 Hour Wallpaper", id: 1226087575 From 0b8f76bf834ec1622482aee142ec4b3ec5816102 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Tue, 7 Jan 2020 20:44:08 -0800 Subject: [PATCH 213/973] IP release renew alias --- shellaliases | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shellaliases b/shellaliases index 2b4ea26c..3c224231 100755 --- a/shellaliases +++ b/shellaliases @@ -184,3 +184,6 @@ function screenshot.setpng() { ## Show third party kernel extensions alias thirdpartykernelextensions='kextstat | grep -v apple' + +## DHCP renew +alias ipreleaserenew="sudo ipconfig set en0 BOOTP && sudo ipconfig set en0 DHCP" From 908ffa1b05d26cf66d9ceace27adb137ce1f9543 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Tue, 7 Jan 2020 20:45:02 -0800 Subject: [PATCH 214/973] ghi alias for token search --- gitconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitconfig b/gitconfig index 358cb61b..f7ba3c8b 100644 --- a/gitconfig +++ b/gitconfig @@ -279,3 +279,5 @@ protocol = https clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process +[ghi] + token = !security find-internet-password -a matthewmccullough -s github.com -l 'ghi token' -w From af92d97f4958d17cf6ec40f2fbf4b6c70708215e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 15 Jan 2020 15:21:07 +0000 Subject: [PATCH 215/973] Clean up hub configs. --- .gitconfig-personal | 2 ++ gitconfig | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.gitconfig-personal b/.gitconfig-personal index cfbd14fb..ffb903e9 100644 --- a/.gitconfig-personal +++ b/.gitconfig-personal @@ -1,3 +1,5 @@ [user] name = Jim Lawton email = jim.lawton@gmail.com +[hub] + protocol = https diff --git a/gitconfig b/gitconfig index 22272ede..68d820d5 100644 --- a/gitconfig +++ b/gitconfig @@ -17,8 +17,6 @@ displaycommentprefix = false [rebase] stat = true -[hub] - protocol = https [color] # ui = true is a superset of all the more specific color options # as documented at http://book.git-scm.com/5_customizing_git.html @@ -115,11 +113,6 @@ [difftool "p4merge"] cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\" -[http] - # proxy=http://something - -[hub] - protocol = https [gist] private = yes browse = yes From 5acbdeadc24d5c3a0218469f015a7fec0493f70e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Feb 2020 10:56:48 +0000 Subject: [PATCH 216/973] Add alias for uuidgen to produce lowercase UUIDs On Mac OSX, uuidgen produces uppercase strings. --- aliases | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/aliases b/aliases index bb8865be..74683279 100644 --- a/aliases +++ b/aliases @@ -184,3 +184,9 @@ alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8' # OSX gatekeeper disable... alias gatekeeper='sudo xattr -d com.apple.quarantine' + +if isMac; then + # On Mac OSX, uuidgen produces uppercase. + alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"' +fi + From 81b010baebbe2c727ef71fa1bb993a02eb36127b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 11 Mar 2020 18:12:36 +0000 Subject: [PATCH 217/973] Update Brewfile. --- Brewfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 32eabb35..6fee3cc1 100644 --- a/Brewfile +++ b/Brewfile @@ -3,6 +3,7 @@ tap "coretech/terrafile" tap "d12frosted/emacs-plus" tap "domt4/autoupdate" tap "github/bootstrap" +tap "github/gh" tap "homebrew/bundle" tap "homebrew/cask" tap "homebrew/cask-versions" @@ -16,7 +17,6 @@ brew "adr-tools" brew "readline" brew "sqlite" brew "xz" -brew "python" brew "ansible" brew "apr" brew "apr-util" @@ -28,13 +28,13 @@ brew "node" brew "aws-cdk" brew "aws-okta" brew "aws-shell" -brew "awscli" brew "bash" brew "bash-completion" brew "black" brew "brew-cask-completion" brew "freetype" brew "gettext" +brew "python" brew "cairo" brew "consul" brew "consul-template" @@ -66,6 +66,7 @@ brew "flake8" brew "fzf" brew "gdb" brew "ghostscript" +brew "gimme-aws-creds" brew "gist" brew "git" brew "git-quick-stats" @@ -146,6 +147,7 @@ brew "xpdf" brew "youtube-dl" brew "zsh" brew "coretech/terrafile/terrafile" +brew "github/gh/gh" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "atom" From 06495225c3bf82d245a14c314857ed2f104306a4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Apr 2020 12:29:21 +0100 Subject: [PATCH 218/973] Revert previous change to storing iterm history. --- bash_options | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bash_options b/bash_options index 06172a8f..0c6aab5b 100644 --- a/bash_options +++ b/bash_options @@ -27,11 +27,10 @@ export HISTCONTROL=ignoreboth # Store a lot of history entries in a file for grep-age shopt -s histappend -if [ -z "${ITERM_SESSION_ID}" ]; then - export HISTFILE=~/long_history -else - export HISTFILE=~/long-history-${ITERM_SESSION_ID} -fi +export HISTFILE=~/long_history +#if [ ! -z "${ITERM_SESSION_ID}" ]; then +# export HISTFILE=~/long-history-${ITERM_SESSION_ID} +#fi export HISTFILESIZE=100000 # No reason not to save a bunch in history From fc386a97a0c938f041ab0fd5f230c2704b917194 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Apr 2020 14:49:20 +0100 Subject: [PATCH 219/973] Updtae submodules. --- vim/bundle/command-t | 2 +- vim/bundle/tabnine-vim | 2 +- vim/bundle/vim-easymotion | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-liquid | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- vim/bundle/vundle | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 7147ba92..1a5b41a0 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 7147ba92c9c1eef8269fd47d47ba636ce7f365a6 +Subproject commit 1a5b41a07e2d49c7f639ab437cd7f3c68a5cc1ad diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim index c20d73f3..ff38d112 160000 --- a/vim/bundle/tabnine-vim +++ b/vim/bundle/tabnine-vim @@ -1 +1 @@ -Subproject commit c20d73f3e007d4b8804c344f114eb03b5c9466a3 +Subproject commit ff38d112a02ab598190aeffc96dfa119f06e64fc diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion index 1a0244c9..dd7b4b52 160000 --- a/vim/bundle/vim-easymotion +++ b/vim/bundle/vim-easymotion @@ -1 +1 @@ -Subproject commit 1a0244c90c3ff46219cf9597bb13662be4232407 +Subproject commit dd7b4b526775bc8553e16bc402020573b04a948c diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 61b09ca6..85e2c738 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 61b09ca6b7ed63933ca6ab27def6f3bbfa4352f6 +Subproject commit 85e2c73830b6bb01ce7fc3a926d2b25836a253eb diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid index 209f77c9..9ebc192d 160000 --- a/vim/bundle/vim-liquid +++ b/vim/bundle/vim-liquid @@ -1 +1 @@ -Subproject commit 209f77c9550a90b0b88492c93852195c171f6ebd +Subproject commit 9ebc192daec70e620c22d574b5a1c1e16f89a48c diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index e2d7fcd6..296eeaa8 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit e2d7fcd682a461a3951e8b5067cc8a0083e75e35 +Subproject commit 296eeaa8877528fae45e89a9013c5a8d317deef1 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 2619a1f5..86f49aca 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 2619a1f5f63b670578ed0a504a6f844807804436 +Subproject commit 86f49aca266e4b17420bcadd29009997d15668d8 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index c82c6d49..2d9f34c0 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit c82c6d4978be28adcf85dc1e61fa428e801bd525 +Subproject commit 2d9f34c09f548ed4df213389caa2882bfe56db58 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index 59706887..f51a26d3 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit 597068870b8f093a8b2d11536c62ff31222ee8d0 +Subproject commit f51a26d3710629d031806305b6c8727189cd1935 diff --git a/vim/bundle/vundle b/vim/bundle/vundle index 9a38216a..b255382d 160000 --- a/vim/bundle/vundle +++ b/vim/bundle/vundle @@ -1 +1 @@ -Subproject commit 9a38216a1c0c597f978d73547d37681fc689c90d +Subproject commit b255382d6242d7ea3877bf059d2934125e0c4d95 From bee9915bcd5ca6e82561ff30607a2f0c84aebbb1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Apr 2020 14:50:44 +0100 Subject: [PATCH 220/973] Remove Kite plugin. --- vim/plugin/kite.vim | 176 -------------------------------------------- 1 file changed, 176 deletions(-) delete mode 100644 vim/plugin/kite.vim diff --git a/vim/plugin/kite.vim b/vim/plugin/kite.vim deleted file mode 100644 index 60f5e94c..00000000 --- a/vim/plugin/kite.vim +++ /dev/null @@ -1,176 +0,0 @@ -" This plugin sets up a few event handlers that allow it to function with Kite - -function! PyKiteEvent(action) - let l:filename = expand("%:p") - let l:nvim = has('nvim') -KitePython << endpython -import vim -import os -import json -import threading - - -PYTHON3 = sys.version_info >= (3,) - -if PYTHON3: - from queue import Queue, Full -else: - from Queue import Queue, Full - - -SOURCE = 'nvim' if int(vim.eval('l:nvim')) else 'vim' - -KITED_HOSTPORT = "127.0.0.1:46624" -EVENT_ENDPOINT = "/clientapi/editor/event" -HTTP_TIMEOUT = 0.09 # timeout for HTTP requests in seconds -EVENT_QUEUE_SIZE = 3 # small queue because we want to throw away old events - -LOG_FILE = os.path.expanduser("~/.kite/logs/vim-plugin.log") -VERBOSE = False - - -def log(*args): - """ - Print a log message - """ - try: - with open(LOG_FILE, "a") as f: - f.write(" ".join(map(str, args)) + "\n") - except: - pass - - -def verbose(*args): - """ - Print a log message (or noop if verbose mode is off) - """ - if VERBOSE: - log(*args) - - -def cursor_pos(buf, pos): - """ - Get the cursor position as an offset from the beginning of the file - """ - (line, col) = pos - return sum(len(l) for l in buf[:line-1]) + col + (line-1) - - -def realpath(p): - """ - Evaluate any symlinks and return a symlink-free path - """ - try: - return os.path.realpath(p) - except: - return p - - -def event_loop(): - """ - Read events from the event queue and send them to kited via HTTP - """ - while True: - ev = event_queue.get(block=True) - if ev == None: # this is the stop signal - verbose("event_queue recieved stop signal") - break - http_roundtrip(EVENT_ENDPOINT, ev) - - -def http_roundtrip(endpoint, payload): - """ - Send a json payload to kited at the specified endpoint - """ - try: - verbose("sending to", endpoint, ":", payload) - req = json.dumps(payload) - - if PYTHON3: - import http.client - conn = http.client.HTTPConnection(KITED_HOSTPORT, timeout=HTTP_TIMEOUT) - conn.request("POST", endpoint, body=req.encode('utf-8')) - response = conn.getresponse() - resp = response.read().decode('utf-8') - conn.close() - else: - import urllib2 - url = "http://" + KITED_HOSTPORT + endpoint - conn = urllib2.urlopen(url, data=req, timeout=HTTP_TIMEOUT) - resp = conn.read() - conn.close() - - verbose("response was:", resp) - - except Exception as ex: - verbose("error during http roundtrip to %s: %s" % (endpoint, ex)) - return None - - -def enqueue_event(action, filename): - """ - Add an event for the current buffer state to the outgoing queue - """ - verbose("at enqueue_event:", action) - pos = cursor_pos(list(vim.current.buffer), vim.current.window.cursor) - - event = { - 'source': SOURCE, - 'action': action, - 'filename': realpath(filename), - 'text': '\n'.join(vim.current.buffer), - 'selections': [{'start': pos, 'end': pos}], - } - - if len(event['text']) > (1 << 20): # 1mb - event['action'] = 'skip' - event['text'] = 'file_too_large' - - try: - event_queue.put(event, block=False) - except Full: - verbose("event queue was full") - - -# start the outgoing event loop -try: - event_queue -except NameError: - verbose("starting event queue...") - event_queue = Queue(maxsize=EVENT_QUEUE_SIZE) - event_thread = threading.Thread(target=event_loop) - event_thread.start() - -enqueue_event(vim.eval("a:action"), vim.eval("l:filename")) - -endpython -endfunction - - -function! PyKiteShutdown() -KitePython << endpython - -verbose("sending stop signal to event_queue") -event_queue.put(None, block=False) - -endpython -endfunction - - -" use a version of python that exists in the current vim build -if has('python') - command! -nargs=1 KitePython python -elseif has('python3') - command! -nargs=1 KitePython python3 -endif - -if has('python') || has('python3') - augroup KitePlugin - autocmd VimLeavePre * :call PyKiteShutdown() - autocmd CursorMoved * :call PyKiteEvent('selection') - autocmd CursorMovedI * :call PyKiteEvent('edit') - autocmd BufEnter * :call PyKiteEvent('focus') - autocmd FocusGained * :call PyKiteEvent('focus') - autocmd BufLeave * :call PyKiteEvent('lost_focus') - augroup END -endif From 594ad4b64a5c1fbb7281490fbab24a8ecaf0b8f9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Apr 2020 18:44:03 +0100 Subject: [PATCH 221/973] Update Brewfile. --- Brewfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 6fee3cc1..bd2bfb81 100644 --- a/Brewfile +++ b/Brewfile @@ -34,7 +34,7 @@ brew "black" brew "brew-cask-completion" brew "freetype" brew "gettext" -brew "python" +brew "libffi" brew "cairo" brew "consul" brew "consul-template" @@ -48,6 +48,7 @@ brew "docker-compose-completion" brew "docker-machine-completion" brew "dos2unix" brew "libidn2" +brew "p11-kit" brew "unbound" brew "gnutls" brew "envconsul" @@ -76,6 +77,7 @@ brew "libusb" brew "pinentry" brew "gnupg" brew "netpbm" +brew "python" brew "gts" brew "graphviz" brew "grunt-completion" @@ -133,7 +135,8 @@ brew "rust" brew "shellcheck" brew "sloccount" brew "sphinx-doc" -brew "ssh-copy-id" +brew "ssh-copy-id", link: true +brew "sshuttle" brew "terminal-notifier" brew "terraform-docs" brew "tig" @@ -197,6 +200,7 @@ mas "Microsoft PowerPoint", id: 462062816 mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 +mas "Notability", id: 736189492 mas "Numbers", id: 409203825 mas "Okta Extension App", id: 1439967473 mas "OneDrive", id: 823766827 From 492884c471280457353e5db5fcc0cc0e47974c57 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 14 May 2020 00:15:05 -0700 Subject: [PATCH 222/973] Upgrading oh-my-zsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 291e96dc..fd786291 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 291e96dcd034750fbe7473482508c08833b168e3 +Subproject commit fd786291bab7468c7cdd5066ac436218a1fba9e2 From e8474a2424c31d2b86da673be1c8ef11bcb7dc24 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 14 May 2020 00:16:19 -0700 Subject: [PATCH 223/973] Adding gopath and Git command line PAT retrival --- shellvars | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shellvars b/shellvars index 5638131e..990f7efb 100644 --- a/shellvars +++ b/shellvars @@ -38,3 +38,7 @@ export JAVA_HOME=/Library/Java/Home GPG_TTY=$(tty) export GPG_TTY + +export GOPATH=$HOME/go-workspace + +export GITHUB_TOKEN=`security find-internet-password -a matthewmccullough -s github.com -l 'ghi token' -w` \ No newline at end of file From cf9c2629ea7537f0b790d3d8c7e7d84e8d4b3f5e Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 14 May 2020 00:18:16 -0700 Subject: [PATCH 224/973] Octo installed via brew --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index 9d11d5cc..eeb417ed 100644 --- a/Brewfile +++ b/Brewfile @@ -3,6 +3,7 @@ tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap tap 'homebrew/bundle' # https://github.com/Homebrew/homebrew-bundle tap 'homebrew/services' # https://github.com/Homebrew/homebrew-services tap 'cjbassi/gotop' # https://github.com/cjbassi/gotop +tap `octo-cli/octo` cask 'adobe-creative-cloud' cask 'alfred' @@ -71,6 +72,7 @@ brew 'ncdu' brew 'nginx' brew 'node' brew 'nodenv' +brew 'octo' brew 'oniguruma' brew 'openssl' brew 'pcre' From f869685be4af18a507c8c3e76f59477ab882dfba Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Thu, 14 May 2020 11:16:47 -0700 Subject: [PATCH 225/973] Add gh to list of Brew-installed programs --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index eeb417ed..cbaa8bf0 100644 --- a/Brewfile +++ b/Brewfile @@ -46,6 +46,7 @@ brew 'gettext' brew 'glib' brew 'go' brew 'gotop' +brew 'gh' brew 'ghi' brew 'gradle' brew 'grc' From 988a220715a31b3b1cdf8b5b3e0aa5053285c2cb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 12 Jun 2020 11:17:01 +0100 Subject: [PATCH 226/973] This envar has been retired with recent versions of virtualenv wrapper. --- vars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vars b/vars index 3d292cc3..d2bd4df4 100644 --- a/vars +++ b/vars @@ -79,7 +79,7 @@ export PYTHONSTARTUP=~/.pythonrc # virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs # All new environments isolated from the site-packages directory. -export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' +#export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # Specify Python to use with virtualenvwrapper. # export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 # Use the same directory for virtualenvs as virtualenvwrapper. From 5f7302bbac91fe8ecef2be35f112c613a445484e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 12 Jun 2020 11:18:08 +0100 Subject: [PATCH 227/973] Update Brewfile. --- Brewfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index bd2bfb81..04371bf8 100644 --- a/Brewfile +++ b/Brewfile @@ -88,7 +88,7 @@ brew "id3v2" brew "iproute2mac" brew "zeromq" brew "ipython" -brew "jfrog-cli-go" +brew "jfrog-cli" brew "oniguruma" brew "jq" brew "pandoc" @@ -121,6 +121,7 @@ brew "plantuml" brew "pre-commit" brew "progress" brew "pth" +brew "pulumi" brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" @@ -139,6 +140,7 @@ brew "ssh-copy-id", link: true brew "sshuttle" brew "terminal-notifier" brew "terraform-docs" +brew "tfenv" brew "tig" brew "todo-txt" brew "vagrant-completion" From d57fe2deec2050c5b05c69827faa4a765f697902 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 24 Jun 2020 11:51:16 +0100 Subject: [PATCH 228/973] Update brewfile. --- Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 04371bf8..7ab63bc2 100644 --- a/Brewfile +++ b/Brewfile @@ -109,6 +109,7 @@ brew "mtr" brew "mypy" brew "ocrad" brew "openapi-generator" +brew "openconnect" brew "packer" brew "packer-completion" brew "parallel" @@ -217,4 +218,3 @@ mas "Typist", id: 415166115 mas "Unsplash Wallpapers", id: 1284863847 mas "WhatsApp", id: 1147396723 mas "Wire", id: 931134707 -mas "Xcode", id: 497799835 From 83438413173194f88a75e29e26cea7ee12bf5c34 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Aug 2020 16:26:03 +0100 Subject: [PATCH 229/973] Formatting. --- functions | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/functions b/functions index f4a99a0d..4e3723f4 100644 --- a/functions +++ b/functions @@ -2,27 +2,23 @@ # Shell Functions. -function killxscreensaver() -{ +function killxscreensaver() { pkill xscreensaver echo "" return } - -function col { +function col() { awk '{print $'$(echo $* | sed -e 's/ /,$/g')'}'; } - # Awk calculator. -function calc { +function calc() { awk "BEGIN { print $* }" ; } - # Add a path to the global PATH. -function pathmunge { +function pathmunge() { if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then if [ "$2" = "after" ] ; then PATH=$PATH:$1 @@ -67,9 +63,8 @@ function ... { done } - # Change extensions of specified files. -function chext { +function chext() { local fname local new_ext="$1" shift @@ -80,8 +75,7 @@ function chext { done } - -function tools { +function tools() { pushd . >/dev/null brtop if [ -d $(pwd)/tools ]; then @@ -94,7 +88,6 @@ function tools { popd >/dev/null } - # Create a new git repo with one README commit and cd into it function git.nr() { mkdir $1 @@ -105,7 +98,6 @@ function git.nr() { git commit -m "First commit." } - function find.name() { wild=\'\*$1\*\' sh -c "find . -iname $wild" @@ -159,7 +151,7 @@ function gi() { } # Linux? -function isLinux { +function isLinux() { if [ "$OS" = "Linux" ]; then return 0 fi @@ -167,7 +159,7 @@ function isLinux { } # Mac? -function isMac { +function isMac() { if [ "$OS" = "Darwin" ]; then return 0 fi @@ -175,7 +167,7 @@ function isMac { } # iTerm2 tab titles -function title { +function title() { if [ ! -e "${HOME}/.iterm2_shell_integration.bash" ]; then return fi From f8bc51dc95d07393089752eaa394f873287a44e7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Aug 2020 16:26:36 +0100 Subject: [PATCH 230/973] iTerm display functions (commented for now). --- functions | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/functions b/functions index 4e3723f4..b5ef2a71 100644 --- a/functions +++ b/functions @@ -2,6 +2,21 @@ # Shell Functions. +# Set iTerm2 tab title +#function tabTitle() { +# echo -ne "\033]0;"$*"\007"; +#} + +# Set iTerm2 window title +#function winTitle() { +# echo -ne "\033]0;"$*"\007"; +#} + +# Always list directory contents and set title upon 'cd' +#function cd() { +# builtin cd "$@"; tabTitle ${PWD##*/}; winTitle ${PWD/#"$HOME" /~}; +#} + function killxscreensaver() { pkill xscreensaver echo "" From 54edd91c5666a6c17f6d21b52c522c426ed64408 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Aug 2020 16:55:13 +0100 Subject: [PATCH 231/973] Change iTerm window titles to reflect enclosing Git repo name and branch. --- functions | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/functions b/functions index b5ef2a71..9b568217 100644 --- a/functions +++ b/functions @@ -193,7 +193,19 @@ function title() { # This shows the path from ~ in the title. #echo -ne "\033]0;${PWD/#$HOME/~}\007" # This shows the last part of the path in the title. - echo -ne "\033]0;${PWD##*/}\007" + #echo -ne "\033]0;${PWD##*/}\007" + + # This shows the current git repo, or directory, in the title. + if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then + local directory + echo -ne "\033];${PWD##*/}\007" + else + local branch + local branchdir + branchdir=$(basename "$(git rev-parse --show-toplevel)") + branch=$(git branch 2>/dev/null | grep -e '\* ' | sed "s/^..\(.*\)/{\1}/") + echo -ne "\033];$branchdir $branch\007" + fi fi } From ce724d0a2a6771fb50fd3d9a63ba32d981b0d08c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Aug 2020 17:37:22 +0100 Subject: [PATCH 232/973] Change window title format to "[] {}" if in a Git repo, or just "" if not. --- functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions b/functions index 9b568217..3b1433ff 100644 --- a/functions +++ b/functions @@ -204,7 +204,7 @@ function title() { local branchdir branchdir=$(basename "$(git rev-parse --show-toplevel)") branch=$(git branch 2>/dev/null | grep -e '\* ' | sed "s/^..\(.*\)/{\1}/") - echo -ne "\033];$branchdir $branch\007" + echo -ne "\033];[$branchdir] ${PWD##*/} $branch\007" fi fi } From a71a46e547ae8b7a8aa02ac6847f491b5efc44b0 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 17 Aug 2020 10:22:43 -0700 Subject: [PATCH 233/973] Updated oh-my-zsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index fd786291..079e7bb5 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit fd786291bab7468c7cdd5066ac436218a1fba9e2 +Subproject commit 079e7bb5e0a79171f3356d55d3f6302a82645a39 From e21719f7b3bb904b092096caaf97991ee49d6af5 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Mon, 17 Aug 2020 10:52:08 -0700 Subject: [PATCH 234/973] Remove cloudapp, as it is deprecated --- zshrc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/zshrc b/zshrc index daefbf85..752ef251 100644 --- a/zshrc +++ b/zshrc @@ -29,13 +29,10 @@ export CASE_SENSITIVE="true" # export DISABLE_AUTO_TITLE="true" # Which plugins would you like to load? (plugins can be found in ~/.dotfiles/oh-my-zsh/plugins/*) -plugins=(git battery brew osx gradle ant compleat dirpersist gem ssh-agent cloudapp ruby textmate sublime) +plugins=(git battery brew osx gradle ant compleat dirpersist gem ssh-agent ruby textmate sublime) source $ZSH/oh-my-zsh.sh -### Added by the Heroku Toolbelt -export PATH="/usr/local/heroku/bin:$PATH" - # Load rbenv ruby version selector # https://github.com/rbenv/rbenv#homebrew-on-macos eval "$(rbenv init -)" From 1c6dde402f0ab0f9fa8c4d02050d60d99bdbc221 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Tue, 29 Sep 2020 08:29:19 -0700 Subject: [PATCH 235/973] Describe additional configuration not yet captured in automation --- README.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.markdown b/README.markdown index bf8a0150..4614989b 100644 --- a/README.markdown +++ b/README.markdown @@ -23,6 +23,10 @@ There is a set up script that establishes the symlinks in your home directory. R > NOTE: Some personal configuration of Matthew's will remain after setup. These dotfiles are intended for your inspiration, forking, and for you to tweak to your specific needs. +# Non-automated, non-captured config + +Reminder-to-self: Some additional personalization lives in the `~/.config/` directory. Specifically, the `~/.config/gh/config.yml` file for [`gh`](https://cli.github.com). It is not yet in scope for capture or copy, but some uers have [shared their configuration in a Gist](https://gist.github.com/vilmibm/a1b9a405ac0d5153c614c9c646e37d13). + # Contributions Contributions are always welcome in the form of pull requests with explanatory comments. From 1f72ccf51165d828ff19c738b3b2fce3a3b5c712 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Tue, 29 Sep 2020 08:29:37 -0700 Subject: [PATCH 236/973] Upgraded oh-my-zsh to latest --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 079e7bb5..814e0b3c 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 079e7bb5e0a79171f3356d55d3f6302a82645a39 +Subproject commit 814e0b3c25316879b2f86e017701449cc2302ad4 From d712e7bfe360a79164168dc0f960284cc1ff94e5 Mon Sep 17 00:00:00 2001 From: Matthew McCullough Date: Sun, 18 Oct 2020 22:43:59 -0700 Subject: [PATCH 237/973] Update oh-my-zsh version --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 814e0b3c..7deaff71 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 814e0b3c25316879b2f86e017701449cc2302ad4 +Subproject commit 7deaff71a2be08145d83f0177edbf2dfb3e91262 From 4cab33e7a4f751c662eb56110835002770f3539f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 29 Oct 2020 16:50:56 +0000 Subject: [PATCH 238/973] Exclude virtualenv directories from find aliaes. --- aliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aliases b/aliases index 74683279..0560caf8 100644 --- a/aliases +++ b/aliases @@ -131,7 +131,7 @@ alias pgrep='ps auxww | grep \!* | grep -v grep' #alias a2ps='a2ps -r -1 -C -E -g -l120 -s2' alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color' -_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \)' +_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \) \( -name .venv -prune \)' _mfiles='\( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \)' _sfiles='\( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \)' _shfiles='\( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \)' From 80f4481d9b51db0649ecfe2e9d6ce9a0cff48b2f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 29 Oct 2020 16:53:00 +0000 Subject: [PATCH 239/973] Update Brewfile. --- Brewfile | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index 7ab63bc2..d6c53654 100644 --- a/Brewfile +++ b/Brewfile @@ -6,10 +6,12 @@ tap "github/bootstrap" tap "github/gh" tap "homebrew/bundle" tap "homebrew/cask" +tap "homebrew/cask-fonts" tap "homebrew/cask-versions" tap "homebrew/core" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" +tap "nvie/tap" tap "sachaos/todoist" cask "xquartz" brew "a2ps" @@ -20,6 +22,7 @@ brew "xz" brew "ansible" brew "apr" brew "apr-util" +brew "asciidoc" brew "asciinema" brew "atomicparsley" brew "autojump" @@ -36,6 +39,7 @@ brew "freetype" brew "gettext" brew "libffi" brew "cairo" +brew "clang-format" brew "consul" brew "consul-template" brew "coreutils" @@ -51,6 +55,7 @@ brew "libidn2" brew "p11-kit" brew "unbound" brew "gnutls" +brew "emacs", link: false brew "envconsul" brew "fribidi" brew "giflib" @@ -66,18 +71,19 @@ brew "ffmpeg" brew "flake8" brew "fzf" brew "gdb" +brew "gh" brew "ghostscript" brew "gimme-aws-creds" brew "gist" brew "git" brew "git-quick-stats" +brew "gnu-sed" brew "libgcrypt" brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" brew "netpbm" -brew "python" brew "gts" brew "graphviz" brew "grunt-completion" @@ -100,6 +106,7 @@ brew "libssh2" brew "libusb-compat" brew "make" brew "mas" +brew "openjdk" brew "maven" brew "md5sha1sum", link: false brew "protobuf" @@ -121,6 +128,8 @@ brew "pipenv" brew "plantuml" brew "pre-commit" brew "progress" +brew "protoc-gen-go" +brew "protoc-gen-go-grpc" brew "pth" brew "pulumi" brew "pycodestyle" @@ -128,22 +137,26 @@ brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "pygments" -brew "python@2" +brew "python@2", link: false brew "qt" brew "rake-completion" brew "repo" brew "ruby" brew "rust" +brew "semgrep" brew "shellcheck" brew "sloccount" +brew "sonar-scanner" brew "sphinx-doc" brew "ssh-copy-id", link: true brew "sshuttle" brew "terminal-notifier" brew "terraform-docs" brew "tfenv" +brew "tflint" brew "tig" brew "todo-txt" +brew "tree" brew "vagrant-completion" brew "vault" brew "vault-cli" @@ -153,8 +166,8 @@ brew "xpdf" brew "youtube-dl" brew "zsh" brew "coretech/terrafile/terrafile" -brew "github/gh/gh" brew "mkchoi212/fac/fac" +brew "nvie/tap/git-toolbelt" brew "sachaos/todoist/todoist" cask "atom" cask "atom-beta" @@ -162,6 +175,7 @@ cask "aws-vault" cask "cakebrew" cask "docker-toolbox" cask "emacs" +cask "font-juliamono" cask "inspec" cask "java" cask "jedit" @@ -171,9 +185,11 @@ cask "lumen" cask "mactex" cask "meld" cask "openconnect-gui" +cask "rectangle" cask "staruml" cask "sublime-merge-dev" cask "sublime-text-dev" +cask "vagrant" cask "virtualbox" cask "vlc" mas "24 Hour Wallpaper", id: 1226087575 @@ -182,6 +198,7 @@ mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 +mas "CleanMyMac X", id: 1339170533 mas "CopyClip", id: 1020812363 mas "Delicious Library", id: 635124250 mas "DeskCover", id: 1257711898 From 86ccb71ec6c48d6ee1720f3902ea8f75d0e96a7f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 25 Nov 2020 18:08:13 +0000 Subject: [PATCH 240/973] Bit completion. --- bash_profile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bash_profile b/bash_profile index 28a82230..a9e9b379 100644 --- a/bash_profile +++ b/bash_profile @@ -130,3 +130,7 @@ fi if [[ -d "$HOME/.okta/bin" && ":$PATH:" != *":$HOME/.okta/bin:"* ]]; then PATH="$HOME/.okta/bin:$PATH" fi + +if [ -e "/usr/local/bin/bit" ]; then + complete -C /usr/local/bin/bit bit +fi From 66ff775e54c0848bebf5e1b14be40b1bfd048abb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 25 Nov 2020 18:09:59 +0000 Subject: [PATCH 241/973] Update Brewfile. --- Brewfile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index d6c53654..2aba4d72 100644 --- a/Brewfile +++ b/Brewfile @@ -13,7 +13,6 @@ tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" tap "sachaos/todoist" -cask "xquartz" brew "a2ps" brew "adr-tools" brew "readline" @@ -29,10 +28,13 @@ brew "autojump" brew "awk" brew "node" brew "aws-cdk" -brew "aws-okta" brew "aws-shell" +brew "awscli" brew "bash" brew "bash-completion" +brew "bat" +brew "bazel" +brew "bit-git" brew "black" brew "brew-cask-completion" brew "freetype" @@ -44,6 +46,7 @@ brew "consul" brew "consul-template" brew "coreutils" brew "curl" +brew "delta" brew "go" brew "dep" brew "diffutils" @@ -57,6 +60,8 @@ brew "unbound" brew "gnutls" brew "emacs", link: false brew "envconsul" +brew "exa" +brew "fd" brew "fribidi" brew "giflib" brew "harfbuzz" @@ -91,12 +96,14 @@ brew "httpie" brew "hub" brew "id3lib" brew "id3v2" +brew "infracost" brew "iproute2mac" brew "zeromq" brew "ipython" brew "jfrog-cli" brew "oniguruma" brew "jq" +brew "jsonlint" brew "pandoc" brew "jupyterlab" brew "lastpass-cli" @@ -141,6 +148,7 @@ brew "python@2", link: false brew "qt" brew "rake-completion" brew "repo" +brew "ripgrep" brew "ruby" brew "rust" brew "semgrep" @@ -150,6 +158,7 @@ brew "sonar-scanner" brew "sphinx-doc" brew "ssh-copy-id", link: true brew "sshuttle" +brew "starship" brew "terminal-notifier" brew "terraform-docs" brew "tfenv" @@ -164,6 +173,7 @@ brew "vim" brew "wget" brew "xpdf" brew "youtube-dl" +brew "zoxide" brew "zsh" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" @@ -178,7 +188,6 @@ cask "emacs" cask "font-juliamono" cask "inspec" cask "java" -cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" @@ -192,6 +201,7 @@ cask "sublime-text-dev" cask "vagrant" cask "virtualbox" cask "vlc" +cask "xquartz" mas "24 Hour Wallpaper", id: 1226087575 mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 From effbc0140be2f1b5cf0622b8afe838e351102785 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 27 Nov 2020 15:51:34 +0000 Subject: [PATCH 242/973] Update Brewfile. --- Brewfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Brewfile b/Brewfile index 2aba4d72..c5813dd3 100644 --- a/Brewfile +++ b/Brewfile @@ -154,6 +154,7 @@ brew "rust" brew "semgrep" brew "shellcheck" brew "sloccount" +brew "socat" brew "sonar-scanner" brew "sphinx-doc" brew "ssh-copy-id", link: true @@ -208,16 +209,12 @@ mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 mas "Bear", id: 1091189122 -mas "CleanMyMac X", id: 1339170533 mas "CopyClip", id: 1020812363 mas "Delicious Library", id: 635124250 -mas "DeskCover", id: 1257711898 mas "Disk Space", id: 603688030 -mas "Elisi", id: 1406239881 mas "EtreCheck", id: 1423715984 mas "feedly", id: 865500966 mas "Funter", id: 1109422934 -mas "GarageBand", id: 682658836 mas "iMovie", id: 408981434 mas "iStat Mini", id: 927292435 mas "Keynote", id: 409183694 @@ -237,7 +234,6 @@ mas "OneDrive", id: 823766827 mas "Pages", id: 409201541 mas "Slack", id: 803453959 mas "Speedtest", id: 1153157709 -mas "SubEthaEdit", id: 728530824 mas "The Archive Browser", id: 510232205 mas "The Unarchiver", id: 425424353 mas "Twitter", id: 409789998 From 20139af80dd0d84cb04ea6b0d6981857a0029923 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 2 Dec 2020 14:13:24 +0000 Subject: [PATCH 243/973] Update Brewfile. --- Brewfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index c5813dd3..f86c93a6 100644 --- a/Brewfile +++ b/Brewfile @@ -45,6 +45,9 @@ brew "clang-format" brew "consul" brew "consul-template" brew "coreutils" +brew "libidn2" +brew "libssh2" +brew "rtmpdump" brew "curl" brew "delta" brew "go" @@ -54,7 +57,6 @@ brew "docker-completion" brew "docker-compose-completion" brew "docker-machine-completion" brew "dos2unix" -brew "libidn2" brew "p11-kit" brew "unbound" brew "gnutls" @@ -67,7 +69,6 @@ brew "giflib" brew "harfbuzz" brew "libtiff" brew "leptonica" -brew "rtmpdump" brew "sdl2" brew "tesseract" brew "x265" @@ -109,13 +110,13 @@ brew "jupyterlab" brew "lastpass-cli" brew "libcaca" brew "libressl" -brew "libssh2" brew "libusb-compat" brew "make" brew "mas" brew "openjdk" brew "maven" brew "md5sha1sum", link: false +brew "mmark" brew "protobuf" brew "mosh" brew "mplayer" From 5c8a53fd327348928120c4178149c64fc42dd677 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sat, 19 Dec 2020 15:15:16 -0800 Subject: [PATCH 244/973] Updating iTerm config --- com.googlecode.iterm2.plist | 134 ++---------------------------------- 1 file changed, 7 insertions(+), 127 deletions(-) diff --git a/com.googlecode.iterm2.plist b/com.googlecode.iterm2.plist index b9c03c46..abc7769d 100644 --- a/com.googlecode.iterm2.plist +++ b/com.googlecode.iterm2.plist @@ -12,18 +12,10 @@ AnimateDimming - AppleAntiAliasingThreshold - 1 - AppleScrollAnimationEnabled - 0 - AppleSmoothFixedFontsSizeThreshold - 1 - AppleWindowTabbingMode - manual AutoHideTmuxClientSession CheckTestRelease - + ClosingHotkeySwitchesSpaces ColorInvertedCursor @@ -2369,6 +2361,8 @@ FsTabDelay 1.2331217527389526 + HapticFeedbackForEsc + HiddenAFRStrokeThickness 0.0 HiddenAdvancedFontRendering @@ -2641,64 +2635,10 @@ 7 LeftOption 2 - LoadPrefsFromCustomFolder - MaxVertically MinimumContrast 0.0 - NSNavLastRootDirectory - ~/.dotfiles - NSQuotedKeystrokeBinding - - NSRepeatCountBinding - - NSScrollAnimationEnabled - - NSScrollViewShouldScrollUnderTitlebar - - NSTableView Columns v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGNjdYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoK4HCA8aGxwdHh8gJjAxMlUkbnVsbNIJCgsOWk5TLm9iamVjdHNWJGNsYXNzogwN - gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm - aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz - ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA - DIAIgAlRMSNAdCAAAAAAANIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP - TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA - ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe - AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA - AAAAADoAAAAAAAAAAAAAAAAAAAFM - - NSTableView Sort Ordering v2 KeyBingingTable - - YnBsaXN0MDDUAQIDBAUGFBVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS - AAGGoKMHCA1VJG51bGzSCQoLDFpOUy5vYmplY3RzViRjbGFzc6CAAtIODxARWiRjbGFz - c25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjEBITV05TQXJyYXlYTlNPYmplY3Rf - EA9OU0tleWVkQXJjaGl2ZXLRFhdVQXJyYXmAAQgRGiMtMjc7QUZRWFlbYGt0g4ePmKqt - swAAAAAAAAEBAAAAAAAAABgAAAAAAAAAAAAAAAAAAAC1 - - NSTableView Supports v2 KeyBingingTable - - NSToolbar Configuration com.apple.NSColorPanel - - TB Is Shown - 1 - - NSWindow Frame NSColorPanel - 265 225 231 329 0 0 1280 777 - NSWindow Frame Preferences - 284 412 606 456 0 0 1440 877 - NSWindow Frame SUStatusFrame - 838 106 384 129 0 0 1440 878 - NSWindow Frame SharedPreferences - 269 122 796 473 0 0 1680 1028 - NSWindow Frame UKCrashReporter - 80 193 592 584 0 0 1280 777 - NSWindow Frame iTerm Window 0 - 708 148 972 699 0 0 2560 1418 - NSWindow Frame iTerm Window 1 - 854 54 570 451 0 0 1440 878 NeverWarnAboutShortLivedSessions_04984D44-914B-4A49-8AB5-B2ABB5F8A100 New Bookmarks @@ -4688,50 +4628,6 @@ ~/Documents/Scratch - NoSyncConfirmBeta - - NoSyncHaveShownPromoWithId_4 - - NoSyncHaveWarnedAboutPasteConfirmationChange - - NoSyncInstallationId - EBB08AEE-D146-4427-A69E-16689D1B6C23 - NoSyncLastTipTime - 490466268.685619 - NoSyncNeverRemindPrefsChangesLostForFile - - NoSyncNeverRemindPrefsChangesLostForFile_selection - 0 - NoSyncPermissionToShowTip - - NoSyncTimeOfFirstLaunchOfVersionWithTip - 478235921.85160202 - NoSyncTimeOfLastPromo - 478032308.39368999 - NoSyncTimeOfLastPromoDownload - 478218472.20757103 - NoSyncTipsDisabled - - NoSyncTipsToNotShow - - 000 - 0000 - 0001 - 0002 - 0003 - 0004 - 0005 - 0006 - 0007 - 0008 - 0009 - 0010 - 0011 - 0012 - 0013 - 0014 - 0015 - NotFirstRun OnlyWhenMoreTabs @@ -4774,8 +4670,6 @@ kNextWindowPointerAction - PrefsCustomFolder - /Users/matthewmccullough/.dotfiles PromptOnClose PromptOnQuit @@ -4788,22 +4682,8 @@ 8 RightOption 3 - SUAutomaticallyUpdate - - SUEnableAutomaticChecks - - SUFeedAlternateAppNameKey - iTerm - SUFeedURL - https://iterm2.com/appcasts/testing.xml?shard=19 - SUHasLaunchedBefore - - SULastCheckTime - 2017-10-13T20:02:37Z SavePasteHistory - Secure Input - Show Toolbelt ShowBookmarkName @@ -4814,6 +4694,8 @@ SmartPlacement + SoundForEsc + SplitPaneDimmingAmount 0.51256006956100464 SwitchTabModifier @@ -4861,8 +4743,6 @@ TripleClickSelectsFullWrappedLines - UKCrashReporterLastCrashReportDate - 1415110784 URLHandlers URLHandlersByGuid @@ -4875,6 +4755,8 @@ UseLionStyleFullscreen + VisualIndicatorForEsc + WebKitDefaultFontSize 11 WebKitStandardFont @@ -18015,7 +17897,5 @@ findRegex_iTerm - iTerm Version - 3.1.3.beta.1 From 9aa4f3a2f9dfa99b582527b73d43f0dedfc53f82 Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sat, 19 Dec 2020 15:17:02 -0800 Subject: [PATCH 245/973] Upgrade ohmyzsh --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 814e0b3c..b28665ae 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 814e0b3c25316879b2f86e017701449cc2302ad4 +Subproject commit b28665aebb4c1b07a57890eb59551bc51d0acf37 From 157db366d60f33a55d37357a769295680fd4cd8d Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sat, 19 Dec 2020 16:14:38 -0800 Subject: [PATCH 246/973] Add Brewfile latest utilities --- Brewfile | 212 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 120 insertions(+), 92 deletions(-) diff --git a/Brewfile b/Brewfile index cbaa8bf0..576552a4 100644 --- a/Brewfile +++ b/Brewfile @@ -1,97 +1,125 @@ -tap 'caskroom/cask' # https://github.com/Homebrew/homebrew-cask -tap 'github/bootstrap' # https://github.com/github/homebrew-bootstrap -tap 'homebrew/bundle' # https://github.com/Homebrew/homebrew-bundle -tap 'homebrew/services' # https://github.com/Homebrew/homebrew-services -tap 'cjbassi/gotop' # https://github.com/cjbassi/gotop -tap `octo-cli/octo` +tap "cjbassi/gotop" # https://github.com/cjbassi/gotop +tap "homebrew/bundle" # https://github.com/Homebrew/homebrew-bundle +tap "caskroom/cask" # https://github.com/Homebrew/homebrew-cask +tap "homebrew/core" +tap "homebrew/services" # https://github.com/Homebrew/homebrew-services +tap "octo-cli/octo" +tap "homebrew/services" -cask 'adobe-creative-cloud' -cask 'alfred' -cask 'appcleaner' -cask 'araxis-merge' -cask 'atom' -cask 'box-sync' -cask 'carbon-copy-cloner' -cask 'dropbox' -cask 'duet' -cask 'encryptme' -cask 'gawk' -cask 'github' -cask 'google-chrome' -cask 'iterm2' -cask 'java' -cask 'java' -cask 'keepingyouawake' -cask 'mailplane' -cask 'microsoft-office' -cask 'microsoft-teams' -cask 'noun-project' -cask 'skype' -cask 'sublime-text' -cask 'textmate' -cask 'visual-studio-code' -cask 'vlc' -cask 'vmware-fusion' -cask 'whatsapp' -cask 'zoomus' +brew "ack" +brew "asciidoc" +brew "autoconf" +brew "autojump" +brew "automake" +brew "chruby" +brew "cjbassi/gotop/gotop" +brew "cmake" +brew "curl" +brew "dos2unix" +brew "ffmpeg" +brew "findutils" +brew "fpp" +brew "freetype" +brew "geoip" +brew "gist" +brew "git-extras" +brew "git-lfs" +brew "git-sh" +brew "git" +brew "gettext" +brew "gnu-tar" +brew "gnupg" +brew "glib" +brew "go" +brew "gotop" +brew "gh" +brew "ghi" +brew "gradle" +brew "graphviz" +brew "grc" +brew "groovy" +brew "hh" +brew "hub" +brew "icu4c" +brew "imagemagick" +brew "ipcalc" +brew "jansson" +brew "jemalloc" +brew "jpeg" +brew "jq" +brew "launchdns" +brew "lftp" +brew "libevent" +brew "libffi" +brew "libgcrypt" +brew "libgda" +brew "libmpc" +brew "libunistring" +brew "libxml2" +brew "libxmlsec1" +brew "libgpg-error" +brew "libpng" +brew "libtiff" +brew "libtool" +brew "lighttpd" +brew "macvim" +brew "maven" +brew "md5sha1sum" +brew "memcached" +brew "memtester" +brew "mercurial" +brew "multimarkdown" +brew "mysql" +brew "neon" +brew "ncdu" +brew "nginx" +brew "nmap" +brew "nnn" +brew "node" +brew "nodenv" +brew "octo" +brew "oniguruma" +brew "openjdk" +brew "openssl@1.1" +brew "ossp-uuid" +brew "pcre" +brew "pkg-config" +brew "pidof" +brew "pixman" +brew "postgresql" +brew "pth" +brew "python@3.9" +brew "qpdf" +brew "rarian" +brew "rbenv-default-gems" +brew "rbenv" +brew "readline" +brew "ruby-build" +brew "ruby-install" +brew "ruby" +brew "scons" +brew "sqlite" +brew "shared-mime-info" +brew "speedtest-cli" +brew "sphinx-doc" +brew "ssh-copy-id" +brew "subversion" +brew "switchaudio-osx" +brew "texi2html" +brew "the_silver_searcher" # A code-searching tool similar to ack, but faster. http://geoff.greer.fm/ag/ # Example: ag texttofind filestosearch +brew "tig" +brew "tmux" +brew "tree" +brew "watch" +brew "wget" +brew "yasm" +brew "xz" +brew "youtube-dl" +brew "z" +brew "zlib" +brew "zsh" -brew 'ack' -brew 'autoconf' -brew 'autojump' -brew 'cmake' -brew 'dos2unix' -brew 'freetype' -brew 'geoip' -brew 'gettext' -brew 'glib' -brew 'go' -brew 'gotop' -brew 'gh' -brew 'ghi' -brew 'gradle' -brew 'grc' -brew 'hh' -brew 'hub' -brew 'icu4c' -brew 'imagemagick' -brew 'jansson' -brew 'jemalloc' -brew 'jpeg' -brew 'jq' -brew 'launchdns' -brew 'libevent' -brew 'libffi' -brew 'libgcrypt' -brew 'libgda' -brew 'libgpg-error' -brew 'libpng' -brew 'libtiff' -brew 'libtool' -brew 'maven' -brew 'memcached' -brew 'ncdu' -brew 'nginx' -brew 'node' -brew 'nodenv' -brew 'octo' -brew 'oniguruma' -brew 'openssl' -brew 'pcre' -brew 'pkg-config' -brew 'rbenv-default-gems' -brew 'rbenv' -brew 'readline' -brew 'ruby-build' -brew 'sqlite' -brew 'ssh-copy-id' -brew 'the_silver_searcher' # A code-searching tool similar to ack, but faster. - # http://geoff.greer.fm/ag/ - # Example: ag texttofind filestosearch -brew 'tree' -brew 'wget' -brew 'xz' -brew 'youtube-dl' -brew 'z' +cask "xquartz" # Install App Store automation: https://github.com/mas-cli/mas mas "Evernote", id: 406056744 From 0ebb763ee993eea8f8070737300b42d4ec2178bc Mon Sep 17 00:00:00 2001 From: "Matthew J. McCullough" Date: Sat, 19 Dec 2020 16:49:46 -0800 Subject: [PATCH 247/973] Brewfile update to latest used tools --- Brewfile | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Brewfile b/Brewfile index 576552a4..771a046b 100644 --- a/Brewfile +++ b/Brewfile @@ -1,6 +1,6 @@ tap "cjbassi/gotop" # https://github.com/cjbassi/gotop tap "homebrew/bundle" # https://github.com/Homebrew/homebrew-bundle -tap "caskroom/cask" # https://github.com/Homebrew/homebrew-cask +tap "homebrew/cask" # https://github.com/Homebrew/homebrew-cask tap "homebrew/core" tap "homebrew/services" # https://github.com/Homebrew/homebrew-services tap "octo-cli/octo" @@ -123,16 +123,13 @@ cask "xquartz" # Install App Store automation: https://github.com/mas-cli/mas mas "Evernote", id: 406056744 -mas "Things 3", id: 904280696 -mas "Monosnap", id: 540348655 -mas "1Password 6", id: 443987910 +# mas "Things 3", id: 904280696 +# mas "1Password 6", id: 443987910 mas "Moom", id: 419330170 -mas "Monosnap", id: 540348655 -mas "Fantastical 2", id: 975937182 mas "MindNode 5", id: 1289197285 -mas "Gemini 2", id: 1090488118 -mas "Bear", id: 1091189122 +# mas "Gemini 2", id: 1090488118 +# mas "Bear", id: 1091189122 mas "Slack", id: 803453959 -mas "Numbers", id: 409203825 -mas "Pages", id: 409201541 -mas "Keynote", id: 409183694 +# mas "Numbers", id: 409203825 +# mas "Pages", id: 409201541 +# mas "Keynote", id: 409183694 From 81c33bfd2035b442e49e7ba68fc6c0f6f1dc16f8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 26 Jan 2021 14:58:18 +0000 Subject: [PATCH 248/973] Update Git identities. --- git_identities | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/git_identities b/git_identities index c96d5c25..b962944f 100644 --- a/git_identities +++ b/git_identities @@ -7,9 +7,8 @@ email = jim.lawton@gmail.com [work] - ~/git/cmf/* ~/Work/* [personal] - ~/git/* + ~/Personal/* From 1677058c95dd368a0f7ebae4e3336f9d382e1253 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 26 Jan 2021 15:07:24 +0000 Subject: [PATCH 249/973] Update tabnine-vim to 2.10.0. --- vim/bundle/tabnine-vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim index ff38d112..fa891e62 160000 --- a/vim/bundle/tabnine-vim +++ b/vim/bundle/tabnine-vim @@ -1 +1 @@ -Subproject commit ff38d112a02ab598190aeffc96dfa119f06e64fc +Subproject commit fa891e62903501f7eeb2f00f6574ec9684e1c4ee From 47048a20bb770d9ee98b3cf8fdee40e418d2fc69 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 26 Jan 2021 15:09:01 +0000 Subject: [PATCH 250/973] Update submodules. --- autoenv | 2 +- icdiff | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-easymotion | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-liquid | 2 +- vim/bundle/vim-markdown | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/autoenv b/autoenv index 17b94df4..132ae98c 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit 17b94df45d7407c2c0bf7843e7336c97f13fc331 +Subproject commit 132ae98cd581100292281358c0fa217d2f8e5171 diff --git a/icdiff b/icdiff index 408a1b94..2f114666 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 408a1b94da46921710f145209250b33c190a912e +Subproject commit 2f114666cfd550be44e35189f96c26d7efec0ae5 diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 1a5b41a0..ea7a889b 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 1a5b41a07e2d49c7f639ab437cd7f3c68a5cc1ad +Subproject commit ea7a889bda2849ba87fc12053bf6dd14467d7b72 diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion index dd7b4b52..d75d9591 160000 --- a/vim/bundle/vim-easymotion +++ b/vim/bundle/vim-easymotion @@ -1 +1 @@ -Subproject commit dd7b4b526775bc8553e16bc402020573b04a948c +Subproject commit d75d9591e415652b25d9e0a3669355550325263d diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 85e2c738..8cf0cf5b 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 85e2c73830b6bb01ce7fc3a926d2b25836a253eb +Subproject commit 8cf0cf5bfb2b858faecf4e0f6c1b8d0948805e5e diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid index 9ebc192d..94bd2ea1 160000 --- a/vim/bundle/vim-liquid +++ b/vim/bundle/vim-liquid @@ -1 +1 @@ -Subproject commit 9ebc192daec70e620c22d574b5a1c1e16f89a48c +Subproject commit 94bd2ea1fd45cf0a21edc3433231e7fcb7791323 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index 296eeaa8..276524ed 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit 296eeaa8877528fae45e89a9013c5a8d317deef1 +Subproject commit 276524ed9c8aec415d3c6dbeec7c05fbd31c95ce From 095119c21dd7861597b84eef8462ff13a6b2c7ae Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 26 Jan 2021 15:10:41 +0000 Subject: [PATCH 251/973] Update Brewfile. --- Brewfile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index f86c93a6..8cb6ffdd 100644 --- a/Brewfile +++ b/Brewfile @@ -1,3 +1,4 @@ +tap "bufbuild/buf" tap "chef/chef" tap "coretech/terrafile" tap "d12frosted/emacs-plus" @@ -73,6 +74,7 @@ brew "sdl2" brew "tesseract" brew "x265" brew "xvid" +brew "zeromq" brew "ffmpeg" brew "flake8" brew "fzf" @@ -89,17 +91,19 @@ brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" +brew "gopls" brew "netpbm" brew "gts" brew "graphviz" +brew "grpcurl" brew "grunt-completion" +brew "htop" brew "httpie" brew "hub" brew "id3lib" brew "id3v2" brew "infracost" brew "iproute2mac" -brew "zeromq" brew "ipython" brew "jfrog-cli" brew "oniguruma" @@ -108,6 +112,7 @@ brew "jsonlint" brew "pandoc" brew "jupyterlab" brew "lastpass-cli" +brew "lftp" brew "libcaca" brew "libressl" brew "libusb-compat" @@ -122,6 +127,7 @@ brew "mosh" brew "mplayer" brew "mtr" brew "mypy" +brew "ncftp" brew "ocrad" brew "openapi-generator" brew "openconnect" @@ -150,6 +156,7 @@ brew "qt" brew "rake-completion" brew "repo" brew "ripgrep" +brew "rlwrap" brew "ruby" brew "rust" brew "semgrep" @@ -174,9 +181,11 @@ brew "vault-cli" brew "vim" brew "wget" brew "xpdf" +brew "yaegi" brew "youtube-dl" brew "zoxide" brew "zsh" +brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" brew "nvie/tap/git-toolbelt" @@ -194,7 +203,6 @@ cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" cask "mactex" -cask "meld" cask "openconnect-gui" cask "rectangle" cask "staruml" From 10d67c7d2eeb1fc6e19662304ca88c526b46254e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 28 Jan 2021 15:07:40 +0000 Subject: [PATCH 252/973] Restore zsh setup files. --- zprofile | 21 +++++++++++++++++++++ zsh_history | 1 + zshenv | 2 ++ 3 files changed, 24 insertions(+) create mode 100644 zprofile create mode 100644 zsh_history create mode 100644 zshenv diff --git a/zprofile b/zprofile new file mode 100644 index 00000000..f9bfce3f --- /dev/null +++ b/zprofile @@ -0,0 +1,21 @@ +############################################################################## +# Import the shell-agnostic (Bash or Zsh) environment config +############################################################################## +source ~/.profile + +############################################################################## +# ZShell History Configuration +############################################################################## +HISTSIZE=5000 #How many lines of history to keep in memory +HISTFILE=~/.zsh_history #Where to save history to disk +SAVEHIST=5000 #Number of history entries to save to disk +HISTDUP=erase #Erase duplicates in the history file +setopt appendhistory #Append history to the history file (no overwriting) +setopt sharehistory #Share history across terminals +setopt incappendhistory #Immediately append to the history file, not just when a term is killed + +############################################################################## +# rupa/z setup (path frecency with tab completion) +############################################################################## +source ~/.dotfiles/z-rupa/z.sh + diff --git a/zsh_history b/zsh_history new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/zsh_history @@ -0,0 +1 @@ + diff --git a/zshenv b/zshenv new file mode 100644 index 00000000..cf6e8f90 --- /dev/null +++ b/zshenv @@ -0,0 +1,2 @@ +fpath=($fpath $HOME/.zsh/func) +typeset -U fpath \ No newline at end of file From c7199ec1ea1b20e22d3f7f6167de8ea868c76e96 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 28 Jan 2021 15:10:23 +0000 Subject: [PATCH 253/973] Update zprofile. --- zprofile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/zprofile b/zprofile index f9bfce3f..43c29071 100644 --- a/zprofile +++ b/zprofile @@ -6,16 +6,16 @@ source ~/.profile ############################################################################## # ZShell History Configuration ############################################################################## -HISTSIZE=5000 #How many lines of history to keep in memory -HISTFILE=~/.zsh_history #Where to save history to disk -SAVEHIST=5000 #Number of history entries to save to disk -HISTDUP=erase #Erase duplicates in the history file -setopt appendhistory #Append history to the history file (no overwriting) -setopt sharehistory #Share history across terminals -setopt incappendhistory #Immediately append to the history file, not just when a term is killed +HISTSIZE=50000 # How many lines of history to keep in memory +HISTFILE=~/.zsh_history # Where to save history to disk +SAVEHIST=50000 # Number of history entries to save to disk +HISTDUP=erase # Erase duplicates in the history file +setopt appendhistory # Append history to the history file (no overwriting) +setopt sharehistory # Share history across terminals +setopt incappendhistory # Immediately append to the history file, not just when a term is killed ############################################################################## # rupa/z setup (path frecency with tab completion) ############################################################################## -source ~/.dotfiles/z-rupa/z.sh +source ~/dotfiles/z-rupa/z.sh From 7e97e3500fc00b416e270e134825fbf15896bfd6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 28 Jan 2021 15:46:58 +0000 Subject: [PATCH 254/973] Clean up diff/merge tool definitions. --- gitconfig | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/gitconfig b/gitconfig index ae6f5fe9..6001f3e4 100644 --- a/gitconfig +++ b/gitconfig @@ -60,28 +60,44 @@ [rerere] enabled = true +[diff] + algorithm = patience +# renames = true +# tool = araxis +# tool = Kaleidoscope + tool = bcomp + +# This is for skipping diffing files, that you don't want to add to .gitignore. +# https://stackoverflow.com/questions/52623898/how-can-i-skip-some-files-while-taking-git-diff +[diff "nodiff"] + command = /bin/true + [difftool] prompt = false + [difftool "myaraxis"] cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE -[diff] + +[difftool "bcomp"] + trustExitCode = true + cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" + +[merge] # tool = araxis # tool = Kaleidoscope -# renames = true - tool = bc - algorithm = patience -[diff "nodiff"] - command = /bin/true + tool = bcomp + [mergetool] prompt = false keepBackup = false + [mergetool "myaraxis"] cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED -[merge] -# tool = araxis -# tool = Kaleidoscope - tool = bc - bc3 = trustExitCode + +[mergetool "bcomp"] + trustExitCode = true + cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED" + [branch] # Automatically set up pull to be --rebase From 663ffaeb59ff9b1d5a81b0a3649c8bccbaebf7bf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 28 Jan 2021 15:55:00 +0000 Subject: [PATCH 255/973] Move common includes to common profile. --- bash_profile | 15 +++++---------- profile | 9 +++++++++ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/bash_profile b/bash_profile index 27f9faee..8a473565 100644 --- a/bash_profile +++ b/bash_profile @@ -4,18 +4,13 @@ # Bash Interactive Shell Setup ######################################################################## -# Load user-specific personalisation. -source ~/dotfiles/personalisation - -# Load paths and environment variables -source ~/dotfiles/shellvars -source ~/dotfiles/shellfunctions -source ~/dotfiles/shellpaths -source ~/dotfiles/shellaliases -source ~/dotfiles/shellactivities -source ~/dotfiles/bash_colors +############################################################################## +# Import the shell-agnostic (Bash or Zsh) environment config +############################################################################## +source ~/.profile # Load bash options. +source ~/dotfiles/bash_colors source ~/dotfiles/bash_options #PROMPT_COMMAND='history -a' diff --git a/profile b/profile index 8c1486ad..9da33ec2 100644 --- a/profile +++ b/profile @@ -2,4 +2,13 @@ # Generic configuration that applies to all shells ############################################################# +# Load user-specific personalisation. +source ~/dotfiles/personalisation + +# Load paths and environment variables +source ~/dotfiles/shellvars +source ~/dotfiles/shellfunctions +source ~/dotfiles/shellpaths +source ~/dotfiles/shellaliases +source ~/dotfiles/shellactivities From d458996a4fd3554cb803b6a497c47b7f8c0c9a51 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 11:10:01 +0000 Subject: [PATCH 256/973] Remove unnecessary zsh version of setup script. Add zsh config files to list. --- _setupdotfiles.sh | 5 ++-- _setupdotfiles.zsh | 72 ---------------------------------------------- 2 files changed, 3 insertions(+), 74 deletions(-) delete mode 100755 _setupdotfiles.zsh diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index ebd16f8e..b6b74b15 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,6 +1,7 @@ +#!/bin/sh SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles -DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .colordiffrc .colorgccrc .git_identities .gitconfig .gitignore .inputrc .profile .pythonrc .tmux .tmux.conf .vimrc .vim .xxdiffrc" +DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .netrc .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DROPDIRS="bin .pip" MOVE=true SAVEDIR=~/.old @@ -44,7 +45,7 @@ if [ ! -d dotfiles ]; then echo "You need to do:" echo "# cd ~" echo "# git clone --recurse-submodules https://github.com/jimlawton/dotfiles" - echo "# cd dotfile" + echo "# cd dotfiles" echo "# ./_setupdotfiles.sh" exit 1 fi diff --git a/_setupdotfiles.zsh b/_setupdotfiles.zsh deleted file mode 100755 index 1471e5f3..00000000 --- a/_setupdotfiles.zsh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/zsh - -export UNLINK=true - -# SymLink the file, if it doesn't already exist -# 1) Identifies what directory is being worked on. -# 2) Unlinks, any existing file (if requested by option switch). -# 3) Create the new link -function symlinkifne { - echo "WORKING ON: $1" - - # does it exist - if [[ -a $1 ]]; then - echo " WARNING: $1 already exists." - - # If Unlink is requested - if [ "$UNLINK" = "true" ]; then - unlink $1 - echo " Unlinking $1" - - # create the link - export DOTLESS=`echo $1 | sed s/.//` - echo " Symlinking $DOTFILESDIRRELATIVETOHOME/$DOTLESS to $1" - ln -s $DOTFILESDIRRELATIVETOHOME/$DOTLESS $1 - else - echo " SKIPPING $1." - fi - # does not exist - else - # create the link - export DOTLESS=`echo $1 | sed s/.//` - echo " Symlinking $DOTFILESDIRRELATIVETOHOME/$DOTLESS to $1" - ln -s $DOTFILESDIRRELATIVETOHOME/$DOTLESS $1 - fi -} - - -echo "NOTE: This script must be run from the dotfiles repository directory" -echo "Determining paths..." - -echo "HOME = $HOME" - -#export DOTFILESDIRRELATIVETOHOME=$PWD -export DOTFILESDIRRELATIVETOHOME=.dotfiles -echo "DOTFILESDIRRELATIVETOHOME = $DOTFILESDIRRELATIVETOHOME" - -echo "Creating links..." -pushd ~ - -symlinkifne .bash_profile -symlinkifne .bashrc -symlinkifne .Brewfile -symlinkifne .conf -symlinkifne .gemrc -symlinkifne .gitconfig -symlinkifne .gitignore -symlinkifne .netrc -symlinkifne .profile -symlinkifne .rvmrc -symlinkifne .shellactivities -symlinkifne .shellaliases -symlinkifne .shellpaths -symlinkifne .shellvars -symlinkifne .slate -symlinkifne .vimrc -symlinkifne .zlogout -symlinkifne .zprofile -symlinkifne .zshenv -symlinkifne .zshrc -# symlinkifne .vim - -popd From 35318e2e28c9d31cb11a2dc83282c985a60558a5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 12:53:08 +0000 Subject: [PATCH 257/973] Only complain about SAVEDIR if MOVE is true. --- _setupdotfiles.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index b6b74b15..88b9da7c 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -13,8 +13,8 @@ function symlinkifne { if [ -e $target ]; then echo " WARNING: $target already exists!" if [ "$MOVE" = "true" ]; then - echo " Moving $target to ~/.old/" - mv $target ~/.old/ + echo " Moving $target to $SAVEDIR/" + mv $target $SAVEDIR/ dotless=$(echo $1 | sed s/.//) echo " Symlinking $DOTFILESDIR/$dotless to $1" ln -s $DOTFILESDIR/$dotless $target @@ -32,7 +32,7 @@ echo "Setting up..." pushd ~ -if [ -d $SAVEDIR ]; then +if [ "$MOVE" = "true" -a -d $SAVEDIR ]; then echo "$SAVEDIR already exists! Please clean up and try again." echo "This is usesd to save old versions of your configuration files." exit 1 From cd8bac95fe1881fc141d3d2f06333589ede5bbcc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 15:48:30 +0000 Subject: [PATCH 258/973] Change zsh theme. --- zshrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/zshrc b/zshrc index aa8525b9..5f720158 100644 --- a/zshrc +++ b/zshrc @@ -14,7 +14,8 @@ export ZSH=$HOME/dotfiles/oh-my-zsh #export ZSH_THEME="fino" #export ZSH_THEME="takashiyoshida" #export ZSH_THEME="random" -export ZSH_THEME="jnrowe" +#export ZSH_THEME="jnrowe" +export ZSH_THEME="agnoster" # Set to this to use case-sensitive completion export CASE_SENSITIVE="true" From 43d04960090458f36d19db7095e4aa3b4e960cfb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 15:50:54 +0000 Subject: [PATCH 259/973] Update list of oh-my-zsh plugins. --- zshrc | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 5f720158..327b207a 100644 --- a/zshrc +++ b/zshrc @@ -30,7 +30,33 @@ export CASE_SENSITIVE="true" # export DISABLE_AUTO_TITLE="true" # Which plugins would you like to load? (plugins can be found in ~/.dotfiles/oh-my-zsh/plugins/*) -plugins=(git battery brew osx gradle ant compleat dirpersist gem ssh-agent ruby textmate sublime) +plugins=( + aws + battery + # brew + colorize + dirpersist + docker + git + gitignore + golang + iterm2 + osx + pip + pipenv + # pyenv + pylint + python + ripgrep + ssh-agent + sublime + sublime-merge + sudo + terraform + textmate + # virtualenv + # virtualenvwrapper +) source $ZSH/oh-my-zsh.sh From b967a9af8cc73de36ad6e38a0953e372447b3b64 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 15:53:14 +0000 Subject: [PATCH 260/973] Set auto_cd zsh option. Disable rbenv setup. --- zshrc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 327b207a..a767f09a 100644 --- a/zshrc +++ b/zshrc @@ -58,8 +58,10 @@ plugins=( # virtualenvwrapper ) +setopt AUTO_CD + source $ZSH/oh-my-zsh.sh # Load rbenv ruby version selector # https://github.com/rbenv/rbenv#homebrew-on-macos -eval "$(rbenv init -)" +#eval "$(rbenv init -)" From 6bfbb6e4d127f63001604bbbd6046ec04e2f854e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 16:08:44 +0000 Subject: [PATCH 261/973] Remove disabled logout stuff. --- zlogout | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/zlogout b/zlogout index a4f7ddcb..8b137891 100644 --- a/zlogout +++ b/zlogout @@ -1,5 +1 @@ -################################################################## -# Store recent directory stack -# See ~/.dotfiles/oh-my-zsh/plugins/dirspersist.plugin.zsh -################################################################# -# dirpersiststore # No longer needed per https://github.com/atomantic/dotfiles/issues/22 + From b5d3297d65d9aedf27d6dde89640fd3d4782c3f8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 16:22:24 +0000 Subject: [PATCH 262/973] Move auto_cd option to zprofile. --- zprofile | 15 ++++++++------- zshrc | 2 -- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/zprofile b/zprofile index 43c29071..a54a7611 100644 --- a/zprofile +++ b/zprofile @@ -6,13 +6,14 @@ source ~/.profile ############################################################################## # ZShell History Configuration ############################################################################## -HISTSIZE=50000 # How many lines of history to keep in memory -HISTFILE=~/.zsh_history # Where to save history to disk -SAVEHIST=50000 # Number of history entries to save to disk -HISTDUP=erase # Erase duplicates in the history file -setopt appendhistory # Append history to the history file (no overwriting) -setopt sharehistory # Share history across terminals -setopt incappendhistory # Immediately append to the history file, not just when a term is killed +HISTSIZE=50000 # How many lines of history to keep in memory +HISTFILE=~/.zsh_history # Where to save history to disk +SAVEHIST=50000 # Number of history entries to save to disk +HISTDUP=erase # Erase duplicates in the history file +setopt appendhistory # Append history to the history file (no overwriting) +setopt sharehistory # Share history across terminals +setopt incappendhistory # Immediately append to the history file, not just when a term is killed +setopt auto_cd # Automatically cd to a path if specified as a command. ############################################################################## # rupa/z setup (path frecency with tab completion) diff --git a/zshrc b/zshrc index a767f09a..fd9dd851 100644 --- a/zshrc +++ b/zshrc @@ -58,8 +58,6 @@ plugins=( # virtualenvwrapper ) -setopt AUTO_CD - source $ZSH/oh-my-zsh.sh # Load rbenv ruby version selector From 8aa31ecb68d398d97f912795cd88afdf4f6524b4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 17:31:36 +0000 Subject: [PATCH 263/973] Change zsh theme to powerlevel10k. --- zshrc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/zshrc b/zshrc index fd9dd851..5821a454 100644 --- a/zshrc +++ b/zshrc @@ -1,3 +1,10 @@ +# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +fi + ############################################################################## # oh-my-zsh setup ############################################################################## @@ -15,7 +22,11 @@ export ZSH=$HOME/dotfiles/oh-my-zsh #export ZSH_THEME="takashiyoshida" #export ZSH_THEME="random" #export ZSH_THEME="jnrowe" -export ZSH_THEME="agnoster" +#export ZSH_THEME="agnoster" + +# powerlevel10k has to be set separately. See: +# https://github.com/romkatv/powerlevel10k/blob/master/README.md#cannot-make-powerlevel10k-work-with-my-plugin-manager +#export ZSH_THEME="powerline10k" # Set to this to use case-sensitive completion export CASE_SENSITIVE="true" @@ -58,8 +69,13 @@ plugins=( # virtualenvwrapper ) +source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme + source $ZSH/oh-my-zsh.sh # Load rbenv ruby version selector # https://github.com/rbenv/rbenv#homebrew-on-macos #eval "$(rbenv init -)" + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. +[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh From dca8219868c7967fd458c8a772f9c001779f5ff4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 17:34:30 +0000 Subject: [PATCH 264/973] Move powerlevel10k config to dotfiles, and symlink from home. --- _setupdotfiles.sh | 2 +- p10k.zsh | 1678 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1679 insertions(+), 1 deletion(-) create mode 100644 p10k.zsh diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 88b9da7c..65cdcb3a 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,7 +1,7 @@ #!/bin/sh SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles -DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .netrc .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DROPDIRS="bin .pip" MOVE=true SAVEDIR=~/.old diff --git a/p10k.zsh b/p10k.zsh new file mode 100644 index 00000000..5cc19716 --- /dev/null +++ b/p10k.zsh @@ -0,0 +1,1678 @@ +# Generated by Powerlevel10k configuration wizard on 2021-01-29 at 17:05 GMT. +# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. +# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads, +# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with powerline prompt style with colorful background. +# Type `p10k configure` to generate your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + autoload -Uz is-at-least && is-at-least 5.1 || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # os_icon # os identifier + dir # current directory + vcs # git status + # prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + status # exit code of the last command + command_execution_time # duration of the last command + background_jobs # presence of background jobs + direnv # direnv status (https://direnv.net/) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) + anaconda # conda environment (https://conda.io/) + pyenv # python environment (https://github.com/pyenv/pyenv) + goenv # go environment (https://github.com/syndbg/goenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) + terraform # terraform workspace (https://www.terraform.io) + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + context # user@hostname + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + nnn # nnn shell (https://github.com/jarun/nnn) + vim_shell # vim shell indicator (:sh) + midnight_commander # midnight commander shell (https://midnight-commander.org/) + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + vi_mode # vi mode (you don't need this if you've enabled prompt_char) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap + todo # todo items (https://github.com/todotxt/todo.txt-cli) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + # time # current time + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=powerline + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=none + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT= + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false + + # Connect left prompt lines with these symbols. You'll probably want to use the same color + # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─' + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯' + + # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or + # '─'. The last two make it easier to see the alignment between left and right prompt and to + # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false + # for more compact prompt if using using this option. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND= + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE + # ornaments defined above. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + # Separator between same-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1' + # Separator between same-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3' + # Separator between different-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' + # Separator between different-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' + # The right end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' + # The left end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + # Left prompt terminator for lines without any segments. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=232 + typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=7 + # Custom icon. + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' + + ################################[ prompt_char: prompt symbol ]################################ + # Transparent background. + typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # No surrounding whitespace. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= + + ##################################[ dir: current directory ]################################## + # Current directory background color. + typeset -g POWERLEVEL9K_DIR_BACKGROUND=4 + # Default current directory foreground color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=254 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255 + # Display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-version + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":" where is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # The default icon shown next to non-writable and non-existent directories when + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. + typeset -g POWERLEVEL9K_LOCK_ICON='∅' + + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different + # directories. It must be an array with 3 * N elements. Each triplet consists of: + # + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with + # extended_glob option enabled. + # 2. Directory class for the purpose of styling. + # 3. An empty string. + # + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. + # + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=( + # '~/work(|/*)' WORK '' + # '~(|/*)' HOME '' + # '*' DEFAULT '') + # + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or + # WORK_NON_EXISTENT. + # + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an + # option to define custom colors and icons for different directory classes. + # + # # Styling for WORK. + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255 + # + # # Styling for WORK_NOT_WRITABLE. + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255 + # + # # Styling for WORK_NON_EXISTENT. + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255 + # + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls + # back to POWERLEVEL9K_DIR_FOREGROUND. + # + typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # Custom prefix. + # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' + + #####################################[ vcs: git status ]###################################### + # Version control system colors. + typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2 + typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2 + typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3 + typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 + + # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= + + # Untracked files icon. It's really a question mark, your font isn't broken. + # Change the value of this parameter to show a different icon. + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + + # Formatter for Git status. + # + # Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # + # You can edit the function to customize how Git status looks. + # + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + function my_git_formatter() { + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. + typeset -g my_git_format=$P9K_CONTENT + return + fi + + # Styling for different parts of Git status. + local meta='%7F' # white foreground + local clean='%0F' # black foreground + local modified='%0F' # black foreground + local untracked='%0F' # black foreground + local conflicted='%1F' # red foreground + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_LOCAL_BRANCH ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + + typeset -g my_git_format=$res + } + functions -M my_git_formatter 2>/dev/null + + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with + # more than this many files in the index. Negative value means infinity. + # + # If you are working in Git repositories with tens of millions of files and seeing performance + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's + # config: `git config bash.showDirtyState false`. + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 + + # Don't show Git status in prompt for repositories whose workdir matches this pattern. + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' + + # Disable the default Git status formatting. + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true + # Install our own Git status formatter. + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}' + # Enable counters for staged, unstaged, etc. + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 + + # Custom icon. + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= + # Custom prefix. + # typeset -g POWERLEVEL9K_VCS_PREFIX='on ' + + # Show status of repositories of these types. You can add svn and/or hg if you are + # using them. If you do, your prompt may become slow even when your current directory + # isn't in an svn or hg reposotiry. + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + + ##########################[ status: exit code of the last command ]########################### + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and + # style them independently from the regular OK and ERROR state. + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true + + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as + # it will signify success by turning green. + typeset -g POWERLEVEL9K_STATUS_OK=true + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2 + typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0 + + # Status when some part of a pipe command fails but the overall exit status is zero. It may look + # like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0 + + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as + # it will signify error by turning red. + typeset -g POWERLEVEL9K_STATUS_ERROR=true + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1 + + # Status when the last command was terminated by a signal. + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true + # Use terse signal names: "INT" instead of "SIGINT(2)". + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1 + + # Status when some part of a pipe command fails and the overall exit status is also non-zero. + # It may look like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1 + + ###################[ command_execution_time: duration of the last command ]################### + # Execution time color. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3 + # Show duration of the last command if takes at least this many seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 + # Show this many fractional digits. Zero means round to seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + # Duration format: 1d 2h 3m 4s. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + # Custom icon. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= + # Custom prefix. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took ' + + #######################[ background_jobs: presence of background jobs ]####################### + # Background jobs color. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0 + # Don't show the number of background jobs. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + # Custom icon. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡' + + #######################[ direnv: direnv status (https://direnv.net/) ]######################## + # Direnv color. + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=3 + typeset -g POWERLEVEL9K_DIRENV_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### + # Default asdf color. Only used to display tools for which there is no color override (see below). + # Tip: Override these parameters for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND and + # POWERLEVEL9K_ASDF_${TOOL}_BACKGROUND. + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_BACKGROUND=7 + + # There are four parameters that can be used to hide asdf tools. Each parameter describes + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to + # hide a tool, it gets shown. + # + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: + # + # asdf local python 3.8.1 + # asdf global python 3.8.1 + # + # After running both commands the current python version is 3.8.1 and its source is "local" as + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, + # it'll hide python version in this case because 3.8.1 is the same as the global version. + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't + # contain "local". + + # Hide tool versions that don't come from one of these sources. + # + # Available sources: + # + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" + # - local `asdf current` says "set by /some/not/home/directory/file" + # - global `asdf current` says "set by /home/username/file" + # + # Note: If this parameter is set to (shell local global), it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) + + # If set to false, hide tool versions that are the same as global. + # + # Note: The name of this parameter doesn't reflect its meaning at all. + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false + + # If set to false, hide tool versions that are equal to "system". + # + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true + + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern + # in the current directory, or its parent directory, or its grandparent directory, and so on. + # + # Note: If this parameter is set to empty value, it won't hide tools. + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. + # + # Example: Hide nodejs version when there is no package.json and no *.js files in the current + # directory, in `..`, in `../..` and so on. + # + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= + + # Ruby version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_RUBY_BACKGROUND=1 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Python version from asdf. + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PYTHON_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Go version from asdf. + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_GOLANG_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Node.js version from asdf. + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_NODEJS_BACKGROUND=2 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Rust version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_RUST_BACKGROUND=208 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' + + # .NET Core version from asdf. + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Flutter version from asdf. + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_FLUTTER_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Lua version from asdf. + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_LUA_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Java version from asdf. + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=1 + typeset -g POWERLEVEL9K_ASDF_JAVA_BACKGROUND=7 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Perl version from asdf. + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PERL_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Erlang version from asdf. + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_ERLANG_BACKGROUND=1 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Elixir version from asdf. + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_ELIXIR_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Postgres version from asdf. + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_POSTGRES_BACKGROUND=6 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' + + # PHP version from asdf. + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PHP_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Haskell version from asdf. + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_HASKELL_BACKGROUND=3 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Julia version from asdf. + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_JULIA_BACKGROUND=2 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' + + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### + # NordVPN connection indicator color. + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7 + typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4 + # Hide NordVPN connection indicator when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= + # Custom icon. + typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' + + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## + # Ranger shell color. + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 + typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 + # Custom icon. + typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲' + + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### + # Nnn shell color. + typeset -g POWERLEVEL9K_NNN_FOREGROUND=0 + typeset -g POWERLEVEL9K_NNN_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### + # Vim shell indicator color. + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_VIM_SHELL_BACKGROUND=2 + # Custom icon. + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### + # Midnight Commander shell color. + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=3 + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## + # Nix shell color. + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4 + + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ disk_usage: disk usage ]################################## + # Colors for different levels of disk usage. + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3 + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=0 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=0 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=3 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=7 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=1 + # Thresholds for different levels of disk usage (percentage points). + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false + # Custom icon. + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]########### + # Foreground color. + typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0 + # Text and color for normal (a.k.a. command) vi mode. + typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2 + # Text and color for visual vi mode. + typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL + typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=4 + # Text and color for overtype (a.k.a. overwrite and replace) vi mode. + typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE + typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=3 + # Text and color for insert vi mode. + typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= + typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8 + + ######################################[ ram: free RAM ]####################################### + # RAM color. + typeset -g POWERLEVEL9K_RAM_FOREGROUND=0 + typeset -g POWERLEVEL9K_RAM_BACKGROUND=3 + # Custom icon. + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################################[ swap: used swap ]###################################### + # Swap color. + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=0 + typeset -g POWERLEVEL9K_SWAP_BACKGROUND=3 + # Custom icon. + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ load: CPU load ]###################################### + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. + typeset -g POWERLEVEL9K_LOAD_WHICH=5 + # Load color when load is under 50%. + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2 + # Load color when load is between 50% and 70%. + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3 + # Load color when load is over 70%. + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1 + # Custom icon. + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ + # Todo color. + typeset -g POWERLEVEL9K_TODO_FOREGROUND=0 + typeset -g POWERLEVEL9K_TODO_BACKGROUND=8 + # Hide todo when the total number of tasks is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true + # Hide todo when the number of tasks after filtering is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false + + # Todo format. The following parameters are available within the expansion. + # + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. + # + # These variables correspond to the last line of the output of `todo.sh -p ls`: + # + # TODO: 24 of 42 tasks shown + # + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. + # + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ + # Timewarrior color. + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255 + typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8 + + # If the tracked task is longer than 24 characters, truncate and append "…". + # Tip: To always display tasks without truncation, delete the following parameter. + # Tip: To hide task names and display just the icon when time tracking is enabled, set the + # value of the following parameter to "". + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + + # Custom icon. + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## + # Taskwarrior color. + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=0 + typeset -g POWERLEVEL9K_TASKWARRIOR_BACKGROUND=6 + + # Taskwarrior segment format. The following parameters are available within the expansion. + # + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. + # + # Zero values are represented as empty parameters. + # + # The default format: + # + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' + # + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ context: user@hostname ]################################## + # Context color when running with privileges. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 + typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0 + # Context color in SSH without privileges. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3 + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0 + # Default context color (no privileges, no SSH). + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3 + typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0 + + # Context format when running with privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' + # Context format when in SSH without privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + # Default context format (no privileges, no SSH): user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + + # Don't show context unless running with privileges or in SSH. + # Tip: Remove the next line to always show context. + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='with ' + + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### + # Python virtual environment color. + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4 + # Don't show Python version next to the virtual environment name. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + # If set to "false", won't show virtualenv if pyenv is already shown. + # If set to "if-different", won't show virtualenv if it's the same as pyenv. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + # Separate environment name from Python version only with a space. + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ anaconda: conda environment (https://conda.io/) ]###################### + # Anaconda environment color. + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4 + + # Anaconda segment format. The following parameters are available within the expansion. + # + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). + # + # CONDA_PROMPT_MODIFIER can be configured with the following command: + # + # conda config --set env_prompt '({default_env}) ' + # + # The last argument is a Python format string that can use the following variables: + # + # - prefix The same as CONDA_PREFIX. + # - default_env The same as CONDA_DEFAULT_ENV. + # - name The last segment of CONDA_PREFIX. + # - stacked_env Comma-separated list of names in the environment stack. The first element is + # always the same as default_env. + # + # Note: '({default_env}) ' is the default value of env_prompt. + # + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former + # is empty. + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' + + # Custom icon. + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ + # Pyenv color. + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4 + # Hide python version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) + # If set to false, hide python version if it's the same as global: + # $(pyenv version-name) == $(pyenv global). + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide python version if it's equal to "system". + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true + + # Pyenv segment format. The following parameters are available within the expansion. + # + # - P9K_CONTENT Current pyenv environment (pyenv version-name). + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). + # + # The default format has the following logic: + # + # 1. Display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION" if $P9K_PYENV_PYTHON_VERSION is not + # empty and unequal to $P9K_CONTENT. + # 2. Otherwise display just "$P9K_CONTENT". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ + # Goenv color. + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_GOENV_BACKGROUND=4 + # Hide go version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) + # If set to false, hide go version if it's the same as global: + # $(goenv version-name) == $(goenv global). + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide go version if it's equal to "system". + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## + # Nodenv color. + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0 + # Hide node version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) + # If set to false, hide node version if it's the same as global: + # $(nodenv version-name) == $(nodenv global). + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### + # Nvm color. + typeset -g POWERLEVEL9K_NVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_NVM_BACKGROUND=5 + # Custom icon. + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ + # Nodeenv color. + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0 + # Don't show Node version next to the environment name. + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false + # Separate environment name from Node version only with a space. + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############################[ node_version: node.js version ]############################### + # Node version color. + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=7 + typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2 + # Show node version only when in a directory tree containing package.json. + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ go_version: go version (https://golang.org) ]######################## + # Go version color. + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=255 + typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2 + # Show go version only when in a go project subdirectory. + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## + # Rust version color. + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=0 + typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208 + # Show rust version only when in a rust project subdirectory. + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=7 + typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ php_version: php version (https://www.php.net/) ]###################### + # PHP version color. + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=0 + typeset -g POWERLEVEL9K_PHP_VERSION_BACKGROUND=5 + # Show PHP version only when in a PHP project subdirectory. + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### + # Laravel version color. + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=1 + typeset -g POWERLEVEL9K_LARAVEL_VERSION_BACKGROUND=7 + # Custom icon. + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## + # Rbenv color. + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1 + # Hide ruby version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) + # If set to false, hide ruby version if it's the same as global: + # $(rbenv version-name) == $(rbenv global). + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide ruby version if it's equal to "system". + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ java_version: java version (https://www.java.com/) ]#################### + # Java version color. + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=1 + typeset -g POWERLEVEL9K_JAVA_VERSION_BACKGROUND=7 + # Show java version only when in a java project subdirectory. + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true + # Show brief version. + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false + # Custom icon. + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### + # Package color. + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=0 + typeset -g POWERLEVEL9K_PACKAGE_BACKGROUND=6 + + # Package format. The following parameters are available within the expansion. + # + # - P9K_PACKAGE_NAME The value of `name` field in package.json. + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. + # + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## + # Rvm color. + typeset -g POWERLEVEL9K_RVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_RVM_BACKGROUND=240 + # Don't show @gemset at the end. + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false + # Don't show ruby- at the front. + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ + # Fvm color. + typeset -g POWERLEVEL9K_FVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_FVM_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### + # Lua color. + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_LUAENV_BACKGROUND=4 + # Hide lua version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) + # If set to false, hide lua version if it's the same as global: + # $(luaenv version-name) == $(luaenv global). + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide lua version if it's equal to "system". + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ + # Java color. + typeset -g POWERLEVEL9K_JENV_FOREGROUND=1 + typeset -g POWERLEVEL9K_JENV_BACKGROUND=7 + # Hide java version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) + # If set to false, hide java version if it's the same as global: + # $(jenv version-name) == $(jenv global). + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide java version if it's equal to "system". + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ + # Perl color. + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PLENV_BACKGROUND=4 + # Hide perl version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) + # If set to false, hide perl version if it's the same as global: + # $(plenv version-name) == $(plenv global). + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide perl version if it's equal to "system". + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ + # PHP color. + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PHPENV_BACKGROUND=5 + # Hide php version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) + # If set to false, hide php version if it's the same as global: + # $(phpenv version-name) == $(phpenv global). + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide PHP version if it's equal to "system". + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### + # Scala color. + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_SCALAENV_BACKGROUND=1 + # Hide scala version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) + # If set to false, hide scala version if it's the same as global: + # $(scalaenv version-name) == $(scalaenv global). + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide scala version if it's equal to "system". + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### + # Haskell color. + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=0 + typeset -g POWERLEVEL9K_HASKELL_STACK_BACKGROUND=3 + + # Hide haskell version if it doesn't come from one of these sources. + # + # shell: version is set by STACK_YAML + # local: version is set by stack.yaml up the directory tree + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) + # If set to false, hide haskell version if it's the same as in the implicit global project. + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true + # Custom icon. + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# + # Don't show terraform workspace if it's literally "default". + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current terraform workspace gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current terraform workspace is "project_test", its class is TEST because "project_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=2 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_BACKGROUND=0 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4 + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# + # Show kubecontext only when the the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show kubecontext. + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile' + + # Kubernetes context classes for the purpose of using different colors, icons and expansions with + # different contexts. + # + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current kubernetes context gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current kubernetes context is "deathray-testing/default", its class is TEST + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=0 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○' + + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext + # segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # Within the expansion the following parameters are always available: + # + # - P9K_CONTENT The content that would've been displayed if there was no content + # expansion defined. + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE + # in the output of `kubectl config get-contexts`. If there is no + # namespace, the parameter is set to "default". + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the + # output of `kubectl config get-contexts`. + # + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), + # the following extra parameters are available: + # + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. + # + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=gke + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + # + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=eks + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + # Append the current context's namespace if it's not "default". + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # Custom prefix. + # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at ' + + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# + # Show aws only when the the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show aws. + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current AWS profile gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current AWS profile is "company_test", its class is TEST + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# + # AWS Elastic Beanstalk environment color. + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 + # Custom icon. + typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' + + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## + # Show azure only when the the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show azure. + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + # Azure account name color. + typeset -g POWERLEVEL9K_AZURE_FOREGROUND=7 + typeset -g POWERLEVEL9K_AZURE_BACKGROUND=4 + # Custom icon. + typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' + + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### + # Show gcloud only when the the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show gcloud. + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs' + # Google cloud color. + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7 + typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4 + + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative + # enough. You can use the following parameters in the expansions. Each of them corresponds to the + # output of `gcloud` tool. + # + # Parameter | Source + # -------------------------|-------------------------------------------------------------------- + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. + # + # Obtaining project name requires sending a request to Google servers. This can take a long time + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets + # set and gcloud prompt segment transitions to state COMPLETE. + # + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' + + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name + # this often. Negative value disables periodic polling. In this mode project name is retrieved + # only when the current configuration, account or project id changes. + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 + + # Custom icon. + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# + # Show google_app_cred only when the the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show google_app_cred. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' + + # Google application credentials classes for the purpose of using different colors, icons and + # expansions with different credentials. + # + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first + # element in each pair defines a pattern against which the current kubernetes context gets + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION + # parameters, you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. + # The first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD + # '*:*test*:*' TEST + # '*' DEFAULT) + # + # If your current Google application credentials is "service_account deathray-testing x@y.com", + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD # These values are examples that are unlikely + # '*:*test*:*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_BACKGROUND=4 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # You can use the following parameters in the expansion. Each of them corresponds to one of the + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. + # + # Parameter | JSON key file field + # ---------------------------------+--------------- + # P9K_GOOGLE_APP_CRED_TYPE | type + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + + ###############################[ public_ip: public IP address ]############################### + # Public IP color. + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7 + typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ########################[ vpn_ip: virtual private network indicator ]######################### + # VPN IP color. + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=0 + typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6 + # When on VPN, show just an icon without the IP address. + # Tip: To display the private IP address when on VPN, remove the next line. + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN + # to see the name of the interface. + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*' + # If set to true, show one segment per matching network interface. If set to false, show only + # one segment corresponding to the first matching network interface. + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false + # Custom icon. + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### + # IP color. + typeset -g POWERLEVEL9K_IP_BACKGROUND=4 + typeset -g POWERLEVEL9K_IP_FOREGROUND=0 + # The following parameters are accessible within the expansion: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP' + # Show information for the first network interface whose name matches this regular expression. + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' + # Custom icon. + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #########################[ proxy: system-wide http/https/ftp proxy ]########################## + # Proxy color. + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4 + typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ battery: internal battery ]################################# + # Show battery in red when it's below this level and not connected to power supply. + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=1 + # Show battery in green when it's charging or fully charged. + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2 + # Show battery in yellow when it's discharging. + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 + # Battery pictograms going from low to high level of charge. + typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█') + # Don't show the remaining time to charge/discharge. + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false + typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 + + #####################################[ wifi: wifi speed ]##################################### + # WiFi color. + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=0 + typeset -g POWERLEVEL9K_WIFI_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). + # + # # Wifi colors and icons for different signal strength levels (low to high). + # typeset -g my_wifi_fg=(0 0 0 0 0) # <-- change these values + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values + # + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' + # + # The following parameters are accessible within the expansions: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_WIFI_SSID | service set identifier, a.k.a. network name + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) + + ####################################[ time: current time ]#################################### + # Current time color. + typeset -g POWERLEVEL9K_TIME_FOREGROUND=0 + typeset -g POWERLEVEL9K_TIME_BACKGROUND=7 + # Format for the current time: 09:51:02. See `man 3 strftime`. + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' + # If set to true, time will update when you hit enter. This way prompts for the past + # commands will contain the start times of their commands as opposed to the default + # behavior where they contain the end times of their preceding commands. + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + # Custom icon. + typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= + # Custom prefix. + # typeset -g POWERLEVEL9K_TIME_PREFIX='at ' + + # Example of a user-defined prompt segment. Function prompt_example will be called on every + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and yellow text on red background + # greeting the user. + # + # Type `p10k help segment` for documentation and a more sophisticated example. + function prompt_example() { + p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n' + } + + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job + # is to generate the prompt segment for display in instant prompt. See + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k + # will replay these calls without actually calling instant_prompt_*. It is imperative that + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this + # rule is not observed, the content of instant prompt will be incorrect. + # + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. + function instant_prompt_example() { + # Since prompt_example always makes the same `p10k segment` calls, we can call it from + # instant_prompt_example. This will give us the same `example` prompt segment in the instant + # and regular prompts. + prompt_example + } + + # User-defined prompt segments can be customized the same way as built-in segments. + typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=3 + typeset -g POWERLEVEL9K_EXAMPLE_BACKGROUND=1 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt + # when accepting a command line. Supported values: + # + # - off: Don't change prompt when accepting a command line. + # - always: Trim down prompt when accepting a command line. + # - same-dir: Trim down prompt when accepting a command line unless this is the first command + # typed after changing current working directory. + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + + # Instant prompt mode. + # + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found + # it incompatible with your zsh configuration files. + # - quiet: Enable instant prompt and don't print warnings when detecting console output + # during zsh initialization. Choose this if you've read and understood + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # - verbose: Enable instant prompt and print a warning when detecting console output during + # zsh initialization. Choose this if you've never tried instant prompt, haven't + # seen the warning, or if you are unsure what this all means. + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose + + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you + # really need it. + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + + # If p10k is already loaded, reload configuration. + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. + (( ! $+functions[p10k] )) || p10k reload +} + +# Tell `p10k configure` which file it should overwrite. +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' From 84bf0a4f3e301098966f3be745b0cac18693b0d9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 18:30:26 +0000 Subject: [PATCH 265/973] Move shell option config to zshrc. --- zprofile | 12 ------------ zshrc | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/zprofile b/zprofile index a54a7611..f2eef1e6 100644 --- a/zprofile +++ b/zprofile @@ -3,18 +3,6 @@ ############################################################################## source ~/.profile -############################################################################## -# ZShell History Configuration -############################################################################## -HISTSIZE=50000 # How many lines of history to keep in memory -HISTFILE=~/.zsh_history # Where to save history to disk -SAVEHIST=50000 # Number of history entries to save to disk -HISTDUP=erase # Erase duplicates in the history file -setopt appendhistory # Append history to the history file (no overwriting) -setopt sharehistory # Share history across terminals -setopt incappendhistory # Immediately append to the history file, not just when a term is killed -setopt auto_cd # Automatically cd to a path if specified as a command. - ############################################################################## # rupa/z setup (path frecency with tab completion) ############################################################################## diff --git a/zshrc b/zshrc index 5821a454..383d75b0 100644 --- a/zshrc +++ b/zshrc @@ -1,3 +1,32 @@ +# Interactive shell configuration. + +############################################################################## +# ZShell History Configuration +############################################################################## +HISTFILE=~/.zsh_history # Where to save history to disk +HISTSIZE=50000 # How many lines of history to keep in memory +SAVEHIST=500000 # Number of history entries to save to disk + +HISTDUP=erase # Erase duplicates in the history file + +setopt APPEND_HISTORY # Append history to the history file (no overwriting) +setopt SHARE_HISTORY # Share history between all sessions. +setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. +setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. +setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. +setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. + +setopt BANG_HIST # Treat the '!' character specially during expansion. +#setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. +#setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. +#setopt HIST_FIND_NO_DUPS # Do not display a line previously found. +#setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. +#setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. +#setopt HIST_VERIFY # Don't execute immediately upon history expansion. +#setopt HIST_BEEP # Beep when accessing nonexistent history. + +setopt AUTO_CD # Automatically cd to a path if specified as a command. + # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. # Initialization code that may require console input (password prompts, [y/n] # confirmations, etc.) must go above this block; everything else may go below. From ef6d02ec2517515334e2c5403357ae71cc174815 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 18:32:27 +0000 Subject: [PATCH 266/973] Update Brewfile. --- Brewfile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Brewfile b/Brewfile index 8cb6ffdd..493bf851 100644 --- a/Brewfile +++ b/Brewfile @@ -13,6 +13,7 @@ tap "homebrew/core" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" +tap "romkatv/powerlevel10k" tap "sachaos/todoist" brew "a2ps" brew "adr-tools" @@ -140,6 +141,7 @@ brew "percol" brew "pip-completion" brew "pipenv" brew "plantuml" +brew "powerline-go" brew "pre-commit" brew "progress" brew "protoc-gen-go" @@ -154,6 +156,7 @@ brew "pygments" brew "python@2", link: false brew "qt" brew "rake-completion" +brew "rbenv" brew "repo" brew "ripgrep" brew "rlwrap" @@ -168,6 +171,7 @@ brew "sphinx-doc" brew "ssh-copy-id", link: true brew "sshuttle" brew "starship" +brew "subversion" brew "terminal-notifier" brew "terraform-docs" brew "tfenv" @@ -189,6 +193,7 @@ brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" brew "nvie/tap/git-toolbelt" +brew "romkatv/powerlevel10k/powerlevel10k" brew "sachaos/todoist/todoist" cask "atom" cask "atom-beta" @@ -196,7 +201,26 @@ cask "aws-vault" cask "cakebrew" cask "docker-toolbox" cask "emacs" +cask "font-anonymice-powerline" +cask "font-consolas-for-powerline" +cask "font-dejavu-sans-mono-for-powerline" +cask "font-droid-sans-mono-for-powerline" +cask "font-fira-mono-for-powerline" +cask "font-inconsolata-dz-for-powerline" +cask "font-inconsolata-for-powerline" +cask "font-inconsolata-for-powerline-bold" +cask "font-inconsolata-g-for-powerline" cask "font-juliamono" +cask "font-liberation-mono-for-powerline" +cask "font-menlo-for-powerline" +cask "font-meslo-for-powerline" +cask "font-monofur-for-powerline" +cask "font-noto-mono-for-powerline" +cask "font-powerline-symbols" +cask "font-roboto-mono-for-powerline" +cask "font-sf-mono-for-powerline" +cask "font-source-code-pro-for-powerline" +cask "font-ubuntu-mono-derivative-powerline" cask "inspec" cask "java" cask "jupyter-notebook-ql" @@ -208,6 +232,7 @@ cask "rectangle" cask "staruml" cask "sublime-merge-dev" cask "sublime-text-dev" +cask "textmate" cask "vagrant" cask "virtualbox" cask "vlc" From 71957dc76df132f99b5e5e6ef72347de0e194773 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 19:41:06 +0000 Subject: [PATCH 267/973] More zsh history config. --- zshrc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/zshrc b/zshrc index 383d75b0..be645188 100644 --- a/zshrc +++ b/zshrc @@ -3,23 +3,25 @@ ############################################################################## # ZShell History Configuration ############################################################################## -HISTFILE=~/.zsh_history # Where to save history to disk -HISTSIZE=50000 # How many lines of history to keep in memory -SAVEHIST=500000 # Number of history entries to save to disk - -HISTDUP=erase # Erase duplicates in the history file +export HISTFILE=~/.zsh_history # Where to save history to disk +export HISTFILESIZE=1000000000 +export HISTSIZE=1000000000 # How many lines of history to keep in memory +export SAVEHIST=1000000000 # Number of history entries to save to disk +export HISTTIMEFORMAT="[%F %T] " +export HIST_STAMPS="+%Y-%m-%d %H:%M:%S" +export HISTDUP=erase # Erase duplicates in the history file setopt APPEND_HISTORY # Append history to the history file (no overwriting) setopt SHARE_HISTORY # Share history between all sessions. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. +setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. - +setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt BANG_HIST # Treat the '!' character specially during expansion. -#setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. + #setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. -#setopt HIST_FIND_NO_DUPS # Do not display a line previously found. #setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. #setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. #setopt HIST_VERIFY # Don't execute immediately upon history expansion. From 4cb1e992f68667c335f798c65730ef5f8ea85a32 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 29 Jan 2021 21:38:57 +0000 Subject: [PATCH 268/973] .inputrc equivalent settings for zsh. --- zshrc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/zshrc b/zshrc index be645188..d9e046a7 100644 --- a/zshrc +++ b/zshrc @@ -36,6 +36,21 @@ if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]] source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi +############################################################################## +# Input key bindings. +############################################################################## +#set bell-style none +#set match-hidden-files off +bindkey '\e[A' history-search-backward +bindkey '\e[B' history-search-forward +bindkey '\e[C' forward-char +bindkey '\e[D' backward-char +bindkey '\e[3;5~' backward-kill-word +bindkey '^?' backward-kill-word +bindkey '\e(' kill-word +bindkey '\e[1;5D' backward-word +bindkey '\e[1;5C' forward-word + ############################################################################## # oh-my-zsh setup ############################################################################## From 1a74a0d2e005787219c492ca0442170909833215 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 00:43:31 +0000 Subject: [PATCH 269/973] Script to convert zsh_history to persistent_history format. --- history/zsh_to_persistent_history.py | 148 +++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100755 history/zsh_to_persistent_history.py diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py new file mode 100755 index 00000000..a491f03d --- /dev/null +++ b/history/zsh_to_persistent_history.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 + +"""Script to convert ZSH history to my Persistent History format.""" + +# Inspired by Eli Bendersky: +# - http://eli.thegreenplace.net/2013/06/11/keeping-persistent-history-in-bash/ +# - https://github.com/eliben/code-for-blog/blob/master/2016/persistent-history/add-persistent-history.sh +# +# This was done per-entry when using the Bash shell, using the prompt strings. +# On moving to zsh and oh-my-zsh, this is no longer feasible. +# zsh stores its history in a particular format in ~/.zsh_history: +# +# : 1612182922:0;git st +# : 1612201796:0;history | tail +# : 1612201819:0;tail ~/.zsh_history +# +# The first integer is time since epoch, the second is runtime, the remainder of the line after ';' +# is the command line. + +import argparse +import sys +import os +import socket +import datetime +# from shutil import copyfile +import re + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + "-O", + "--overwrite", + action="store_true", + dest="overwrite", + help="Overwrite the output file, if it already exists.", + ) + parser.add_argument( + "-s", + "--sort", + action="store_true", + dest="sort", + help="Sort the output, in ascending time order.", + ) + parser.add_argument( + "-i", + "--infile", + type=str, + metavar="FILE", + default="~/.persistent_history", + help="Input persistent history file", + ) + parser.add_argument( + "-o", + "--outfile", + type=str, + metavar="FILE", + default="~/.persistent_history.new", + help="Output persistent history file", + ) + parser.add_argument( + "-z", + "--zfile", + type=str, + metavar="FILE", + default="~/.zsh_history", + help="Input zsh history file", + ) + parser.add_argument( + "-e", + "--extra-file", + type=str, + dest="extra_file", + metavar="FILE", + help="Extra input persistent history file", + ) + args = parser.parse_args() + + args.infile = os.path.expanduser(args.infile) + print(f"Input persistent history: {args.infile}") + args.zfile = os.path.expanduser(args.zfile) + print(f"Input ZSH history: {args.zfile}") + args.outfile = os.path.expanduser(args.outfile) + print(f"Output persistent history: {args.outfile}") + + for filename in (args.infile, args.zfile): + if not os.path.exists(filename): + sys.exit( + f"Error: input history file {filename} does not exist!" + ) + if os.path.exists(args.outfile) and not args.overwrite: + sys.exit( + f"Error: output persistent history file {args.outfile} already exists!" + ) + + # Read input ZSH history file. + with open(args.zfile, 'r') as f: + zdata = f.readlines() + + hostname = socket.gethostname() + user = os.getenv("USER") + usernames = os.getenv("_USERNAMES") + if usernames is None: + usernames = [user] + else: + usernames = usernames.split() + usernames.append(user) + usernames = list(set(usernames)) + + # Regexes to find occurrences of usernames not in paths. + user_regexes = [f".*[^/]{user}[^/].*" for user in usernames] + combined_regex = "(" + ")|(".join(user_regexes) + ")" + + # Read input ZSH history file. + with open(args.infile, 'r') as f: + histdata = f.readlines() + + for line in zdata: + if not line.startswith(':') or ';' not in line: + continue + timestamp = int(line.split(':')[1].strip()) + time = datetime.datetime.fromtimestamp(timestamp) + # duration = line.split(':')[2].strip().split(';')[0] + cmd = line.split(';')[1].strip() + # Remove any potential creds + if "API_KEY" in cmd or "PASSWORD" in cmd: + print(f"Skipping {cmd}") + continue + if re.match(combined_regex, cmd): + print(f"Skipping {cmd}") + continue + histdata.append(f"{hostname} | {time} | {cmd}\n") + + extra_data = [] + if args.extra_file: + with open(args.extra_file, 'r') as f: + extra_data = f.readlines() + histdata.extend(extra_data) + + # Sort by the date field, ascending. + histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) + + with open(args.outfile, 'w') as f: + f.write(''.join(histdata)) + + +if __name__ == "__main__": + main() From 1b2f775bd29d98be64fd3164efd0717771619fb4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 10:43:31 +0000 Subject: [PATCH 270/973] Enable zsh-autosuggestions module. --- zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/zshrc b/zshrc index d9e046a7..352fe35a 100644 --- a/zshrc +++ b/zshrc @@ -113,6 +113,7 @@ plugins=( textmate # virtualenv # virtualenvwrapper + zsh-autosuggestions ) source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme From 68773e43fc9c147b66b6a89401b7e4766b526cc7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 10:48:50 +0000 Subject: [PATCH 271/973] Use brew zsh-autosuggestions install. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 352fe35a..d5fa9372 100644 --- a/zshrc +++ b/zshrc @@ -113,10 +113,10 @@ plugins=( textmate # virtualenv # virtualenvwrapper - zsh-autosuggestions ) source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme +source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh source $ZSH/oh-my-zsh.sh From 468206ea4f636ebe94b587ae73ccd5bf4a56bbf7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 14:38:08 +0000 Subject: [PATCH 272/973] Fix z-rupa path. --- zprofile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zprofile b/zprofile index f2eef1e6..4fc9027f 100644 --- a/zprofile +++ b/zprofile @@ -6,5 +6,5 @@ source ~/.profile ############################################################################## # rupa/z setup (path frecency with tab completion) ############################################################################## -source ~/dotfiles/z-rupa/z.sh +source ~/dotfiles/z/z.sh From 86f0a7e66dff244acc86e9b9a1418d3e5437d02e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 14:47:14 +0000 Subject: [PATCH 273/973] Add fast-syntax-highlighting plugin. --- zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/zshrc b/zshrc index d5fa9372..937da0e4 100644 --- a/zshrc +++ b/zshrc @@ -94,6 +94,7 @@ plugins=( colorize dirpersist docker + fast-syntax-highlighting git gitignore golang From 097dc844f293b0fd34b37e5478b359796726b5fc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 16:09:44 +0000 Subject: [PATCH 274/973] Rerun p10k configure. --- p10k.zsh | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index 5cc19716..922f2b9e 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,7 +1,8 @@ -# Generated by Powerlevel10k configuration wizard on 2021-01-29 at 17:05 GMT. +# Generated by Powerlevel10k configuration wizard on 2021-02-02 at 16:08 GMT. # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. -# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads, -# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose. +# Wizard options: awesome-patched + powerline, large icons, rainbow, unicode, +# angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, +# transient_prompt, instant_prompt=verbose. # Type `p10k configure` to generate another config. # # Config for Powerlevel10k with powerline prompt style with colorful background. @@ -30,7 +31,7 @@ # The list of segments shown on the left. Fill it with the most important segments. typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( - # os_icon # os identifier + os_icon # os identifier dir # current directory vcs # git status # prompt_char # prompt symbol @@ -103,10 +104,10 @@ ) # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. - typeset -g POWERLEVEL9K_MODE=powerline + typeset -g POWERLEVEL9K_MODE=awesome-patched # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. - typeset -g POWERLEVEL9K_ICON_PADDING=none + typeset -g POWERLEVEL9K_ICON_PADDING=moderate # When set to true, icons appear before content on both sides of the prompt. When set # to false, icons go after content. If empty or not set, icons go before content in the left @@ -280,7 +281,7 @@ # The default icon shown next to non-writable and non-existent directories when # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. - typeset -g POWERLEVEL9K_LOCK_ICON='∅' + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different # directories. It must be an array with 3 * N elements. Each triplet consists of: @@ -334,7 +335,7 @@ # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls # back to POWERLEVEL9K_DIR_FOREGROUND. # - typeset -g POWERLEVEL9K_DIR_CLASSES=() + # typeset -g POWERLEVEL9K_DIR_CLASSES=() # Custom prefix. # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' @@ -348,7 +349,7 @@ typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. - typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uE220 ' # Untracked files icon. It's really a question mark, your font isn't broken. # Change the value of this parameter to show a different icon. @@ -470,7 +471,7 @@ typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 # Custom icon. - typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= + # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' # Custom prefix. # typeset -g POWERLEVEL9K_VCS_PREFIX='on ' @@ -531,7 +532,7 @@ # Duration format: 1d 2h 3m 4s. typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' # Custom icon. - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' # Custom prefix. # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took ' @@ -542,7 +543,7 @@ # Don't show the number of background jobs. typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false # Custom icon. - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡' + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' #######################[ direnv: direnv status (https://direnv.net/) ]######################## # Direnv color. @@ -717,14 +718,14 @@ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= # Custom icon. - typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## # Ranger shell color. typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 # Custom icon. - typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲' + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### # Nnn shell color. @@ -918,7 +919,7 @@ # Separate environment name from Python version only with a space. typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= # Custom icon. - # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='🐍' #####################[ anaconda: conda environment (https://conda.io/) ]###################### # Anaconda environment color. @@ -952,7 +953,7 @@ typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' # Custom icon. - # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='🐍' ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ # Pyenv color. @@ -979,7 +980,7 @@ typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}' # Custom icon. - # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='🐍' ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ # Goenv color. @@ -1296,7 +1297,7 @@ '*' DEFAULT) typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○' + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext # segment. Parameter expansions are very flexible and fast, too. See reference: @@ -1388,7 +1389,7 @@ typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 # Custom icon. - typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## # Show azure only when the the command you are typing invokes one of these tools. @@ -1398,7 +1399,7 @@ typeset -g POWERLEVEL9K_AZURE_FOREGROUND=7 typeset -g POWERLEVEL9K_AZURE_BACKGROUND=4 # Custom icon. - typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' + # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐' ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### # Show gcloud only when the the command you are typing invokes one of these tools. @@ -1601,7 +1602,7 @@ # behavior where they contain the end times of their preceding commands. typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false # Custom icon. - typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= + # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' # Custom prefix. # typeset -g POWERLEVEL9K_TIME_PREFIX='at ' From 716e1443b7a660483229e66f911aebeea7d7cf1e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 16:11:08 +0000 Subject: [PATCH 275/973] Remove OS icon from powerline. --- p10k.zsh | 1 - 1 file changed, 1 deletion(-) diff --git a/p10k.zsh b/p10k.zsh index 922f2b9e..62fad8dd 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -31,7 +31,6 @@ # The list of segments shown on the left. Fill it with the most important segments. typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( - os_icon # os identifier dir # current directory vcs # git status # prompt_char # prompt symbol From b1648cba7a995960d4c1bd6e98b7b24f3a1256e0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 18:43:39 +0000 Subject: [PATCH 276/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 493bf851..3686a7f4 100644 --- a/Brewfile +++ b/Brewfile @@ -189,6 +189,7 @@ brew "yaegi" brew "youtube-dl" brew "zoxide" brew "zsh" +brew "zsh-autosuggestions" brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" From 907a262547a87373a50e0a2918bc256feaf0a6c2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:36:23 +0000 Subject: [PATCH 277/973] Check if the extra file exists. --- history/zsh_to_persistent_history.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index a491f03d..d4bace52 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -83,6 +83,16 @@ def main(): args.outfile = os.path.expanduser(args.outfile) print(f"Output persistent history: {args.outfile}") + extra_file = None + if args.extra_file: + extra_file = os.path.expanduser(args.extra_file) + if not os.path.exists(extra_file): + sys.exit( + f"Error: extra history file {extra_file} does not exist!" + ) + extra_file = os.abspath(extra_file) + print(f"Extra ZSH input history file: {extra_file}") + for filename in (args.infile, args.zfile): if not os.path.exists(filename): sys.exit( From cd02afbf15c0a0f9358889fe0547cbae275c9e8c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:37:51 +0000 Subject: [PATCH 278/973] Better checking of file args. --- history/zsh_to_persistent_history.py | 34 ++++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index d4bace52..1a4e6ec4 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -76,12 +76,12 @@ def main(): ) args = parser.parse_args() - args.infile = os.path.expanduser(args.infile) - print(f"Input persistent history: {args.infile}") - args.zfile = os.path.expanduser(args.zfile) - print(f"Input ZSH history: {args.zfile}") - args.outfile = os.path.expanduser(args.outfile) - print(f"Output persistent history: {args.outfile}") + infile = os.path.expanduser(args.infile) + print(f"Input persistent history: {infile}") + zfile = os.path.expanduser(args.zfile) + print(f"Input ZSH history: {zfile}") + outfile = os.path.expanduser(args.outfile) + print(f"Output persistent history: {outfile}") extra_file = None if args.extra_file: @@ -93,18 +93,28 @@ def main(): extra_file = os.abspath(extra_file) print(f"Extra ZSH input history file: {extra_file}") - for filename in (args.infile, args.zfile): + for filename in (infile, zfile): if not os.path.exists(filename): sys.exit( f"Error: input history file {filename} does not exist!" ) if os.path.exists(args.outfile) and not args.overwrite: + real_infile = os.path.realpath(infile) + if not os.path.exists(real_infile): sys.exit( - f"Error: output persistent history file {args.outfile} already exists!" + f"Error: input history file {infile} is a symlink to {real_infile} which does not exist!" ) + print(f"Real input file: {real_infile}") + + real_outfile = os.path.realpath(outfile) + if not os.path.exists(real_outfile): + sys.exit( + f"Error: output history file {outfile} is a symlink to {real_outfile} which does not exist!" + ) + print(f"Real output file: {real_outfile}") # Read input ZSH history file. - with open(args.zfile, 'r') as f: + with open(zfile, 'r') as f: zdata = f.readlines() hostname = socket.gethostname() @@ -122,7 +132,7 @@ def main(): combined_regex = "(" + ")|(".join(user_regexes) + ")" # Read input ZSH history file. - with open(args.infile, 'r') as f: + with open(infile, 'r') as f: histdata = f.readlines() for line in zdata: @@ -142,8 +152,8 @@ def main(): histdata.append(f"{hostname} | {time} | {cmd}\n") extra_data = [] - if args.extra_file: - with open(args.extra_file, 'r') as f: + if extra_file: + with open(extra_file, 'r') as f: extra_data = f.readlines() histdata.extend(extra_data) From 47b1a26da7ce35a03d6f6f45bb60da972e55fe30 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:38:11 +0000 Subject: [PATCH 279/973] Remove duplicate history records. --- history/zsh_to_persistent_history.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 1a4e6ec4..f7985f25 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -157,6 +157,9 @@ def main(): extra_data = f.readlines() histdata.extend(extra_data) + # uniq the records. + histdata = list(set(histdata)) + # Sort by the date field, ascending. histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) From 15c168b23ac0b0143660ea483a290b074c213c60 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:38:33 +0000 Subject: [PATCH 280/973] Check for input/output to the same file. --- history/zsh_to_persistent_history.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index f7985f25..19057068 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -98,7 +98,13 @@ def main(): sys.exit( f"Error: input history file {filename} does not exist!" ) - if os.path.exists(args.outfile) and not args.overwrite: + + if outfile != infile: + if os.path.exists(outfile) and not args.overwrite: + sys.exit( + f"Error: output persistent history file {outfile} already exists!" + ) + real_infile = os.path.realpath(infile) if not os.path.exists(real_infile): sys.exit( From 853444721f1f8e39e067aa393c949d4ad20ba2f9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:39:32 +0000 Subject: [PATCH 281/973] Always write intermediate file to .new. --- history/zsh_to_persistent_history.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 19057068..8b01365b 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -169,7 +169,10 @@ def main(): # Sort by the date field, ascending. histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) - with open(args.outfile, 'w') as f: + # Save data. + savefilename = f"{real_infile}.new" + print(f"Writing {savefilename} ...") + with open(f"{savefilename}", 'w') as f: f.write(''.join(histdata)) From 409cd8deb0340e400e64eb5c54fa26e3681383bd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:40:11 +0000 Subject: [PATCH 282/973] Use shutil to safely move files in 2 stages, to avoid race conditions. --- history/zsh_to_persistent_history.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 8b01365b..96512f69 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -22,7 +22,7 @@ import os import socket import datetime -# from shutil import copyfile +import shutil import re @@ -175,6 +175,15 @@ def main(): with open(f"{savefilename}", 'w') as f: f.write(''.join(histdata)) + # Now, move the files around. + # - infile -> infile.backup + # - outfile -> infile + if args.overwrite: + print(f"Moving {real_infile} to {real_infile}.backup ...") + shutil.move(real_infile, f"{real_infile}.backup") + print(f"Moving {savefilename} to {real_infile} ...") + shutil.move(savefilename, real_infile) + if __name__ == "__main__": main() From 74ab2ffecca83e34bcf10eeef2e966b94acbf5cb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 2 Feb 2021 21:40:40 +0000 Subject: [PATCH 283/973] Default output file to input file, so script safely overwrites common history file. --- history/zsh_to_persistent_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 96512f69..673f6b3d 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -55,7 +55,7 @@ def main(): "--outfile", type=str, metavar="FILE", - default="~/.persistent_history.new", + default="~/.persistent_history", help="Output persistent history file", ) parser.add_argument( From 011e3eefffd1585d27919674a5eaf62547be9f1d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 14:35:58 +0000 Subject: [PATCH 284/973] Only write files if there has been some change. --- history/zsh_to_persistent_history.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 673f6b3d..311444f0 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -24,6 +24,7 @@ import datetime import shutil import re +import filecmp def main(): @@ -175,14 +176,17 @@ def main(): with open(f"{savefilename}", 'w') as f: f.write(''.join(histdata)) - # Now, move the files around. - # - infile -> infile.backup - # - outfile -> infile - if args.overwrite: - print(f"Moving {real_infile} to {real_infile}.backup ...") - shutil.move(real_infile, f"{real_infile}.backup") - print(f"Moving {savefilename} to {real_infile} ...") - shutil.move(savefilename, real_infile) + if filecmp.cmp(real_infile, savefilename, shallow=True): + os.remove(savefilename) + else: + # Now, move the files around. + # - infile -> infile.backup + # - outfile -> infile + if args.overwrite: + print(f"Moving {real_infile} to {real_infile}.backup ...") + shutil.move(real_infile, f"{real_infile}.backup") + print(f"Moving {savefilename} to {real_infile} ...") + shutil.move(savefilename, real_infile) if __name__ == "__main__": From 1e941218eeb8b3859136e07ff7b98f8d7f178848 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 15:52:05 +0000 Subject: [PATCH 285/973] Only update the output file if there is a change. --- history/zsh_to_persistent_history.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 311444f0..b900dba2 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -170,19 +170,20 @@ def main(): # Sort by the date field, ascending. histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) - # Save data. - savefilename = f"{real_infile}.new" - print(f"Writing {savefilename} ...") - with open(f"{savefilename}", 'w') as f: - f.write(''.join(histdata)) - - if filecmp.cmp(real_infile, savefilename, shallow=True): - os.remove(savefilename) - else: - # Now, move the files around. - # - infile -> infile.backup - # - outfile -> infile - if args.overwrite: + if args.overwrite: + # Save data. + savefilename = f"{real_infile}.new" + print(f"Writing {savefilename} ...") + with open(f"{savefilename}", 'w') as f: + f.write(''.join(histdata)) + + if filecmp.cmp(real_infile, savefilename, shallow=True): + print(f"No changes, removing {savefilename} ...") + os.remove(savefilename) + else: + # Now, move the files around. + # - infile -> infile.backup + # - outfile -> infile print(f"Moving {real_infile} to {real_infile}.backup ...") shutil.move(real_infile, f"{real_infile}.backup") print(f"Moving {savefilename} to {real_infile} ...") From bd3f0d128ee5df1f6d0a7b0c9bf68b87740f1d31 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 16:59:22 +0000 Subject: [PATCH 286/973] Change -O/--overwrite to -w/--write. --- history/zsh_to_persistent_history.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index b900dba2..035fae9b 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -30,11 +30,11 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument( - "-O", - "--overwrite", + "-w", + "--write", action="store_true", - dest="overwrite", - help="Overwrite the output file, if it already exists.", + dest="write", + help="Write/overwrite the output file.", ) parser.add_argument( "-s", @@ -101,7 +101,7 @@ def main(): ) if outfile != infile: - if os.path.exists(outfile) and not args.overwrite: + if os.path.exists(outfile) and not args.write: sys.exit( f"Error: output persistent history file {outfile} already exists!" ) @@ -170,7 +170,7 @@ def main(): # Sort by the date field, ascending. histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) - if args.overwrite: + if args.write: # Save data. savefilename = f"{real_infile}.new" print(f"Writing {savefilename} ...") From 4d00ffbf9c93c71bf85ae325142ba631304054c6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 16:59:36 +0000 Subject: [PATCH 287/973] Fix option desc. --- history/zsh_to_persistent_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 035fae9b..7bec3b9d 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -65,7 +65,7 @@ def main(): type=str, metavar="FILE", default="~/.zsh_history", - help="Input zsh history file", + help="Input ZSH history file", ) parser.add_argument( "-e", From 2fc103091a9f2e527ad92bc25fbef6241ab53079 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 16:59:52 +0000 Subject: [PATCH 288/973] Convert hostname to lowercase. --- history/zsh_to_persistent_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 7bec3b9d..2bc73284 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -124,7 +124,7 @@ def main(): with open(zfile, 'r') as f: zdata = f.readlines() - hostname = socket.gethostname() + hostname = socket.gethostname().lower() user = os.getenv("USER") usernames = os.getenv("_USERNAMES") if usernames is None: From 316e0e4c4816b6123eac217560c9acf30f262330 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:00:00 +0000 Subject: [PATCH 289/973] Add comment. --- history/zsh_to_persistent_history.py | 1 + 1 file changed, 1 insertion(+) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 2bc73284..13e92ec4 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -142,6 +142,7 @@ def main(): with open(infile, 'r') as f: histdata = f.readlines() + # Add the ZSH history to persistent history. for line in zdata: if not line.startswith(':') or ';' not in line: continue From de066b434093ce379046174f6e618252859f2405 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:00:12 +0000 Subject: [PATCH 290/973] Stable sort. --- history/zsh_to_persistent_history.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 13e92ec4..54826fc7 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -169,7 +169,8 @@ def main(): histdata = list(set(histdata)) # Sort by the date field, ascending. - histdata = sorted(histdata, key=lambda x: x.split('|')[1].strip()) + # Keep the order of commands at the same time unchanged. + histdata = sorted(histdata, key=lambda x: "".join(x.split('|')[1:])) if args.write: # Save data. From 9347a386863b958ec496e7405a405079ba19532b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:10:48 +0000 Subject: [PATCH 291/973] Remove check, not needed. --- history/zsh_to_persistent_history.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 54826fc7..181ebf7e 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -114,10 +114,6 @@ def main(): print(f"Real input file: {real_infile}") real_outfile = os.path.realpath(outfile) - if not os.path.exists(real_outfile): - sys.exit( - f"Error: output history file {outfile} is a symlink to {real_outfile} which does not exist!" - ) print(f"Real output file: {real_outfile}") # Read input ZSH history file. From f10f19c06bd4e8df51c7707b8fd31c1bcc7df16d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:11:44 +0000 Subject: [PATCH 292/973] Only do the file move dance if outfile == infile, otherwise save direct to outfile. --- history/zsh_to_persistent_history.py | 33 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 181ebf7e..3a204044 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -169,23 +169,30 @@ def main(): histdata = sorted(histdata, key=lambda x: "".join(x.split('|')[1:])) if args.write: - # Save data. - savefilename = f"{real_infile}.new" + + if real_outfile == real_infile: + # Save data to a temporary file. + savefilename = f"{real_infile}.new" + else: + # Save data to output file. + savefilename = f"{real_outfile}" + print(f"Writing {savefilename} ...") with open(f"{savefilename}", 'w') as f: f.write(''.join(histdata)) - if filecmp.cmp(real_infile, savefilename, shallow=True): - print(f"No changes, removing {savefilename} ...") - os.remove(savefilename) - else: - # Now, move the files around. - # - infile -> infile.backup - # - outfile -> infile - print(f"Moving {real_infile} to {real_infile}.backup ...") - shutil.move(real_infile, f"{real_infile}.backup") - print(f"Moving {savefilename} to {real_infile} ...") - shutil.move(savefilename, real_infile) + if real_outfile == real_infile: + if filecmp.cmp(real_infile, savefilename, shallow=True): + print(f"No changes, removing {savefilename} ...") + os.remove(savefilename) + else: + # Now, move the files around. + # - infile -> infile.backup + # - outfile -> infile + print(f"Moving {real_infile} to {real_infile}.backup ...") + shutil.move(real_infile, f"{real_infile}.backup") + print(f"Moving {savefilename} to {real_infile} ...") + shutil.move(savefilename, real_infile) if __name__ == "__main__": From efba1b3c259621d2c13b56cce1863229134eba56 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:27:04 +0000 Subject: [PATCH 293/973] Really make the sort stable by including the whole line in the key, with date as the primary key. --- history/zsh_to_persistent_history.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 3a204044..40c908f0 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -165,8 +165,8 @@ def main(): histdata = list(set(histdata)) # Sort by the date field, ascending. - # Keep the order of commands at the same time unchanged. - histdata = sorted(histdata, key=lambda x: "".join(x.split('|')[1:])) + # Keep the order of records at the same time unchanged. + histdata = sorted(histdata, key=lambda x: "".join([x.split('|')[1], x.split('|')[0], x.split('|')[2]])) if args.write: From 4b8c025abd342d5b5053bfd4a8c05b353062211a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 17:53:53 +0000 Subject: [PATCH 294/973] Add iterm2 zsh shell integration. --- _setupdotfiles.sh | 4 +- iterm2_shell_integration.zsh | 170 +++++++++++++++++++++++++++++++++++ zshrc | 3 + 3 files changed, 175 insertions(+), 2 deletions(-) create mode 100755 iterm2_shell_integration.zsh diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 65cdcb3a..063d6c98 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,9 +1,9 @@ #!/bin/sh SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles -DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DROPDIRS="bin .pip" -MOVE=true +MOVE=false SAVEDIR=~/.old function symlinkifne { diff --git a/iterm2_shell_integration.zsh b/iterm2_shell_integration.zsh new file mode 100755 index 00000000..9ee6e9b0 --- /dev/null +++ b/iterm2_shell_integration.zsh @@ -0,0 +1,170 @@ +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +if [[ -o interactive ]]; then + if [ "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "screen" -a "${ITERM_SHELL_INTEGRATION_INSTALLED-}" = "" -a "$TERM" != linux -a "$TERM" != dumb ]; then + ITERM_SHELL_INTEGRATION_INSTALLED=Yes + ITERM2_SHOULD_DECORATE_PROMPT="1" + # Indicates start of command output. Runs just before command executes. + iterm2_before_cmd_executes() { + printf "\033]133;C;\007" + } + + iterm2_set_user_var() { + printf "\033]1337;SetUserVar=%s=%s\007" "$1" $(printf "%s" "$2" | base64 | tr -d '\n') + } + + # Users can write their own version of this method. It should call + # iterm2_set_user_var but not produce any other output. + # e.g., iterm2_set_user_var currentDirectory $PWD + # Accessible in iTerm2 (in a badge now, elsewhere in the future) as + # \(user.currentDirectory). + whence -v iterm2_print_user_vars > /dev/null 2>&1 + if [ $? -ne 0 ]; then + iterm2_print_user_vars() { + true + } + fi + + iterm2_print_state_data() { + local _iterm2_hostname="${iterm2_hostname-}" + if [ -z "${iterm2_hostname:-}" ]; then + _iterm2_hostname=$(hostname -f 2>/dev/null) + fi + printf "\033]1337;RemoteHost=%s@%s\007" "$USER" "${_iterm2_hostname-}" + printf "\033]1337;CurrentDir=%s\007" "$PWD" + iterm2_print_user_vars + } + + # Report return code of command; runs after command finishes but before prompt + iterm2_after_cmd_executes() { + printf "\033]133;D;%s\007" "$STATUS" + iterm2_print_state_data + } + + # Mark start of prompt + iterm2_prompt_mark() { + printf "\033]133;A\007" + } + + # Mark end of prompt + iterm2_prompt_end() { + printf "\033]133;B\007" + } + + # There are three possible paths in life. + # + # 1) A command is entered at the prompt and you press return. + # The following steps happen: + # * iterm2_preexec is invoked + # * PS1 is set to ITERM2_PRECMD_PS1 + # * ITERM2_SHOULD_DECORATE_PROMPT is set to 1 + # * The command executes (possibly reading or modifying PS1) + # * iterm2_precmd is invoked + # * ITERM2_PRECMD_PS1 is set to PS1 (as modified by command execution) + # * PS1 gets our escape sequences added to it + # * zsh displays your prompt + # * You start entering a command + # + # 2) You press ^C while entering a command at the prompt. + # The following steps happen: + # * (iterm2_preexec is NOT invoked) + # * iterm2_precmd is invoked + # * iterm2_before_cmd_executes is called since we detected that iterm2_preexec was not run + # * (ITERM2_PRECMD_PS1 and PS1 are not messed with, since PS1 already has our escape + # sequences and ITERM2_PRECMD_PS1 already has PS1's original value) + # * zsh displays your prompt + # * You start entering a command + # + # 3) A new shell is born. + # * PS1 has some initial value, either zsh's default or a value set before this script is sourced. + # * iterm2_precmd is invoked + # * ITERM2_SHOULD_DECORATE_PROMPT is initialized to 1 + # * ITERM2_PRECMD_PS1 is set to the initial value of PS1 + # * PS1 gets our escape sequences added to it + # * Your prompt is shown and you may begin entering a command. + # + # Invariants: + # * ITERM2_SHOULD_DECORATE_PROMPT is 1 during and just after command execution, and "" while the prompt is + # shown and until you enter a command and press return. + # * PS1 does not have our escape sequences during command execution + # * After the command executes but before a new one begins, PS1 has escape sequences and + # ITERM2_PRECMD_PS1 has PS1's original value. + iterm2_decorate_prompt() { + # This should be a raw PS1 without iTerm2's stuff. It could be changed during command + # execution. + ITERM2_PRECMD_PS1="$PS1" + ITERM2_SHOULD_DECORATE_PROMPT="" + + # Add our escape sequences just before the prompt is shown. + # Use ITERM2_SQUELCH_MARK for people who can't mdoify PS1 directly, like powerlevel9k users. + # This is gross but I had a heck of a time writing a correct if statetment for zsh 5.0.2. + local PREFIX="" + if [[ $PS1 == *"$(iterm2_prompt_mark)"* ]]; then + PREFIX="" + elif [[ "${ITERM2_SQUELCH_MARK-}" != "" ]]; then + PREFIX="" + else + PREFIX="%{$(iterm2_prompt_mark)%}" + fi + PS1="$PREFIX$PS1%{$(iterm2_prompt_end)%}" + } + + iterm2_precmd() { + local STATUS="$?" + if [ -z "${ITERM2_SHOULD_DECORATE_PROMPT-}" ]; then + # You pressed ^C while entering a command (iterm2_preexec did not run) + iterm2_before_cmd_executes + fi + + iterm2_after_cmd_executes "$STATUS" + + if [ -n "$ITERM2_SHOULD_DECORATE_PROMPT" ]; then + iterm2_decorate_prompt + fi + } + + # This is not run if you press ^C while entering a command. + iterm2_preexec() { + # Set PS1 back to its raw value prior to executing the command. + PS1="$ITERM2_PRECMD_PS1" + ITERM2_SHOULD_DECORATE_PROMPT="1" + iterm2_before_cmd_executes + } + + # If hostname -f is slow on your system set iterm2_hostname prior to + # sourcing this script. We know it is fast on macOS so we don't cache + # it. That lets us handle the hostname changing like when you attach + # to a VPN. + if [ -z "${iterm2_hostname-}" ]; then + if [ "$(uname)" != "Darwin" ]; then + iterm2_hostname=`hostname -f 2>/dev/null` + # Some flavors of BSD (i.e. NetBSD and OpenBSD) don't have the -f option. + if [ $? -ne 0 ]; then + iterm2_hostname=`hostname` + fi + fi + fi + + [[ -z ${precmd_functions-} ]] && precmd_functions=() + precmd_functions=($precmd_functions iterm2_precmd) + + [[ -z ${preexec_functions-} ]] && preexec_functions=() + preexec_functions=($preexec_functions iterm2_preexec) + + iterm2_print_state_data + printf "\033]1337;ShellIntegrationVersion=12;shell=zsh\007" + fi +fi +alias imgcat=${HOME}/.iterm2/imgcat;alias imgls=${HOME}/.iterm2/imgls;alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion diff --git a/zshrc b/zshrc index 937da0e4..90af121f 100644 --- a/zshrc +++ b/zshrc @@ -127,3 +127,6 @@ source $ZSH/oh-my-zsh.sh # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" + From 2acac7a500e4ba1a201384830fd9e2a2bf1deb09 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Feb 2021 18:24:29 +0000 Subject: [PATCH 295/973] Add window title override. --- override_window_title.zsh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 override_window_title.zsh diff --git a/override_window_title.zsh b/override_window_title.zsh new file mode 100644 index 00000000..2a418d4d --- /dev/null +++ b/override_window_title.zsh @@ -0,0 +1,5 @@ +# This overrides ZSH's default window title, to remover user@host. +# In a new setup, symlink to this file from oh-my-zsh/custom/. + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD +ZSH_THEME_TERM_TITLE_IDLE="%~" From 60d47be9902db9e79e235032a9981db888e93606 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Feb 2021 14:43:29 +0000 Subject: [PATCH 296/973] Add support for reading a glob of iTerm2 long-history files. --- history/zsh_to_persistent_history.py | 69 +++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 40c908f0..3ee1ce7f 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -25,6 +25,21 @@ import shutil import re import filecmp +import glob + + +# Skip any potential credentials. +def _skip_line(combined_regex, line): + ret = False + if "API_KEY" in line or "PASSWORD" in line: + ret = True + if "$ARTIFACTORY_API_KEY" in line in line: + ret = False + if re.match(combined_regex, line): + ret = True + if ret: + print(f"Skipping {line}") + return ret def main(): @@ -75,6 +90,14 @@ def main(): metavar="FILE", help="Extra input persistent history file", ) + parser.add_argument( + "-I", + "--iterm-files", + type=str, + dest="iterm_files", + metavar="FILE", + help="Extra input iTerm2 history file(s) - can be wild-carded", + ) args = parser.parse_args() infile = os.path.expanduser(args.infile) @@ -91,9 +114,27 @@ def main(): sys.exit( f"Error: extra history file {extra_file} does not exist!" ) - extra_file = os.abspath(extra_file) + extra_file = os.path.abspath(extra_file) print(f"Extra ZSH input history file: {extra_file}") + iterm_files = [] + if args.iterm_files: + if '*' in args.iterm_files: + print(args.iterm_files) + iterm_file_list = glob.glob(os.path.expanduser(args.iterm_files)) + print(iterm_file_list) + for filepath in iterm_file_list: + iterm_files.append(os.path.abspath(filepath)) + else: + iterm_files = [os.path.abspath(os.path.expanduser(args.iterm_files))] + + for iterm_file in iterm_files: + if not os.path.exists(iterm_file): + sys.exit( + f"Error: extra history file {iterm_file} does not exist!" + ) + print(f"Extra iTerm2 input history file: {iterm_file}") + for filename in (infile, zfile): if not os.path.exists(filename): sys.exit( @@ -146,12 +187,7 @@ def main(): time = datetime.datetime.fromtimestamp(timestamp) # duration = line.split(':')[2].strip().split(';')[0] cmd = line.split(';')[1].strip() - # Remove any potential creds - if "API_KEY" in cmd or "PASSWORD" in cmd: - print(f"Skipping {cmd}") - continue - if re.match(combined_regex, cmd): - print(f"Skipping {cmd}") + if _skip_line(combined_regex, cmd): continue histdata.append(f"{hostname} | {time} | {cmd}\n") @@ -161,6 +197,25 @@ def main(): extra_data = f.readlines() histdata.extend(extra_data) + iterm_data = [] + if iterm_files: + for iterm_file in iterm_files: + print(f"Reading {iterm_file}") + with open(iterm_file, 'r') as f: + iterm_data = f.readlines() + if len(iterm_data) % 2 != 0: + sys.exit(f"Error: input file {iterm_file} does not have an even number of lines!") + it = iter(iterm_data) + for line in it: + if not line.startswith('#'): + continue + timestamp = int(line.split('#')[1].strip()) + time = datetime.datetime.fromtimestamp(timestamp) + cmd = next(it).strip() + if _skip_line(combined_regex, cmd): + continue + histdata.append(f"{hostname} | {time} | {cmd}\n") + # uniq the records. histdata = list(set(histdata)) From e32ff50cdedb3d0ea0e732d14bc65497c3e9c889 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 5 Feb 2021 14:23:00 +0000 Subject: [PATCH 297/973] Enable zsh plugins: brew, virtualenv, virtualenvwrapper. --- zshrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zshrc b/zshrc index 90af121f..fd583ecd 100644 --- a/zshrc +++ b/zshrc @@ -90,7 +90,7 @@ export CASE_SENSITIVE="true" plugins=( aws battery - # brew + brew colorize dirpersist docker @@ -112,8 +112,8 @@ plugins=( sudo terraform textmate - # virtualenv - # virtualenvwrapper + virtualenv + virtualenvwrapper ) source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme From 94e37fcfe9b2480eba6ef27990c0971b2844da8a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 5 Feb 2021 15:59:07 +0000 Subject: [PATCH 298/973] Enable pyenv. --- zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zshrc b/zshrc index fd583ecd..aa4aa255 100644 --- a/zshrc +++ b/zshrc @@ -128,5 +128,7 @@ source $ZSH/oh-my-zsh.sh # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh +eval "$(pyenv init - --no-rehash zsh)" + test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" From 99b46cb79653a0194adc7ee68081db3c16cb32b1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 5 Feb 2021 15:59:37 +0000 Subject: [PATCH 299/973] Add function to setup/upgrade packages in all pyenv versions. --- shellfunctions | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shellfunctions b/shellfunctions index 3b1433ff..360ac4c4 100644 --- a/shellfunctions +++ b/shellfunctions @@ -217,3 +217,12 @@ gpip(){ PIP_REQUIRE_VIRTUALENV="0" pip3 "$@" } +upgrade_pyenvs(){ + for env_ver in $(pyenv versions --bare); do + pyenv shell $env_ver + pyenv version + PIP_REQUIRE_VIRTUALENV="0" pip3 install --upgrade pip gnureadline virtualenv virtualenvwrapper + done + pyenv shell - + pyenv version +} From f6a417401982ff35c328eef6ab519fd7efc96a7b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 5 Feb 2021 16:07:01 +0000 Subject: [PATCH 300/973] Only do pyenv pkg upgrades if pyenv is enabled. Be quiet. --- shellfunctions | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/shellfunctions b/shellfunctions index 360ac4c4..458d3994 100644 --- a/shellfunctions +++ b/shellfunctions @@ -218,11 +218,13 @@ gpip(){ } upgrade_pyenvs(){ - for env_ver in $(pyenv versions --bare); do - pyenv shell $env_ver + if command -v pyenv 1>/dev/null 2>&1; then + for env_ver in $(pyenv versions --bare); do + pyenv shell $env_ver + pyenv version + PIP_REQUIRE_VIRTUALENV="0" pip3 install --quiet --upgrade pip gnureadline virtualenv virtualenvwrapper + done + pyenv shell - pyenv version - PIP_REQUIRE_VIRTUALENV="0" pip3 install --upgrade pip gnureadline virtualenv virtualenvwrapper - done - pyenv shell - - pyenv version + fi } From 6dd3769fbf84c13057f8a52b2b4585ffff595c92 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 5 Feb 2021 17:45:00 +0000 Subject: [PATCH 301/973] Enable makefile target completion. --- zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zshrc b/zshrc index aa4aa255..04157a33 100644 --- a/zshrc +++ b/zshrc @@ -29,6 +29,8 @@ setopt BANG_HIST # Treat the '!' character specially during expa setopt AUTO_CD # Automatically cd to a path if specified as a command. +zstyle ':completion:*:*:make:*' tag-order 'targets' + # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. # Initialization code that may require console input (password prompts, [y/n] # confirmations, etc.) must go above this block; everything else may go below. From 3c9a3fb55feb4d8b2a87935ec79794c022ac5242 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 13:40:44 +0000 Subject: [PATCH 302/973] Comment out linuxbrew, qualify pyenv setup by platform. --- bash_profile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bash_profile b/bash_profile index 8a473565..75b8b65b 100644 --- a/bash_profile +++ b/bash_profile @@ -101,8 +101,14 @@ if isMac; then fi fi -if command -v pyenv 1>/dev/null 2>&1; then +if isMac; then + if command -v pyenv 1>/dev/null 2>&1; then + eval "$(pyenv init -)" + fi +else + export PATH="/home/jim/.pyenv/bin:$PATH" eval "$(pyenv init -)" + eval "$(pyenv virtualenv-init -)" fi export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" @@ -129,3 +135,5 @@ fi if [ -e "/usr/local/bin/bit" ]; then complete -C /usr/local/bin/bit bit fi + +# eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) From 094a48de9e3dc8123b2796f856b3cb19e3664a36 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 13:47:29 +0000 Subject: [PATCH 303/973] Cleaner pyenv init. --- bash_profile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bash_profile b/bash_profile index 75b8b65b..db229385 100644 --- a/bash_profile +++ b/bash_profile @@ -101,14 +101,13 @@ if isMac; then fi fi -if isMac; then - if command -v pyenv 1>/dev/null 2>&1; then +if [ -d "$HOME/.pyenv" ]; then + if ! command -v pyenv 1>/dev/null 2>&1; then + export PATH="$HOME/.pyenv/bin:$PATH" + else eval "$(pyenv init -)" + eval "$(pyenv virtualenv-init -)" fi -else - export PATH="/home/jim/.pyenv/bin:$PATH" - eval "$(pyenv init -)" - eval "$(pyenv virtualenv-init -)" fi export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true" From 6e6ad131235b8e78ebc5e3c106926e47701f6c75 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 17:18:41 +0000 Subject: [PATCH 304/973] Change bang line to bash. Add setup script for misc zsh addons. --- _setup_zsh.sh | 11 +++++++++++ _setupdotfiles.sh | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100755 _setup_zsh.sh diff --git a/_setup_zsh.sh b/_setup_zsh.sh new file mode 100755 index 00000000..664f272d --- /dev/null +++ b/_setup_zsh.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ -d oh-my-zsh ]; then + if [ !-e oh-my-zsh/custom/override_window_title.zsh ]; then + (cd oh-my-zsh/custom; ln -sf ../../override_window_title.zsh) + fi + if [ ! -e oh-my-zsh/custom/plugins/fast-syntax-highlighting ]; then + (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma/fast-syntax-highlighting.git) + fi + echo "Done!" +fi diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 063d6c98..a087a557 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" From 8fdc9b0528d710bed21a053e08f3a0312d15139f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 18:34:35 +0000 Subject: [PATCH 305/973] Add powerlevel10k submodule. --- .gitmodules | 3 +++ powerlevel10k | 1 + 2 files changed, 4 insertions(+) create mode 160000 powerlevel10k diff --git a/.gitmodules b/.gitmodules index 9bc3b3be..37f158a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -70,3 +70,6 @@ [submodule "z"] path = z url = https://github.com/rupa/z +[submodule "powerlevel10k"] + path = powerlevel10k + url = https://github.com/romkatv/powerlevel10k.git diff --git a/powerlevel10k b/powerlevel10k new file mode 160000 index 00000000..b816abfe --- /dev/null +++ b/powerlevel10k @@ -0,0 +1 @@ +Subproject commit b816abfed0e8785d8bc2e47987cc40f6bcd4bc29 From 50aded298dacdb2ef381ba9fd8a0dd272838a156 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 18:39:07 +0000 Subject: [PATCH 306/973] Add zsh-autosuggestions submodule. --- .gitmodules | 3 +++ zsh-autosuggestions | 1 + 2 files changed, 4 insertions(+) create mode 160000 zsh-autosuggestions diff --git a/.gitmodules b/.gitmodules index 37f158a6..f98f0f2f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -73,3 +73,6 @@ [submodule "powerlevel10k"] path = powerlevel10k url = https://github.com/romkatv/powerlevel10k.git +[submodule "zsh-autosuggestions"] + path = zsh-autosuggestions + url = https://github.com/zsh-users/zsh-autosuggestions diff --git a/zsh-autosuggestions b/zsh-autosuggestions new file mode 160000 index 00000000..ae315ded --- /dev/null +++ b/zsh-autosuggestions @@ -0,0 +1 @@ +Subproject commit ae315ded4dba10685dbbafbfa2ff3c1aefeb490d From 9a1d290e94da54c75a650714b575089c358222f9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 18:39:50 +0000 Subject: [PATCH 307/973] Change powerlevel10k and zsh-autosuggestions to use submodules. --- zshrc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/zshrc b/zshrc index 04157a33..2274fbfd 100644 --- a/zshrc +++ b/zshrc @@ -118,9 +118,8 @@ plugins=( virtualenvwrapper ) -source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme -source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh - +source powerlevel10k/powerlevel10k.zsh-theme +source zsh-autosuggestions/zsh-autosuggestions.zsh source $ZSH/oh-my-zsh.sh # Load rbenv ruby version selector From ed3b67619ef8ecb81b5d052db95d9e0152967ee2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 18:55:13 +0000 Subject: [PATCH 308/973] Fix paths. --- zshrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zshrc b/zshrc index 2274fbfd..aa16321e 100644 --- a/zshrc +++ b/zshrc @@ -118,8 +118,8 @@ plugins=( virtualenvwrapper ) -source powerlevel10k/powerlevel10k.zsh-theme -source zsh-autosuggestions/zsh-autosuggestions.zsh +source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme +source $HOME/dotfiles/zsh-autosuggestions/zsh-autosuggestions.zsh source $ZSH/oh-my-zsh.sh # Load rbenv ruby version selector From 0e70ea389c4f8d391af697bec9c69d93ee4a2938 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 19:12:44 +0000 Subject: [PATCH 309/973] Update p10k config for Linux. --- p10k.zsh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index 62fad8dd..b7a95d66 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,6 +1,6 @@ -# Generated by Powerlevel10k configuration wizard on 2021-02-02 at 16:08 GMT. +# Generated by Powerlevel10k configuration wizard on 2021-02-08 at 19:10 GMT. # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. -# Wizard options: awesome-patched + powerline, large icons, rainbow, unicode, +# Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, # angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, # transient_prompt, instant_prompt=verbose. # Type `p10k configure` to generate another config. @@ -103,10 +103,10 @@ ) # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. - typeset -g POWERLEVEL9K_MODE=awesome-patched + typeset -g POWERLEVEL9K_MODE=nerdfont-complete # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. - typeset -g POWERLEVEL9K_ICON_PADDING=moderate + typeset -g POWERLEVEL9K_ICON_PADDING=none # When set to true, icons appear before content on both sides of the prompt. When set # to false, icons go after content. If empty or not set, icons go before content in the left @@ -348,7 +348,7 @@ typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. - typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uE220 ' + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' # Untracked files icon. It's really a question mark, your font isn't broken. # Change the value of this parameter to show a different icon. @@ -918,7 +918,7 @@ # Separate environment name from Python version only with a space. typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= # Custom icon. - typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='🐍' + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' #####################[ anaconda: conda environment (https://conda.io/) ]###################### # Anaconda environment color. @@ -952,7 +952,7 @@ typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' # Custom icon. - typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='🐍' + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ # Pyenv color. @@ -979,7 +979,7 @@ typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}' # Custom icon. - typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='🐍' + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ # Goenv color. @@ -1558,7 +1558,7 @@ # Show battery in yellow when it's discharging. typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 # Battery pictograms going from low to high level of charge. - typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█') + typeset -g POWERLEVEL9K_BATTERY_STAGES='\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578' # Don't show the remaining time to charge/discharge. typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 From 74c98411f58c0522980109893ecc829ea7f36603 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 19:23:04 +0000 Subject: [PATCH 310/973] Add pyenv setup for zsh. --- zshrc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/zshrc b/zshrc index aa16321e..9ae0c339 100644 --- a/zshrc +++ b/zshrc @@ -53,6 +53,18 @@ bindkey '\e(' kill-word bindkey '\e[1;5D' backward-word bindkey '\e[1;5C' forward-word +############################################################################## +# pyenv setup. +############################################################################## +if [ -d "$HOME/.pyenv" ]; then + if ! command -v pyenv 1>/dev/null 2>&1; then + export PATH="$HOME/.pyenv/bin:$PATH" + else + eval "$(pyenv init -)" + eval "$(pyenv virtualenv-init -)" + fi +fi + ############################################################################## # oh-my-zsh setup ############################################################################## From ea5a553f05b50cd3e98955916e42308fb19bd851 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 19:30:22 +0000 Subject: [PATCH 311/973] Comment out duplicate eval. --- zshrc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/zshrc b/zshrc index 9ae0c339..5b645cad 100644 --- a/zshrc +++ b/zshrc @@ -64,6 +64,7 @@ if [ -d "$HOME/.pyenv" ]; then eval "$(pyenv virtualenv-init -)" fi fi +#eval "$(pyenv init - --no-rehash zsh)" ############################################################################## # oh-my-zsh setup @@ -141,7 +142,5 @@ source $ZSH/oh-my-zsh.sh # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh -eval "$(pyenv init - --no-rehash zsh)" - test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" From 050c8926775c88c28bf3a0111254a949373a5b9e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Feb 2021 21:15:19 +0000 Subject: [PATCH 312/973] Move pyenv setup to the end. Some better Linux/Mac handling. --- zshrc | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/zshrc b/zshrc index 5b645cad..80bcfe38 100644 --- a/zshrc +++ b/zshrc @@ -53,19 +53,6 @@ bindkey '\e(' kill-word bindkey '\e[1;5D' backward-word bindkey '\e[1;5C' forward-word -############################################################################## -# pyenv setup. -############################################################################## -if [ -d "$HOME/.pyenv" ]; then - if ! command -v pyenv 1>/dev/null 2>&1; then - export PATH="$HOME/.pyenv/bin:$PATH" - else - eval "$(pyenv init -)" - eval "$(pyenv virtualenv-init -)" - fi -fi -#eval "$(pyenv init - --no-rehash zsh)" - ############################################################################## # oh-my-zsh setup ############################################################################## @@ -142,5 +129,20 @@ source $ZSH/oh-my-zsh.sh # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh +############################################################################## +# pyenv setup. +############################################################################## +if [ -d "$HOME/.pyenv" ]; then + # See if there is a user-install... + if ! command -v pyenv 1>/dev/null 2>&1; then + export PATH="$HOME/.pyenv/bin:$PATH" + fi + if command -v pyenv 1>/dev/null 2>&1; then + eval "$(pyenv init -)" + eval "$(pyenv virtualenv-init -)" + fi +fi +#eval "$(pyenv init - --no-rehash zsh)" + test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" From 0812d75ee4948d649d6fd9235558f3fda528452e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Feb 2021 11:45:33 +0000 Subject: [PATCH 313/973] Add note about Meslo fonts for powerline. --- install_apps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_apps.sh b/install_apps.sh index 996aec4d..c9a29481 100755 --- a/install_apps.sh +++ b/install_apps.sh @@ -34,7 +34,7 @@ test_for_xcode_installation() sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" ## TODO: Find out how to automatedly install -# Box desktop +# MesloLGS NF fonts for Powerline, https://github.com/romkatv/powerlevel10k/blob/master/README.md#manual-font-installation ## Maintenance softwareupdate -i -a # Install all software updates From 8e77b2ed0c56c7aa83b4f04813281a82614024bb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Feb 2021 11:51:39 +0000 Subject: [PATCH 314/973] Update Brewfile. --- Brewfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Brewfile b/Brewfile index 3686a7f4..5376b6ba 100644 --- a/Brewfile +++ b/Brewfile @@ -141,7 +141,6 @@ brew "percol" brew "pip-completion" brew "pipenv" brew "plantuml" -brew "powerline-go" brew "pre-commit" brew "progress" brew "protoc-gen-go" @@ -189,12 +188,10 @@ brew "yaegi" brew "youtube-dl" brew "zoxide" brew "zsh" -brew "zsh-autosuggestions" brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" brew "nvie/tap/git-toolbelt" -brew "romkatv/powerlevel10k/powerlevel10k" brew "sachaos/todoist/todoist" cask "atom" cask "atom-beta" From 9fd485284ea518b7ba6c06ea7be1165d4abb2258 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 18:54:30 +0000 Subject: [PATCH 315/973] Update oh-my-zsh version. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index f75f8bb9..f21e646c 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit f75f8bb930c6c7aed5e4e7bded94936f6d9f7724 +Subproject commit f21e646ce6c09198f7f625c597f08af49551fdb0 From 9f8795f9db45954308cb22506f86c401d9314c17 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 19:24:08 +0000 Subject: [PATCH 316/973] Fix Git identities. --- git_identities | 14 -------------- gitconfig | 9 +++++---- .gitconfig-personal => gitconfig-personal | 0 gitconfig-work | 6 ++++++ 4 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 git_identities rename .gitconfig-personal => gitconfig-personal (100%) create mode 100644 gitconfig-work diff --git a/git_identities b/git_identities deleted file mode 100644 index b962944f..00000000 --- a/git_identities +++ /dev/null @@ -1,14 +0,0 @@ -[identity:work] - name = Jim Lawton - email = james.lawton@forcepoint.com - -[identity:personal] - name = Jim Lawton - email = jim.lawton@gmail.com - -[work] - ~/Work/* - -[personal] - ~/Personal/* - diff --git a/gitconfig b/gitconfig index 6001f3e4..86baf8b5 100644 --- a/gitconfig +++ b/gitconfig @@ -1,7 +1,8 @@ -[includeIf "gitdir:Work/"] - path = dotfiles/.gitconfig-work -[includeIf "gitdir:Personal/"] - path = dotfiles/.gitconfig-personal +[includeIf "gitdir:~/Work/"] + path = dotfiles/gitconfig-work +[includeIf "gitdir:~/Personal/"] + path = dotfiles/gitconfig-personal + [include] path = dotfiles/git-aliases diff --git a/.gitconfig-personal b/gitconfig-personal similarity index 100% rename from .gitconfig-personal rename to gitconfig-personal diff --git a/gitconfig-work b/gitconfig-work new file mode 100644 index 00000000..eab5619e --- /dev/null +++ b/gitconfig-work @@ -0,0 +1,6 @@ +[user] + name = Jim Lawton + email = james.lawton@forcepoint.com +[hub] + protocol = https + host = https://github.cicd.cloud.fpdev.io From 805635c113370d778647a2727e60f08548548b9a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 19:29:57 +0000 Subject: [PATCH 317/973] Add a note about Git identities. --- personalisation | 3 +++ 1 file changed, 3 insertions(+) diff --git a/personalisation b/personalisation index c7de261d..fc38e30a 100644 --- a/personalisation +++ b/personalisation @@ -7,3 +7,6 @@ export _NAME="Jim Lawton" export _EMAIL="james.lawton@forcepoint.com" export _SHORTUSER="jim" export _MACHNAME="mac" + +# Don't forget top modify gitconfig-personal and gitconfig-work for your email +# addresses and directory paths for Git commits. From f9282f66130a90e315bb4fe899a74aa4c440f8f8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 19:30:23 +0000 Subject: [PATCH 318/973] Only try to link Dropbox dirs if Dropbox exists. --- _setupdotfiles.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index a087a557..76c62104 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -54,11 +54,14 @@ for dotfile in $DOTFILES; do symlinkifne $dotfile done -for dropdir in $DROPDIRS; do - if [ ! -e ~/$dropdir ]; then - ln -s ~/Dropbox/unixhome/$dropdir ~/ - fi -done +# Any directories you want linked from Dropbox. +if [ -e ~/Dropbox/ ]; then + for dropdir in $DROPDIRS; do + if [ ! -e ~/$dropdir ]; then + ln -s ~/Dropbox/unixhome/$dropdir ~/ + fi + done +fi popd From 4d273e6d531b770d6d964aead5af5bbb847b499d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 20:01:09 +0000 Subject: [PATCH 319/973] Remove GOROOT. --- shellvars | 1 - 1 file changed, 1 deletion(-) diff --git a/shellvars b/shellvars index 5518befe..2fe8f9a4 100644 --- a/shellvars +++ b/shellvars @@ -39,7 +39,6 @@ export TMOUT=0 # Go ######################################################################### export GOPATH=~/go -export GOROOT=/usr/local/opt/go/libexec ######################################################################### # Manpages colour schemes. From 47c076fa45aeeb550af0735b6d21bc888c6b3ddc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Feb 2021 22:41:07 +0000 Subject: [PATCH 320/973] Finally, after all these years... get paste working properly in Vim. --- vimrc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/vimrc b/vimrc index 189009d1..bc008041 100644 --- a/vimrc +++ b/vimrc @@ -12,12 +12,12 @@ set shell=/bin/bash "set term=screen set term=linux -set paste +" set paste " set number " set our tabs to four spaces set ts=4 -set smartindent +" set smartindent set tabstop=4 set shiftwidth=4 set expandtab @@ -248,3 +248,17 @@ augroup END autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,( endif " has ("autocmd") + +" Use terminals bracketed paste mode to set/unset Vims paste mode when you paste. +" https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode +let &t_SI .= "\[?2004h" +let &t_EI .= "\[?2004l" + +inoremap [200~ XTermPasteBegin() + +function! XTermPasteBegin() + set pastetoggle=[201~ + set paste + return "" +endfunction + From da4522fc8a603cc032b33f3b73cd2b834553cea8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 13 Feb 2021 21:36:53 +0000 Subject: [PATCH 321/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 5376b6ba..6690c2b1 100644 --- a/Brewfile +++ b/Brewfile @@ -96,6 +96,7 @@ brew "gopls" brew "netpbm" brew "gts" brew "graphviz" +brew "grep" brew "grpcurl" brew "grunt-completion" brew "htop" From 126c226272ca077e7a7f76a3a7272ed9b8a97b5d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 17 Feb 2021 23:35:54 +0000 Subject: [PATCH 322/973] Add git-extras. Finally, a git ignore command :-). --- Brewfile | 2 +- zshrc | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 6690c2b1..e32514be 100644 --- a/Brewfile +++ b/Brewfile @@ -85,6 +85,7 @@ brew "ghostscript" brew "gimme-aws-creds" brew "gist" brew "git" +brew "git-extras" brew "git-quick-stats" brew "gnu-sed" brew "libgcrypt" @@ -192,7 +193,6 @@ brew "zsh" brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" brew "mkchoi212/fac/fac" -brew "nvie/tap/git-toolbelt" brew "sachaos/todoist/todoist" cask "atom" cask "atom-beta" diff --git a/zshrc b/zshrc index 80bcfe38..17d0fcbc 100644 --- a/zshrc +++ b/zshrc @@ -129,6 +129,9 @@ source $ZSH/oh-my-zsh.sh # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh +GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh +[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS + ############################################################################## # pyenv setup. ############################################################################## From be325f9cece0cb20735c75071098ee0794448f97 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 22 Feb 2021 16:42:01 +0000 Subject: [PATCH 323/973] Disable ssh-agent plugin, causes lots of noise at startup. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 17d0fcbc..7936d27a 100644 --- a/zshrc +++ b/zshrc @@ -108,7 +108,7 @@ plugins=( pylint python ripgrep - ssh-agent + # ssh-agent sublime sublime-merge sudo From ef35a97b03b0b6d2cc77853695bfa70f8f65a762 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 15:01:05 +0000 Subject: [PATCH 324/973] Add missing space. --- _setup_zsh.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setup_zsh.sh b/_setup_zsh.sh index 664f272d..48778dfa 100755 --- a/_setup_zsh.sh +++ b/_setup_zsh.sh @@ -1,7 +1,7 @@ #!/bin/bash if [ -d oh-my-zsh ]; then - if [ !-e oh-my-zsh/custom/override_window_title.zsh ]; then + if [ ! -e oh-my-zsh/custom/override_window_title.zsh ]; then (cd oh-my-zsh/custom; ln -sf ../../override_window_title.zsh) fi if [ ! -e oh-my-zsh/custom/plugins/fast-syntax-highlighting ]; then From 560fff6b177be7464f5a3b0f91aeb74779afb9da Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 15:19:38 +0000 Subject: [PATCH 325/973] Regen p10k config on Linux VM. --- p10k.zsh | 2 +- zshrc | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index b7a95d66..69f38dfe 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,4 +1,4 @@ -# Generated by Powerlevel10k configuration wizard on 2021-02-08 at 19:10 GMT. +# Generated by Powerlevel10k configuration wizard on 2021-02-25 at 15:16 GMT. # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. # Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, # angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, diff --git a/zshrc b/zshrc index 7936d27a..c5fe0a6c 100644 --- a/zshrc +++ b/zshrc @@ -126,9 +126,6 @@ source $ZSH/oh-my-zsh.sh # https://github.com/rbenv/rbenv#homebrew-on-macos #eval "$(rbenv init -)" -# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. -[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh - GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh [[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS @@ -149,3 +146,5 @@ fi test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" +# To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh. +[[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh From 1e3a064bb4122f50d8279a329e5b1d0f10cfdc8c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 15:21:16 +0000 Subject: [PATCH 326/973] Update oh-my-zsh version. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index f21e646c..9a9f3831 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit f21e646ce6c09198f7f625c597f08af49551fdb0 +Subproject commit 9a9f3831925432fdf4352c24a002506a06d329c1 From ab9f4a1a5786e391b5f64ba5d265accff70997db Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 18:48:03 +0000 Subject: [PATCH 327/973] Some more zsh opts. --- zshrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zshrc b/zshrc index c5fe0a6c..874a16cb 100644 --- a/zshrc +++ b/zshrc @@ -29,6 +29,10 @@ setopt BANG_HIST # Treat the '!' character specially during expa setopt AUTO_CD # Automatically cd to a path if specified as a command. +setopt CORRECT # Correction. +setopt CORRECT_ALL # Correction. +setopt NO_CASE_GLOB # Case-insensitive globbing. + zstyle ':completion:*:*:make:*' tag-order 'targets' # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. From ecedebf0378c1334dd5d2968a8b4e67eb05c396a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 19:09:45 +0000 Subject: [PATCH 328/973] Move all completion code to one place. Add compinstall-generated section. --- zshrc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/zshrc b/zshrc index 874a16cb..9b5444ea 100644 --- a/zshrc +++ b/zshrc @@ -33,8 +33,6 @@ setopt CORRECT # Correction. setopt CORRECT_ALL # Correction. setopt NO_CASE_GLOB # Case-insensitive globbing. -zstyle ':completion:*:*:make:*' tag-order 'targets' - # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. # Initialization code that may require console input (password prompts, [y/n] # confirmations, etc.) must go above this block; everything else may go below. @@ -130,9 +128,6 @@ source $ZSH/oh-my-zsh.sh # https://github.com/rbenv/rbenv#homebrew-on-macos #eval "$(rbenv init -)" -GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh -[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS - ############################################################################## # pyenv setup. ############################################################################## @@ -152,3 +147,21 @@ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell # To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh. [[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh + +############################################################################## +# zsh completion setup. +############################################################################## + +GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh +[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS + +zstyle ':completion:*:*:make:*' tag-order 'targets' + +# The following lines were added by compinstall + +zstyle ':completion:*' completer _expand _complete _ignored _approximate +zstyle :compinstall filename $HOME/.zshrc + +autoload -Uz compinit +compinit +# End of lines added by compinstall From ff220ae2e841456fcde303756c5b494d26c6035a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Feb 2021 19:17:57 +0000 Subject: [PATCH 329/973] Enable partial completion suggestion. --- zshrc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zshrc b/zshrc index 9b5444ea..7730eaf7 100644 --- a/zshrc +++ b/zshrc @@ -155,8 +155,13 @@ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh [[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS +# Make target completion. zstyle ':completion:*:*:make:*' tag-order 'targets' +# Partial completion suggestions. +# https://scriptingosx.com/2019/07/moving-to-zsh-part-5-completions/ +zstyle ':completion:*' list-suffixes
zstyle ':completion:*' expand prefix suffix
 + # The following lines were added by compinstall zstyle ':completion:*' completer _expand _complete _ignored _approximate From 43748c2609f03727892280593f1b53c0c457fd48 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Feb 2021 13:23:04 +0000 Subject: [PATCH 330/973] Rearrange Git configs into common and platform-specific files. --- gitconfig-personal => git-identity-personal | 0 gitconfig-work => git-identity-work | 0 gitconfig => gitconfig-common | 11 +++-------- gitconfig-linux | 6 ++++++ gitconfig-macos | 5 +++++ 5 files changed, 14 insertions(+), 8 deletions(-) rename gitconfig-personal => git-identity-personal (100%) rename gitconfig-work => git-identity-work (100%) rename gitconfig => gitconfig-common (95%) create mode 100644 gitconfig-linux create mode 100644 gitconfig-macos diff --git a/gitconfig-personal b/git-identity-personal similarity index 100% rename from gitconfig-personal rename to git-identity-personal diff --git a/gitconfig-work b/git-identity-work similarity index 100% rename from gitconfig-work rename to git-identity-work diff --git a/gitconfig b/gitconfig-common similarity index 95% rename from gitconfig rename to gitconfig-common index 86baf8b5..0eeba30d 100644 --- a/gitconfig +++ b/gitconfig-common @@ -1,10 +1,10 @@ [includeIf "gitdir:~/Work/"] - path = dotfiles/gitconfig-work + path = ~/dotfiles/git-identity-work [includeIf "gitdir:~/Personal/"] - path = dotfiles/gitconfig-personal + path = ~/dotfiles/git-identity-personal [include] - path = dotfiles/git-aliases + path = ~/dotfiles/git-aliases [push] default = simple @@ -139,8 +139,6 @@ [gist] private = yes browse = yes -#[credential] - # helper = cache --timeout=300 [push] default = matching @@ -165,9 +163,6 @@ sslVerify = false postBuffer = 524288000 -[credential] - helper = osxkeychain - [filter "lfs"] required = true clean = git-lfs clean -- %f diff --git a/gitconfig-linux b/gitconfig-linux new file mode 100644 index 00000000..a0786df2 --- /dev/null +++ b/gitconfig-linux @@ -0,0 +1,6 @@ +[include] + path = dotfiles/gitconfig-common + +[credential] + helper = cache --timeout=300 + diff --git a/gitconfig-macos b/gitconfig-macos new file mode 100644 index 00000000..416aac56 --- /dev/null +++ b/gitconfig-macos @@ -0,0 +1,5 @@ +[include] + path = ~/dotfiles/gitconfig-common + +[credential] + helper = osxkeychain From 9c2a87dd9940282c182d5972b683dc3554dab787 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Feb 2021 13:35:28 +0000 Subject: [PATCH 331/973] Cleanup - Prune old dot files from the list. - Silently overwrite existing symlinks, stop if the destination is a file. --- _setupdotfiles.sh | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 76c62104..e74c7bed 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,16 +1,35 @@ #!/bin/bash SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles -DOTFILES=".autoenv .bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .conf .gemrc .git_identities .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux .tmux.conf .vimrc .vim .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DROPDIRS="bin .pip" MOVE=false -SAVEDIR=~/.old +SAVEDIR=~/.old/_setupdotfiles function symlinkifne { - target=~/$1 - echo "Working on: $target" + target=~/$1 + echo "Working on: $target" export dotless=`echo $1 | sed s/^\.//` - if [ -e $target ]; then + if [ ! -e $DOTFILESDIR/$dotless ]; then + # Check if platform-specific version exists. + osname=$(uname) + if [ "$osname" = "Darwin" ]; then + platform="macos" + elif [ "$osname" = "Linux" ]; then + platform="linux" + else + echo "ERROR: unsupported OS $osname!" + exit 1 + fi + if [ -e $DOTFILESDIR/$dotless-$platform ]; then + export dotless="$dotless-$platform" + else + echo "ERROR: file $DOTFILESDIR/$dotless does not exist, and has no platform-specific variant!" + exit 1 + fi + fi + if [ ! -L $target ]; then + # If it's not a symlink, tread carefully. echo " WARNING: $target already exists!" if [ "$MOVE" = "true" ]; then echo " Moving $target to $SAVEDIR/" @@ -22,8 +41,10 @@ function symlinkifne { echo " Skipping $1." fi else - echo " Symlinking $DOTFILESDIR/$dotless to $1" - ln -s $DOTFILESDIR/$dotless $1 + # Safe to just delete if it is a symlink (or if it doesn't exist). + rm -f $target + echo " Symlinking $DOTFILESDIR/$dotless to $target" + ln -s $DOTFILESDIR/$dotless $target fi } @@ -34,11 +55,11 @@ pushd ~ if [ "$MOVE" = "true" -a -d $SAVEDIR ]; then echo "$SAVEDIR already exists! Please clean up and try again." - echo "This is usesd to save old versions of your configuration files." + echo "This is used to save old versions of your configuration files." exit 1 fi -mkdir $SAVEDIR +mkdir -p $SAVEDIR if [ ! -d dotfiles ]; then echo "The dotfiles dir does not exist in your home directory!" From 006765a83a1a48144f5308fc152cd25fa31a7ae1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Mar 2021 21:04:13 +0000 Subject: [PATCH 332/973] Update Brewfile. --- Brewfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Brewfile b/Brewfile index e32514be..f1c15b4e 100644 --- a/Brewfile +++ b/Brewfile @@ -52,9 +52,11 @@ brew "libssh2" brew "rtmpdump" brew "curl" brew "delta" +brew "delve" brew "go" brew "dep" brew "diffutils" +brew "dive" brew "docker-completion" brew "docker-compose-completion" brew "docker-machine-completion" @@ -100,6 +102,7 @@ brew "graphviz" brew "grep" brew "grpcurl" brew "grunt-completion" +brew "hadolint" brew "htop" brew "httpie" brew "hub" @@ -161,6 +164,7 @@ brew "rbenv" brew "repo" brew "ripgrep" brew "rlwrap" +brew "robot-framework" brew "ruby" brew "rust" brew "semgrep" From 99f08fdff886538f460f3eecd6e4f69186aa7820 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 8 Mar 2021 22:21:34 +0000 Subject: [PATCH 333/973] Update Brewfile. --- Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index f1c15b4e..3b677548 100644 --- a/Brewfile +++ b/Brewfile @@ -84,6 +84,7 @@ brew "fzf" brew "gdb" brew "gh" brew "ghostscript" +brew "rust" brew "gimme-aws-creds" brew "gist" brew "git" @@ -166,7 +167,6 @@ brew "ripgrep" brew "rlwrap" brew "robot-framework" brew "ruby" -brew "rust" brew "semgrep" brew "shellcheck" brew "sloccount" From 3f8e470a9269350dae38d235862736f7cd7bb958 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Mar 2021 12:59:47 +0000 Subject: [PATCH 334/973] Upgrade oh-my-zsh. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 9a9f3831..0ab87c26 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 9a9f3831925432fdf4352c24a002506a06d329c1 +Subproject commit 0ab87c26c17171ae6162ff379a0c704fa57dff2e From bbb580a6566c5aa3a88b9828bb10bbd0b5196b60 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Mar 2021 13:00:12 +0000 Subject: [PATCH 335/973] Cosmetic: function defs. --- shellfunctions | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shellfunctions b/shellfunctions index 458d3994..328f0b04 100644 --- a/shellfunctions +++ b/shellfunctions @@ -209,15 +209,15 @@ function title() { fi } -gpip2(){ +function gpip2() { PIP_REQUIRE_VIRTUALENV="0" pip2 "$@" } -gpip(){ +function gpip() { PIP_REQUIRE_VIRTUALENV="0" pip3 "$@" } -upgrade_pyenvs(){ +function upgrade_pyenvs() { if command -v pyenv 1>/dev/null 2>&1; then for env_ver in $(pyenv versions --bare); do pyenv shell $env_ver From 8ac8c5312646e6beb32b7b4c94ab82beac7c94a6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Mar 2021 13:16:59 +0000 Subject: [PATCH 336/973] Add git.clone function that automatically install pre-commit hooks. --- shellfunctions | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/shellfunctions b/shellfunctions index 328f0b04..f5da0550 100644 --- a/shellfunctions +++ b/shellfunctions @@ -228,3 +228,25 @@ function upgrade_pyenvs() { pyenv version fi } + +# Clone a repo and install pre-commit hooks if configured. +function git.clone() { + git clone $1 + pushd "${1##*/}" > /dev/null + if [ -e .pre-commit-config.yaml ]; then + if [ ! -e ./configure-hooks.sh ]; then + echo "Error: pre-commit hooks required, but install script is not present!" + popd > /dev/null + return 1 + fi + which pre-commit >/dev/null || { + echo "Error: pre-commit hooks required, but 'pre-commit' is not installed!" + popd > /dev/null + return 1 + } + ./configure-hooks.sh --install + fi + popd > /dev/null + return 0 +} + From 1dc348457abeee37177df30ad2aad8054d099306 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Mar 2021 14:49:02 +0000 Subject: [PATCH 337/973] Tabs/spaces. --- shellfunctions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shellfunctions b/shellfunctions index f5da0550..d3651125 100644 --- a/shellfunctions +++ b/shellfunctions @@ -231,8 +231,8 @@ function upgrade_pyenvs() { # Clone a repo and install pre-commit hooks if configured. function git.clone() { - git clone $1 - pushd "${1##*/}" > /dev/null + git clone $1 + pushd "${1##*/}" > /dev/null if [ -e .pre-commit-config.yaml ]; then if [ ! -e ./configure-hooks.sh ]; then echo "Error: pre-commit hooks required, but install script is not present!" From 1ca9ff79b77bf3895ef43b28a255ce029731992d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Mar 2021 18:01:30 +0000 Subject: [PATCH 338/973] Strip '.git' from end of subdir if present. --- shellfunctions | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shellfunctions b/shellfunctions index d3651125..8237ba24 100644 --- a/shellfunctions +++ b/shellfunctions @@ -232,7 +232,9 @@ function upgrade_pyenvs() { # Clone a repo and install pre-commit hooks if configured. function git.clone() { git clone $1 - pushd "${1##*/}" > /dev/null + subdir="${1##*/}" + subdir="${subdir%.git}" + pushd "${subdir}" > /dev/null if [ -e .pre-commit-config.yaml ]; then if [ ! -e ./configure-hooks.sh ]; then echo "Error: pre-commit hooks required, but install script is not present!" From 09253d75b9b98cac28b457ba20f251e273e451ef Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Mar 2021 16:41:13 +0000 Subject: [PATCH 339/973] Remove .netrc from management. --- _setupdotfiles.sh | 2 +- netrc | 0 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 netrc diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index e74c7bed..f2d14077 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,7 +1,7 @@ #!/bin/bash SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles -DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .netrc .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DROPDIRS="bin .pip" MOVE=false SAVEDIR=~/.old/_setupdotfiles diff --git a/netrc b/netrc deleted file mode 100644 index e69de29b..00000000 From 06470836536426bc68d632528b399fe8dc032256 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 11 Mar 2021 19:59:31 +0000 Subject: [PATCH 340/973] Update Brewfile. --- Brewfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Brewfile b/Brewfile index 3b677548..3f984272 100644 --- a/Brewfile +++ b/Brewfile @@ -61,15 +61,15 @@ brew "docker-completion" brew "docker-compose-completion" brew "docker-machine-completion" brew "dos2unix" -brew "p11-kit" -brew "unbound" -brew "gnutls" -brew "emacs", link: false +brew "earthly" brew "envconsul" brew "exa" brew "fd" brew "fribidi" brew "giflib" +brew "p11-kit" +brew "unbound" +brew "gnutls" brew "harfbuzz" brew "libtiff" brew "leptonica" @@ -203,7 +203,6 @@ cask "atom-beta" cask "aws-vault" cask "cakebrew" cask "docker-toolbox" -cask "emacs" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" cask "font-dejavu-sans-mono-for-powerline" From 8c48cc31528299cb351a39788a327b3217aa0296 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 25 Mar 2021 20:50:35 +0000 Subject: [PATCH 341/973] Upgrade omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 0ab87c26..02d07f3e 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 0ab87c26c17171ae6162ff379a0c704fa57dff2e +Subproject commit 02d07f3e3dba0d50b1d907a8062bbaca18f88478 From 210ffdafeab1edb26aad20272d148aa9ebf38fb0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Mar 2021 10:43:03 +0000 Subject: [PATCH 342/973] Update after running p10k configure. --- p10k.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/p10k.zsh b/p10k.zsh index 69f38dfe..57ac8726 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,4 +1,4 @@ -# Generated by Powerlevel10k configuration wizard on 2021-02-25 at 15:16 GMT. +# Generated by Powerlevel10k configuration wizard on 2021-03-26 at 10:36 GMT. # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. # Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, # angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, @@ -31,6 +31,7 @@ # The list of segments shown on the left. Fill it with the most important segments. typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # os_icon # os identifier dir # current directory vcs # git status # prompt_char # prompt symbol From c68ba50e2bee0730c833072419f0b764b03d88a1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Mar 2021 11:00:21 +0000 Subject: [PATCH 343/973] Set prompt char to arrow symbol. --- p10k.zsh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/p10k.zsh b/p10k.zsh index 57ac8726..b9db7989 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -186,7 +186,9 @@ # Red prompt symbol if the last command failed. typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 # Default prompt symbol. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # jiml 2021-03-26 change prompt char + #typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜' # Prompt symbol in command vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' # Prompt symbol in visual vi mode. @@ -194,6 +196,7 @@ # Prompt symbol in overwrite vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= # No line introducer if prompt_char is the first segment. From 44b10fa37a7283b36b4ff66ce18e0a8a7fd3021a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 26 Mar 2021 11:01:54 +0000 Subject: [PATCH 344/973] Update Brewfile. --- Brewfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 3f984272..53ea08a6 100644 --- a/Brewfile +++ b/Brewfile @@ -25,6 +25,8 @@ brew "apr" brew "apr-util" brew "asciidoc" brew "asciinema" +brew "gettext" +brew "libffi" brew "atomicparsley" brew "autojump" brew "awk" @@ -40,8 +42,6 @@ brew "bit-git" brew "black" brew "brew-cask-completion" brew "freetype" -brew "gettext" -brew "libffi" brew "cairo" brew "clang-format" brew "consul" @@ -103,6 +103,7 @@ brew "graphviz" brew "grep" brew "grpcurl" brew "grunt-completion" +brew "gtk+3" brew "hadolint" brew "htop" brew "httpie" @@ -225,6 +226,7 @@ cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" cask "inspec" cask "java" +cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" @@ -263,6 +265,7 @@ mas "Microsoft PowerPoint", id: 462062816 mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 +mas "Notability", id: 360593530 mas "Notability", id: 736189492 mas "Numbers", id: 409203825 mas "Okta Extension App", id: 1439967473 From 554cf75f93ca0a0b10783d87e9780b072a840e30 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 1 Apr 2021 18:45:23 +0100 Subject: [PATCH 345/973] Alias for parsing structured JSON logs. --- shellaliases | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shellaliases b/shellaliases index 6e97e468..ed31b079 100644 --- a/shellaliases +++ b/shellaliases @@ -274,3 +274,6 @@ if isMac; then # On Mac OSX, uuidgen produces uppercase. alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"' fi + +# Alias for parsing structure JSON logs... +alias plog="jq -r -s 'map(select(.) | .log_level |= ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'" From 2d59d6dc333661f70f9836b10a3a86091a4a5123 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 5 Apr 2021 21:05:46 +0100 Subject: [PATCH 346/973] Update Brewfile. --- Brewfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Brewfile b/Brewfile index 53ea08a6..d5ca6787 100644 --- a/Brewfile +++ b/Brewfile @@ -3,6 +3,7 @@ tap "chef/chef" tap "coretech/terrafile" tap "d12frosted/emacs-plus" tap "domt4/autoupdate" +tap "dutchcoders/cloudman" tap "github/bootstrap" tap "github/gh" tap "homebrew/bundle" @@ -197,6 +198,7 @@ brew "zoxide" brew "zsh" brew "bufbuild/buf/buf" brew "coretech/terrafile/terrafile" +brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "atom" @@ -204,6 +206,7 @@ cask "atom-beta" cask "aws-vault" cask "cakebrew" cask "docker-toolbox" +cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" cask "font-dejavu-sans-mono-for-powerline" @@ -231,6 +234,7 @@ cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" cask "mactex" +cask "meetingbar" cask "openconnect-gui" cask "rectangle" cask "staruml" From e1b137fd4f913ac0ccb4b1074f186d4637459d0e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Apr 2021 12:21:41 +0100 Subject: [PATCH 347/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 02d07f3e..615f9dd0 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 02d07f3e3dba0d50b1d907a8062bbaca18f88478 +Subproject commit 615f9dd02b6b0c33c8c69e310fc049b4f89c7b26 From 34cd9e384ff363738aeb9b1f3a96269528ad9adb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Apr 2021 12:22:18 +0100 Subject: [PATCH 348/973] Add git wip alias. --- git-aliases | 1 + 1 file changed, 1 insertion(+) diff --git a/git-aliases b/git-aliases index 470feeda..311bec0d 100644 --- a/git-aliases +++ b/git-aliases @@ -144,5 +144,6 @@ whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short whitespaceviolations = "!git diff --check $(git empty-tree-sha1)" who = shortlog -s -- + wip = for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads wipe = reset --hard HEAD From 2baa637795d4a67dc2978ea712223b2180fc3f80 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Apr 2021 12:23:34 +0100 Subject: [PATCH 349/973] Update Brewfile. --- Brewfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Brewfile b/Brewfile index d5ca6787..c8d1862e 100644 --- a/Brewfile +++ b/Brewfile @@ -91,6 +91,7 @@ brew "gist" brew "git" brew "git-extras" brew "git-quick-stats" +brew "git-standup", link: false brew "gnu-sed" brew "libgcrypt" brew "libksba" @@ -130,6 +131,7 @@ brew "mas" brew "openjdk" brew "maven" brew "md5sha1sum", link: false +brew "micro" brew "mmark" brew "protobuf" brew "mosh" @@ -137,6 +139,7 @@ brew "mplayer" brew "mtr" brew "mypy" brew "ncftp" +brew "neovim" brew "ocrad" brew "openapi-generator" brew "openconnect" @@ -184,6 +187,7 @@ brew "terraform-docs" brew "tfenv" brew "tflint" brew "tig" +brew "tldr" brew "todo-txt" brew "tree" brew "vagrant-completion" From c60e83bf8657bc2c37c23fc2ba64f386fa2d813f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 12 Apr 2021 14:30:11 +0100 Subject: [PATCH 350/973] Add miniconda init. --- zshrc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/zshrc b/zshrc index 7730eaf7..9eb71011 100644 --- a/zshrc +++ b/zshrc @@ -170,3 +170,19 @@ zstyle :compinstall filename $HOME/.zshrc autoload -Uz compinit compinit # End of lines added by compinstall + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$(\"${HOME}/opt/miniconda3/bin/conda\" \"shell.zsh\" \"hook\" 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "${HOME}/opt/miniconda3/etc/profile.d/conda.sh" ]; then + . "${HOME}/opt/miniconda3/etc/profile.d/conda.sh" + else + export PATH="${HOME}/opt/miniconda3/bin:$PATH" + fi +fi +unset __conda_setup +# <<< conda initialize <<< + From 5b7c126edea7589286f7bb8f1ad92e1f28fceef2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Apr 2021 15:35:43 +0100 Subject: [PATCH 351/973] Update Brewfile. --- Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index c8d1862e..8ac69a36 100644 --- a/Brewfile +++ b/Brewfile @@ -273,8 +273,8 @@ mas "Microsoft PowerPoint", id: 462062816 mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 -mas "Notability", id: 360593530 mas "Notability", id: 736189492 +mas "Notability", id: 360593530 mas "Numbers", id: 409203825 mas "Okta Extension App", id: 1439967473 mas "OneDrive", id: 823766827 From b4e9feb686c3c564e28fa1723664b3dde5949f07 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Apr 2021 17:05:52 +0100 Subject: [PATCH 352/973] Simple text list of installed apps, not covered by MAS. --- mac_apps.txt | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 mac_apps.txt diff --git a/mac_apps.txt b/mac_apps.txt new file mode 100644 index 00000000..0d5fde41 --- /dev/null +++ b/mac_apps.txt @@ -0,0 +1,89 @@ +Adobe Acrobat Reader DC.app +Alfred 4.app +Atom.app +BBC iPlayer Downloads.app +Backup and Sync.app +Beyond Compare.app +Brave Browser.app +Cakebrew.app +Canon Utilities +Capto.app +Contexts.app +CopyClip 2.app +Dash.app +DeltaWalker.app +Discord.app +DisplayLink Information.app +DisplayLink Manager.app +Docker +Docker.app +Dozer.app +Dropbox.app +Evernote.app +ExpressVPN.app +Fantastical 2.app +GEDitCOM II.app +Garmin Express.app +GitHub Desktop.app +Gitify.app +GoPro Quik.app +Gramps.app +HP-82240B.app +Hammerspoon.app +Inkscape.app +Insync.app +Karabiner-Elements.app +Karabiner-EventViewer.app +KextViewr.app +Keybase.app +LastPass.app +Lumen.app +Mattermost.app +MeetingBar.app +Microsoft Teams.app +NTFS for Mac.app +Obsidian.app +OmniGraffle.app +Open in iTerm2.app +OpenConnect-GUI.app +Pock.app +Pocket Casts.app +Rectangle.app +SD Card Formatter.app +Safari.app +SamsungPortableSSD.app +Self Service.app +Signal.app +Sketch.app +SmartScope.app +SmartScopeServerUI.app +Spotify.app +Stack.app +StarUML.app +Sublime Merge.app +Sublime Text 4.app +TeX +TextMate.app +Turbo Boost Switcher Pro.app +Ukelele.app +VLC.app +VirtualBox.app +Visual Studio Code.app +WP-34s.app +Wireshark.app +YubiKey Manager.app +aText.app +balenaEtcher.app +calibre.app +coconutBattery.app +draw.io.app +get_iplayer +glogg.app +iMovie.app +iTerm.app +jEdit.app +kdiff3.app +mmhmm.app +nonpareil-16c.app +xbar.app +zoom.us.app From cacde1fb21a6fc0fe2d0cbecaec393075a4c3315 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 16 Apr 2021 09:44:05 +0100 Subject: [PATCH 353/973] Disable unnecessary right prompt items. --- p10k.zsh | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index b9db7989..942621f8 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -46,14 +46,14 @@ command_execution_time # duration of the last command background_jobs # presence of background jobs direnv # direnv status (https://direnv.net/) - asdf # asdf version manager (https://github.com/asdf-vm/asdf) + # asdf # asdf version manager (https://github.com/asdf-vm/asdf) virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) anaconda # conda environment (https://conda.io/) pyenv # python environment (https://github.com/pyenv/pyenv) goenv # go environment (https://github.com/syndbg/goenv) - nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) - nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) - nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + # nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + # nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) # node_version # node.js version # go_version # go version (https://golang.org) # rust_version # rustc version (https://www.rust-lang.org) @@ -62,28 +62,28 @@ # laravel_version # laravel php framework version (https://laravel.com/) # java_version # java version (https://www.java.com/) # package # name@version from package.json (https://docs.npmjs.com/files/package.json) - rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) - rvm # ruby version from rvm (https://rvm.io) - fvm # flutter version management (https://github.com/leoafarias/fvm) - luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) - jenv # java version from jenv (https://github.com/jenv/jenv) - plenv # perl version from plenv (https://github.com/tokuhirom/plenv) - phpenv # php version from phpenv (https://github.com/phpenv/phpenv) - scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) - haskell_stack # haskell version from stack (https://haskellstack.org/) - kubecontext # current kubernetes context (https://kubernetes.io/) + # rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + # rvm # ruby version from rvm (https://rvm.io) + # fvm # flutter version management (https://github.com/leoafarias/fvm) + # luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + # jenv # java version from jenv (https://github.com/jenv/jenv) + # plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + # phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + # scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + # haskell_stack # haskell version from stack (https://haskellstack.org/) + # kubecontext # current kubernetes context (https://kubernetes.io/) terraform # terraform workspace (https://www.terraform.io) aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) - aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) - azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) - gcloud # google cloud cli account and project (https://cloud.google.com/) - google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + # aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + # azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + # gcloud # google cloud cli account and project (https://cloud.google.com/) + # google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) context # user@hostname - nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) - ranger # ranger shell (https://github.com/ranger/ranger) - nnn # nnn shell (https://github.com/jarun/nnn) + # nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + # ranger # ranger shell (https://github.com/ranger/ranger) + # nnn # nnn shell (https://github.com/jarun/nnn) vim_shell # vim shell indicator (:sh) - midnight_commander # midnight commander shell (https://midnight-commander.org/) + # midnight_commander # midnight commander shell (https://midnight-commander.org/) nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) vi_mode # vi mode (you don't need this if you've enabled prompt_char) # vpn_ip # virtual private network indicator @@ -92,8 +92,8 @@ # ram # free RAM # swap # used swap todo # todo items (https://github.com/todotxt/todo.txt-cli) - timewarrior # timewarrior tracking status (https://timewarrior.net/) - taskwarrior # taskwarrior task count (https://taskwarrior.org/) + # timewarrior # timewarrior tracking status (https://timewarrior.net/) + # taskwarrior # taskwarrior task count (https://taskwarrior.org/) # time # current time # ip # ip address and bandwidth usage for a specified network interface # public_ip # public IP address From bdff3f5aa3e97acdc8200660e255ec7df529b72f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 28 Apr 2021 12:46:48 +0100 Subject: [PATCH 354/973] Update Brewfile. --- Brewfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index 8ac69a36..27e8a75c 100644 --- a/Brewfile +++ b/Brewfile @@ -167,6 +167,7 @@ brew "python@2", link: false brew "qt" brew "rake-completion" brew "rbenv" +brew "rclone" brew "repo" brew "ripgrep" brew "rlwrap" @@ -186,6 +187,7 @@ brew "terminal-notifier" brew "terraform-docs" brew "tfenv" brew "tflint" +brew "tfsec" brew "tig" brew "tldr" brew "todo-txt" @@ -250,7 +252,6 @@ cask "virtualbox" cask "vlc" cask "xquartz" mas "24 Hour Wallpaper", id: 1226087575 -mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "aText", id: 488566438 mas "Battery Monitor", id: 836505650 @@ -262,7 +263,6 @@ mas "EtreCheck", id: 1423715984 mas "feedly", id: 865500966 mas "Funter", id: 1109422934 mas "iMovie", id: 408981434 -mas "iStat Mini", id: 927292435 mas "Keynote", id: 409183694 mas "Kindle", id: 405399194 mas "Magnet", id: 441258766 @@ -287,4 +287,3 @@ mas "Twitter", id: 409789998 mas "Typist", id: 415166115 mas "Unsplash Wallpapers", id: 1284863847 mas "WhatsApp", id: 1147396723 -mas "Wire", id: 931134707 From c37d1939973dc23f94c3f3f7a7780974f8ea9140 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 28 Apr 2021 14:36:31 +0100 Subject: [PATCH 355/973] Sort list of apps. --- macapps.txt | 414 ++++++++++++++++++++++++++-------------------------- 1 file changed, 207 insertions(+), 207 deletions(-) diff --git a/macapps.txt b/macapps.txt index a0c0a638..5d8dab72 100644 --- a/macapps.txt +++ b/macapps.txt @@ -1,233 +1,233 @@ -/Users/jim.lawton/Library/Application Support/Juniper Networks/HostChecker.app -/Users/jim.lawton/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app -/Users/jim.lawton/Library/Application Support/Java/Java 1.8.91.14/Java 8 Update 91.app -/Users/jim.lawton/Library/Application Support/Skype.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/CiscoWebExUpdate.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/Cisco WebEx Start.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/as.bundle/Contents/Resources/aswatcher.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/convertpdf.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/atmsupload.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/Meeting Center.app -/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/asannotation2.app -/Users/jim.lawton/Library/Application Support/Pulse Secure/SetupClient/PulseSetupClient.app -/Users/jim.lawton/Library/Application Support/de.gtfd.application.App -/Users/jim.lawton/Library/Application Support/PortableSSD/Samsung Portable SSD.app -/Users/jim.lawton/Library/Application Support/PortableSSD/T3 Log In Activator for Mac.app -/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app -/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app/Contents/Resources/T3 Log In Activator for Mac.app -/Users/jim.lawton/Library/Printers/ACN Cork.app -/Users/jim.lawton/Library/Printers/Canon MP630 series.app -/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app -/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app -/Users/jim.lawton/Library/Dropbox/DropboxMacUpdate.app -/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPass.app -/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPassHelper.app -/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app -/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Library/LoginItems/CopyClipHelper.app -/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/finish_installation.app -/Users/jim.lawton/Library/XMind/configuration-cathy_macosx-R3.7.6.201711210129/org.eclipse.equinox.app -/Users/jim.lawton/Downloads/SamsungPortableSSD.app -/Applications/The Archive Browser.app -/Applications/VIP Access/VIP Access Uninstaller.app -/Applications/VIP Access/VIP Access Proximity.app -/Applications/VIP Access/VIP Access.app -/Applications/DVD Player.app -/Applications/Pineapple.app -/Applications/LastPass.app -/Applications/CopyClip 2.app -/Applications/Pastebot.app -/Applications/Siri.app -/Applications/Toolkit.app -/Applications/TreeSheets.app -/Applications/jEdit.app -/Applications/OLM Extractor Pro.app -/Applications/SourceTree.app -/Applications/CrossOver.app -/Applications/MusicManager.app -/Applications/XMind.app -/Applications/QuickTime Player.app -/Applications/Chess.app -/Applications/TaskPaper.app -/Applications/Go2Shell.app -/Applications/Photo Booth.app -/Applications/Opera Developer.app -/Applications/Keybase.app -/Applications/SoftU2F.app -/Applications/EasyMP Network Projection/Tools/EasyMP Network Projection Uninstaller.app -/Applications/EasyMP Network Projection/EasyMP Network Projection.app -/Applications/Docker/Kitematic (Beta).app -/Applications/Docker/Docker Quickstart Terminal.app -/Applications/XMind ZEN.app -/Applications/my Accenture Mac.app +/Applications/Alfred 3.app /Applications/Amazon Drive.app -/Applications/Junos Pulse.app -/Applications/Notes.app -/Applications/cool-retro-term.app -/Applications/Speedtest.app -/Applications/Image Capture.app -/Applications/BeardedSpice.app -/Applications/iBooks.app -/Applications/Google Chrome.app -/Applications/Karabiner-Elements.app -/Applications/Itsycal.app -/Applications/Karabiner-EventViewer.app -/Applications/Numbers.app -/Applications/Dropbox.app +/Applications/Amazon Music.app +/Applications/Anaconda-Navigator.app /Applications/Android File Transfer.app -/Applications/aText.app -/Applications/Google Photos Backup.app +/Applications/App Store.app +/Applications/Atom.app +/Applications/Audacity.app +/Applications/Automator.app +/Applications/Backup and Sync.app +/Applications/Battery Monitor.app +/Applications/Bear.app +/Applications/BeardedSpice.app /Applications/Beyond Compare.app +/Applications/Boostnote.app +/Applications/Bricksmith.app +/Applications/Cakebrew.app +/Applications/Calculator.app +/Applications/Calendar.app +/Applications/Chess.app +/Applications/Commander One.app +/Applications/Contacts.app +/Applications/Contexts.app /Applications/CopyClip 2 Helper.app -/Applications/Preview.app -/Applications/Display Menu.app -/Applications/Unsplash Wallpapers.app +/Applications/CopyClip 2.app +/Applications/CopyClip.app +/Applications/CrossOver.app +/Applications/DVD Player.app +/Applications/Dash.app /Applications/Dashboard.app -/Applications/OneDrive.app -/Applications/Spotify.app /Applications/Delicious Library 3.app -/Applications/TLA+ Toolbox.app -/Applications/iMovie.app -/Applications/Dash.app -/Applications/TextEdit.app -/Applications/Microsoft Word.app -/Applications/Yammer.app -/Applications/Radiant Player.app -/Applications/Garmin BaseCamp.app /Applications/DeskCover.app -/Applications/Skype for Business.app -/Applications/Garmin MapManager.app -/Applications/Commander One.app -/Applications/Audacity.app -/Applications/CopyClip.app -/Applications/Docker.app +/Applications/Dictionary.app +/Applications/Discord.app /Applications/Disk Space.app -/Applications/Plantronics Hub.app +/Applications/Display Menu.app +/Applications/Docker.app +/Applications/Docker/Docker Quickstart Terminal.app +/Applications/Docker/Kitematic (Beta).app +/Applications/Dropbox.app +/Applications/EasyMP Network Projection/EasyMP Network Projection.app +/Applications/EasyMP Network Projection/Tools/EasyMP Network Projection Uninstaller.app +/Applications/Enterprise Connect.app +/Applications/Etcher.app +/Applications/Evernote.app +/Applications/FaceTime.app +/Applications/Firefox.app +/Applications/Flux.app +/Applications/Flycut.app +/Applications/Font Book.app +/Applications/FreeMind.app +/Applications/Freeplane.app +/Applications/Funter.app +/Applications/GPG Keychain.app +/Applications/GTask for Desktop.app +/Applications/GarageBand.app +/Applications/Garmin BaseCamp.app +/Applications/Garmin Express.app +/Applications/Garmin MapInstall.app +/Applications/Garmin MapManager.app +/Applications/GitHub Desktop.app +/Applications/GitKraken.app +/Applications/GitUp.app +/Applications/Go2Shell.app /Applications/GoPro Quik.app +/Applications/GoPro Studio.app +/Applications/Google Chrome.app +/Applications/Google Photos Backup.app +/Applications/Hammerspoon.app +/Applications/Image Capture.app +/Applications/Insync.app +/Applications/Itsycal.app +/Applications/Joplin.app +/Applications/Junos Pulse.app +/Applications/Karabiner-Elements.app +/Applications/Karabiner-EventViewer.app +/Applications/Keybase.app +/Applications/Keynote.app +/Applications/Kindle.app +/Applications/LEGO Digital Designer.app +/Applications/LastPass.app +/Applications/Launchpad.app +/Applications/LeoCAD.app +/Applications/Lumen.app /Applications/Magnet.app /Applications/Mail.app -/Applications/Safari.app -/Applications/GPG Keychain.app -/Applications/Dictionary.app -/Applications/Contacts.app -/Applications/iStat Mini.app -/Applications/Bricksmith.app -/Applications/Kindle.app +/Applications/Maps.app +/Applications/Marked 2.app +/Applications/Messages.app /Applications/Microsoft Excel.app -/Applications/my41cx.app -/Applications/Time Machine.app -/Applications/OpenVPN/Uninstall OpenVPN Connect.app +/Applications/Microsoft Messenger.app +/Applications/Microsoft OneNote.app +/Applications/Microsoft Outlook.app +/Applications/Microsoft PowerPoint.app +/Applications/Microsoft Word.app +/Applications/Mission Control.app +/Applications/MusicManager.app +/Applications/MyWorkspace.app +/Applications/Notes.app +/Applications/Numbers.app +/Applications/OLM Extractor Pro.app +/Applications/OneDrive.app /Applications/OpenVPN/OpenVPN Connect.app -/Applications/Utilities/AirPort Utility.app +/Applications/OpenVPN/Uninstall OpenVPN Connect.app +/Applications/Opera Developer.app +/Applications/Pages.app +/Applications/Paragon NTFS for Mac 15.app +/Applications/Pastebot.app +/Applications/Photo Booth.app +/Applications/Photos.app +/Applications/Pineapple.app +/Applications/Plantronics Hub.app +/Applications/Preview.app +/Applications/Processing.app +/Applications/Pulse Secure.app +/Applications/PyCharm CE.app +/Applications/QuickTime Player.app +/Applications/Quicksilver.app +/Applications/Radiant Player.app +/Applications/Reminders.app +/Applications/Remote Desktop Connection.app +/Applications/Report Phishing.app +/Applications/Rocket.app +/Applications/Safari.app +/Applications/SamsungPortableSSD.app +/Applications/Scrivener.app +/Applications/Siri.app +/Applications/Skype for Business.app +/Applications/Skype.app +/Applications/Slack.app +/Applications/Slate.app +/Applications/SoftU2F.app +/Applications/SourceTree.app +/Applications/Speedtest.app +/Applications/Spotify.app +/Applications/Stickies.app +/Applications/Sublime Text.app +/Applications/Symantec Solutions/SyLinkDrop.app +/Applications/Symantec Solutions/Symantec Endpoint Protection.app +/Applications/System Preferences.app +/Applications/TLA+ Toolbox.app +/Applications/TaskPaper.app +/Applications/TermHere.app +/Applications/TextEdit.app +/Applications/The Archive Browser.app +/Applications/The Unarchiver.app +/Applications/Thunderbird.app +/Applications/Time Machine.app +/Applications/TodoTxtMac.app +/Applications/Toolkit.app +/Applications/Tower.app +/Applications/TreeSheets.app +/Applications/Twitter.app +/Applications/Typist.app +/Applications/Unsplash Wallpapers.app +/Applications/Utilities/Activity Monitor.app +/Applications/Utilities/Adobe AIR Application Installer.app /Applications/Utilities/Adobe AIR Uninstaller.app /Applications/Utilities/Adobe Flash Player Install Manager.app -/Applications/Utilities/VoiceOver Utility.app -/Applications/Utilities/Terminal.app -/Applications/Utilities/Activity Monitor.app -/Applications/Utilities/Grapher.app +/Applications/Utilities/AirPort Utility.app /Applications/Utilities/Audio MIDI Setup.app -/Applications/Utilities/System Information.app -/Applications/Utilities/Adobe AIR Application Installer.app -/Applications/Utilities/Keychain Access.app -/Applications/Utilities/Grab.app -/Applications/Utilities/Migration Assistant.app -/Applications/Utilities/Script Editor.app -/Applications/Utilities/ColorSync Utility.app -/Applications/Utilities/Console.app -/Applications/Utilities/Disk Utility.app /Applications/Utilities/Bluetooth File Exchange.app /Applications/Utilities/Boot Camp Assistant.app +/Applications/Utilities/ColorSync Utility.app +/Applications/Utilities/Console.app /Applications/Utilities/Digital Color Meter.app -/Applications/Font Book.app -/Applications/FaceTime.app -/Applications/Report Phishing.app -/Applications/calibre.app -/Applications/zoom.us.app -/Applications/Symantec Solutions/Symantec Endpoint Protection.app -/Applications/Symantec Solutions/SyLinkDrop.app +/Applications/Utilities/Disk Utility.app +/Applications/Utilities/Grab.app +/Applications/Utilities/Grapher.app +/Applications/Utilities/Keychain Access.app +/Applications/Utilities/Migration Assistant.app +/Applications/Utilities/Script Editor.app +/Applications/Utilities/System Information.app +/Applications/Utilities/Terminal.app +/Applications/Utilities/VoiceOver Utility.app +/Applications/Übersicht.app +/Applications/VIP Access.app +/Applications/VIP Access/VIP Access Proximity.app +/Applications/VIP Access/VIP Access Uninstaller.app +/Applications/VIP Access/VIP Access.app +/Applications/VirtualBox.app +/Applications/Wally.app /Applications/WhatsApp.app -/Applications/Microsoft Outlook.app -/Applications/GitHub Desktop.app -/Applications/Marked 2.app /Applications/Wire.app -/Applications/Keynote.app -/Applications/Insync.app -/Applications/Thunderbird.app -/Applications/Cakebrew.app -/Applications/TodoTxtMac.app /Applications/Wireshark.app -/Applications/TermHere.app /Applications/Wolfram CDF Player.app -/Applications/Quicksilver.app -/Applications/FreeMind.app -/Applications/Backup and Sync.app -/Applications/Freeplane.app -/Applications/Bear.app -/Applications/Hammerspoon.app -/Applications/Processing.app -/Applications/LEGO Digital Designer.app -/Applications/Maps.app -/Applications/Mission Control.app -/Applications/Pages.app -/Applications/GarageBand.app -/Applications/VirtualBox.app -/Applications/Etcher.app -/Applications/Enterprise Connect.app -/Applications/Paragon NTFS for Mac 15.app -/Applications/Stickies.app -/Applications/Photos.app -/Applications/Remote Desktop Connection.app -/Applications/Messages.app -/Applications/Flux.app -/Applications/Lumen.app -/Applications/The Unarchiver.app -/Applications/Microsoft OneNote.app -/Applications/Atom.app -/Applications/LeoCAD.app -/Applications/Calculator.app -/Applications/Joplin.app -/Applications/nvALT.app -/Applications/kdiff3.app -/Applications/Pulse Secure.app -/Applications/Amazon Music.app +/Applications/XMind ZEN.app +/Applications/XMind.app +/Applications/Yammer.app +/Applications/aText.app +/Applications/calibre.app +/Applications/cool-retro-term.app +/Applications/iBooks.app +/Applications/iMovie.app +/Applications/iStat Mini.app /Applications/iTerm.app -/Applications/SamsungPortableSSD.app -/Applications/Skype.app -/Applications/Rocket.app -/Applications/GitKraken.app -/Applications/Typist.app /Applications/iTunes.app -/Applications/Tower.app -/Applications/Firefox.app -/Applications/MyWorkspace.app -/Applications/Launchpad.app -/Applications/GitUp.app -/Applications/PyCharm CE.app -/Applications/Funter.app -/Applications/Boostnote.app -/Applications/Slate.app -/Applications/Wally.app -/Applications/GoPro Studio.app -/Applications/Reminders.app -/Applications/App Store.app -/Applications/Flycut.app -/Applications/Microsoft PowerPoint.app -/Applications/Evernote.app -/Applications/Anaconda-Navigator.app -/Applications/Garmin MapInstall.app -/Applications/GTask for Desktop.app -/Applications/Contexts.app -/Applications/Übersicht.app -/Applications/VIP Access.app -/Applications/Automator.app -/Applications/Slack.app -/Applications/Scrivener.app -/Applications/Twitter.app -/Applications/Discord.app -/Applications/Calendar.app -/Applications/Microsoft Messenger.app -/Applications/Battery Monitor.app -/Applications/Garmin Express.app -/Applications/System Preferences.app +/Applications/jEdit.app +/Applications/kdiff3.app +/Applications/my Accenture Mac.app +/Applications/my41cx.app /Applications/nteract.app -/Applications/Alfred 3.app -/Applications/Sublime Text.app +/Applications/nvALT.app +/Applications/zoom.us.app +/Users/jim.lawton/Downloads/SamsungPortableSSD.app +/Users/jim.lawton/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app +/Users/jim.lawton/Library/Application Support/Java/Java 1.8.91.14/Java 8 Update 91.app +/Users/jim.lawton/Library/Application Support/Juniper Networks/HostChecker.app +/Users/jim.lawton/Library/Application Support/PortableSSD/Samsung Portable SSD.app +/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app +/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app/Contents/Resources/T3 Log In Activator for Mac.app +/Users/jim.lawton/Library/Application Support/PortableSSD/T3 Log In Activator for Mac.app +/Users/jim.lawton/Library/Application Support/Pulse Secure/SetupClient/PulseSetupClient.app +/Users/jim.lawton/Library/Application Support/Skype.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/Cisco WebEx Start.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/CiscoWebExUpdate.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/Meeting Center.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/as.bundle/Contents/Resources/aswatcher.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/asannotation2.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/atmsupload.app +/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/convertpdf.app +/Users/jim.lawton/Library/Application Support/de.gtfd.application.App +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/finish_installation.app +/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Library/LoginItems/CopyClipHelper.app +/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPass.app +/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPassHelper.app +/Users/jim.lawton/Library/Dropbox/DropboxMacUpdate.app +/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app +/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app +/Users/jim.lawton/Library/Printers/ACN Cork.app +/Users/jim.lawton/Library/Printers/Canon MP630 series.app +/Users/jim.lawton/Library/XMind/configuration-cathy_macosx-R3.7.6.201711210129/org.eclipse.equinox.app From fbe191929bf0272d337e1fc34fc9e6e4675362c7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 28 Apr 2021 14:37:43 +0100 Subject: [PATCH 356/973] Rename old apps list. --- macapps.txt => mac_apps_old.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename macapps.txt => mac_apps_old.txt (100%) diff --git a/macapps.txt b/mac_apps_old.txt similarity index 100% rename from macapps.txt rename to mac_apps_old.txt From 7950911de2d32d70c30919e8845f04c6d0122774 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 May 2021 19:33:29 +0100 Subject: [PATCH 357/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 615f9dd0..d646884a 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 615f9dd02b6b0c33c8c69e310fc049b4f89c7b26 +Subproject commit d646884add277d134235a9b18ab755388d6e0d8d From 50f2979676a8f820037a66fa7a63855f5efa591f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 5 May 2021 16:18:12 +0100 Subject: [PATCH 358/973] Update scripts. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 3a4cda4f..014ed466 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 3a4cda4fd0fe0e0807a90798c0e87a2b2ba6a23d +Subproject commit 014ed466f3faf5054fe16075bf0be6524208fbac From f67d36caab81a7315672e20b922a7c9b010dd1ad Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 17 May 2021 15:24:19 +0100 Subject: [PATCH 359/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 014ed466..5e735f1b 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 014ed466f3faf5054fe16075bf0be6524208fbac +Subproject commit 5e735f1bc95d597012479a014eb25ac2fd9113a0 From 5700c822839a582a3e943d9a149fda78fe9fd12f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 17 May 2021 16:15:59 +0100 Subject: [PATCH 360/973] Use GNU sed from Homebrew. --- shellpaths | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shellpaths b/shellpaths index 2128c2ed..22534e6c 100644 --- a/shellpaths +++ b/shellpaths @@ -56,3 +56,5 @@ export PATH="/usr/local/opt/python/libexec/bin:$PATH" # Node JS Packages (from Brew Install of Node and NPM) # PATH=$PATH:/usr/local/share/npm/bin + +export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH" From 43e58a2929b900ef3a2a7741cec1fa6c4f8b2726 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 17 May 2021 16:17:05 +0100 Subject: [PATCH 361/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 27e8a75c..f29256eb 100644 --- a/Brewfile +++ b/Brewfile @@ -90,6 +90,7 @@ brew "gimme-aws-creds" brew "gist" brew "git" brew "git-extras" +brew "git-filter-repo" brew "git-quick-stats" brew "git-standup", link: false brew "gnu-sed" From d500ce571e1af74658c0dfd8e758ce6da8aed5cd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 May 2021 14:13:27 +0100 Subject: [PATCH 362/973] Ignore UTF errors in history files. --- history/zsh_to_persistent_history.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index 3ee1ce7f..ed6f2dbe 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -158,7 +158,7 @@ def main(): print(f"Real output file: {real_outfile}") # Read input ZSH history file. - with open(zfile, 'r') as f: + with open(zfile, 'r', errors="ignore") as f: zdata = f.readlines() hostname = socket.gethostname().lower() @@ -176,7 +176,7 @@ def main(): combined_regex = "(" + ")|(".join(user_regexes) + ")" # Read input ZSH history file. - with open(infile, 'r') as f: + with open(infile, 'r', errors="ignore") as f: histdata = f.readlines() # Add the ZSH history to persistent history. @@ -193,7 +193,7 @@ def main(): extra_data = [] if extra_file: - with open(extra_file, 'r') as f: + with open(extra_file, 'r', errors="ignore") as f: extra_data = f.readlines() histdata.extend(extra_data) @@ -201,7 +201,7 @@ def main(): if iterm_files: for iterm_file in iterm_files: print(f"Reading {iterm_file}") - with open(iterm_file, 'r') as f: + with open(iterm_file, 'r', errors="ignore") as f: iterm_data = f.readlines() if len(iterm_data) % 2 != 0: sys.exit(f"Error: input file {iterm_file} does not have an even number of lines!") From 68024c8877c5bf5a582d607e284ccd6d8d85616d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 24 May 2021 14:05:42 +0100 Subject: [PATCH 363/973] Update pyenv setup. --- zshrc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/zshrc b/zshrc index 9eb71011..96141f96 100644 --- a/zshrc +++ b/zshrc @@ -134,14 +134,15 @@ source $ZSH/oh-my-zsh.sh if [ -d "$HOME/.pyenv" ]; then # See if there is a user-install... if ! command -v pyenv 1>/dev/null 2>&1; then - export PATH="$HOME/.pyenv/bin:$PATH" + export PYENV_ROOT="$HOME/.pyenv" + export PATH="$PYENV_ROOT/bin:$PATH" fi if command -v pyenv 1>/dev/null 2>&1; then - eval "$(pyenv init -)" + eval "$(pyenv init --path)" eval "$(pyenv virtualenv-init -)" fi fi -#eval "$(pyenv init - --no-rehash zsh)" +eval "$(pyenv init - --no-rehash zsh)" test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" From 5102ed6f8243f755985cd543719c0372e30574a2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 2 Jun 2021 13:19:12 +0100 Subject: [PATCH 364/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index d646884a..706b2f37 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit d646884add277d134235a9b18ab755388d6e0d8d +Subproject commit 706b2f3765d41bee2853b17724888d1a3f6f00d9 From bacaa08e05e2b4dd3d3ba762309078c48aff3e10 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 12 Jul 2021 21:12:39 +0100 Subject: [PATCH 365/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 706b2f37..e4f6f169 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 706b2f3765d41bee2853b17724888d1a3f6f00d9 +Subproject commit e4f6f1698d4bf2cebe3fd0e2f5bae9f163780a50 From a811c019e60a90d434c86d0befe85366b4e538a3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 13 Jul 2021 09:36:45 +0100 Subject: [PATCH 366/973] Update submodules. --- autoenv | 2 +- icdiff | 2 +- oh-my-zsh | 2 +- powerlevel10k | 2 +- vim/bundle/command-t | 2 +- vim/bundle/tabnine-vim | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- z | 2 +- zsh-autosuggestions | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/autoenv b/autoenv index 132ae98c..bdefda99 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit 132ae98cd581100292281358c0fa217d2f8e5171 +Subproject commit bdefda9958bce6e20fd365fdab99c2ea9ee8cd1d diff --git a/icdiff b/icdiff index 2f114666..3fc0fe30 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 2f114666cfd550be44e35189f96c26d7efec0ae5 +Subproject commit 3fc0fe3072720730cdea2c710d8bce03d0b1a47a diff --git a/oh-my-zsh b/oh-my-zsh index e4f6f169..23f9348e 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit e4f6f1698d4bf2cebe3fd0e2f5bae9f163780a50 +Subproject commit 23f9348e2c2341df71b1891eb4607f60ddd5a204 diff --git a/powerlevel10k b/powerlevel10k index b816abfe..1e7be00e 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit b816abfed0e8785d8bc2e47987cc40f6bcd4bc29 +Subproject commit 1e7be00e04a6e34bdcc7574297413fd6a48be51f diff --git a/vim/bundle/command-t b/vim/bundle/command-t index ea7a889b..6a00a2ca 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit ea7a889bda2849ba87fc12053bf6dd14467d7b72 +Subproject commit 6a00a2cabfb5ee3f49ff556ceea56892825c0397 diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim index fa891e62..4c22054d 160000 --- a/vim/bundle/tabnine-vim +++ b/vim/bundle/tabnine-vim @@ -1 +1 @@ -Subproject commit fa891e62903501f7eeb2f00f6574ec9684e1c4ee +Subproject commit 4c22054dffdd84811664cb6957b001a8617333ae diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 8cf0cf5b..1c2663f5 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 8cf0cf5bfb2b858faecf4e0f6c1b8d0948805e5e +Subproject commit 1c2663f516c32f8453f542be10192a49ee844a93 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index 276524ed..addd5aba 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit 276524ed9c8aec415d3c6dbeec7c05fbd31c95ce +Subproject commit addd5abaa66f015802ec351cd67893f6e521751e diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 86f49aca..dbdc88f2 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 86f49aca266e4b17420bcadd29009997d15668d8 +Subproject commit dbdc88f2ca38613a089354823fb2cec4d87d104d diff --git a/z b/z index 125f4dc4..b82ac78a 160000 --- a/z +++ b/z @@ -1 +1 @@ -Subproject commit 125f4dc47e15891739dd8262d5b23077fe8fb9ab +Subproject commit b82ac78a2d4457d2ca09973332638f123f065fd1 diff --git a/zsh-autosuggestions b/zsh-autosuggestions index ae315ded..a411ef3e 160000 --- a/zsh-autosuggestions +++ b/zsh-autosuggestions @@ -1 +1 @@ -Subproject commit ae315ded4dba10685dbbafbfa2ff3c1aefeb490d +Subproject commit a411ef3e0992d4839f0732ebeb9823024afaaaa8 From 95dad703e610d14ed34d52f90812326808625c01 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Jul 2021 16:30:59 +0100 Subject: [PATCH 367/973] Unset PYENV_VERSION. --- shellfunctions | 1 + 1 file changed, 1 insertion(+) diff --git a/shellfunctions b/shellfunctions index 8237ba24..799c2b75 100644 --- a/shellfunctions +++ b/shellfunctions @@ -224,6 +224,7 @@ function upgrade_pyenvs() { pyenv version PIP_REQUIRE_VIRTUALENV="0" pip3 install --quiet --upgrade pip gnureadline virtualenv virtualenvwrapper done + unset PYENV_VERSION pyenv shell - pyenv version fi From 69a7fa9f8d233b39dcdab64bfc26bd3605e50b0c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Jul 2021 16:37:45 +0100 Subject: [PATCH 368/973] Set pyenv vars. --- shellvars | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shellvars b/shellvars index 2fe8f9a4..675ab676 100644 --- a/shellvars +++ b/shellvars @@ -85,3 +85,6 @@ export PIP_VIRTUALENV_BASE=$WORKON_HOME export PIP_RESPECT_VIRTUALENV=true # Make pip only install into a virtualenv. export PIP_REQUIRE_VIRTUALENV=true + +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" From e0e441a353f5275fe92689ee115dc1315264ebcc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Jul 2021 16:38:55 +0100 Subject: [PATCH 369/973] Add pyenv init. --- profile | 1 + 1 file changed, 1 insertion(+) diff --git a/profile b/profile index 9da33ec2..ae4ef53c 100644 --- a/profile +++ b/profile @@ -12,3 +12,4 @@ source ~/dotfiles/shellpaths source ~/dotfiles/shellaliases source ~/dotfiles/shellactivities +eval "$(pyenv init --path)" From 2d71af6cdd773e81e1998d82ed5c5a44fea58423 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Jul 2021 16:48:57 +0100 Subject: [PATCH 370/973] Revert "Add pyenv init." This reverts commit e0e441a353f5275fe92689ee115dc1315264ebcc. --- profile | 1 - 1 file changed, 1 deletion(-) diff --git a/profile b/profile index ae4ef53c..9da33ec2 100644 --- a/profile +++ b/profile @@ -12,4 +12,3 @@ source ~/dotfiles/shellpaths source ~/dotfiles/shellaliases source ~/dotfiles/shellactivities -eval "$(pyenv init --path)" From 3a834325a9a80c2bc04399b5f4a8f53dba7f6164 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 14 Jul 2021 17:22:37 +0100 Subject: [PATCH 371/973] Disable virtualenvwrapper plugin. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 96141f96..0a462d51 100644 --- a/zshrc +++ b/zshrc @@ -117,7 +117,7 @@ plugins=( terraform textmate virtualenv - virtualenvwrapper + # virtualenvwrapper ) source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme From c7b451f76514a9ec9946ccd5f6ba8e81edd5d7bc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 16 Jul 2021 16:26:33 +0100 Subject: [PATCH 372/973] Disable pipenv plugin, re-enable pyenv and virtualenvwrapper. --- zshrc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/zshrc b/zshrc index 0a462d51..93c09997 100644 --- a/zshrc +++ b/zshrc @@ -10,6 +10,7 @@ export SAVEHIST=1000000000 # Number of history entries to save to disk export HISTTIMEFORMAT="[%F %T] " export HIST_STAMPS="+%Y-%m-%d %H:%M:%S" export HISTDUP=erase # Erase duplicates in the history file +#export DISABLE_VENV_CD=1 # virtualenvwrapper setopt APPEND_HISTORY # Append history to the history file (no overwriting) setopt SHARE_HISTORY # Share history between all sessions. @@ -105,8 +106,8 @@ plugins=( iterm2 osx pip - pipenv - # pyenv + # pipenv + pyenv pylint python ripgrep @@ -117,7 +118,7 @@ plugins=( terraform textmate virtualenv - # virtualenvwrapper + virtualenvwrapper ) source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme @@ -149,6 +150,9 @@ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell # To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh. [[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh +# Quieten startup errors. +#typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet + ############################################################################## # zsh completion setup. ############################################################################## From 02f90ed1d9059c27a0ec89ace0ff9b3e451830c7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Jul 2021 12:22:42 +0100 Subject: [PATCH 373/973] Clean up. --- personalisation | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/personalisation b/personalisation index fc38e30a..7351727c 100644 --- a/personalisation +++ b/personalisation @@ -4,9 +4,8 @@ export _USERNAMES="jiml jlawton jim.lawton jlawto001c jlawto001 james.lawton" export _NAME="Jim Lawton" -export _EMAIL="james.lawton@forcepoint.com" export _SHORTUSER="jim" export _MACHNAME="mac" -# Don't forget top modify gitconfig-personal and gitconfig-work for your email +# Don't forget to modify gitconfig-personal and gitconfig-work for your email # addresses and directory paths for Git commits. From a978f03334903613b4575a7b45efc89250442a24 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Jul 2021 13:12:36 +0100 Subject: [PATCH 374/973] Add note about cron. --- history/zsh_to_persistent_history.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index ed6f2dbe..e13ec4b8 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -16,6 +16,9 @@ # # The first integer is time since epoch, the second is runtime, the remainder of the line after ';' # is the command line. +# +# This script is then run from cron: +# 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true import argparse import sys From de54135569fd4c297c6fdbaae90a5fe899ebd15f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Jul 2021 14:02:38 +0100 Subject: [PATCH 375/973] Update readme. --- README.markdown | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.markdown b/README.markdown index 2e767780..323917a7 100644 --- a/README.markdown +++ b/README.markdown @@ -14,12 +14,14 @@ This project contains submodules. It is suggested that you clone this into your git clone --recurse-submodules https://github.com/jimlawton/dotfiles .dotfiles # Setup -There is a set up script that establishes the symlinks in your home directory. Run this once. -* For ZShell - ~/dotfiles/_setupdotfiles.zsh -* For Bash (needs some fixes) - ~/dotfiles/_setupdotfiles.bsh +Personalisation settings are in `personalisation`. Replace the values with your +own. + +There is a set up script that establishes the symlinks in your home directory. Run this once. +``` +$ ~/dotfiles/_setupdotfiles.sh +``` > NOTE: Some of my personal configuration will remain after setup. You should fork and tweak to your specific needs. From 7d6eb8b5d960205615ed78eea0966f159aa5a937 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 26 Jul 2021 11:05:41 +0100 Subject: [PATCH 376/973] Update submodules. --- oh-my-zsh | 2 +- powerlevel10k | 2 +- vim/bundle/tabnine-vim | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-liquid | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/oh-my-zsh b/oh-my-zsh index 23f9348e..5377cc37 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 23f9348e2c2341df71b1891eb4607f60ddd5a204 +Subproject commit 5377cc37c0f71fe22484303a4c6f387aa339f3f5 diff --git a/powerlevel10k b/powerlevel10k index 1e7be00e..8f798f98 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit 1e7be00e04a6e34bdcc7574297413fd6a48be51f +Subproject commit 8f798f986a02eb27c4ef25229976443fa2a66809 diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim index 4c22054d..e431d042 160000 --- a/vim/bundle/tabnine-vim +++ b/vim/bundle/tabnine-vim @@ -1 +1 @@ -Subproject commit 4c22054dffdd84811664cb6957b001a8617333ae +Subproject commit e431d0425f4b132caef736ab682ba917edee30e9 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 1c2663f5..75b2a9a8 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 1c2663f516c32f8453f542be10192a49ee844a93 +Subproject commit 75b2a9a8daf6589f9747ff4f2d068fdea54e92ea diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid index 94bd2ea1..447c69b5 160000 --- a/vim/bundle/vim-liquid +++ b/vim/bundle/vim-liquid @@ -1 +1 @@ -Subproject commit 94bd2ea1fd45cf0a21edc3433231e7fcb7791323 +Subproject commit 447c69b59fadcf04f96d99873126953eae7aa235 From 2b55ceb2b179f0df6988e50549943b7a58211cc4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 9 Aug 2021 12:30:49 +0100 Subject: [PATCH 377/973] Upgrade OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 5377cc37..9c34c359 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 5377cc37c0f71fe22484303a4c6f387aa339f3f5 +Subproject commit 9c34c359c4c1ebb1bd0211d40c3bca0c6aa2ca97 From 5b9b327451572ed03ba662a04b6def64c19022db Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 10 Aug 2021 14:53:29 +0100 Subject: [PATCH 378/973] Add missing symlinks for dirs. --- _setupdotfiles.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index f2d14077..a482c1f9 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -2,6 +2,7 @@ SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTDIRS=".conf .tmux .vim" DROPDIRS="bin .pip" MOVE=false SAVEDIR=~/.old/_setupdotfiles @@ -75,6 +76,10 @@ for dotfile in $DOTFILES; do symlinkifne $dotfile done +for dotfile in $DOTDIRS; do + symlinkifne $dotfile +done + # Any directories you want linked from Dropbox. if [ -e ~/Dropbox/ ]; then for dropdir in $DROPDIRS; do From 7410c8adee999650dbd837733202db9a02c695ae Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 Aug 2021 12:15:47 +0100 Subject: [PATCH 379/973] Add --follow to git lg and lgp aliases. --- git-aliases | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/git-aliases b/git-aliases index 311bec0d..21e14748 100644 --- a/git-aliases +++ b/git-aliases @@ -61,10 +61,10 @@ legitunpublish = !legit unpublish \"$@\" lf = log --pretty=fuller # lg = log --graph - lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --follow lgme = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --author=me lgorigin = log --oneline --graph --decorate origin/master...master --left-right - lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --follow lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' listconf = config --global --list listhistory = log --name-status From 1fe0519a448d54ff13ca21d88e166d31aa6de6f6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 23 Aug 2021 16:12:22 +0100 Subject: [PATCH 380/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 9c34c359..6d5b8484 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 9c34c359c4c1ebb1bd0211d40c3bca0c6aa2ca97 +Subproject commit 6d5b8484ce7198161d5f617c3db9fd7d3833d48c From ff2a88959c7c3e36903422f6ca3632466ce5e66b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 23 Aug 2021 16:15:01 +0100 Subject: [PATCH 381/973] Revert "Add --follow to git lg and lgp aliases." This reverts commit 7410c8adee999650dbd837733202db9a02c695ae. --- git-aliases | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/git-aliases b/git-aliases index 21e14748..311bec0d 100644 --- a/git-aliases +++ b/git-aliases @@ -61,10 +61,10 @@ legitunpublish = !legit unpublish \"$@\" lf = log --pretty=fuller # lg = log --graph - lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --follow + lg = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgme = log --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --author=me lgorigin = log --oneline --graph --decorate origin/master...master --left-right - lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative --follow + lgp = log -p --oneline --graph --decorate --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative lgso = log --graph --date=short --pretty=format:'%C(yellow)%h%Creset %cn%x09%cd %s%C(green bold)%d' listconf = config --global --list listhistory = log --name-status From 5f7c856737f996a2e4c609f9ea7b7fd00e2b09d2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 24 Aug 2021 12:21:18 +0100 Subject: [PATCH 382/973] Fix clone command. --- README.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.markdown b/README.markdown index 323917a7..22b6fa27 100644 --- a/README.markdown +++ b/README.markdown @@ -11,7 +11,7 @@ The contents of this repo are based on Matthew McCullough's original (https://gi This project contains submodules. It is suggested that you clone this into your home directory. cd ~ - git clone --recurse-submodules https://github.com/jimlawton/dotfiles .dotfiles + git clone --recurse-submodules https://github.com/jimlawton/dotfiles # Setup From f6ac6e9226354774ac93cdb5d6308f5bafca5dc8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 2 Sep 2021 15:13:04 +0100 Subject: [PATCH 383/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 5e735f1b..83ff5b13 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 5e735f1bc95d597012479a014eb25ac2fd9113a0 +Subproject commit 83ff5b13d10c4e24c17c6079fe0f09173822ef9a From 8a574c07cc22bb868566dcef4a0a70a8fdd46ecf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 7 Sep 2021 16:51:23 +0100 Subject: [PATCH 384/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 6d5b8484..37a60eeb 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 6d5b8484ce7198161d5f617c3db9fd7d3833d48c +Subproject commit 37a60eebc107c08047d4b5716c1c1760104aa25d From 3c2317803566c6ffa025dbd7c925f4a6c894e33e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 7 Sep 2021 16:58:47 +0100 Subject: [PATCH 385/973] Disable virtualenvwrapper plugin for now. Crashes omz sessions. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 93c09997..a782c9b3 100644 --- a/zshrc +++ b/zshrc @@ -118,7 +118,7 @@ plugins=( terraform textmate virtualenv - virtualenvwrapper + # virtualenvwrapper ) source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme From 2532e532e66146e7622c36f435e3811f63ee207b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 7 Sep 2021 17:07:13 +0100 Subject: [PATCH 386/973] Fix pyenv startup. --- profile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profile b/profile index 9da33ec2..86ecf8ed 100644 --- a/profile +++ b/profile @@ -12,3 +12,6 @@ source ~/dotfiles/shellpaths source ~/dotfiles/shellaliases source ~/dotfiles/shellactivities +export PYENV_ROOT="$HOME/.pyenv" +export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init --path)" From e0a841a6211c3a89d9a69a6599a63ff70fbd40d3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 12 Sep 2021 12:26:26 +0100 Subject: [PATCH 387/973] Upadte Brewfile. --- Brewfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index f29256eb..70014f35 100644 --- a/Brewfile +++ b/Brewfile @@ -42,6 +42,7 @@ brew "bazel" brew "bit-git" brew "black" brew "brew-cask-completion" +brew "bzip2" brew "freetype" brew "cairo" brew "clang-format" @@ -54,8 +55,6 @@ brew "rtmpdump" brew "curl" brew "delta" brew "delve" -brew "go" -brew "dep" brew "diffutils" brew "dive" brew "docker-completion" @@ -99,6 +98,7 @@ brew "libksba" brew "libusb" brew "pinentry" brew "gnupg" +brew "go" brew "gopls" brew "netpbm" brew "gts" @@ -111,6 +111,7 @@ brew "hadolint" brew "htop" brew "httpie" brew "hub" +brew "ical-buddy" brew "id3lib" brew "id3v2" brew "infracost" @@ -127,6 +128,7 @@ brew "lftp" brew "libcaca" brew "libressl" brew "libusb-compat" +brew "lima" brew "make" brew "mas" brew "openjdk" @@ -164,7 +166,7 @@ brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "pygments" -brew "python@2", link: false +brew "python@3.8" brew "qt" brew "rake-completion" brew "rbenv" @@ -183,6 +185,7 @@ brew "sphinx-doc" brew "ssh-copy-id", link: true brew "sshuttle" brew "starship" +brew "staticcheck" brew "subversion" brew "terminal-notifier" brew "terraform-docs" @@ -201,6 +204,7 @@ brew "wget" brew "xpdf" brew "yaegi" brew "youtube-dl" +brew "zlib" brew "zoxide" brew "zsh" brew "bufbuild/buf/buf" From 67598bfea43c6587a7c74d7b776f0ccc30fe56e3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 14 Sep 2021 11:31:05 +0100 Subject: [PATCH 388/973] Add todaymd alias for daily agenda from ical, in markdown. --- shellaliases | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shellaliases b/shellaliases index ed31b079..99a96fe0 100644 --- a/shellaliases +++ b/shellaliases @@ -277,3 +277,5 @@ fi # Alias for parsing structure JSON logs... alias plog="jq -r -s 'map(select(.) | .log_level |= ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'" + +alias todaymd="icalBuddy -f -b '' -npn -nc -ps \"/ | /\" -eep \"notes,attendees,url\" eventsToday | awk -F\| '{gsub(/ /,\"\",\$3); printf(\"- \`%s\` %s %s\\n\", \$3, \$1, \$2);}' | sed 's/\(https:\/\/[^ ]*\)/[zoom](\1)/'" From 6a5a3979b05b46bb0fcf15055dbfbd5fb791e6fe Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 15 Sep 2021 11:33:11 +0100 Subject: [PATCH 389/973] Update hyper-hacks submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 67829b5d..7bd6a6e1 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 67829b5dd0023f31d38998747544b0b64df99ee2 +Subproject commit 7bd6a6e178cb36ea6e2791edeeceba607d0821df From e345c20dadb196078afe947fb3cfe2878cf66643 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Sep 2021 11:17:37 +0100 Subject: [PATCH 390/973] Better todaymd alias. --- shellaliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shellaliases b/shellaliases index 99a96fe0..10f54100 100644 --- a/shellaliases +++ b/shellaliases @@ -278,4 +278,4 @@ fi # Alias for parsing structure JSON logs... alias plog="jq -r -s 'map(select(.) | .log_level |= ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'" -alias todaymd="icalBuddy -f -b '' -npn -nc -ps \"/ | /\" -eep \"notes,attendees,url\" eventsToday | awk -F\| '{gsub(/ /,\"\",\$3); printf(\"- \`%s\` %s %s\\n\", \$3, \$1, \$2);}' | sed 's/\(https:\/\/[^ ]*\)/[zoom](\1)/'" +alias todaymd="icalBuddy -f -b '' -npn -nc -ps \"/ | /\" -eep \"notes,attendees,url\" eventsToday | awk -F\| '{ if (NF>2) { gsub(/ /,\"\",\$3); printf(\"- \`%s\` %s %s\\n\", \$3, \$1, \$2); } else { gsub(/ /,\"\",\$2); printf(\"- \`%s\` %s\\n\", \$2, \$1); } }' | sed 's/\(https:\/\/[^ ]*\)/[zoom](\1)/'" From da9e694ddd94057ba2625502a49634ef8297ce5b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Sep 2021 11:32:46 +0100 Subject: [PATCH 391/973] Update Brewfile. --- Brewfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Brewfile b/Brewfile index 70014f35..3271c8a1 100644 --- a/Brewfile +++ b/Brewfile @@ -22,6 +22,7 @@ brew "readline" brew "sqlite" brew "xz" brew "ansible" +brew "ansible-lint" brew "apr" brew "apr-util" brew "asciidoc" @@ -92,6 +93,7 @@ brew "git-extras" brew "git-filter-repo" brew "git-quick-stats" brew "git-standup", link: false +brew "gitleaks" brew "gnu-sed" brew "libgcrypt" brew "libksba" @@ -130,6 +132,7 @@ brew "libressl" brew "libusb-compat" brew "lima" brew "make" +brew "markdownlint-cli" brew "mas" brew "openjdk" brew "maven" @@ -203,6 +206,7 @@ brew "vim" brew "wget" brew "xpdf" brew "yaegi" +brew "yamllint" brew "youtube-dl" brew "zlib" brew "zoxide" From 8b37463b023ddb994831f3b7a4ed3bf820cf82ea Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Sep 2021 16:21:10 +0100 Subject: [PATCH 392/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 37a60eeb..a4e68967 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 37a60eebc107c08047d4b5716c1c1760104aa25d +Subproject commit a4e68967a472132b4ffb05fbd1c86ac88d27fe42 From 1adf5db86dc9b0228e5fbd82f94c99d96e46c545 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 22 Sep 2021 11:19:27 +0100 Subject: [PATCH 393/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 83ff5b13..aa8feaae 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 83ff5b13d10c4e24c17c6079fe0f09173822ef9a +Subproject commit aa8feaaee71b7c28574a7e4aaaa283da809ef8fb From 973f4b0b8260d64b4d742448dad6225eacf17a4e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 22 Sep 2021 11:19:44 +0100 Subject: [PATCH 394/973] Remove todaymd alias. --- shellaliases | 2 -- 1 file changed, 2 deletions(-) diff --git a/shellaliases b/shellaliases index 10f54100..ed31b079 100644 --- a/shellaliases +++ b/shellaliases @@ -277,5 +277,3 @@ fi # Alias for parsing structure JSON logs... alias plog="jq -r -s 'map(select(.) | .log_level |= ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'" - -alias todaymd="icalBuddy -f -b '' -npn -nc -ps \"/ | /\" -eep \"notes,attendees,url\" eventsToday | awk -F\| '{ if (NF>2) { gsub(/ /,\"\",\$3); printf(\"- \`%s\` %s %s\\n\", \$3, \$1, \$2); } else { gsub(/ /,\"\",\$2); printf(\"- \`%s\` %s\\n\", \$2, \$1); } }' | sed 's/\(https:\/\/[^ ]*\)/[zoom](\1)/'" From 80398eea73ffd98db384a2edfd8e035f8932fb03 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 4 Oct 2021 10:55:49 +0100 Subject: [PATCH 395/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index a4e68967..c396efbe 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit a4e68967a472132b4ffb05fbd1c86ac88d27fe42 +Subproject commit c396efbee3217f1d5cc433cd788a67f747a579cc From 01dac05f6f87edaf4c7459615873932a5d2a2afc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 8 Oct 2021 12:36:58 +0100 Subject: [PATCH 396/973] Update Brewfile. --- Brewfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Brewfile b/Brewfile index 3271c8a1..c5c28a2d 100644 --- a/Brewfile +++ b/Brewfile @@ -36,6 +36,7 @@ brew "node" brew "aws-cdk" brew "aws-shell" brew "awscli" +brew "base64" brew "bash" brew "bash-completion" brew "bat" @@ -46,6 +47,7 @@ brew "brew-cask-completion" brew "bzip2" brew "freetype" brew "cairo" +brew "chezmoi" brew "clang-format" brew "consul" brew "consul-template" From 1e8f253b84a32773f82f420c2ca199139320e236 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 19 Oct 2021 12:54:43 +0100 Subject: [PATCH 397/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index c396efbe..75fe22b4 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit c396efbee3217f1d5cc433cd788a67f747a579cc +Subproject commit 75fe22b40552305ef7636b7604ba99534d4f7808 From 56f7a7f4a837a62793d4a4a96c70917f396eccb4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 22 Oct 2021 17:32:27 +0100 Subject: [PATCH 398/973] Add note about imgcat. --- zshrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zshrc b/zshrc index a782c9b3..44210ea5 100644 --- a/zshrc +++ b/zshrc @@ -146,6 +146,9 @@ fi eval "$(pyenv init - --no-rehash zsh)" test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" +# For proper imgcat use, comment out the following line: +# unalias imgcat +# see https://github.com/eddieantonio/imgcat # To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh. [[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh From 0683da3db48ec7354f1fc171e412e3ac38264f34 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 22 Oct 2021 18:03:28 +0100 Subject: [PATCH 399/973] Update Brewfile. --- Brewfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index c5c28a2d..b58de61c 100644 --- a/Brewfile +++ b/Brewfile @@ -4,6 +4,7 @@ tap "coretech/terrafile" tap "d12frosted/emacs-plus" tap "domt4/autoupdate" tap "dutchcoders/cloudman" +tap "eddieantonio/eddieantonio" tap "github/bootstrap" tap "github/gh" tap "homebrew/bundle" @@ -23,6 +24,8 @@ brew "sqlite" brew "xz" brew "ansible" brew "ansible-lint" +brew "giflib" +brew "libtiff" brew "apr" brew "apr-util" brew "asciidoc" @@ -69,12 +72,10 @@ brew "envconsul" brew "exa" brew "fd" brew "fribidi" -brew "giflib" brew "p11-kit" brew "unbound" brew "gnutls" brew "harfbuzz" -brew "libtiff" brew "leptonica" brew "sdl2" brew "tesseract" From ec0812fa9b067e2561f39dcb47ca9323f078d8d6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 13:51:09 +0000 Subject: [PATCH 400/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index aa8feaae..eff8ca13 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit aa8feaaee71b7c28574a7e4aaaa283da809ef8fb +Subproject commit eff8ca13ad8de5f5887114d5ea960cefd06690af From cf53d850c673b348c0f2a13945e4106a215ca2ec Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:27:14 +0000 Subject: [PATCH 401/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 75fe22b4..5c2440cb 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 75fe22b40552305ef7636b7604ba99534d4f7808 +Subproject commit 5c2440cb0c2ee70afb33bda3954a93abe37c34f2 From e3d52c11130b6a2e8514b618c68e14a02ff6d6dd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:31:47 +0000 Subject: [PATCH 402/973] Update autoenv module. --- autoenv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoenv b/autoenv index bdefda99..025e52fb 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit bdefda9958bce6e20fd365fdab99c2ea9ee8cd1d +Subproject commit 025e52fbf033cc094943febec71e2ad81a5de84f From fac9fe9fc435724d4e06bde855b9bd7931bcd8be Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:36:03 +0000 Subject: [PATCH 403/973] Update icdiff module. --- icdiff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icdiff b/icdiff index 3fc0fe30..89574fa2 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 3fc0fe3072720730cdea2c710d8bce03d0b1a47a +Subproject commit 89574fa2f2323010e08a88430bfcd870c9e5e512 From 06eb798a05329a090b10f1c43452ead42f3b87bd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:38:16 +0000 Subject: [PATCH 404/973] Update powerlevel10k module. --- powerlevel10k | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel10k b/powerlevel10k index 8f798f98..f5d61840 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit 8f798f986a02eb27c4ef25229976443fa2a66809 +Subproject commit f5d61840ae3a4f8c2765e1a67d94d9a96de71601 From 381bd354ae5cf18922a6c907ae252b9d4be4849c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:52:48 +0000 Subject: [PATCH 405/973] Update vim-surround module. --- vim/bundle/vim-surround | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index f51a26d3..aeb93327 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit f51a26d3710629d031806305b6c8727189cd1935 +Subproject commit aeb933272e72617f7c4d35e1f003be16836b948d From c56f8380b58a61161b28c3b131317b77bf01f18b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:53:14 +0000 Subject: [PATCH 406/973] Update vim-scriptease module. --- vim/bundle/vim-scriptease | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index dbdc88f2..710fe7c2 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit dbdc88f2ca38613a089354823fb2cec4d87d104d +Subproject commit 710fe7c2f3c636fae0b5cac041ff8da028a0777f From 4c081893b11490f42be99d0a384b39790f28c435 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:53:26 +0000 Subject: [PATCH 407/973] Update vim-markdown module. --- vim/bundle/vim-markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index addd5aba..ed76403b 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit addd5abaa66f015802ec351cd67893f6e521751e +Subproject commit ed76403b2e0622bc137df4576275a9fd3720b875 From 00a96b7e706e02b761ffed8431053b3d58544537 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:53:38 +0000 Subject: [PATCH 408/973] Update vim-liquid module. --- vim/bundle/vim-liquid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid index 447c69b5..dd5243a3 160000 --- a/vim/bundle/vim-liquid +++ b/vim/bundle/vim-liquid @@ -1 +1 @@ -Subproject commit 447c69b59fadcf04f96d99873126953eae7aa235 +Subproject commit dd5243a34e97c15e1a128b6ec440a0368e583900 From 3d78b39df9e9d7ae07aeab4d1fb583b4e1e481d2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:53:50 +0000 Subject: [PATCH 409/973] Update vim-fugitive module. --- vim/bundle/vim-fugitive | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 75b2a9a8..a6b823b8 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 75b2a9a8daf6589f9747ff4f2d068fdea54e92ea +Subproject commit a6b823b8d0a8959e81876fd4857ba822495c028a From f7704e478f4ccaa000de30001162937f4d45be75 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:54:05 +0000 Subject: [PATCH 410/973] Update tabnine-vim module. --- vim/bundle/tabnine-vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim index e431d042..7700a280 160000 --- a/vim/bundle/tabnine-vim +++ b/vim/bundle/tabnine-vim @@ -1 +1 @@ -Subproject commit e431d0425f4b132caef736ab682ba917edee30e9 +Subproject commit 7700a2809a08c1774bba6fa140c61bbd9831e12a From 133fc7872e51dfd98e384ea3f40c2ffddccedf51 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 9 Nov 2021 14:56:20 +0000 Subject: [PATCH 411/973] Fix osx OMZ plugin rename. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 44210ea5..3319c9cd 100644 --- a/zshrc +++ b/zshrc @@ -104,7 +104,7 @@ plugins=( gitignore golang iterm2 - osx + macos pip # pipenv pyenv From 2d38f567435ef4595ce2f546bb138c40d415efa3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Nov 2021 23:19:40 +0000 Subject: [PATCH 412/973] Crontab entry for persistent history conversion. --- crontab.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 crontab.txt diff --git a/crontab.txt b/crontab.txt new file mode 100644 index 00000000..844866a8 --- /dev/null +++ b/crontab.txt @@ -0,0 +1 @@ +0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 From 3d93ad3832a7e40cfc4b2dff63fbc842cf684c6b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 Nov 2021 23:20:04 +0000 Subject: [PATCH 413/973] pyenv-virtualenv init. --- profile | 1 + 1 file changed, 1 insertion(+) diff --git a/profile b/profile index 86ecf8ed..c62f1db8 100644 --- a/profile +++ b/profile @@ -15,3 +15,4 @@ source ~/dotfiles/shellactivities export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" +if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi From d211aee32fc1c92c52d62df7a82f4ea3cc813595 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 12 Nov 2021 12:23:34 +0000 Subject: [PATCH 414/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index eff8ca13..7daee363 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit eff8ca13ad8de5f5887114d5ea960cefd06690af +Subproject commit 7daee3631758edc38afb1f6fbbd7f3414595facf From edfd041be0fcbc4d5cf402ab1cd3b349cffe82bc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 12 Nov 2021 13:43:22 +0000 Subject: [PATCH 415/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index b58de61c..8f5acd70 100644 --- a/Brewfile +++ b/Brewfile @@ -104,6 +104,7 @@ brew "libusb" brew "pinentry" brew "gnupg" brew "go" +brew "golangci-lint" brew "gopls" brew "netpbm" brew "gts" From 65af8163a2bc7e2694b1e635ed7a20ab1c87bba1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 23 Nov 2021 14:41:04 +0000 Subject: [PATCH 416/973] Updated OMZ --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 5c2440cb..15fd9c84 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 5c2440cb0c2ee70afb33bda3954a93abe37c34f2 +Subproject commit 15fd9c84deae400ba52451d75548fb8f6ec26bcf From 9222f120b6248d012f2a08214c1056d2d12b8058 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 23 Nov 2021 14:42:37 +0000 Subject: [PATCH 417/973] Merged latest update from iTerm2. --- iterm2_shell_integration.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iterm2_shell_integration.zsh b/iterm2_shell_integration.zsh index 9ee6e9b0..21e0b0de 100755 --- a/iterm2_shell_integration.zsh +++ b/iterm2_shell_integration.zsh @@ -167,4 +167,6 @@ if [[ -o interactive ]]; then printf "\033]1337;ShellIntegrationVersion=12;shell=zsh\007" fi fi -alias imgcat=${HOME}/.iterm2/imgcat;alias imgls=${HOME}/.iterm2/imgls;alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion + +# DISABLED because of issues with iTerm2 imgcat! +#alias imgcat=/Users/james.lawton/.iterm2/imgcat;alias imgls=/Users/james.lawton/.iterm2/imgls;alias it2api=/Users/james.lawton/.iterm2/it2api;alias it2attention=/Users/james.lawton/.iterm2/it2attention;alias it2check=/Users/james.lawton/.iterm2/it2check;alias it2copy=/Users/james.lawton/.iterm2/it2copy;alias it2dl=/Users/james.lawton/.iterm2/it2dl;alias it2getvar=/Users/james.lawton/.iterm2/it2getvar;alias it2git=/Users/james.lawton/.iterm2/it2git;alias it2setcolor=/Users/james.lawton/.iterm2/it2setcolor;alias it2setkeylabel=/Users/james.lawton/.iterm2/it2setkeylabel;alias it2ul=/Users/james.lawton/.iterm2/it2ul;alias it2universion=/Users/james.lawton/.iterm2/it2universion From 14a6142df9a326bf60581657e896a0745e3e32f6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 24 Nov 2021 11:54:26 +0000 Subject: [PATCH 418/973] Add note functions for Obsidian. --- obsidian/note.js | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 obsidian/note.js diff --git a/obsidian/note.js b/obsidian/note.js new file mode 100644 index 00000000..07018831 --- /dev/null +++ b/obsidian/note.js @@ -0,0 +1,116 @@ +// This is a module providing JS functions that will be imported and called by +// the Obsidian Templater plugin. + +// In order for this to work, it has to obey the CommonJS module specification: +// https://flaviocopes.com/commonjs/ +// with the added restriction, that there can be only one module export from any +// module, and that export must match the module (file) name. + +const homedir = require('os').homedir(); +const vault = "Library/Mobile Documents/iCloud~md~obsidian/Documents/Work/"; +const top_level = homedir + "/" + vault; +const zeroPad = (num, places) => String(num).padStart(places, '0') + +// Get the date string from the filename. +// For now this is just the filename, but that might change. +function get_date_str(filename) { + var name = filename; + //if name.includes(' ') { + // name = name.split(' ')[-1]; + //} + return name; +} + +// Get the year integer from the filename. +function get_year(filename) { + var date = get_date_str(filename); + return parseInt(date.split('-')[0]); +} + +// Get the month integer from the filename. +function get_month(filename) { + var date = get_date_str(filename); + return parseInt(date.split('-')[1]); +} + +// Get the day of the month integer from the filename. +function get_day(filename) { + var date = get_date_str(filename); + return parseInt(date.split('-')[2]); +} + +// Get a list of the files in the specified directory. +function get_files(dir) { + return require('fs').readdirSync(top_level + dir).sort(); +} + +// Get an array of integers representing the date in the filename. +function get_date_int(name) { + var tmp_name = name; + if (tmp_name != null && tmp_name != '' && tmp_name != undefined) { + if (tmp_name.indexOf(' ') >= 0) { + tmp_name = tmp_name.substr(tmp_name.lastIndexOf(' ') + 1); + } + } + console.log("note: tmp_name:", tmp_name); + var year = get_year(tmp_name); + var month = get_month(tmp_name); + var date = get_day(tmp_name); + return [year, month, date]; +} + +// Get a new date from the specified date and an offset in days. +function get_new_date(year, month, day, offset) { + var date = new Date(year, month, day); + console.log("note: date:", date); + date.setDate(date.getDate() + offset); + console.log("note: date*:", date); + var new_year = date.getFullYear(); + var new_month = date.getMonth(); + var new_date = date.getDate(); + console.log("note: new:", new_year, new_month, new_date); + return [new_year, new_month, new_date]; +} + +// Make a new date string from the specified date integers. +function make_new_date_str(year, month, day) { + var year_str = zeroPad(year, 4); + var month_str = zeroPad(month, 2); + var day_str = zeroPad(day, 2); + var date_str = `${year_str}-${month_str}-${day_str}`; + return date_str; +} + +function note(type, tp) { + console.log(""); + console.log(""); + var dir = tp.file.folder(relative=true); + console.log("note: dir:", dir); + var name = tp.file.title; + console.log("note: name:", name); + // var files = require('fs').readdirSync(top_level + dir); + // console.log("note: files:", files); + var [year, month, day] = get_date_int(name); + if (type == "prev") { + var [new_year, new_month, new_day] = get_new_date(year, month, day, -1); + var note = make_new_date_str(new_year, new_month, new_day); + } else if (type == "next") { + var [new_year, new_month, new_day] = get_new_date(year, month, day, 1); + var note = make_new_date_str(new_year, new_month, new_day); + } else if (type == "prev_week") { + var [new_year, new_month, new_day] = get_new_date(year, month, day, -7); + var note = "Weekly " + make_new_date_str(new_year, new_month, new_day); + } else if (type == "next_week") { + var [new_year, new_month, new_day] = get_new_date(year, month, day, 7); + var note = "Weekly " + make_new_date_str(new_year, new_month, new_day); + } else { + console.error("ERROR: Type must be \"prev\" or \"next\"!"); + } + console.log("note: new date:", new_year, new_month, new_day); + console.log("note: note:", note); + console.log(""); + console.log(""); + return note; +} + +module.exports = note; From 5522397b8e1bcd6e53078df1ebe248f7624c3717 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 24 Nov 2021 11:57:05 +0000 Subject: [PATCH 419/973] Fix vault path. --- obsidian/note.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/note.js b/obsidian/note.js index 07018831..a6e1f2da 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -7,7 +7,7 @@ // module, and that export must match the module (file) name. const homedir = require('os').homedir(); -const vault = "Library/Mobile Documents/iCloud~md~obsidian/Documents/Work/"; +const vault = "Drive/jim.lawton@gmail.com/Obsidian/Notes/"; const top_level = homedir + "/" + vault; const zeroPad = (num, places) => String(num).padStart(places, '0') From aa08e6efd030547ed434efb58ef35964ee74965a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Dec 2021 11:17:39 +0000 Subject: [PATCH 420/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 7daee363..6466c96a 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 7daee3631758edc38afb1f6fbbd7f3414595facf +Subproject commit 6466c96a1ef48139b801999dec754d2e830cf140 From a42aa8cd9974e3ea48d652953a3024634243d973 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Dec 2021 11:17:58 +0000 Subject: [PATCH 421/973] Add debugs. --- obsidian/note.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/obsidian/note.js b/obsidian/note.js index a6e1f2da..51ba4229 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -54,8 +54,11 @@ function get_date_int(name) { } console.log("note: tmp_name:", tmp_name); var year = get_year(tmp_name); + console.log("note: year:", year); var month = get_month(tmp_name); + console.log("note: month:", month); var date = get_day(tmp_name); + console.log("note: date:", date); return [year, month, date]; } From 5c181c74d4e629b2e1862ea4ac8cc5c41b7a69ed Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Dec 2021 12:04:13 +0000 Subject: [PATCH 422/973] Date seems to have issues at the end of the year, switching back to templater functions now works. --- obsidian/note.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/obsidian/note.js b/obsidian/note.js index 51ba4229..12e72d22 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -95,17 +95,13 @@ function note(type, tp) { // console.log("note: files:", files); var [year, month, day] = get_date_int(name); if (type == "prev") { - var [new_year, new_month, new_day] = get_new_date(year, month, day, -1); - var note = make_new_date_str(new_year, new_month, new_day); + var note = tp.date.yesterday(); } else if (type == "next") { - var [new_year, new_month, new_day] = get_new_date(year, month, day, 1); - var note = make_new_date_str(new_year, new_month, new_day); + var note = tp.date.tomorrow(); } else if (type == "prev_week") { - var [new_year, new_month, new_day] = get_new_date(year, month, day, -7); - var note = "Weekly " + make_new_date_str(new_year, new_month, new_day); + var note = "Weekly " + tp.date.now("YYYY-MM-DD", -7); } else if (type == "next_week") { - var [new_year, new_month, new_day] = get_new_date(year, month, day, 7); - var note = "Weekly " + make_new_date_str(new_year, new_month, new_day); + var note = "Weekly " + tp.date.now("YYYY-MM-DD", 7); } else { console.error("ERROR: Type must be \"prev\" or \"next\"!"); } From 7340a566a3615c90dfb70d954fedfc26135009a1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Dec 2021 18:13:29 +0000 Subject: [PATCH 423/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 15fd9c84..904f8685 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 15fd9c84deae400ba52451d75548fb8f6ec26bcf +Subproject commit 904f8685f75ff5dd3f544f8c6f2cabb8e5952e9a From 82591d5d6f8946dcb096750135346e0937bb6fa8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Jan 2022 22:55:36 +0000 Subject: [PATCH 424/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 6466c96a..a059fe09 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 6466c96a1ef48139b801999dec754d2e830cf140 +Subproject commit a059fe0928274aefe0282b5dfcb2bc0dce2dbbb2 From a9ded6f742d369598f1b7ebe06dd022226160fb7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Jan 2022 23:35:41 +0000 Subject: [PATCH 425/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index a059fe09..2ecafd9e 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit a059fe0928274aefe0282b5dfcb2bc0dce2dbbb2 +Subproject commit 2ecafd9ea3426d9cc6ab59a16f5238859bb0ef3a From ac0c9112b2ecc3603d753b529dee6cf5dbc2a10c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 4 Jan 2022 12:34:01 +0000 Subject: [PATCH 426/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 2ecafd9e..a3a66b23 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 2ecafd9ea3426d9cc6ab59a16f5238859bb0ef3a +Subproject commit a3a66b237f50168b7923ec0ef95aaa3d12eb3a49 From 7d56c483c8b2855141b0b32ba9a82621e70325b9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 6 Jan 2022 13:37:31 +0000 Subject: [PATCH 427/973] Update omz. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 904f8685..67cc59b4 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 904f8685f75ff5dd3f544f8c6f2cabb8e5952e9a +Subproject commit 67cc59b4258a13232cddfddd75f44d8ca2b80172 From 53830c45e128dfbf091a557d10b6900f353dae05 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 6 Jan 2022 13:38:12 +0000 Subject: [PATCH 428/973] Enable per-directory-history plugin. --- zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/zshrc b/zshrc index 3319c9cd..d59c9a9d 100644 --- a/zshrc +++ b/zshrc @@ -105,6 +105,7 @@ plugins=( golang iterm2 macos + per-directory-history pip # pipenv pyenv From d33922a414b89ebcd0f33b12364f434b59258ad2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 12:56:12 +0000 Subject: [PATCH 429/973] Remove log line. --- obsidian/note.js | 1 - 1 file changed, 1 deletion(-) diff --git a/obsidian/note.js b/obsidian/note.js index 12e72d22..eebb47a8 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -105,7 +105,6 @@ function note(type, tp) { } else { console.error("ERROR: Type must be \"prev\" or \"next\"!"); } - console.log("note: new date:", new_year, new_month, new_day); console.log("note: note:", note); console.log(""); console.log(""); From 3ad2f5ed5102729e0eb54d6cfb3161c0ce4d5e0e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 12:56:35 +0000 Subject: [PATCH 430/973] Simple Obsidian script to find the previous note to the specified note, and roll forward any incomplete Todo items. --- obsidian/todos | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 obsidian/todos diff --git a/obsidian/todos b/obsidian/todos new file mode 100755 index 00000000..3aadae65 --- /dev/null +++ b/obsidian/todos @@ -0,0 +1,31 @@ +#!/usr/local/bin/bash +# Simple script for Obsidian, for use with the Templater plugin, +# to find the previous note to the specified note, and roll forward any +# incomplete Todo items. + +# Yes, this duplicates the Rollover Daily Todos plugin functionality, +# but that plugin does not seem to work too well with Templater, as +# Templater takes longer to generate output, and its rewrite of the +# target file loses the output from the other plugin. + +# This is designed to be used directly from the Templater plugin. + +vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" +notes_dir="${vault}/Daily Notes/" +when="$(date '+%Y-%m-%d')" +if [ -n "$1" ]; then + when="$1" +fi +input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}') + +# Calculate the date of the previous daily note. +# - List all notes by name in lexical order +# - Find the entry before the specified date +all_notes=$(ls -1R "${notes_dir}" | grep '^Daily') +prev_note=$(echo "${all_notes}" | grep -B1 "${input_date}" | head -1) +prev_date=$(echo "${prev_note}" | awk '{print $2}' | awk -F. '{print $1}') +prev_month=$(echo "${prev_date}" | awk -F- '{print $2}') +prev_year=$(echo "${prev_date}" | awk -F- '{print $1}') + +# Print all non-complete todo items from the specified Obsidian file. +cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | sed '/^$/d' | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]' From 8879e995c8f20cf9f980f8d7f2ff799492f37de4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 12:58:00 +0000 Subject: [PATCH 431/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 67cc59b4..a7efd96a 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 67cc59b4258a13232cddfddd75f44d8ca2b80172 +Subproject commit a7efd96a60157965370e1dbc4c7fce66b7a64225 From 6c1842858ac49c77522a91bd562a3a7049240c4f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 13:00:41 +0000 Subject: [PATCH 432/973] Add usage. --- obsidian/todos | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/obsidian/todos b/obsidian/todos index 3aadae65..b787dd26 100755 --- a/obsidian/todos +++ b/obsidian/todos @@ -10,6 +10,11 @@ # This is designed to be used directly from the Templater plugin. +# To use it, add this to your daily note template file: +# <% tp.user.todos() %> +# and set up the Templater plugin to add a User System Command, named `todos`, +# and specify the path to this script. + vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" notes_dir="${vault}/Daily Notes/" when="$(date '+%Y-%m-%d')" From 9cc4c32f0db089bf58e5c20d97bd0f0ebe2aae52 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 13:52:00 +0000 Subject: [PATCH 433/973] Added simple Obsidian scripts to better determine prev/next day for note links. --- obsidian/next_day | 23 +++++++++++++++++++++++ obsidian/prev_day | 25 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100755 obsidian/next_day create mode 100755 obsidian/prev_day diff --git a/obsidian/next_day b/obsidian/next_day new file mode 100755 index 00000000..75358266 --- /dev/null +++ b/obsidian/next_day @@ -0,0 +1,23 @@ +#!/usr/local/bin/bash +# Simple script for Obsidian, for use with the Templater plugin, +# to generate the name of the next note (i.e. the note on the next working day) +# to the specified note, and return the date string for it. + +# To use it, add this to your daily note template file: +# <% tp.user.next_day() %> +# and set up the Templater plugin to add a User System Command, named `next_day`, +# and specify the path to this script. + +# This depends on MacOS date, not GNU date, and GNU dateutils (for dateadd). + +when="$(date '+%Y-%m-%d')" +if [ -n "$1" ]; then + when="$1" +fi +input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}') +if [[ $(date -j -f '%Y-%m-%d' "${input_date}" +'%u') = 5 ]] ; then + next_date=$(dateadd "${input_date}" 3d) +else + next_date=$(dateadd "${input_date}" 1d) +fi +echo "$next_date" diff --git a/obsidian/prev_day b/obsidian/prev_day new file mode 100755 index 00000000..dc37ca8c --- /dev/null +++ b/obsidian/prev_day @@ -0,0 +1,25 @@ +#!/usr/local/bin/bash +# Simple script for Obsidian, for use with the Templater plugin, +# to find the previous note (i.e. the note on the previous working day) to the +# specified note, and return the date string for it. + +# To use it, add this to your daily note template file: +# <% tp.user.prev_day() %> +# and set up the Templater plugin to add a User System Command, named `todos`, +# and specify the path to this script. + +vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" +notes_dir="${vault}/Daily Notes/" +when="$(date '+%Y-%m-%d')" +if [ -n "$1" ]; then + when="$1" +fi +input_date=$(echo "${when}" | awk '{print $NF}' | awk -F. '{print $1}') + +# Calculate the date of the previous daily note. +# - List all notes by name in lexical order +# - Find the entry before the specified date +all_notes=$(ls -1R "${notes_dir}" | grep '^Daily') +prev_note=$(echo "${all_notes}" | grep -B1 "${input_date}" | head -1) +prev_date=$(echo "${prev_note}" | awk '{print $2}' | awk -F. '{print $1}') +echo "$prev_date" From 30f468542579bef7d30f9fae7dc9ec1e8b65fdcb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Jan 2022 13:52:31 +0000 Subject: [PATCH 434/973] Fix comment. --- obsidian/prev_day | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/prev_day b/obsidian/prev_day index dc37ca8c..d58686f8 100755 --- a/obsidian/prev_day +++ b/obsidian/prev_day @@ -5,7 +5,7 @@ # To use it, add this to your daily note template file: # <% tp.user.prev_day() %> -# and set up the Templater plugin to add a User System Command, named `todos`, +# and set up the Templater plugin to add a User System Command, named `prev_day`, # and specify the path to this script. vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" From 78d528f6b74482930dda83dd04af5bbccd9873b4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 26 Jan 2022 11:14:40 +0000 Subject: [PATCH 435/973] Fix path. --- obsidian/note.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/note.js b/obsidian/note.js index eebb47a8..b5df0bb4 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -7,7 +7,7 @@ // module, and that export must match the module (file) name. const homedir = require('os').homedir(); -const vault = "Drive/jim.lawton@gmail.com/Obsidian/Notes/"; +const vault = "obsidian/Notes/"; const top_level = homedir + "/" + vault; const zeroPad = (num, places) => String(num).padStart(places, '0') From 31a2160f674a18a4a5370535539f3d650b0b0848 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 26 Jan 2022 11:16:21 +0000 Subject: [PATCH 436/973] Fix paths. --- obsidian/prev_day | 2 +- obsidian/todos | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/obsidian/prev_day b/obsidian/prev_day index d58686f8..14268eb7 100755 --- a/obsidian/prev_day +++ b/obsidian/prev_day @@ -8,7 +8,7 @@ # and set up the Templater plugin to add a User System Command, named `prev_day`, # and specify the path to this script. -vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" +vault="${HOME}/obsidian/Notes/" notes_dir="${vault}/Daily Notes/" when="$(date '+%Y-%m-%d')" if [ -n "$1" ]; then diff --git a/obsidian/todos b/obsidian/todos index b787dd26..953a8b61 100755 --- a/obsidian/todos +++ b/obsidian/todos @@ -15,7 +15,7 @@ # and set up the Templater plugin to add a User System Command, named `todos`, # and specify the path to this script. -vault="${HOME}/Drive/jim.lawton@gmail.com/Obsidian/Notes/" +vault="${HOME}/obsidian/Notes/" notes_dir="${vault}/Daily Notes/" when="$(date '+%Y-%m-%d')" if [ -n "$1" ]; then From 9374007c24b5099cbf1da072975dd039026a5bef Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 28 Jan 2022 16:04:49 +0000 Subject: [PATCH 437/973] Update Brewfile. --- Brewfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 8f5acd70..0636506e 100644 --- a/Brewfile +++ b/Brewfile @@ -59,6 +59,7 @@ brew "libidn2" brew "libssh2" brew "rtmpdump" brew "curl" +brew "dateutils" brew "delta" brew "delve" brew "diffutils" @@ -88,7 +89,6 @@ brew "fzf" brew "gdb" brew "gh" brew "ghostscript" -brew "rust" brew "gimme-aws-creds" brew "gist" brew "git" @@ -183,6 +183,7 @@ brew "ripgrep" brew "rlwrap" brew "robot-framework" brew "ruby" +brew "rust" brew "semgrep" brew "shellcheck" brew "sloccount" @@ -194,6 +195,7 @@ brew "sshuttle" brew "starship" brew "staticcheck" brew "subversion" +brew "telnet" brew "terminal-notifier" brew "terraform-docs" brew "tfenv" From 947f71861aaec08d786ba530d028fa10d2e221cd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 28 Jan 2022 18:04:28 +0000 Subject: [PATCH 438/973] Stop stripping blank lines, to allow for sub-headings in todo section. --- obsidian/todos | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/obsidian/todos b/obsidian/todos index 953a8b61..5b47c079 100755 --- a/obsidian/todos +++ b/obsidian/todos @@ -33,4 +33,5 @@ prev_month=$(echo "${prev_date}" | awk -F- '{print $2}') prev_year=$(echo "${prev_date}" | awk -F- '{print $1}') # Print all non-complete todo items from the specified Obsidian file. -cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | sed '/^$/d' | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]' +# cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | sed '/^$/d' | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]' +cat "${vault}/Daily Notes/$prev_year/$prev_month/Daily $prev_date.md" | awk '/^## Todo/{flag=1; next} /^## Agenda/ {flag=0} flag' | grep -v '\- \[x\]' From 6b723950e62ff9e3260fbde4efc75b3ddc9b7e26 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 2 Feb 2022 13:10:55 +0000 Subject: [PATCH 439/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index a7efd96a..4ee0cf3c 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit a7efd96a60157965370e1dbc4c7fce66b7a64225 +Subproject commit 4ee0cf3cb4c64568430f9af5b1edca2602ab5807 From 815920f6745143a8c1afa3cb653c18aabfa29b67 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 3 Feb 2022 15:52:57 +0000 Subject: [PATCH 440/973] Set up Artifactory envars, if config is present. --- shellvars | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shellvars b/shellvars index 675ab676..0017a84d 100644 --- a/shellvars +++ b/shellvars @@ -88,3 +88,8 @@ export PIP_REQUIRE_VIRTUALENV=true export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" + +if [ -f ~/.jfrog/jfrog-cli.conf ]; then + export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` + export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` +fi From 0faf70ab80acad7583ce622ee70462e0178978d5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 5 Feb 2022 22:43:43 +0000 Subject: [PATCH 441/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4ee0cf3c..2d3bae96 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4ee0cf3cb4c64568430f9af5b1edca2602ab5807 +Subproject commit 2d3bae965a445ac0f6edeed0b277a15d09e6a261 From 996f056e2dac582a91063cdbaea79a3f6a3ac4ab Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 13 Feb 2022 15:13:19 +0000 Subject: [PATCH 442/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 2d3bae96..02b52a03 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 2d3bae965a445ac0f6edeed0b277a15d09e6a261 +Subproject commit 02b52a03a5a78362c57d75c507240f69d4260d9a From f0f34b5ad8583c6ba3128ebeed4d2cc7f194cfc2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 18 Feb 2022 08:55:02 +0000 Subject: [PATCH 443/973] Fix weekly report file names to match new Obsidian setup. --- obsidian/note.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/obsidian/note.js b/obsidian/note.js index b5df0bb4..f0587a02 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -99,9 +99,9 @@ function note(type, tp) { } else if (type == "next") { var note = tp.date.tomorrow(); } else if (type == "prev_week") { - var note = "Weekly " + tp.date.now("YYYY-MM-DD", -7); + var note = tp.date.now("YYYY-MM-DD", -7); } else if (type == "next_week") { - var note = "Weekly " + tp.date.now("YYYY-MM-DD", 7); + var note = tp.date.now("YYYY-MM-DD", 7); } else { console.error("ERROR: Type must be \"prev\" or \"next\"!"); } From 212751d9b6f94d4f410a167c80cb16982a766c5e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 10:41:43 +0000 Subject: [PATCH 444/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 02b52a03..511ed654 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 02b52a03a5a78362c57d75c507240f69d4260d9a +Subproject commit 511ed65408231d04ed266066bba777d48ebec795 From d9c9743c2b51e23f1f2c9445f5692a9b941d8267 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 16:51:17 +0000 Subject: [PATCH 445/973] Update readme. --- README.markdown | 54 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/README.markdown b/README.markdown index 22b6fa27..d975dbf1 100644 --- a/README.markdown +++ b/README.markdown @@ -1,33 +1,51 @@ -# What is this? -These are Jim's shell configuration dotfiles. The goal is to increase CLI productivity on Linux (mainly Ubuntu) and OSX, though many scripts run just fine on any POSIX implementation. +# dotfiles -# Focus -The focus is on Bash support. +## What is this? -# Inspirations -The contents of this repo are based on Matthew McCullough's original (https://github.com/matthewmccullough/dotfiles). Others have been created over the years and gathered here. +These are Jim's shell configuration dot files. The goal is to increase CLI +productivity on Linux (mainly Ubuntu) and OSX, though many scripts run just fine +on any POSIX implementation. -# Acquiring This Repo -This project contains submodules. It is suggested that you clone this into your home directory. +## Focus - cd ~ - git clone --recurse-submodules https://github.com/jimlawton/dotfiles +The focus is on Zsh support. This used to work with Bash, but I switched and +don't support that any more. -# Setup +## Inspirations -Personalisation settings are in `personalisation`. Replace the values with your -own. +The contents of this repo are based on Matthew McCullough's [original](https://github.com/matthewmccullough/dotfiles). +Other bits have been added over the years. -There is a set up script that establishes the symlinks in your home directory. Run this once. +## Acquiring This Repo + +This project contains submodules. It is suggested that you clone this into your +home directory, as follows. + +```bash +> cd ~ +> git clone --recurse-submodules https://github.com/jimlawton/dotfiles ``` -$ ~/dotfiles/_setupdotfiles.sh + +## Setup + +Personalisation settings are in `personalisation`. Replace the values with your own. + +There is a set up script that establishes the symlinks in your home directory. +Run this once. + +```bash +> ~/dotfiles/_setupdotfiles.sh ``` > NOTE: Some of my personal configuration will remain after setup. You should fork and tweak to your specific needs. -# Non-automated, non-captured config +## Non-automated, non-captured config + +Reminder-to-self: Some additional personalization lives in the `~/.config/` +directory. Specifically, the `~/.config/gh/config.yml` file for [`gh`](https://cli.github.com). +It is not yet in scope for capture or copy, but some users have +[shared their configuration in a Gist](https://gist.github.com/vilmibm/a1b9a405ac0d5153c614c9c646e37d13). -Reminder-to-self: Some additional personalization lives in the `~/.config/` directory. Specifically, the `~/.config/gh/config.yml` file for [`gh`](https://cli.github.com). It is not yet in scope for capture or copy, but some users have [shared their configuration in a Gist](https://gist.github.com/vilmibm/a1b9a405ac0d5153c614c9c646e37d13). +## Contributions -# Contributions Contributions are always welcome in the form of pull requests with explanatory comments. From 958d3cc78ffbdf1df936755a3c884d33006ee9d1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 16:51:27 +0000 Subject: [PATCH 446/973] Remove trailing space. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index a482c1f9..519beafd 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -39,7 +39,7 @@ function symlinkifne { echo " Symlinking $DOTFILESDIR/$dotless to $1" ln -s $DOTFILESDIR/$dotless $target else - echo " Skipping $1." + echo " Skipping $1." fi else # Safe to just delete if it is a symlink (or if it doesn't exist). From e611f54cd3847f558cffb39cf93dc7b2f7a72d4e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 17:08:24 +0000 Subject: [PATCH 447/973] Allow override of MOVE variable. --- _setupdotfiles.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 519beafd..39e82f71 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -4,7 +4,6 @@ DOTFILESDIR=~/dotfiles DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DOTDIRS=".conf .tmux .vim" DROPDIRS="bin .pip" -MOVE=false SAVEDIR=~/.old/_setupdotfiles function symlinkifne { @@ -32,7 +31,7 @@ function symlinkifne { if [ ! -L $target ]; then # If it's not a symlink, tread carefully. echo " WARNING: $target already exists!" - if [ "$MOVE" = "true" ]; then + if [ "${MOVE:-false}" = "true" ]; then echo " Moving $target to $SAVEDIR/" mv $target $SAVEDIR/ dotless=$(echo $1 | sed s/.//) @@ -54,7 +53,7 @@ echo "Setting up..." pushd ~ -if [ "$MOVE" = "true" -a -d $SAVEDIR ]; then +if [ "${MOVE:-false}" = "true" -a -d $SAVEDIR ]; then echo "$SAVEDIR already exists! Please clean up and try again." echo "This is used to save old versions of your configuration files." exit 1 @@ -63,7 +62,7 @@ fi mkdir -p $SAVEDIR if [ ! -d dotfiles ]; then - echo "The dotfiles dir does not exist in your home directory!" + echo "The dotfiles directory does not exist in your home directory!" echo "You need to do:" echo "# cd ~" echo "# git clone --recurse-submodules https://github.com/jimlawton/dotfiles" From 3393c89bab3a993e30f7e91357cff850d972603f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 17:08:55 +0000 Subject: [PATCH 448/973] Remove trailing space. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 39e82f71..a1ba1feb 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -61,7 +61,7 @@ fi mkdir -p $SAVEDIR -if [ ! -d dotfiles ]; then +if [ ! -d dotfiles ]; then echo "The dotfiles directory does not exist in your home directory!" echo "You need to do:" echo "# cd ~" From f4167324d4ff7186d56979017c0124b110867b31 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 28 Feb 2022 17:11:00 +0000 Subject: [PATCH 449/973] Add note about `MOVE`. --- README.markdown | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index d975dbf1..c64bd2a3 100644 --- a/README.markdown +++ b/README.markdown @@ -31,13 +31,23 @@ home directory, as follows. Personalisation settings are in `personalisation`. Replace the values with your own. There is a set up script that establishes the symlinks in your home directory. -Run this once. +Run this: ```bash > ~/dotfiles/_setupdotfiles.sh ``` -> NOTE: Some of my personal configuration will remain after setup. You should fork and tweak to your specific needs. +This will attempt to set up symlinks to the relevant dot files from your home +directory. In the event of files already existing in your home directory, it +will warn and skip them. Carefully check the warnings, and when you are happy +to proceed, do: + +```bash +> MOVE=true ~/dotfiles/_setupdotfiles.sh +``` + +> NOTE: Some of my personal configuration will remain after setup. You should +> fork and tweak to your specific needs. ## Non-automated, non-captured config From 929f206ca6552583a76732bb3849d8b58a300569 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 Mar 2022 11:39:03 +0000 Subject: [PATCH 450/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 511ed654..c96fc233 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 511ed65408231d04ed266066bba777d48ebec795 +Subproject commit c96fc233c4903ba75fba5bc55e7f91f9dc8e460e From 3c9b1773dd77e84425dc52d116a3856a178b6d40 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 22 Mar 2022 11:39:34 +0000 Subject: [PATCH 451/973] Update Brewfile. --- Brewfile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 0636506e..ff4958dc 100644 --- a/Brewfile +++ b/Brewfile @@ -1,4 +1,5 @@ tap "bufbuild/buf" +tap "charmbracelet/tap" tap "chef/chef" tap "coretech/terrafile" tap "d12frosted/emacs-plus" @@ -66,6 +67,8 @@ brew "diffutils" brew "dive" brew "docker-completion" brew "docker-compose-completion" +brew "docker-credential-helper" +brew "docker-credential-helper-ecr" brew "docker-machine-completion" brew "dos2unix" brew "earthly" @@ -97,6 +100,8 @@ brew "git-filter-repo" brew "git-quick-stats" brew "git-standup", link: false brew "gitleaks" +brew "glow" +brew "gnu-indent" brew "gnu-sed" brew "libgcrypt" brew "libksba" @@ -218,7 +223,7 @@ brew "zlib" brew "zoxide" brew "zsh" brew "bufbuild/buf/buf" -brew "coretech/terrafile/terrafile" +brew "charmbracelet/tap/skate" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" @@ -226,6 +231,7 @@ cask "atom" cask "atom-beta" cask "aws-vault" cask "cakebrew" +cask "devtoys" cask "docker-toolbox" cask "dozer" cask "font-anonymice-powerline" From 1e3ff057fbe962e4ace48c32cbcb8fc68c71cb93 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 26 Mar 2022 12:26:02 +0000 Subject: [PATCH 452/973] Revert "Enable per-directory-history plugin." This reverts commit 53830c45e128dfbf091a557d10b6900f353dae05. --- zshrc | 1 - 1 file changed, 1 deletion(-) diff --git a/zshrc b/zshrc index d59c9a9d..3319c9cd 100644 --- a/zshrc +++ b/zshrc @@ -105,7 +105,6 @@ plugins=( golang iterm2 macos - per-directory-history pip # pipenv pyenv From affb731a0fde8c6eda4ebfa0a18c92a0c11b5bbb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 10 Apr 2022 21:22:59 +0100 Subject: [PATCH 453/973] Fig configuration. --- bash_profile | 8 ++++++++ bashrc | 8 ++++++++ profile | 8 ++++++++ zprofile | 7 +++++++ zshrc | 7 +++++++ 5 files changed, 38 insertions(+) diff --git a/bash_profile b/bash_profile index db229385..39ac8d1c 100644 --- a/bash_profile +++ b/bash_profile @@ -1,3 +1,7 @@ +# Fig pre block. Keep at the top of this file. +export PATH="${PATH}:${HOME}/.local/bin" +eval "$(fig init bash pre)" + #!/bin/bash ######################################################################## @@ -136,3 +140,7 @@ if [ -e "/usr/local/bin/bit" ]; then fi # eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) + +# Fig post block. Keep at the bottom of this file. +eval "$(fig init bash post)" + diff --git a/bashrc b/bashrc index 29a9d34b..52e88bc6 100644 --- a/bashrc +++ b/bashrc @@ -1,3 +1,7 @@ +# Fig pre block. Keep at the top of this file. +export PATH="${PATH}:${HOME}/.local/bin" +eval "$(fig init bash pre)" + #!/bin/bash ######################################################################## @@ -6,3 +10,7 @@ # Bash non-interactive shell will load the same functions as the interactive shell source ~/.bash_profile + +# Fig post block. Keep at the bottom of this file. +eval "$(fig init bash post)" + diff --git a/profile b/profile index c62f1db8..72398799 100644 --- a/profile +++ b/profile @@ -1,3 +1,7 @@ +# Fig pre block. Keep at the top of this file. +export PATH="${PATH}:${HOME}/.local/bin" +eval "$(fig init bash pre)" + ############################################################# # Generic configuration that applies to all shells ############################################################# @@ -16,3 +20,7 @@ export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi + +# Fig post block. Keep at the bottom of this file. +eval "$(fig init bash post)" + diff --git a/zprofile b/zprofile index 4fc9027f..e536c379 100644 --- a/zprofile +++ b/zprofile @@ -1,3 +1,7 @@ +# Fig pre block. Keep at the top of this file. +export PATH="${PATH}:${HOME}/.local/bin" +eval "$(fig init zsh pre)" + ############################################################################## # Import the shell-agnostic (Bash or Zsh) environment config ############################################################################## @@ -8,3 +12,6 @@ source ~/.profile ############################################################################## source ~/dotfiles/z/z.sh +# Fig post block. Keep at the bottom of this file. +eval "$(fig init zsh post)" + diff --git a/zshrc b/zshrc index 3319c9cd..663533e0 100644 --- a/zshrc +++ b/zshrc @@ -1,3 +1,7 @@ +# Fig pre block. Keep at the top of this file. +export PATH="${PATH}:${HOME}/.local/bin" +eval "$(fig init zsh pre)" + # Interactive shell configuration. ############################################################################## @@ -194,3 +198,6 @@ fi unset __conda_setup # <<< conda initialize <<< +# Fig post block. Keep at the bottom of this file. +eval "$(fig init zsh post)" + From 5e4ae178e6e4051048a2f5b75b8b50947e9b9374 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 10 Apr 2022 21:23:27 +0100 Subject: [PATCH 454/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index c96fc233..4d9e5ce9 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit c96fc233c4903ba75fba5bc55e7f91f9dc8e460e +Subproject commit 4d9e5ce9a7d8db3c3aadcae81580a5c3ff5a0e8b From 81565370a282d79e657b02ac6ba91fa22e5d0d0f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 10:04:39 +0100 Subject: [PATCH 455/973] Update messages. --- obsidian/note.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/obsidian/note.js b/obsidian/note.js index f0587a02..c40b56db 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -103,9 +103,9 @@ function note(type, tp) { } else if (type == "next_week") { var note = tp.date.now("YYYY-MM-DD", 7); } else { - console.error("ERROR: Type must be \"prev\" or \"next\"!"); + console.error("ERROR: invalid type arg to note function!"); } - console.log("note: note:", note); + console.log("note: new note:", note); console.log(""); console.log(""); return note; From 5313f33f8e0d9580941265e93deb7cf210c1b580 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 10:05:00 +0100 Subject: [PATCH 456/973] Trim slash. --- obsidian/todos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/todos b/obsidian/todos index 5b47c079..b4665d2c 100755 --- a/obsidian/todos +++ b/obsidian/todos @@ -15,7 +15,7 @@ # and set up the Templater plugin to add a User System Command, named `todos`, # and specify the path to this script. -vault="${HOME}/obsidian/Notes/" +vault="${HOME}/obsidian/Notes" notes_dir="${vault}/Daily Notes/" when="$(date '+%Y-%m-%d')" if [ -n "$1" ]; then From 8356113bcd8bbbce4bc2145c36417b4831daf85f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 12:59:59 +0100 Subject: [PATCH 457/973] Update Fig setup. --- bash_profile | 7 ++----- bashrc | 7 ++----- profile | 7 ++----- zprofile | 7 ++----- zshrc | 7 ++----- 5 files changed, 10 insertions(+), 25 deletions(-) diff --git a/bash_profile b/bash_profile index 39ac8d1c..28d3b76b 100644 --- a/bash_profile +++ b/bash_profile @@ -1,7 +1,5 @@ # Fig pre block. Keep at the top of this file. -export PATH="${PATH}:${HOME}/.local/bin" -eval "$(fig init bash pre)" - +. "$HOME/.fig/shell/bash_profile.pre.bash" #!/bin/bash ######################################################################## @@ -142,5 +140,4 @@ fi # eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) # Fig post block. Keep at the bottom of this file. -eval "$(fig init bash post)" - +. "$HOME/.fig/shell/bash_profile.post.bash" diff --git a/bashrc b/bashrc index 52e88bc6..098a771c 100644 --- a/bashrc +++ b/bashrc @@ -1,7 +1,5 @@ # Fig pre block. Keep at the top of this file. -export PATH="${PATH}:${HOME}/.local/bin" -eval "$(fig init bash pre)" - +. "$HOME/.fig/shell/bashrc.pre.bash" #!/bin/bash ######################################################################## @@ -12,5 +10,4 @@ eval "$(fig init bash pre)" source ~/.bash_profile # Fig post block. Keep at the bottom of this file. -eval "$(fig init bash post)" - +. "$HOME/.fig/shell/bashrc.post.bash" diff --git a/profile b/profile index 72398799..4a37719d 100644 --- a/profile +++ b/profile @@ -1,7 +1,5 @@ # Fig pre block. Keep at the top of this file. -export PATH="${PATH}:${HOME}/.local/bin" -eval "$(fig init bash pre)" - +. "$HOME/.fig/shell/profile.pre.bash" ############################################################# # Generic configuration that applies to all shells ############################################################# @@ -22,5 +20,4 @@ eval "$(pyenv init --path)" if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi # Fig post block. Keep at the bottom of this file. -eval "$(fig init bash post)" - +. "$HOME/.fig/shell/profile.post.bash" diff --git a/zprofile b/zprofile index e536c379..880dd6d8 100644 --- a/zprofile +++ b/zprofile @@ -1,7 +1,5 @@ # Fig pre block. Keep at the top of this file. -export PATH="${PATH}:${HOME}/.local/bin" -eval "$(fig init zsh pre)" - +. "$HOME/.fig/shell/zprofile.pre.zsh" ############################################################################## # Import the shell-agnostic (Bash or Zsh) environment config ############################################################################## @@ -13,5 +11,4 @@ source ~/.profile source ~/dotfiles/z/z.sh # Fig post block. Keep at the bottom of this file. -eval "$(fig init zsh post)" - +. "$HOME/.fig/shell/zprofile.post.zsh" diff --git a/zshrc b/zshrc index 663533e0..0d3df889 100644 --- a/zshrc +++ b/zshrc @@ -1,7 +1,5 @@ # Fig pre block. Keep at the top of this file. -export PATH="${PATH}:${HOME}/.local/bin" -eval "$(fig init zsh pre)" - +. "$HOME/.fig/shell/zshrc.pre.zsh" # Interactive shell configuration. ############################################################################## @@ -199,5 +197,4 @@ unset __conda_setup # <<< conda initialize <<< # Fig post block. Keep at the bottom of this file. -eval "$(fig init zsh post)" - +. "$HOME/.fig/shell/zshrc.post.zsh" From 18cf4b445d8718f9454795bda75b8f2f10801c78 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 13:00:48 +0100 Subject: [PATCH 458/973] Add Python script to generate Obsidian daily notes for arbitrary dates. --- obsidian/daily-note.py | 145 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100755 obsidian/daily-note.py diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py new file mode 100755 index 00000000..7a26b526 --- /dev/null +++ b/obsidian/daily-note.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 + +# Simple script for Obsidian, to generate a new daily note. + +import argparse +import datetime +import glob +import os +import subprocess +import sys + + +DAYMD_SCRIPT = "dotfiles/scripts/daymd" + + +def main(): + """Generate a EasyConnect connection request.""" + + parser = argparse.ArgumentParser() + parser.add_argument( + type=str, + dest="date", + metavar="DATE", + nargs="?", + help="Optional date", + ) + args = parser.parse_args() + + if args.date: + try: + datetime.datetime.strptime(args.date, '%Y-%m-%d') + date_str = args.date + except ValueError: + sys.exit("Invalid date, must be valid calendar date in the form YYYY-MM-DD!") + else: + date_str = datetime.datetime.today().strftime('%Y-%m-%d') + + curr_date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') + + home = os.getenv('HOME') + if home is None: + sys.exit("$HOME is not defined!") + + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + year = curr_date_obj.strftime('%Y') + month = curr_date_obj.strftime('%m') + + vault = f"{home}/obsidian/Notes" + notes_dir = f"{vault}/Daily Notes/" + # templates_dir = f"{vault}/Templates/" + # template_file = f"{templates_dir}/Daily Notes.md" + + # get a dict of all daily notes, with paths. + notes_dict = {} + date_objs = [] + files = glob.glob(notes_dir + '/**/Daily*.md', recursive=True) + for file_path in sorted(files): + note_date = file_path.split('/')[-1].split('.')[0].split()[1] + notes_dict[note_date] = file_path + date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) + + if date_str in notes_dict.keys(): + sys.exit(f"Daily note for {date_str} already exists, skipping!") + else: + print(f"Creating note for {date_str}...") + + last_date_obj = date_objs[-1] + + # note_dates = sorted(notes_dict.keys()) + + # Find previous date. + prev_date = max(d for d in date_objs if d < curr_date_obj) + prev_str = prev_date.strftime('%Y-%m-%d') + + # Find next date. This depends on whether we're creating a note in a date gap, or adding at the end. + if curr_date_obj < last_date_obj: + next_date = min(d for d in date_objs if d > curr_date_obj) + else: + next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=1) + next_str = next_date.strftime('%Y-%m-%d') + + file_lines = [] + + # Skip the daily note template file. + + # Read the previous note file. + prev_file_path = notes_dict[prev_str] + print(f"Reading from {prev_file_path}") + + prev_data_lines = [] + with open(prev_file_path, 'r') as f: + prev_data_lines = f.readlines() + + output_file_path = f"{notes_dir + year + '/' + month + '/' + 'Daily ' + date_str + '.md'}" + + # Generate front matter + file_lines.append("---") + file_lines.append(f"creation date: {now}") + file_lines.append(f"tag: daily daily/{year}") + file_lines.append("---") + file_lines.append("") + + # Generate nav bar + file_lines.append(f"<< [[Daily {prev_str}]] | [[Daily {next_str}]] >>") + file_lines.append("") + + # Generate todos section + file_lines.append("## Todo") + # - Read todos from prev_date file + start = end = 0 + for i, line in enumerate(prev_data_lines): + if line.startswith("## Todo"): + start = i + 1 + if line.startswith("## Agenda") and start > 0: + end = i - 1 + todo_lines = prev_data_lines[start:end] + # - Remove any items done + for line in todo_lines: + if not line.startswith(("- [x]", "- [X]")): + file_lines.append(line.strip('\n')) + file_lines.append("") + + # Generate agenda + file_lines.append("## Agenda") + print(f"Running daymd...") + daymd = os.path.join(home, "dotfiles", "scripts", "daymd") + result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE) + file_lines.append(result.stdout.decode()) + + file_lines.append("## Reading/Learning") + file_lines.append("- ") + file_lines.append("") + + file_lines.append("## Activities") + file_lines.append("- ") + file_lines.append("") + + # Write new file + print(f"Writing to {output_file_path}") + with open(output_file_path, 'w') as f: + f.write('\n'.join(file_lines)) + + +if __name__ == "__main__": + main() From d7d3bc5b4ba59c8afa29af56241c371ae54d9e4d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 15:57:24 +0100 Subject: [PATCH 459/973] Update crontab copy, woth daily-note entry. --- crontab.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/crontab.txt b/crontab.txt index 844866a8..b603832e 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1 +1,2 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 +0 6 * * * python3 ~/dotfiles/obsidian/daily-note.py >/dev/null 2>&1 || true >> ~/daily-note.log 2>&1 From 7f04df5b9054a2f5a3bb34ce3922a6462477d36e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 16:13:00 +0100 Subject: [PATCH 460/973] Add a weekly report generator. --- obsidian/weekly-note.py | 128 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100755 obsidian/weekly-note.py diff --git a/obsidian/weekly-note.py b/obsidian/weekly-note.py new file mode 100755 index 00000000..fa855170 --- /dev/null +++ b/obsidian/weekly-note.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 + +# Simple script for Obsidian, to generate a new weekly note. + +import argparse +import datetime +import glob +import os +import subprocess +import sys + + +def main(): + """Generate a EasyConnect connection request.""" + + parser = argparse.ArgumentParser() + parser.add_argument( + type=str, + dest="date", + metavar="DATE", + nargs="?", + help="Optional date", + ) + args = parser.parse_args() + + if args.date: + try: + datetime.datetime.strptime(args.date, '%Y-%m-%d') + date_str = args.date + except ValueError: + sys.exit("Invalid date, must be valid calendar date in the form YYYY-MM-DD!") + else: + date_str = datetime.datetime.today().strftime('%Y-%m-%d') + + curr_date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') + + home = os.getenv('HOME') + if home is None: + sys.exit("$HOME is not defined!") + + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + year = curr_date_obj.strftime('%Y') + month = curr_date_obj.strftime('%m') + + vault = f"{home}/obsidian/Notes" + notes_dir = f"{vault}/Weekly Reports/" + + # get a dict of all weekly notes, with paths. + notes_dict = {} + date_objs = [] + files = glob.glob(notes_dir + '/**/Weekly*.md', recursive=True) + for file_path in sorted(files): + note_date = file_path.split('/')[-1].split('.')[0].split()[1] + notes_dict[note_date] = file_path + date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) + + if date_str in notes_dict.keys(): + sys.exit(f"Weekly report for {date_str} already exists, skipping!") + else: + print(f"Creating weekly report for w/e {date_str}...") + + last_date_obj = date_objs[-1] + + # note_dates = sorted(notes_dict.keys()) + + # Find previous date. + prev_date = max(d for d in date_objs if d < curr_date_obj) + prev_str = prev_date.strftime('%Y-%m-%d') + + # Find next date. This depends on whether we're creating a note in a date gap, or adding at the end. + if curr_date_obj < last_date_obj: + next_date = min(d for d in date_objs if d > curr_date_obj) + else: + next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=7) + next_str = next_date.strftime('%Y-%m-%d') + + file_lines = [] + + # Read the previous note file. + prev_file_path = notes_dict[prev_str] + print(f"Reading from {prev_file_path}") + + prev_data_lines = [] + with open(prev_file_path, 'r') as f: + prev_data_lines = f.readlines() + + output_file_path = f"{notes_dir + year + '/' + month + '/' + 'Weekly ' + date_str + '.md'}" + + # Generate front matter + file_lines.append("---") + file_lines.append(f"creation date: {now}") + file_lines.append(f"tag: daily daily/{year}") + file_lines.append("---") + file_lines.append("") + + # Generate nav bar + file_lines.append(f"<< [[Weekly {prev_str}]] | [[Weekly {next_str}]] >>") + file_lines.append("") + + # Populate activities with planned from last week, plus FIXME. + file_lines.append("## Activities this week") + start = end = 0 + for i, line in enumerate(prev_data_lines): + if line.startswith("## Planned for next week"): + start = i + 1 + if line.startswith("## Backlog") and start > 0: + end = i - 1 + planned_lines = prev_data_lines[start:end] + for line in planned_lines: + file_lines.append(line.strip('\n').replace("- ", "- `FIXME` ")) + file_lines.append("") + + file_lines.append("## Planned for next week") + file_lines.append("- ") + file_lines.append("") + + file_lines.append("## Backlog") + file_lines.append("- ") + file_lines.append("") + + # Write new file + print(f"Writing to {output_file_path}") + with open(output_file_path, 'w') as f: + f.write('\n'.join(file_lines)) + + +if __name__ == "__main__": + main() From ad4856c53afa6f9d0d37b6f7a3e5c12de3ca5e31 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 20:11:16 +0100 Subject: [PATCH 461/973] Modify weekly report generator to reap the last weeks daily notes activities. --- obsidian/daily-note.py | 4 +-- obsidian/weekly-note.py | 67 ++++++++++++++++++++++++++++++----------- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 7a26b526..008550b8 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -47,10 +47,8 @@ def main(): vault = f"{home}/obsidian/Notes" notes_dir = f"{vault}/Daily Notes/" - # templates_dir = f"{vault}/Templates/" - # template_file = f"{templates_dir}/Daily Notes.md" - # get a dict of all daily notes, with paths. + # Get a dict of all daily notes, with paths. notes_dict = {} date_objs = [] files = glob.glob(notes_dir + '/**/Daily*.md', recursive=True) diff --git a/obsidian/weekly-note.py b/obsidian/weekly-note.py index fa855170..4b18a3af 100755 --- a/obsidian/weekly-note.py +++ b/obsidian/weekly-note.py @@ -43,33 +43,40 @@ def main(): month = curr_date_obj.strftime('%m') vault = f"{home}/obsidian/Notes" - notes_dir = f"{vault}/Weekly Reports/" + daily_dir = f"{vault}/Daily Notes/" + weekly_dir = f"{vault}/Weekly Reports/" - # get a dict of all weekly notes, with paths. - notes_dict = {} - date_objs = [] - files = glob.glob(notes_dir + '/**/Weekly*.md', recursive=True) + # Get a dict of all daily notes, with paths. + daily_dict = {} + daily_date_objs = [] + files = glob.glob(daily_dir + '/**/Daily*.md', recursive=True) for file_path in sorted(files): note_date = file_path.split('/')[-1].split('.')[0].split()[1] - notes_dict[note_date] = file_path - date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) + daily_dict[note_date] = file_path + daily_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) - if date_str in notes_dict.keys(): + # Get a dict of all weekly notes, with paths. + weekly_dict = {} + weekly_date_objs = [] + files = glob.glob(weekly_dir + '/**/Weekly*.md', recursive=True) + for file_path in sorted(files): + note_date = file_path.split('/')[-1].split('.')[0].split()[1] + weekly_dict[note_date] = file_path + weekly_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) + + if date_str in weekly_dict.keys(): sys.exit(f"Weekly report for {date_str} already exists, skipping!") else: print(f"Creating weekly report for w/e {date_str}...") - last_date_obj = date_objs[-1] - - # note_dates = sorted(notes_dict.keys()) + last_date_obj = weekly_date_objs[-1] # Find previous date. - prev_date = max(d for d in date_objs if d < curr_date_obj) + prev_date = max(d for d in weekly_date_objs if d < curr_date_obj) prev_str = prev_date.strftime('%Y-%m-%d') - # Find next date. This depends on whether we're creating a note in a date gap, or adding at the end. if curr_date_obj < last_date_obj: - next_date = min(d for d in date_objs if d > curr_date_obj) + next_date = min(d for d in weekly_date_objs if d > curr_date_obj) else: next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=7) next_str = next_date.strftime('%Y-%m-%d') @@ -77,14 +84,14 @@ def main(): file_lines = [] # Read the previous note file. - prev_file_path = notes_dict[prev_str] + prev_file_path = weekly_dict[prev_str] print(f"Reading from {prev_file_path}") prev_data_lines = [] with open(prev_file_path, 'r') as f: prev_data_lines = f.readlines() - output_file_path = f"{notes_dir + year + '/' + month + '/' + 'Weekly ' + date_str + '.md'}" + output_file_path = f"{weekly_dir + year + '/' + month + '/' + 'Weekly ' + date_str + '.md'}" # Generate front matter file_lines.append("---") @@ -97,7 +104,6 @@ def main(): file_lines.append(f"<< [[Weekly {prev_str}]] | [[Weekly {next_str}]] >>") file_lines.append("") - # Populate activities with planned from last week, plus FIXME. file_lines.append("## Activities this week") start = end = 0 for i, line in enumerate(prev_data_lines): @@ -106,8 +112,35 @@ def main(): if line.startswith("## Backlog") and start > 0: end = i - 1 planned_lines = prev_data_lines[start:end] + # Populate activities with planned from last week, plus FIXME. for line in planned_lines: file_lines.append(line.strip('\n').replace("- ", "- `FIXME` ")) + + # Extract all activities from daily reports since last weekly report. + prev_dates = [d for d in daily_date_objs if prev_date < d <= curr_date_obj] + prev_data_lines = [] + for d in prev_dates: + d_str = d.strftime("%Y-%m-%d") + prev_file_path = daily_dict[d_str] + print(f"Reading from {prev_file_path}") + with open(prev_file_path, 'r') as f: + start = 0 + daily_lines = f.readlines() + for i, line in enumerate(daily_lines): + if line.startswith("## Activities"): + start = i + 1 + daily_lines = daily_lines[start:] + daily_lines_tmp = [] + for line in daily_lines: + if line.strip() == '-': + continue + if line.startswith("- "): + daily_lines_tmp.append(f"- {d_str} {line[2:]}") + else: + daily_lines_tmp.append(line) + prev_data_lines.extend(daily_lines_tmp) + prev_data_lines = [line.strip('\n') for line in prev_data_lines if line.strip() != '-'] + file_lines.extend(prev_data_lines) file_lines.append("") file_lines.append("## Planned for next week") From 226d1510d0e29d74c97b64da861b22d435d1b9c0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 20:24:25 +0100 Subject: [PATCH 462/973] Rename weekly report generator. --- obsidian/{weekly-note.py => weekly-report.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename obsidian/{weekly-note.py => weekly-report.py} (100%) diff --git a/obsidian/weekly-note.py b/obsidian/weekly-report.py similarity index 100% rename from obsidian/weekly-note.py rename to obsidian/weekly-report.py From 3af2f324edb98807e900f70d328ebcdd15949e6d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 15 Apr 2022 20:25:41 +0100 Subject: [PATCH 463/973] Update crontab copy, woth weekly-report entry. --- crontab.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/crontab.txt b/crontab.txt index b603832e..6178631e 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1,2 +1,3 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 0 6 * * * python3 ~/dotfiles/obsidian/daily-note.py >/dev/null 2>&1 || true >> ~/daily-note.log 2>&1 +30 8 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >/dev/null 2>&1 || true >> ~/weekly-report.log 2>&1 From 46214761ad4d8db8c1f340076ee284f4cfd8a54e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 18 Apr 2022 00:00:49 +0100 Subject: [PATCH 464/973] Fix setting of next_str var. --- obsidian/daily-note.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 008550b8..11f1fdb2 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -75,7 +75,7 @@ def main(): next_date = min(d for d in date_objs if d > curr_date_obj) else: next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=1) - next_str = next_date.strftime('%Y-%m-%d') + next_str = next_date.strftime('%Y-%m-%d') file_lines = [] From 4dba6496650c6d29a744ca809ef4187e8cfdae65 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 20 Apr 2022 12:16:04 +0100 Subject: [PATCH 465/973] Update saved crontab. --- crontab.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crontab.txt b/crontab.txt index 6178631e..ce5cc965 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1,3 +1,3 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 -0 6 * * * python3 ~/dotfiles/obsidian/daily-note.py >/dev/null 2>&1 || true >> ~/daily-note.log 2>&1 -30 8 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >/dev/null 2>&1 || true >> ~/weekly-report.log 2>&1 +30 9 * * * python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 +0 10 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 From 4c643e7f145542657aff8901705f98de0d461ffc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 20 Apr 2022 12:16:21 +0100 Subject: [PATCH 466/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4d9e5ce9..ed411d3f 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4d9e5ce9a7d8db3c3aadcae81580a5c3ff5a0e8b +Subproject commit ed411d3ff196e32844409ebe0f8b3e21b0b1c9f6 From 434b8c90a7b7a5da831de7eaa7b099bc915c682f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 27 Apr 2022 20:21:02 +0100 Subject: [PATCH 467/973] Disable OMZ sudo plugin. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 0d3df889..9cdc97d7 100644 --- a/zshrc +++ b/zshrc @@ -116,7 +116,7 @@ plugins=( # ssh-agent sublime sublime-merge - sudo + # sudo terraform textmate virtualenv From 0ec4270f58169532a04b95253db56b3c4a16a178 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 1 May 2022 23:40:58 +0100 Subject: [PATCH 468/973] Create directories if they don't exist. --- obsidian/daily-note.py | 6 +++++- obsidian/weekly-report.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 11f1fdb2..11485dd1 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -89,7 +89,11 @@ def main(): with open(prev_file_path, 'r') as f: prev_data_lines = f.readlines() - output_file_path = f"{notes_dir + year + '/' + month + '/' + 'Daily ' + date_str + '.md'}" + output_dir_path = f"{notes_dir + year + '/' + month}" + if not os.path.isdir(output_dir_path): + os.makedirs(output_dir_path, exist_ok=True) + + output_file_path = f"{output_dir_path + '/' + 'Daily ' + date_str + '.md'}" # Generate front matter file_lines.append("---") diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 4b18a3af..9693bb08 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -91,7 +91,11 @@ def main(): with open(prev_file_path, 'r') as f: prev_data_lines = f.readlines() - output_file_path = f"{weekly_dir + year + '/' + month + '/' + 'Weekly ' + date_str + '.md'}" + output_dir_path = f"{weekly_dir + year + '/' + month}" + if not os.path.isdir(output_dir_path): + os.makedirs(output_dir_path, exist_ok=True) + + output_file_path = f"{output_dir_path + '/' + 'Weekly ' + date_str + '.md'}" # Generate front matter file_lines.append("---") From 8d2e8e1b5f0fff7885f3772cc941953c39d4288e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 3 May 2022 11:05:01 +0100 Subject: [PATCH 469/973] Generate a weekly report for the w/e the last Friday, not today. --- obsidian/weekly-report.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 9693bb08..da1c6a5b 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -30,7 +30,12 @@ def main(): except ValueError: sys.exit("Invalid date, must be valid calendar date in the form YYYY-MM-DD!") else: - date_str = datetime.datetime.today().strftime('%Y-%m-%d') + weekday_today = datetime.datetime.now().weekday() + if weekday_today >= 4: + end_date = datetime.datetime.now() - datetime.timedelta(weekday_today - 4) + else: + end_date = datetime.datetime.now() - datetime.timedelta(weeks=1) + datetime.timedelta(4 - weekday_today) + date_str = end_date.strftime('%Y-%m-%d') curr_date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') @@ -80,10 +85,11 @@ def main(): else: next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=7) next_str = next_date.strftime('%Y-%m-%d') + print(f"Next weekly report: {next_str}") file_lines = [] - # Read the previous note file. + # Read the previous weekly report file. prev_file_path = weekly_dict[prev_str] print(f"Reading from {prev_file_path}") From 592cb1b9c3241f6d887febc97b9363f23c9e0a83 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 4 May 2022 09:54:09 +0100 Subject: [PATCH 470/973] Update Brewfile. --- Brewfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Brewfile b/Brewfile index ff4958dc..ac237a52 100644 --- a/Brewfile +++ b/Brewfile @@ -71,6 +71,7 @@ brew "docker-credential-helper" brew "docker-credential-helper-ecr" brew "docker-machine-completion" brew "dos2unix" +brew "doxygen" brew "earthly" brew "envconsul" brew "exa" @@ -89,6 +90,7 @@ brew "zeromq" brew "ffmpeg" brew "flake8" brew "fzf" +brew "gcc" brew "gdb" brew "gh" brew "ghostscript" @@ -272,6 +274,7 @@ cask "vagrant" cask "virtualbox" cask "vlc" cask "xquartz" +cask "yt-music" mas "24 Hour Wallpaper", id: 1226087575 mas "Agenda", id: 1287445660 mas "aText", id: 488566438 From b0fac6fcd2db52bca6185194abbfe97f0eeec8e7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 6 May 2022 15:09:29 +0100 Subject: [PATCH 471/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index ed411d3f..8f56a8bd 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit ed411d3ff196e32844409ebe0f8b3e21b0b1c9f6 +Subproject commit 8f56a8bdf39d7727ab0e220f0164f78c77f9c50e From 3e3fa8a0f4b0f92d173bec5b8b8106675f6d94d4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 6 May 2022 15:10:01 +0100 Subject: [PATCH 472/973] Rancher Desktop 1.3 paths. --- bashrc | 4 ++++ zshrc | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/bashrc b/bashrc index 098a771c..1b55dd2c 100644 --- a/bashrc +++ b/bashrc @@ -11,3 +11,7 @@ source ~/.bash_profile # Fig post block. Keep at the bottom of this file. . "$HOME/.fig/shell/bashrc.post.bash" + +### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) +export PATH="/Users/james.lawton/.rd/bin:$PATH" +### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) \ No newline at end of file diff --git a/zshrc b/zshrc index 9cdc97d7..847e19f3 100644 --- a/zshrc +++ b/zshrc @@ -198,3 +198,7 @@ unset __conda_setup # Fig post block. Keep at the bottom of this file. . "$HOME/.fig/shell/zshrc.post.zsh" + +### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) +export PATH="/Users/james.lawton/.rd/bin:$PATH" +### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) \ No newline at end of file From fdc081ea50e97a6a1f13261c7c8c2def0b37bce9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 May 2022 11:06:41 +0100 Subject: [PATCH 473/973] Update saved crontab. --- crontab.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crontab.txt b/crontab.txt index ce5cc965..9ea24c21 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1,3 +1,3 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 -30 9 * * * python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 -0 10 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 +0,15,30,45 9,10,11,12 * * * python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 +0,15,30,45 9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 From c97a6a4411098195c62791b2958b5e6272356c2e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 May 2022 11:07:10 +0100 Subject: [PATCH 474/973] Update Fig setup. --- bashrc | 8 ++++---- zshrc | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bashrc b/bashrc index 1b55dd2c..ff3e71a9 100644 --- a/bashrc +++ b/bashrc @@ -9,9 +9,9 @@ # Bash non-interactive shell will load the same functions as the interactive shell source ~/.bash_profile -# Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/bashrc.post.bash" - ### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) export PATH="/Users/james.lawton/.rd/bin:$PATH" -### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) \ No newline at end of file +### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) + +# Fig post block. Keep at the bottom of this file. +. "$HOME/.fig/shell/bashrc.post.bash" diff --git a/zshrc b/zshrc index 847e19f3..9817d9e9 100644 --- a/zshrc +++ b/zshrc @@ -196,9 +196,9 @@ fi unset __conda_setup # <<< conda initialize <<< -# Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/zshrc.post.zsh" - ### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) export PATH="/Users/james.lawton/.rd/bin:$PATH" -### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) \ No newline at end of file +### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) + +# Fig post block. Keep at the bottom of this file. +. "$HOME/.fig/shell/zshrc.post.zsh" From 16a7d8e82806ca9f3ecfa3a8eabc3e2d6cf3fe62 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 May 2022 22:37:07 +0100 Subject: [PATCH 475/973] Change from git: to https: transport. --- .gitmodules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index f98f0f2f..8902a709 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,21 +1,21 @@ [submodule "vim-fugitive"] path = vim/bundle/vim-fugitive - url = git://github.com/tpope/vim-fugitive.git + url = https://github.com/tpope/vim-fugitive.git [submodule "vim-markdown"] path = vim/bundle/vim-markdown - url = git://github.com/tpope/vim-markdown.git + url = https://github.com/tpope/vim-markdown.git [submodule "vim-sensible"] path = vim/bundle/vim-sensible - url = git://github.com/tpope/vim-sensible.git + url = https://github.com/tpope/vim-sensible.git [submodule "vim-liquid"] path = vim/bundle/vim-liquid - url = git://github.com/tpope/vim-liquid.git + url = https://github.com/tpope/vim-liquid.git [submodule "vim-scriptease"] path = vim/bundle/vim-scriptease - url = git://github.com/tpope/vim-scriptease.git + url = https://github.com/tpope/vim-scriptease.git [submodule "vim-surround"] path = vim/bundle/vim-surround - url = git://github.com/tpope/vim-surround.git + url = https://github.com/tpope/vim-surround.git [submodule "scripts"] path = scripts url = https://github.com/jimlawton/scripts @@ -39,10 +39,10 @@ url = https://github.com/vim-scripts/FuzzyFinder [submodule "vim/bundle/command-t"] path = vim/bundle/command-t - url = git://github.com/wincent/Command-T.git + url = https://github.com/wincent/Command-T.git [submodule "vim/bundle/tabnine-vim"] path = vim/bundle/tabnine-vim - url = git://github.com/zxqfl/tabnine-vim.git + url = https://github.com/zxqfl/tabnine-vim.git [submodule "icdiff"] path = icdiff url = https://github.com/jeffkaufman/icdiff.git From c03cd668e132a7e10f63b6ff067d4cb40585f977 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 10:51:48 +0100 Subject: [PATCH 476/973] Handle a clean install (neither file nor symlink exist). --- _setupdotfiles.sh | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index a1ba1feb..4d06771e 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -28,21 +28,26 @@ function symlinkifne { exit 1 fi fi - if [ ! -L $target ]; then - # If it's not a symlink, tread carefully. - echo " WARNING: $target already exists!" - if [ "${MOVE:-false}" = "true" ]; then - echo " Moving $target to $SAVEDIR/" - mv $target $SAVEDIR/ - dotless=$(echo $1 | sed s/.//) - echo " Symlinking $DOTFILESDIR/$dotless to $1" - ln -s $DOTFILESDIR/$dotless $target + if [ -e $target ]; then + if [ ! -L $target ]; then + # If it's not a symlink, tread carefully. + echo " WARNING: $target already exists!" + if [ "${MOVE:-false}" = "true" ]; then + echo " Moving $target to $SAVEDIR/" + mv $target $SAVEDIR/ + dotless=$(echo $1 | sed s/.//) + echo " Symlinking $DOTFILESDIR/$dotless to $1" + ln -s $DOTFILESDIR/$dotless $target + else + echo " Skipping $1." + fi else - echo " Skipping $1." + # Safe to just delete if it is a symlink (or if it doesn't exist). + rm -f $target + echo " Symlinking $DOTFILESDIR/$dotless to $target" + ln -s $DOTFILESDIR/$dotless $target fi else - # Safe to just delete if it is a symlink (or if it doesn't exist). - rm -f $target echo " Symlinking $DOTFILESDIR/$dotless to $target" ln -s $DOTFILESDIR/$dotless $target fi From 041526155530a30aecacebce842e256110eb0ed2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 10:52:12 +0100 Subject: [PATCH 477/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 8f56a8bd..e9e8c6b5 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 8f56a8bdf39d7727ab0e220f0164f78c77f9c50e +Subproject commit e9e8c6b54d594109041bdd4bc3902b40f9ae8849 From 29a48b806e6ca8b42fca7391bef049ff8b55b4aa Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 10:56:21 +0100 Subject: [PATCH 478/973] Rename var. --- _setupdotfiles.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 4d06771e..713a9015 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -80,8 +80,8 @@ for dotfile in $DOTFILES; do symlinkifne $dotfile done -for dotfile in $DOTDIRS; do - symlinkifne $dotfile +for dotdir in $DOTDIRS; do + symlinkifne $dotdir done # Any directories you want linked from Dropbox. From 74af12469d760737616afa8b39eae26c250dea90 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 10:56:41 +0100 Subject: [PATCH 479/973] Remove unused/nonexistent dirs. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 713a9015..ee317666 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -2,7 +2,7 @@ SHELLSCONFIGDIR=~/dotfiles DOTFILESDIR=~/dotfiles DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" -DOTDIRS=".conf .tmux .vim" +DOTDIRS=".vim" DROPDIRS="bin .pip" SAVEDIR=~/.old/_setupdotfiles From ff5e9de55e93858a11b6b31eac6f841f9afa5957 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 10:56:49 +0100 Subject: [PATCH 480/973] Remove unused var. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index ee317666..00c32d0e 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,5 +1,5 @@ #!/bin/bash -SHELLSCONFIGDIR=~/dotfiles + DOTFILESDIR=~/dotfiles DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DOTDIRS=".vim" From af4de0cb94759f9963d45b61484dce14c0728a54 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 14:59:02 +0100 Subject: [PATCH 481/973] Remove intel-only casks --- Brewfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Brewfile b/Brewfile index ac237a52..979323c6 100644 --- a/Brewfile +++ b/Brewfile @@ -234,7 +234,6 @@ cask "atom-beta" cask "aws-vault" cask "cakebrew" cask "devtoys" -cask "docker-toolbox" cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" @@ -271,7 +270,6 @@ cask "sublime-merge-dev" cask "sublime-text-dev" cask "textmate" cask "vagrant" -cask "virtualbox" cask "vlc" cask "xquartz" cask "yt-music" From dda2fa0067c5e3989db6277454b474916326850b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 14:59:58 +0100 Subject: [PATCH 482/973] Remove old Notability. --- Brewfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Brewfile b/Brewfile index 979323c6..7a27c527 100644 --- a/Brewfile +++ b/Brewfile @@ -296,7 +296,6 @@ mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "my41cx", id: 949272407 mas "Notability", id: 736189492 -mas "Notability", id: 360593530 mas "Numbers", id: 409203825 mas "Okta Extension App", id: 1439967473 mas "OneDrive", id: 823766827 From 24154484c1812b32708b2e6d6c2ea13594466c17 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 15:00:06 +0100 Subject: [PATCH 483/973] Remove Atom. --- Brewfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Brewfile b/Brewfile index 7a27c527..f046b578 100644 --- a/Brewfile +++ b/Brewfile @@ -229,8 +229,6 @@ brew "charmbracelet/tap/skate" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" -cask "atom" -cask "atom-beta" cask "aws-vault" cask "cakebrew" cask "devtoys" From 3c36123855716b578acb33aa12b2c1471d9298da Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 17:18:01 +0100 Subject: [PATCH 484/973] Fix fast-syntax-highlighting repo (original was deleted). --- _setup_zsh.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setup_zsh.sh b/_setup_zsh.sh index 48778dfa..2ae0efd5 100755 --- a/_setup_zsh.sh +++ b/_setup_zsh.sh @@ -5,7 +5,7 @@ if [ -d oh-my-zsh ]; then (cd oh-my-zsh/custom; ln -sf ../../override_window_title.zsh) fi if [ ! -e oh-my-zsh/custom/plugins/fast-syntax-highlighting ]; then - (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma/fast-syntax-highlighting.git) + (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git) fi echo "Done!" fi From d92ab2901a26956508f4aab6d3189eeb22a78c3d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 17:20:12 +0100 Subject: [PATCH 485/973] Brew installs to /opt/homebrew on ARM. --- shellpaths | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shellpaths b/shellpaths index 22534e6c..26fe22fd 100644 --- a/shellpaths +++ b/shellpaths @@ -26,8 +26,10 @@ export PATH=$PATH:~/adr-tools/src # Brew export PATH="/usr/local/sbin:$PATH" +export PATH="/opt/homebrew/sbin:$PATH" +export PATH="/opt/homebrew/bin:$PATH" # Path setup for Brew Python. -export PATH="/usr/local/opt/python/libexec/bin:$PATH" +#export PATH="/usr/local/opt/python/libexec/bin:$PATH" # Dev frameworks #export PATH=$PATH:$ANT_HOME/bin From 8a30e80d67d9339fa0c1386374e30336e2c916c3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 17:32:59 +0100 Subject: [PATCH 486/973] Update p10k config. --- p10k.zsh | 76 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index 942621f8..978ab7b0 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,5 +1,5 @@ -# Generated by Powerlevel10k configuration wizard on 2021-03-26 at 10:36 GMT. -# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 23931. +# Generated by Powerlevel10k configuration wizard on 2022-05-26 at 16:55 IST. +# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 25238. # Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, # angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, # transient_prompt, instant_prompt=verbose. @@ -82,6 +82,7 @@ # nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) # ranger # ranger shell (https://github.com/ranger/ranger) # nnn # nnn shell (https://github.com/jarun/nnn) + # xplr # xplr shell (https://github.com/sayanarijit/xplr) vim_shell # vim shell indicator (:sh) # midnight_commander # midnight commander shell (https://midnight-commander.org/) nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) @@ -196,7 +197,6 @@ # Prompt symbol in overwrite vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true - # No line terminator if prompt_char is the last segment. typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= # No line introducer if prompt_char is the first segment. @@ -284,7 +284,7 @@ # The default icon shown next to non-writable and non-existent directories when # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. - # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + typeset -g POWERLEVEL9K_LOCK_ICON='∅' # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different # directories. It must be an array with 3 * N elements. Each triplet consists of: @@ -338,7 +338,7 @@ # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls # back to POWERLEVEL9K_DIR_FOREGROUND. # - # typeset -g POWERLEVEL9K_DIR_CLASSES=() + typeset -g POWERLEVEL9K_DIR_CLASSES=() # Custom prefix. # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' @@ -360,7 +360,7 @@ # Formatter for Git status. # - # Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. # # You can edit the function to customize how Git status looks. # @@ -409,7 +409,7 @@ # Display the current Git commit if there is no branch and no tag. # Tip: To always display the current Git commit, delete the next line. - [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_LOCAL_BRANCH ]] && # <-- this line + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" # Show tracking branch name if it differs from local branch. @@ -417,6 +417,11 @@ res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" fi + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + # ⇣42 if behind the remote. (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. @@ -535,7 +540,7 @@ # Duration format: 1d 2h 3m 4s. typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' # Custom icon. - # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= # Custom prefix. # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took ' @@ -546,7 +551,7 @@ # Don't show the number of background jobs. typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false # Custom icon. - # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡' #######################[ direnv: direnv status (https://direnv.net/) ]######################## # Direnv color. @@ -721,14 +726,14 @@ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= # Custom icon. - # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## # Ranger shell color. typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 # Custom icon. - # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲' ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### # Nnn shell color. @@ -737,6 +742,13 @@ # Custom icon. # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## + # xplr shell color. + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0 + typeset -g POWERLEVEL9K_XPLR_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐' + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### # Vim shell indicator color. typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0 @@ -977,10 +989,10 @@ # # The default format has the following logic: # - # 1. Display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION" if $P9K_PYENV_PYTHON_VERSION is not - # empty and unequal to $P9K_CONTENT. - # 2. Otherwise display just "$P9K_CONTENT". - typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}' + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or + # starts with "$P9K_PYENV_PYTHON_VERSION/". + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' # Custom icon. # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' @@ -1265,7 +1277,7 @@ #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# # Show kubecontext only when the the command you are typing invokes one of these tools. # Tip: Remove the next line to always show kubecontext. - typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile' + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|fluxctl|stern' # Kubernetes context classes for the purpose of using different colors, icons and expansions with # different contexts. @@ -1300,7 +1312,7 @@ '*' DEFAULT) typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 - # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○' # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext # segment. Parameter expansions are very flexible and fast, too. See reference: @@ -1387,12 +1399,18 @@ typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1 # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # AWS segment format. The following parameters are available within the expansion. + # + # - P9K_AWS_PROFILE The name of the current AWS profile. + # - P9K_AWS_REGION The region associated with the current AWS profile. + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# # AWS Elastic Beanstalk environment color. typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 # Custom icon. - # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## # Show azure only when the the command you are typing invokes one of these tools. @@ -1402,7 +1420,7 @@ typeset -g POWERLEVEL9K_AZURE_FOREGROUND=7 typeset -g POWERLEVEL9K_AZURE_BACKGROUND=4 # Custom icon. - # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### # Show gcloud only when the the command you are typing invokes one of these tools. @@ -1532,13 +1550,15 @@ # The following parameters are accessible within the expansion: # # Parameter | Meaning - # ----------------------+--------------- - # P9K_IP_IP | IP address - # P9K_IP_INTERFACE | network interface - # P9K_IP_RX_BYTES | total number of bytes received - # P9K_IP_TX_BYTES | total number of bytes sent - # P9K_IP_RX_RATE | receive rate (since last prompt) - # P9K_IP_TX_RATE | send rate (since last prompt) + # ----------------------+------------------------------------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP' # Show information for the first network interface whose name matches this regular expression. # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. @@ -1562,7 +1582,7 @@ # Show battery in yellow when it's discharging. typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 # Battery pictograms going from low to high level of charge. - typeset -g POWERLEVEL9K_BATTERY_STAGES='\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578' + typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█') # Don't show the remaining time to charge/discharge. typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 @@ -1605,7 +1625,7 @@ # behavior where they contain the end times of their preceding commands. typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false # Custom icon. - # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= # Custom prefix. # typeset -g POWERLEVEL9K_TIME_PREFIX='at ' From 930711f082d185ee76f85dd03329e9f0b38322c1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 23:42:25 +0100 Subject: [PATCH 487/973] Add Tabnine fork of YouCompleteMe. --- .gitmodules | 3 +++ vim/bundle/YouCompleteMe | 1 + 2 files changed, 4 insertions(+) create mode 160000 vim/bundle/YouCompleteMe diff --git a/.gitmodules b/.gitmodules index 8902a709..abe2d944 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,3 +76,6 @@ [submodule "zsh-autosuggestions"] path = zsh-autosuggestions url = https://github.com/zsh-users/zsh-autosuggestions +[submodule "vim/bundle/YouCompleteMe"] + path = vim/bundle/YouCompleteMe + url = https://github.com/tabnine/YouCompleteMe.git diff --git a/vim/bundle/YouCompleteMe b/vim/bundle/YouCompleteMe new file mode 160000 index 00000000..c4e50363 --- /dev/null +++ b/vim/bundle/YouCompleteMe @@ -0,0 +1 @@ +Subproject commit c4e5036366ffd54251deb03087a02a98c70dfb77 From 6b9b11d930c07a5ae23ba7288cbc4dc6c1c2f160 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 23:42:42 +0100 Subject: [PATCH 488/973] Remove lima. --- Brewfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Brewfile b/Brewfile index f046b578..01853096 100644 --- a/Brewfile +++ b/Brewfile @@ -141,7 +141,6 @@ brew "lftp" brew "libcaca" brew "libressl" brew "libusb-compat" -brew "lima" brew "make" brew "markdownlint-cli" brew "mas" From bb0cdda517d34dc36cf6f6ae3417379fd3e406c7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 23:49:25 +0100 Subject: [PATCH 489/973] Symlink persistent history from Dropbox. --- _setupdotfiles.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 00c32d0e..3b584aef 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -3,6 +3,7 @@ DOTFILESDIR=~/dotfiles DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DOTDIRS=".vim" +DROPFILES="persistent_history" DROPDIRS="bin .pip" SAVEDIR=~/.old/_setupdotfiles @@ -93,6 +94,15 @@ if [ -e ~/Dropbox/ ]; then done fi +# Any files you want linked from Dropbox. +if [ -e ~/Dropbox/ ]; then + for dropfile in $DROPFILES; do + if [ ! -e ~/$dropfile ]; then + ln -s ~/Dropbox/$dropfile ~/.$dropfile + fi + done +fi + popd echo "Done!" From 93e6eea7517ce84eba2b3e774096af89d9874fa3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 May 2022 23:55:57 +0100 Subject: [PATCH 490/973] Remove Tabnine and YCM, they are very broken. --- vim/bundle/YouCompleteMe | 1 - vim/bundle/tabnine-vim | 1 - 2 files changed, 2 deletions(-) delete mode 160000 vim/bundle/YouCompleteMe delete mode 160000 vim/bundle/tabnine-vim diff --git a/vim/bundle/YouCompleteMe b/vim/bundle/YouCompleteMe deleted file mode 160000 index c4e50363..00000000 --- a/vim/bundle/YouCompleteMe +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c4e5036366ffd54251deb03087a02a98c70dfb77 diff --git a/vim/bundle/tabnine-vim b/vim/bundle/tabnine-vim deleted file mode 160000 index 7700a280..00000000 --- a/vim/bundle/tabnine-vim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7700a2809a08c1774bba6fa140c61bbd9831e12a From fbc2eda146f16df43433c1cb7441d9e2f1998cba Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 27 May 2022 11:36:59 +0100 Subject: [PATCH 491/973] Strip '.local' from hostname. --- history/zsh_to_persistent_history.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/history/zsh_to_persistent_history.py b/history/zsh_to_persistent_history.py index e13ec4b8..3465f2f8 100755 --- a/history/zsh_to_persistent_history.py +++ b/history/zsh_to_persistent_history.py @@ -165,6 +165,8 @@ def main(): zdata = f.readlines() hostname = socket.gethostname().lower() + if hostname.endswith(".local"): + hostname = hostname.replace(".local", "") user = os.getenv("USER") usernames = os.getenv("_USERNAMES") if usernames is None: From 299c48dd003e275f403ffeaa0612a5d9718f923b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 30 May 2022 14:20:42 +0100 Subject: [PATCH 492/973] Update config files to be symlinked. --- _setupdotfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 3b584aef..dc75089c 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,7 +1,7 @@ #!/bin/bash DOTFILESDIR=~/dotfiles -DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .rvmrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DOTDIRS=".vim" DROPFILES="persistent_history" DROPDIRS="bin .pip" From a8373912ecd1c0a723c78eef92c2bcad24f252fc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 30 May 2022 14:21:19 +0100 Subject: [PATCH 493/973] Symlink Karabiner directory. --- _setupdotfiles.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index dc75089c..ce66a288 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -103,6 +103,9 @@ if [ -e ~/Dropbox/ ]; then done fi +mkdir -p ~/.config +ln -sf ~/dotfiles/karabiner ~/.config/karabiner + popd echo "Done!" From caa99eb3d1aae0c21db27d03ffd45a16a714ce7c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 30 May 2022 14:24:37 +0100 Subject: [PATCH 494/973] Ignore Karabiner backups. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8271ed4d..413e9189 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ netrc boom cloudapp +karabiner/automatic_backups From 226fcc1bd701a4e261f638d8befe56e0787cf9cf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 30 May 2022 14:31:30 +0100 Subject: [PATCH 495/973] Move Karabiner to hyper-hacks submodule. --- _setupdotfiles.sh | 2 +- hyper-hacks | 2 +- karabiner/karabiner.json | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 120000 karabiner/karabiner.json diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index ce66a288..7e4eea20 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -104,7 +104,7 @@ if [ -e ~/Dropbox/ ]; then fi mkdir -p ~/.config -ln -sf ~/dotfiles/karabiner ~/.config/karabiner +ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner popd diff --git a/hyper-hacks b/hyper-hacks index 7bd6a6e1..eb78ac66 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 7bd6a6e178cb36ea6e2791edeeceba607d0821df +Subproject commit eb78ac669f3720438095b7386da10c16e9313a6b diff --git a/karabiner/karabiner.json b/karabiner/karabiner.json deleted file mode 120000 index 059b3494..00000000 --- a/karabiner/karabiner.json +++ /dev/null @@ -1 +0,0 @@ -../hyper-hacks/karabiner/karabiner.json \ No newline at end of file From 7f010b0215bed8d21ccba1b24147c393fb879270 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 31 May 2022 17:44:05 +0100 Subject: [PATCH 496/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index a3a66b23..1bfc2cb3 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit a3a66b237f50168b7923ec0ef95aaa3d12eb3a49 +Subproject commit 1bfc2cb39602abe24ed778269ff7978c9c197078 From 449d15d46e1452b224bd70a837d4f84d1f3c6cf9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 1 Jun 2022 11:41:00 +0100 Subject: [PATCH 497/973] Add log message, error check. --- obsidian/daily-note.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 11485dd1..2669ddd1 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -48,6 +48,8 @@ def main(): vault = f"{home}/obsidian/Notes" notes_dir = f"{vault}/Daily Notes/" + print(f"Scanning '{notes_dir}'...") + # Get a dict of all daily notes, with paths. notes_dict = {} date_objs = [] @@ -57,6 +59,9 @@ def main(): notes_dict[note_date] = file_path date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) + if len(date_objs) == 0: + sys.exit(f"Cannot find any daily notes in '{notes_dir}'!") + if date_str in notes_dict.keys(): sys.exit(f"Daily note for {date_str} already exists, skipping!") else: From 3c18cf91a9ecf32b349754cb5ccdc859bd5194fb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 17 Jun 2022 11:11:53 +0100 Subject: [PATCH 498/973] Update crontab. --- crontab.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crontab.txt b/crontab.txt index 9ea24c21..52426423 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1,3 +1,3 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 -0,15,30,45 9,10,11,12 * * * python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 +0,15,30,45 9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 0,15,30,45 9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 From 9403a04742b57970a756aec6ebc2c458fd0d2113 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 17 Jun 2022 11:12:22 +0100 Subject: [PATCH 499/973] Update hyper-hacks module. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index eb78ac66..922af1c9 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit eb78ac669f3720438095b7386da10c16e9313a6b +Subproject commit 922af1c900461cbdfd03dc920d6363320c0339c7 From 68eb38d52070838d1a64e1e755c4c25992b30b5f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 22 Jun 2022 16:36:24 +0100 Subject: [PATCH 500/973] Disable AF vars. --- shellvars | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shellvars b/shellvars index 0017a84d..c643de09 100644 --- a/shellvars +++ b/shellvars @@ -89,7 +89,7 @@ export PIP_REQUIRE_VIRTUALENV=true export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" -if [ -f ~/.jfrog/jfrog-cli.conf ]; then - export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` - export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` -fi +#if [ -f ~/.jfrog/jfrog-cli.conf ]; then +# export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` +# export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` +#fi From 0f8297d0441e082f71f020ed67c8587d8e1877ac Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 22 Jun 2022 16:37:23 +0100 Subject: [PATCH 501/973] Update Fig startup. --- bash_profile | 4 ++-- bashrc | 4 ++-- profile | 4 ++-- zprofile | 4 ++-- zshrc | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bash_profile b/bash_profile index 28d3b76b..e0765588 100644 --- a/bash_profile +++ b/bash_profile @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -. "$HOME/.fig/shell/bash_profile.pre.bash" +[[ -f "$HOME/.fig/shell/bash_profile.pre.bash" ]] && . "$HOME/.fig/shell/bash_profile.pre.bash" #!/bin/bash ######################################################################## @@ -140,4 +140,4 @@ fi # eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) # Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/bash_profile.post.bash" +[[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && . "$HOME/.fig/shell/bash_profile.post.bash" diff --git a/bashrc b/bashrc index ff3e71a9..c2bdb543 100644 --- a/bashrc +++ b/bashrc @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -. "$HOME/.fig/shell/bashrc.pre.bash" +[[ -f "$HOME/.fig/shell/bashrc.pre.bash" ]] && . "$HOME/.fig/shell/bashrc.pre.bash" #!/bin/bash ######################################################################## @@ -14,4 +14,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) # Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/bashrc.post.bash" +[[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && . "$HOME/.fig/shell/bashrc.post.bash" diff --git a/profile b/profile index 4a37719d..cb736e77 100644 --- a/profile +++ b/profile @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -. "$HOME/.fig/shell/profile.pre.bash" +[[ -f "$HOME/.fig/shell/profile.pre.bash" ]] && . "$HOME/.fig/shell/profile.pre.bash" ############################################################# # Generic configuration that applies to all shells ############################################################# @@ -20,4 +20,4 @@ eval "$(pyenv init --path)" if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi # Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/profile.post.bash" +[[ -f "$HOME/.fig/shell/profile.post.bash" ]] && . "$HOME/.fig/shell/profile.post.bash" diff --git a/zprofile b/zprofile index 880dd6d8..e97bfd0e 100644 --- a/zprofile +++ b/zprofile @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -. "$HOME/.fig/shell/zprofile.pre.zsh" +[[ -f "$HOME/.fig/shell/zprofile.pre.zsh" ]] && . "$HOME/.fig/shell/zprofile.pre.zsh" ############################################################################## # Import the shell-agnostic (Bash or Zsh) environment config ############################################################################## @@ -11,4 +11,4 @@ source ~/.profile source ~/dotfiles/z/z.sh # Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/zprofile.post.zsh" +[[ -f "$HOME/.fig/shell/zprofile.post.zsh" ]] && . "$HOME/.fig/shell/zprofile.post.zsh" diff --git a/zshrc b/zshrc index 9817d9e9..52d45353 100644 --- a/zshrc +++ b/zshrc @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -. "$HOME/.fig/shell/zshrc.pre.zsh" +[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && . "$HOME/.fig/shell/zshrc.pre.zsh" # Interactive shell configuration. ############################################################################## @@ -201,4 +201,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) # Fig post block. Keep at the bottom of this file. -. "$HOME/.fig/shell/zshrc.post.zsh" +[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && . "$HOME/.fig/shell/zshrc.post.zsh" From 21c10b5cce19ff61028dd385d22f2d7ac43ad1c6 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jul 2022 15:43:49 +0100 Subject: [PATCH 502/973] Add Git template setup for pre-commit-hooks. --- git-template/hooks/pre-commit | 20 ++++++++++++++++++++ git-template/hooks/prepare-commit-msg | 20 ++++++++++++++++++++ gitconfig-macos | 2 ++ 3 files changed, 42 insertions(+) create mode 100755 git-template/hooks/pre-commit create mode 100755 git-template/hooks/prepare-commit-msg diff --git a/git-template/hooks/pre-commit b/git-template/hooks/pre-commit new file mode 100755 index 00000000..d130ace7 --- /dev/null +++ b/git-template/hooks/pre-commit @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# File generated by pre-commit: https://pre-commit.com +# ID: 138fd403232d2ddd5efb44317e38bf03 + +# start templated +INSTALL_PYTHON=/opt/homebrew/opt/pre-commit/libexec/bin/python3 +ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=pre-commit --skip-on-missing-config) +# end templated + +HERE="$(cd "$(dirname "$0")" && pwd)" +ARGS+=(--hook-dir "$HERE" -- "$@") + +if [ -x "$INSTALL_PYTHON" ]; then + exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" +elif command -v pre-commit > /dev/null; then + exec pre-commit "${ARGS[@]}" +else + echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2 + exit 1 +fi diff --git a/git-template/hooks/prepare-commit-msg b/git-template/hooks/prepare-commit-msg new file mode 100755 index 00000000..25eb1708 --- /dev/null +++ b/git-template/hooks/prepare-commit-msg @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# File generated by pre-commit: https://pre-commit.com +# ID: 138fd403232d2ddd5efb44317e38bf03 + +# start templated +INSTALL_PYTHON=/opt/homebrew/opt/pre-commit/libexec/bin/python3 +ARGS=(hook-impl --config=.pre-commit-config.yaml --hook-type=prepare-commit-msg --skip-on-missing-config) +# end templated + +HERE="$(cd "$(dirname "$0")" && pwd)" +ARGS+=(--hook-dir "$HERE" -- "$@") + +if [ -x "$INSTALL_PYTHON" ]; then + exec "$INSTALL_PYTHON" -mpre_commit "${ARGS[@]}" +elif command -v pre-commit > /dev/null; then + exec pre-commit "${ARGS[@]}" +else + echo '`pre-commit` not found. Did you forget to activate your virtualenv?' 1>&2 + exit 1 +fi diff --git a/gitconfig-macos b/gitconfig-macos index 416aac56..6ad3e5c2 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -3,3 +3,5 @@ [credential] helper = osxkeychain +[init] + templateDir = /Users/james.lawton/dotfiles/git-template From 1871cdc5f4d9a8795fe92e1dd157451c0f610c70 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 7 Jul 2022 15:47:31 +0100 Subject: [PATCH 503/973] Move pre-commit-hooks setup to work config. --- git-identity-work | 2 ++ gitconfig-macos | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/git-identity-work b/git-identity-work index eab5619e..1a1c6a4a 100644 --- a/git-identity-work +++ b/git-identity-work @@ -4,3 +4,5 @@ [hub] protocol = https host = https://github.cicd.cloud.fpdev.io +[init] + templateDir = ~/dotfiles/git-template diff --git a/gitconfig-macos b/gitconfig-macos index 6ad3e5c2..416aac56 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -3,5 +3,3 @@ [credential] helper = osxkeychain -[init] - templateDir = /Users/james.lawton/dotfiles/git-template From 44e4744287ee7f3803ffe9d9205ded8114eeb68c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 11 Jul 2022 10:14:37 +0100 Subject: [PATCH 504/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index e9e8c6b5..4c82a2ee 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit e9e8c6b54d594109041bdd4bc3902b40f9ae8849 +Subproject commit 4c82a2eedf0c43d47601ffa8b0303ed1326fab8f From 1e575081bb335206c3139ce379ed975dad168b77 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 16 Aug 2022 10:20:27 +0100 Subject: [PATCH 505/973] Update Brewfile. --- Brewfile | 53 +++++++---------------------------------------------- 1 file changed, 7 insertions(+), 46 deletions(-) diff --git a/Brewfile b/Brewfile index 01853096..a8a947af 100644 --- a/Brewfile +++ b/Brewfile @@ -53,9 +53,10 @@ brew "freetype" brew "cairo" brew "chezmoi" brew "clang-format" +brew "cmake" brew "consul" brew "consul-template" -brew "coreutils" +brew "coreutils", link: false brew "libidn2" brew "libssh2" brew "rtmpdump" @@ -72,7 +73,6 @@ brew "docker-credential-helper-ecr" brew "docker-machine-completion" brew "dos2unix" brew "doxygen" -brew "earthly" brew "envconsul" brew "exa" brew "fd" @@ -91,7 +91,6 @@ brew "ffmpeg" brew "flake8" brew "fzf" brew "gcc" -brew "gdb" brew "gh" brew "ghostscript" brew "gimme-aws-creds" @@ -100,11 +99,11 @@ brew "git" brew "git-extras" brew "git-filter-repo" brew "git-quick-stats" -brew "git-standup", link: false brew "gitleaks" brew "glow" brew "gnu-indent" brew "gnu-sed" +brew "gnu-tar" brew "libgcrypt" brew "libksba" brew "libusb" @@ -144,8 +143,6 @@ brew "libusb-compat" brew "make" brew "markdownlint-cli" brew "mas" -brew "openjdk" -brew "maven" brew "md5sha1sum", link: false brew "micro" brew "mmark" @@ -157,7 +154,6 @@ brew "mypy" brew "ncftp" brew "neovim" brew "ocrad" -brew "openapi-generator" brew "openconnect" brew "packer" brew "packer-completion" @@ -167,9 +163,9 @@ brew "peco" brew "percol" brew "pip-completion" brew "pipenv" -brew "plantuml" brew "pre-commit" brew "progress" +brew "protobuf-c" brew "protoc-gen-go" brew "protoc-gen-go-grpc" brew "pth" @@ -213,7 +209,6 @@ brew "todo-txt" brew "tree" brew "vagrant-completion" brew "vault" -brew "vault-cli" brew "vim" brew "wget" brew "xpdf" @@ -225,10 +220,12 @@ brew "zoxide" brew "zsh" brew "bufbuild/buf/buf" brew "charmbracelet/tap/skate" +brew "coretech/terrafile/terrafile" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" cask "aws-vault" +cask "beardedspice" cask "cakebrew" cask "devtoys" cask "dozer" @@ -253,8 +250,6 @@ cask "font-sf-mono-for-powerline" cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" cask "inspec" -cask "java" -cask "jedit" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" @@ -270,38 +265,4 @@ cask "vagrant" cask "vlc" cask "xquartz" cask "yt-music" -mas "24 Hour Wallpaper", id: 1226087575 -mas "Agenda", id: 1287445660 -mas "aText", id: 488566438 -mas "Battery Monitor", id: 836505650 -mas "Bear", id: 1091189122 -mas "CopyClip", id: 1020812363 -mas "Delicious Library", id: 635124250 -mas "Disk Space", id: 603688030 -mas "EtreCheck", id: 1423715984 -mas "feedly", id: 865500966 -mas "Funter", id: 1109422934 -mas "iMovie", id: 408981434 -mas "Keynote", id: 409183694 -mas "Kindle", id: 405399194 -mas "Magnet", id: 441258766 -mas "Microsoft Excel", id: 462058435 -mas "Microsoft OneNote", id: 784801555 -mas "Microsoft Outlook", id: 985367838 -mas "Microsoft PowerPoint", id: 462062816 -mas "Microsoft Remote Desktop", id: 1295203466 -mas "Microsoft Word", id: 462054704 -mas "my41cx", id: 949272407 -mas "Notability", id: 736189492 -mas "Numbers", id: 409203825 -mas "Okta Extension App", id: 1439967473 -mas "OneDrive", id: 823766827 -mas "Pages", id: 409201541 -mas "Slack", id: 803453959 -mas "Speedtest", id: 1153157709 -mas "The Archive Browser", id: 510232205 -mas "The Unarchiver", id: 425424353 -mas "Twitter", id: 409789998 -mas "Typist", id: 415166115 -mas "Unsplash Wallpapers", id: 1284863847 -mas "WhatsApp", id: 1147396723 +cask "ytmdesktop-youtube-music" From f91f6c36859646a8c1475ec9d200861825241cc1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 16 Aug 2022 11:50:30 +0100 Subject: [PATCH 506/973] Turn off zsh SHARE_HISTORY. --- zshrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zshrc b/zshrc index 52d45353..d12b7a41 100644 --- a/zshrc +++ b/zshrc @@ -15,7 +15,7 @@ export HISTDUP=erase # Erase duplicates in the history file #export DISABLE_VENV_CD=1 # virtualenvwrapper setopt APPEND_HISTORY # Append history to the history file (no overwriting) -setopt SHARE_HISTORY # Share history between all sessions. +#setopt SHARE_HISTORY # Share history between all sessions. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. @@ -25,7 +25,7 @@ setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt BANG_HIST # Treat the '!' character specially during expansion. #setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. -#setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. +setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. #setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. #setopt HIST_VERIFY # Don't execute immediately upon history expansion. #setopt HIST_BEEP # Beep when accessing nonexistent history. From 0952d37ac71df44070844c82b77b5fa44669e2cd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 19 Aug 2022 14:41:18 +0100 Subject: [PATCH 507/973] Update submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 922af1c9..1e7d6a19 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 922af1c900461cbdfd03dc920d6363320c0339c7 +Subproject commit 1e7d6a19edb2cb46910cc76595341bfcf8466608 From 29953103122a520181e6f168970ad36734dbe14b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 31 Aug 2022 10:18:41 +0100 Subject: [PATCH 508/973] Add jira-cli aliases. --- shellaliases | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shellaliases b/shellaliases index ed31b079..cf84c486 100644 --- a/shellaliases +++ b/shellaliases @@ -277,3 +277,12 @@ fi # Alias for parsing structure JSON logs... alias plog="jq -r -s 'map(select(.) | .log_level |= ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'" + +# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli) +alias jfullboard="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" +alias jtodo="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\"" +alias jbacklog="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\"" +alias jreview="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\"" +alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\"" +alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\"" +alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" From 2fc8d3f21b0f76965edda4565dee48232495078b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 31 Aug 2022 10:19:25 +0100 Subject: [PATCH 509/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4c82a2ee..6d48309c 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4c82a2eedf0c43d47601ffa8b0303ed1326fab8f +Subproject commit 6d48309cd7da1b91038cf08be7865fb5bb9bc5ea From cc0c72488caa6f9ae6bcac6694d1810240d6790e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 31 Aug 2022 10:34:17 +0100 Subject: [PATCH 510/973] Update submodules. --- autoenv | 2 +- icdiff | 2 +- powerlevel10k | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-easymotion | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-liquid | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/autoenv b/autoenv index 025e52fb..dc783c9c 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit 025e52fbf033cc094943febec71e2ad81a5de84f +Subproject commit dc783c9c681feb5e744741b9631543fb6d7b702d diff --git a/icdiff b/icdiff index 89574fa2..34aa2d0d 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 89574fa2f2323010e08a88430bfcd870c9e5e512 +Subproject commit 34aa2d0d5836663869bfc2d255ce769ca49011d0 diff --git a/powerlevel10k b/powerlevel10k index f5d61840..3bfbb829 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit f5d61840ae3a4f8c2765e1a67d94d9a96de71601 +Subproject commit 3bfbb8294fd61d3fb9f75f944b178eb9c8c2c0f7 diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 6a00a2ca..f862693a 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 6a00a2cabfb5ee3f49ff556ceea56892825c0397 +Subproject commit f862693a674fec84617b3bc86e8b71d4df1c05e2 diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion index d75d9591..b3cfab2a 160000 --- a/vim/bundle/vim-easymotion +++ b/vim/bundle/vim-easymotion @@ -1 +1 @@ -Subproject commit d75d9591e415652b25d9e0a3669355550325263d +Subproject commit b3cfab2a6302b3b39f53d9fd2cd997e1127d7878 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index a6b823b8..b411b753 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit a6b823b8d0a8959e81876fd4857ba822495c028a +Subproject commit b411b753f805b969cca856e2ae51fdbab49880df diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid index dd5243a3..fd2f0017 160000 --- a/vim/bundle/vim-liquid +++ b/vim/bundle/vim-liquid @@ -1 +1 @@ -Subproject commit dd5243a34e97c15e1a128b6ec440a0368e583900 +Subproject commit fd2f0017fbc50f214db2f57c207c34cda3aa1522 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index ed76403b..b78bbce3 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit ed76403b2e0622bc137df4576275a9fd3720b875 +Subproject commit b78bbce3371a2eb56c89f618cd4ab2baadc9ee61 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 710fe7c2..18511d38 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 710fe7c2f3c636fae0b5cac041ff8da028a0777f +Subproject commit 18511d389675d773994215ddb572ccdc2b72f52b diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 2d9f34c0..8985da76 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 2d9f34c09f548ed4df213389caa2882bfe56db58 +Subproject commit 8985da7669bbd73afce85ef0e4a3e1ce2e488595 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index aeb93327..bf3480dc 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit aeb933272e72617f7c4d35e1f003be16836b948d +Subproject commit bf3480dc9ae7bea34c78fbba4c65b4548b5b1fea From 7c4ed98691b126518ee261eb7cae952cafa94868 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 13 Sep 2022 11:10:22 +0100 Subject: [PATCH 511/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 6d48309c..7dcabbe6 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 6d48309cd7da1b91038cf08be7865fb5bb9bc5ea +Subproject commit 7dcabbe6826073ef6069c8a4b6f9a943f00d2df0 From d8906c24d6219d0d28de44908e29613649b8834d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Oct 2022 15:59:58 +0100 Subject: [PATCH 512/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 7dcabbe6..1c879f67 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 7dcabbe6826073ef6069c8a4b6f9a943f00d2df0 +Subproject commit 1c879f67b4380f0705ee1bc578d5aab53bf192a4 From 4ebcf10ac51b8d6b4a1fd8a1a18061a083aff006 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 3 Oct 2022 16:00:23 +0100 Subject: [PATCH 513/973] Fig update. --- bash_profile | 4 ++-- bashrc | 4 ++-- profile | 4 ++-- zshrc | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bash_profile b/bash_profile index e0765588..a032586d 100644 --- a/bash_profile +++ b/bash_profile @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/bash_profile.pre.bash" ]] && . "$HOME/.fig/shell/bash_profile.pre.bash" +[[ -f "$HOME/.fig/shell/bash_profile.pre.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.pre.bash" #!/bin/bash ######################################################################## @@ -140,4 +140,4 @@ fi # eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) # Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && . "$HOME/.fig/shell/bash_profile.post.bash" +[[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.post.bash" diff --git a/bashrc b/bashrc index c2bdb543..3f362622 100644 --- a/bashrc +++ b/bashrc @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/bashrc.pre.bash" ]] && . "$HOME/.fig/shell/bashrc.pre.bash" +[[ -f "$HOME/.fig/shell/bashrc.pre.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.pre.bash" #!/bin/bash ######################################################################## @@ -14,4 +14,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) # Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && . "$HOME/.fig/shell/bashrc.post.bash" +[[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.post.bash" diff --git a/profile b/profile index cb736e77..538822a9 100644 --- a/profile +++ b/profile @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/profile.pre.bash" ]] && . "$HOME/.fig/shell/profile.pre.bash" +[[ -f "$HOME/.fig/shell/profile.pre.bash" ]] && builtin source "$HOME/.fig/shell/profile.pre.bash" ############################################################# # Generic configuration that applies to all shells ############################################################# @@ -20,4 +20,4 @@ eval "$(pyenv init --path)" if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi # Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/profile.post.bash" ]] && . "$HOME/.fig/shell/profile.post.bash" +[[ -f "$HOME/.fig/shell/profile.post.bash" ]] && builtin source "$HOME/.fig/shell/profile.post.bash" diff --git a/zshrc b/zshrc index d12b7a41..9426bdb9 100644 --- a/zshrc +++ b/zshrc @@ -1,5 +1,5 @@ # Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && . "$HOME/.fig/shell/zshrc.pre.zsh" +[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.pre.zsh" # Interactive shell configuration. ############################################################################## @@ -201,4 +201,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) # Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && . "$HOME/.fig/shell/zshrc.post.zsh" +[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.post.zsh" From 6df6df0415692de8e1e58cf2980fab06a067df78 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:25:06 +0100 Subject: [PATCH 514/973] Add function for Docker CLI. --- shellfunctions | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shellfunctions b/shellfunctions index 799c2b75..6d7eab5e 100644 --- a/shellfunctions +++ b/shellfunctions @@ -253,3 +253,8 @@ function git.clone() { return 0 } +# Run CLI in Docker. +function dockercli() { + docker run --platform linux/amd64 --rm -v $HOME/.aws/:/home/${DOCKER_CLI_USER}/.aws/:ro -v `pwd`:`pwd` -w `pwd` -e AWS_PROFILE="$AWS_PROFILE" -it ${DOCKER_CLI_IMAGE} "$@" +} + From a6e0386c22fd4abd2076ba03bcfeced1c3bfa9cf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:29:00 +0100 Subject: [PATCH 515/973] Optionally include specific shellvars files. --- shellvars | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shellvars b/shellvars index c643de09..f6e506ad 100644 --- a/shellvars +++ b/shellvars @@ -93,3 +93,11 @@ export PATH="$PYENV_ROOT/bin:$PATH" # export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` # export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` #fi + +if [ -f ~/dotfiles/shellvars-personal ]; then + source ~/dotfiles/shellvars-personal +fi +if [ -f ~/dotfiles/shellvars-work ]; then + source ~/dotfiles/shellvars-work +fi + From 6c90858c1931cbcecb859d72ad3318b5e77d9069 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:31:01 +0100 Subject: [PATCH 516/973] Ignore work shellvars file. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 413e9189..ed153109 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ netrc boom cloudapp karabiner/automatic_backups +shellvars-work From 30d9240ed6dbf9a013318675c1703f3cd80d0a8d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:31:25 +0100 Subject: [PATCH 517/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 1bfc2cb3..cdfc9db7 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 1bfc2cb39602abe24ed778269ff7978c9c197078 +Subproject commit cdfc9db77ca3a60d4cdd7876e7d17ed08b45f369 From fed69ff87dba713fe16a491a012c65c86cc2b2ea Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:38:06 +0100 Subject: [PATCH 518/973] Remove alias. --- shellfunctions | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shellfunctions b/shellfunctions index 6d7eab5e..efb38ff4 100644 --- a/shellfunctions +++ b/shellfunctions @@ -253,8 +253,10 @@ function git.clone() { return 0 } -# Run CLI in Docker. -function dockercli() { - docker run --platform linux/amd64 --rm -v $HOME/.aws/:/home/${DOCKER_CLI_USER}/.aws/:ro -v `pwd`:`pwd` -w `pwd` -e AWS_PROFILE="$AWS_PROFILE" -it ${DOCKER_CLI_IMAGE} "$@" -} +if [ -f ~/dotfiles/shellfunctions-personal ]; then + source ~/dotfiles/shellfunctions-personal +fi +if [ -f ~/dotfiles/shellfunctions-work ]; then + source ~/dotfiles/shellfunctions-work +fi From 9c63ba5003a699e0a278775bcac40d14773672cb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:38:45 +0100 Subject: [PATCH 519/973] Ignore work shellfunctions file. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ed153109..fecbe958 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ boom cloudapp karabiner/automatic_backups shellvars-work +shellfunctions-work From 281aeb899853892b31ef016739ea836bab4e1c5f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 14:39:20 +0100 Subject: [PATCH 520/973] Add newline. --- shellaliases | 1 + 1 file changed, 1 insertion(+) diff --git a/shellaliases b/shellaliases index cf84c486..c75f5d40 100644 --- a/shellaliases +++ b/shellaliases @@ -286,3 +286,4 @@ alias jreview="jira issue list -q \"project in (FWAAS) AND issuetype not in (Ini alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\"" alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\"" alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" + From 59b21e1a4e4d5d13dd89a0f6fc1c91dc8b45933e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 10 Oct 2022 17:05:06 +0100 Subject: [PATCH 521/973] Add function for generating Insomnia .env file. --- shellfunctions | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shellfunctions b/shellfunctions index efb38ff4..950c6bb5 100644 --- a/shellfunctions +++ b/shellfunctions @@ -253,6 +253,14 @@ function git.clone() { return 0 } +gen_insomnia() { + cat << EOF > ~/insomnia/.env +AWS_ACCESS_KEY_ID=$(aws configure get $AWS_PROFILE.aws_access_key_id) +AWS_SECRET_ACCESS_KEY=$(aws configure get $AWS_PROFILE.aws_secret_access_key) +AWS_SESSION_TOKEN=$(aws configure get $AWS_PROFILE.aws_session_token) +EOF +} + if [ -f ~/dotfiles/shellfunctions-personal ]; then source ~/dotfiles/shellfunctions-personal fi From 138c1a3ce7f3b30fa7eb0ea08a5a9734d2fdb145 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 11 Oct 2022 17:45:58 +0100 Subject: [PATCH 522/973] Alias for checking Artifactory connection. --- shellaliases | 1 + 1 file changed, 1 insertion(+) diff --git a/shellaliases b/shellaliases index c75f5d40..76c17985 100644 --- a/shellaliases +++ b/shellaliases @@ -287,3 +287,4 @@ alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initia alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\"" alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" +alias afcheck='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping' From 9df9bf3bd750e70e29fee5c4a693b30e840f7c1f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 15 Oct 2022 23:27:36 +0100 Subject: [PATCH 523/973] Disable pager for diff, branch. --- gitconfig-common | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gitconfig-common b/gitconfig-common index 0eeba30d..cacdc773 100644 --- a/gitconfig-common +++ b/gitconfig-common @@ -19,6 +19,10 @@ [rebase] stat = true +[pager] + diff = false + branch = false + [color] # ui = true is a superset of all the more specific color options # as documented at http://book.git-scm.com/5_customizing_git.html From e5f7fbf0b4e67a24fee7ece1485cb9f0eac718cd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 16 Oct 2022 18:18:18 +0100 Subject: [PATCH 524/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 1c879f67..65a1e4ed 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 1c879f67b4380f0705ee1bc578d5aab53bf192a4 +Subproject commit 65a1e4edbe678cdac37ad96ca4bc4f6d77e27adf From 5067307438b3038e1ab85980bd6d603ab607632a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 29 Oct 2022 22:38:39 +0100 Subject: [PATCH 525/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 65a1e4ed..49691b58 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 65a1e4edbe678cdac37ad96ca4bc4f6d77e27adf +Subproject commit 49691b58b3c1fbe64b927ec88d5e9697f76e2a80 From c87722e4c712e43ba33b84c741d5e7de1c2b13c0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 29 Oct 2022 22:43:10 +0100 Subject: [PATCH 526/973] Setup goenv. --- profile | 6 ++++++ shellpaths | 4 ++++ shellvars | 2 ++ 3 files changed, 12 insertions(+) diff --git a/profile b/profile index 538822a9..606b9f9c 100644 --- a/profile +++ b/profile @@ -19,5 +19,11 @@ export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi +# goenv setup +eval "$(goenv init -)" + +export PATH="$GOROOT/bin:$PATH" +export PATH="$PATH:$GOPATH/bin" + # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/profile.post.bash" ]] && builtin source "$HOME/.fig/shell/profile.post.bash" diff --git a/shellpaths b/shellpaths index 26fe22fd..7902c5b5 100644 --- a/shellpaths +++ b/shellpaths @@ -60,3 +60,7 @@ export PATH="/opt/homebrew/bin:$PATH" # PATH=$PATH:/usr/local/share/npm/bin export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH" + +# Put goenv on path. +export PATH="$GOENV_ROOT/bin:$PATH" + diff --git a/shellvars b/shellvars index f6e506ad..3c626726 100644 --- a/shellvars +++ b/shellvars @@ -89,6 +89,8 @@ export PIP_REQUIRE_VIRTUALENV=true export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" +export GOENV_ROOT="$HOME/.goenv" + #if [ -f ~/.jfrog/jfrog-cli.conf ]; then # export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` # export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` From 461468370f774960e83211cee5befa395216f40f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 1 Nov 2022 18:29:05 +0000 Subject: [PATCH 527/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index cdfc9db7..aa700132 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit cdfc9db77ca3a60d4cdd7876e7d17ed08b45f369 +Subproject commit aa7001329fa4ce2cc9dccbe482b76dce91cb7f95 From 6a258fc2f36bca010205cd143a678a65d0fedcfb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 7 Nov 2022 14:47:30 +0000 Subject: [PATCH 528/973] Don't error exit if entry already exists. --- obsidian/daily-note.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 2669ddd1..24c09a46 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -63,9 +63,10 @@ def main(): sys.exit(f"Cannot find any daily notes in '{notes_dir}'!") if date_str in notes_dict.keys(): - sys.exit(f"Daily note for {date_str} already exists, skipping!") - else: - print(f"Creating note for {date_str}...") + print(f"Daily note for {date_str} already exists, skipping!") + sys.exit(0) + + print(f"Creating note for {date_str}...") last_date_obj = date_objs[-1] From 36c83b4b5d405de03523a0c3929a801f523b0036 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 11 Nov 2022 09:23:45 +0000 Subject: [PATCH 529/973] Add Terraform config file, to set up plugin cache. --- terraformrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 terraformrc diff --git a/terraformrc b/terraformrc new file mode 100644 index 00000000..d8e09193 --- /dev/null +++ b/terraformrc @@ -0,0 +1 @@ +plugin_cache_dir = "$HOME/.terraform.d/plugin-cache" From 23ca457b1cb4f58c899a0f3a6f0a0fc72739aff7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 11 Nov 2022 09:25:34 +0000 Subject: [PATCH 530/973] Add Terraform setup. --- _setupdotfiles.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 7e4eea20..060e60d1 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -1,7 +1,7 @@ #!/bin/bash DOTFILESDIR=~/dotfiles -DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" +DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .terraformrc .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc" DOTDIRS=".vim" DROPFILES="persistent_history" DROPDIRS="bin .pip" @@ -106,6 +106,8 @@ fi mkdir -p ~/.config ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner +mkdir -p ~/.terraform.d + popd echo "Done!" From d0a1baf681c3fd73f4e3ec977b072d455636531e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 24 Nov 2022 15:40:26 +0000 Subject: [PATCH 531/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 49691b58..5ab51736 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 49691b58b3c1fbe64b927ec88d5e9697f76e2a80 +Subproject commit 5ab517361a4215d2f777023fc1e772fe79496713 From 6c7667aa3f266c20020064df53f7744bd4f0ed16 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 2 Dec 2022 12:04:40 +0000 Subject: [PATCH 532/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 5ab51736..fc44c49c 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 5ab517361a4215d2f777023fc1e772fe79496713 +Subproject commit fc44c49cca9d5e499097392d3f42b1375d0253ba From c36b17e903e7c602d5845b34d90d81be9f1bf3d2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 12 Dec 2022 15:54:14 +0000 Subject: [PATCH 533/973] Install wheel, unset shell pyenv version. --- shellfunctions | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/shellfunctions b/shellfunctions index 950c6bb5..b17d865d 100644 --- a/shellfunctions +++ b/shellfunctions @@ -222,10 +222,11 @@ function upgrade_pyenvs() { for env_ver in $(pyenv versions --bare); do pyenv shell $env_ver pyenv version - PIP_REQUIRE_VIRTUALENV="0" pip3 install --quiet --upgrade pip gnureadline virtualenv virtualenvwrapper + PIP_REQUIRE_VIRTUALENV="0" pip3 install --quiet --upgrade pip gnureadline wheel virtualenv virtualenvwrapper + pyenv shell --unset done + pyenv shell --unset unset PYENV_VERSION - pyenv shell - pyenv version fi } From f1350027384b05b045a2ab06b5214eb46a689890 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 8 Jan 2023 16:53:40 +0000 Subject: [PATCH 534/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index fc44c49c..69dfd775 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit fc44c49cca9d5e499097392d3f42b1375d0253ba +Subproject commit 69dfd7758033b3e771dcd184c1b143d166a85481 From c47b38b414d24fa5bf17a51351b68c1502a98184 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 8 Jan 2023 16:55:35 +0000 Subject: [PATCH 535/973] Remove insomnia. --- shellfunctions | 8 -------- 1 file changed, 8 deletions(-) diff --git a/shellfunctions b/shellfunctions index b17d865d..d9a90132 100644 --- a/shellfunctions +++ b/shellfunctions @@ -254,14 +254,6 @@ function git.clone() { return 0 } -gen_insomnia() { - cat << EOF > ~/insomnia/.env -AWS_ACCESS_KEY_ID=$(aws configure get $AWS_PROFILE.aws_access_key_id) -AWS_SECRET_ACCESS_KEY=$(aws configure get $AWS_PROFILE.aws_secret_access_key) -AWS_SESSION_TOKEN=$(aws configure get $AWS_PROFILE.aws_session_token) -EOF -} - if [ -f ~/dotfiles/shellfunctions-personal ]; then source ~/dotfiles/shellfunctions-personal fi From 2bc33044c1f0ac6f772e9c24111d881c23eb1c1e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 17 Jan 2023 13:55:19 +0000 Subject: [PATCH 536/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index aa700132..d4e00179 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit aa7001329fa4ce2cc9dccbe482b76dce91cb7f95 +Subproject commit d4e00179b0b1e28a53b081e0837d6f0f1c0f1739 From a713583d7f572407f6634870065cb739fcbc3162 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 17 Jan 2023 13:56:08 +0000 Subject: [PATCH 537/973] Add envar to default tsrc jobs to 8. --- shellvars | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/shellvars b/shellvars index 3c626726..088c35c4 100644 --- a/shellvars +++ b/shellvars @@ -91,10 +91,7 @@ export PATH="$PYENV_ROOT/bin:$PATH" export GOENV_ROOT="$HOME/.goenv" -#if [ -f ~/.jfrog/jfrog-cli.conf ]; then -# export ARTIFACTORY_EMAIL=`jq -r '.artifactory[0].user' ~/.jfrog/jfrog-cli.conf` -# export ARTIFACTORY_API_KEY=`jq -r '.artifactory[0].password' ~/.jfrog/jfrog-cli.conf` -#fi +export TSRC_PARALLEL_JOBS=8 if [ -f ~/dotfiles/shellvars-personal ]; then source ~/dotfiles/shellvars-personal From e207bf68ab4545a66f9840ccec3c1253acf99ad8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 17 Jan 2023 14:03:14 +0000 Subject: [PATCH 538/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index d4e00179..eb4dfb13 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit d4e00179b0b1e28a53b081e0837d6f0f1c0f1739 +Subproject commit eb4dfb1356a04070ad49e60cc48eb6c9884e5ac8 From e61e139065c1422d1a5d7cc27fbf93659d0e1a4a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 Jan 2023 16:27:27 +0000 Subject: [PATCH 539/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index eb4dfb13..b7c6d1e8 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit eb4dfb1356a04070ad49e60cc48eb6c9884e5ac8 +Subproject commit b7c6d1e845ed7cd30f1395ed9702dbe3449f90b6 From 4cee99d57b608ee99a8f0239a708100d0c50f3e8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 20 Jan 2023 16:31:00 +0000 Subject: [PATCH 540/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index b7c6d1e8..6b81ca7b 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit b7c6d1e845ed7cd30f1395ed9702dbe3449f90b6 +Subproject commit 6b81ca7b049bce3dd69132ba5b1ab1838520b2a6 From 0c5757057f8919a1524b696a9bcb6cc695f55efe Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 22 Jan 2023 13:56:10 +0000 Subject: [PATCH 541/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 69dfd775..ba8777fc 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 69dfd7758033b3e771dcd184c1b143d166a85481 +Subproject commit ba8777fc3013a3c682d8144586e16457cbe12586 From 304ba122b45a5c34218b42a2485939c3937fd3f9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 29 Jan 2023 16:09:28 +0000 Subject: [PATCH 542/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 6b81ca7b..dd1d4dd5 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 6b81ca7b049bce3dd69132ba5b1ab1838520b2a6 +Subproject commit dd1d4dd5d197773e923ebca7ab37684d23ef70f5 From e607b597daf8ee932287afbb06caa61a29d160fb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 10 Feb 2023 12:43:48 +0000 Subject: [PATCH 543/973] Update scripts module. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index dd1d4dd5..8503f869 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit dd1d4dd5d197773e923ebca7ab37684d23ef70f5 +Subproject commit 8503f86923c2fe659e040c0ba83a5198ce7eee39 From a2e0f140b594f4446f49b65144d1132e1e3eef70 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 12 Apr 2023 17:24:59 +0100 Subject: [PATCH 544/973] Add LLVM to path. --- shellpaths | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shellpaths b/shellpaths index 7902c5b5..b899a317 100644 --- a/shellpaths +++ b/shellpaths @@ -64,3 +64,5 @@ export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH" # Put goenv on path. export PATH="$GOENV_ROOT/bin:$PATH" +export PATH="/opt/homebrew/opt/llvm/bin:$PATH" + From ea6bc9d6e1fc37bd52ea16af2182baa172feae56 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 13 Apr 2023 14:50:30 +0100 Subject: [PATCH 545/973] Allow access. --- gitconfig-macos | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitconfig-macos b/gitconfig-macos index 416aac56..2c5c8ed0 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -3,3 +3,5 @@ [credential] helper = osxkeychain +[safe] + directory = "*" From 505db9067b04d691f64f498cc0e18ac5ad84c5db Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 14 Apr 2023 16:43:14 +0100 Subject: [PATCH 546/973] Update for granted. --- zshenv | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zshenv b/zshenv index cf6e8f90..c3021676 100644 --- a/zshenv +++ b/zshenv @@ -1,2 +1,4 @@ fpath=($fpath $HOME/.zsh/func) -typeset -U fpath \ No newline at end of file +typeset -U fpath +alias assume="source assume" + From 76574702bc92e544c5f7cf64adff37b9e19ed606 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 14 Apr 2023 17:05:22 +0100 Subject: [PATCH 547/973] Update Brewfile. --- Brewfile | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/Brewfile b/Brewfile index a8a947af..2174a05d 100644 --- a/Brewfile +++ b/Brewfile @@ -1,6 +1,8 @@ +tap "ankitpokhrel/jira-cli" tap "bufbuild/buf" tap "charmbracelet/tap" tap "chef/chef" +tap "common-fate/granted" tap "coretech/terrafile" tap "d12frosted/emacs-plus" tap "domt4/autoupdate" @@ -18,49 +20,61 @@ tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" tap "romkatv/powerlevel10k" tap "sachaos/todoist" +tap "terrastruct/d2" brew "a2ps" brew "adr-tools" brew "readline" -brew "sqlite" brew "xz" brew "ansible" +brew "black" +brew "pygments" +brew "yamllint" brew "ansible-lint" brew "giflib" brew "libtiff" brew "apr" brew "apr-util" +brew "gcc" +brew "boost" brew "asciidoc" brew "asciinema" brew "gettext" brew "libffi" +brew "python@3.9" brew "atomicparsley" brew "autojump" brew "awk" brew "node" brew "aws-cdk" brew "aws-shell" +brew "docutils" brew "awscli" brew "base64" brew "bash" brew "bash-completion" brew "bat" +brew "freetype" +brew "cairo" +brew "harfbuzz" +brew "openjdk@11" brew "bazel" brew "bit-git" -brew "black" +brew "bitwarden-cli" brew "brew-cask-completion" brew "bzip2" -brew "freetype" -brew "cairo" +brew "checkov" brew "chezmoi" brew "clang-format" +brew "cloc" brew "cmake" brew "consul" brew "consul-template" -brew "coreutils", link: false +brew "coreutils" brew "libidn2" brew "libssh2" brew "rtmpdump" brew "curl" +brew "d2" brew "dateutils" brew "delta" brew "delve" @@ -74,13 +88,13 @@ brew "docker-machine-completion" brew "dos2unix" brew "doxygen" brew "envconsul" +brew "ghostscript" brew "exa" brew "fd" brew "fribidi" brew "p11-kit" brew "unbound" brew "gnutls" -brew "harfbuzz" brew "leptonica" brew "sdl2" brew "tesseract" @@ -88,11 +102,10 @@ brew "x265" brew "xvid" brew "zeromq" brew "ffmpeg" +brew "netpbm" brew "flake8" brew "fzf" -brew "gcc" brew "gh" -brew "ghostscript" brew "gimme-aws-creds" brew "gist" brew "git" @@ -110,10 +123,12 @@ brew "libusb" brew "pinentry" brew "gnupg" brew "go" +brew "gobject-introspection" +brew "goenv" brew "golangci-lint" brew "gopls" -brew "netpbm" brew "gts" +brew "librsvg" brew "graphviz" brew "grep" brew "grpcurl" @@ -140,6 +155,7 @@ brew "lftp" brew "libcaca" brew "libressl" brew "libusb-compat" +brew "llvm" brew "make" brew "markdownlint-cli" brew "mas" @@ -154,7 +170,10 @@ brew "mypy" brew "ncftp" brew "neovim" brew "ocrad" +brew "octave" brew "openconnect" +brew "openssl@3" +brew "ossp-uuid" brew "packer" brew "packer-completion" brew "parallel" @@ -163,6 +182,7 @@ brew "peco" brew "percol" brew "pip-completion" brew "pipenv" +brew "pipx" brew "pre-commit" brew "progress" brew "protobuf-c" @@ -174,8 +194,8 @@ brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" -brew "pygments" brew "python@3.8" +brew "qemu" brew "qt" brew "rake-completion" brew "rbenv" @@ -184,7 +204,6 @@ brew "repo" brew "ripgrep" brew "rlwrap" brew "robot-framework" -brew "ruby" brew "rust" brew "semgrep" brew "shellcheck" @@ -213,13 +232,14 @@ brew "vim" brew "wget" brew "xpdf" brew "yaegi" -brew "yamllint" brew "youtube-dl" brew "zlib" brew "zoxide" brew "zsh" +brew "ankitpokhrel/jira-cli/jira-cli" brew "bufbuild/buf/buf" brew "charmbracelet/tap/skate" +brew "common-fate/granted/granted" brew "coretech/terrafile/terrafile" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" @@ -249,7 +269,6 @@ cask "font-roboto-mono-for-powerline" cask "font-sf-mono-for-powerline" cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" -cask "inspec" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" From 2c21dfdc811c059d80797ec8a7c7d8d5024adfac Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Apr 2023 18:22:57 +0100 Subject: [PATCH 548/973] Update submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 8503f869..b07d95f4 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 8503f86923c2fe659e040c0ba83a5198ce7eee39 +Subproject commit b07d95f474260ee6c9e39c36c24dd7050a71db20 From 28b0c1424681e926d1a80834e3ec1c45cbe9126b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 20 Apr 2023 18:24:09 +0100 Subject: [PATCH 549/973] Tidy. --- gitconfig-macos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitconfig-macos b/gitconfig-macos index 2c5c8ed0..20d20308 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -1,7 +1,7 @@ [include] path = ~/dotfiles/gitconfig-common - [credential] helper = osxkeychain [safe] directory = "*" + From 8416303ccda34e8f66f76ca492d8a25323a8a388 Mon Sep 17 00:00:00 2001 From: Tim Duffin Date: Tue, 9 May 2023 10:09:55 +0100 Subject: [PATCH 550/973] cask displaylink --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 2174a05d..88734759 100644 --- a/Brewfile +++ b/Brewfile @@ -248,6 +248,7 @@ cask "aws-vault" cask "beardedspice" cask "cakebrew" cask "devtoys" +cask "displaylink" cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" From 01dc052b23fef046eca29364ca8952f676c28335 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 10 May 2023 12:21:48 +0100 Subject: [PATCH 551/973] Update Brewfile. --- Brewfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index 2174a05d..0e559158 100644 --- a/Brewfile +++ b/Brewfile @@ -81,10 +81,8 @@ brew "delve" brew "diffutils" brew "dive" brew "docker-completion" -brew "docker-compose-completion" brew "docker-credential-helper" brew "docker-credential-helper-ecr" -brew "docker-machine-completion" brew "dos2unix" brew "doxygen" brew "envconsul" @@ -144,6 +142,7 @@ brew "id3v2" brew "infracost" brew "iproute2mac" brew "ipython" +brew "isort" brew "jfrog-cli" brew "oniguruma" brew "jq" @@ -204,6 +203,7 @@ brew "repo" brew "ripgrep" brew "rlwrap" brew "robot-framework" +brew "ruff" brew "rust" brew "semgrep" brew "shellcheck" @@ -284,4 +284,3 @@ cask "vagrant" cask "vlc" cask "xquartz" cask "yt-music" -cask "ytmdesktop-youtube-music" From 5452288ac349784d563b1116947f5c2643eb62d4 Mon Sep 17 00:00:00 2001 From: Tim Duffin Date: Thu, 11 May 2023 09:10:53 +0100 Subject: [PATCH 552/973] added monitorcontrol --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 88734759..31f7ddd4 100644 --- a/Brewfile +++ b/Brewfile @@ -275,6 +275,7 @@ cask "kdiff3" cask "lumen" cask "mactex" cask "meetingbar" +cask "monitorcontrol" cask "openconnect-gui" cask "rectangle" cask "staruml" From 36e92e0f24551f92489d60d395bf03cc09a4bfd2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 Jun 2023 12:13:57 +0100 Subject: [PATCH 553/973] Upgrade OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index ba8777fc..7a030f6b 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit ba8777fc3013a3c682d8144586e16457cbe12586 +Subproject commit 7a030f6bd6c15259052c7007020cf3ecf8a3f299 From c7637900c86c7d651eb2e61a789566e2abfe61ec Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 11 Jun 2023 14:10:37 +0100 Subject: [PATCH 554/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 7a030f6b..50c67868 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 7a030f6bd6c15259052c7007020cf3ecf8a3f299 +Subproject commit 50c678687e73d1433f278b7bb7f168e8fa817670 From 9fc99996acf6e54d77decf5b2dcbfca719f3bca8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 11 Jun 2023 14:12:03 +0100 Subject: [PATCH 555/973] Update Brewfile. --- Brewfile | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index b85551da..117218eb 100644 --- a/Brewfile +++ b/Brewfile @@ -58,6 +58,8 @@ brew "cairo" brew "harfbuzz" brew "openjdk@11" brew "bazel" +brew "protobuf" +brew "bear" brew "bit-git" brew "bitwarden-cli" brew "brew-cask-completion" @@ -147,6 +149,7 @@ brew "jfrog-cli" brew "oniguruma" brew "jq" brew "jsonlint" +brew "jsonnet" brew "pandoc" brew "jupyterlab" brew "lastpass-cli" @@ -161,7 +164,6 @@ brew "mas" brew "md5sha1sum", link: false brew "micro" brew "mmark" -brew "protobuf" brew "mosh" brew "mplayer" brew "mtr" @@ -248,7 +250,6 @@ cask "aws-vault" cask "beardedspice" cask "cakebrew" cask "devtoys" -cask "displaylink" cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" @@ -275,7 +276,6 @@ cask "kdiff3" cask "lumen" cask "mactex" cask "meetingbar" -cask "monitorcontrol" cask "openconnect-gui" cask "rectangle" cask "staruml" @@ -286,3 +286,53 @@ cask "vagrant" cask "vlc" cask "xquartz" cask "yt-music" +cask "ytmdesktop-youtube-music" +vscode "amazonwebservices.aws-toolkit-vscode" +vscode "AryanAhire.sublime-monokai" +vscode "charliermarsh.ruff" +vscode "cschlosser.doxdocgen" +vscode "DavidAnson.vscode-markdownlint" +vscode "davidbwaters.macos-modern-theme" +vscode "donjayamanne.githistory" +vscode "eamodio.gitlens" +vscode "EditorConfig.EditorConfig" +vscode "giovdk21.vscode-sublime-merge" +vscode "GitHub.github-vscode-theme" +vscode "GitHub.vscode-pull-request-github" +vscode "golang.go" +vscode "Grafana.vscode-jsonnet" +vscode "GrapeCity.gc-excelviewer" +vscode "hashicorp.terraform" +vscode "hediet.vscode-drawio" +vscode "humao.rest-client" +vscode "janjoerke.jenkins-pipeline-linter-connector" +vscode "jeff-hykin.better-cpp-syntax" +vscode "Meezilla.json" +vscode "MellowMarshmallow.groovy" +vscode "mrmlnc.vscode-duplicate" +vscode "ms-azuretools.vscode-docker" +vscode "ms-python.isort" +vscode "ms-python.python" +vscode "ms-toolsai.jupyter" +vscode "ms-toolsai.jupyter-keymap" +vscode "ms-toolsai.vscode-jupyter-cell-tags" +vscode "ms-toolsai.vscode-jupyter-slideshow" +vscode "ms-vscode-remote.remote-containers" +vscode "ms-vscode.cmake-tools" +vscode "ms-vscode.cpptools" +vscode "ms-vscode.cpptools-extension-pack" +vscode "ms-vscode.cpptools-themes" +vscode "ms-vscode.makefile-tools" +vscode "PKief.material-icon-theme" +vscode "redhat.vscode-yaml" +vscode "rust-lang.rust-analyzer" +vscode "SonarSource.sonarlint-vscode" +vscode "streetsidesoftware.code-spell-checker" +vscode "TabNine.tabnine-vscode" +vscode "tadayosi.vscode-makefile-outliner" +vscode "timonwong.shellcheck" +vscode "twxs.cmake" +vscode "vscode-icons-team.vscode-icons" +vscode "withfig.fig" +vscode "ziglang.vscode-zig" +vscode "zxh404.vscode-proto3" From 4bfff35ef3371769fea86d9cf43d6d2567538763 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Jun 2023 15:40:52 +0100 Subject: [PATCH 556/973] Set current as default push. --- gitconfig-macos | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitconfig-macos b/gitconfig-macos index 20d20308..04a65712 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -5,3 +5,5 @@ [safe] directory = "*" +[push] + default = current From 96007444d79fb80454f99208b90ad05c47f9c34f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 5 Jul 2023 13:12:16 +0100 Subject: [PATCH 557/973] Update Brewfile. --- Brewfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Brewfile b/Brewfile index 117218eb..1e2b011f 100644 --- a/Brewfile +++ b/Brewfile @@ -23,6 +23,7 @@ tap "sachaos/todoist" tap "terrastruct/d2" brew "a2ps" brew "adr-tools" +brew "openssl@3" brew "readline" brew "xz" brew "ansible" @@ -173,7 +174,6 @@ brew "neovim" brew "ocrad" brew "octave" brew "openconnect" -brew "openssl@3" brew "ossp-uuid" brew "packer" brew "packer-completion" @@ -195,7 +195,6 @@ brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" -brew "python@3.8" brew "qemu" brew "qt" brew "rake-completion" @@ -282,7 +281,6 @@ cask "staruml" cask "sublime-merge-dev" cask "sublime-text-dev" cask "textmate" -cask "vagrant" cask "vlc" cask "xquartz" cask "yt-music" From 6f1efa89bdd7d9edce1f28b98c0d32218ebaa083 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 26 Jul 2023 10:26:52 +0100 Subject: [PATCH 558/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 50c67868..4188b22a 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 50c678687e73d1433f278b7bb7f168e8fa817670 +Subproject commit 4188b22aea3356a02768505103e42a96d18547a3 From 4597e6468c7d260e00148129ceae83d1fe75cf08 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 12 Aug 2023 21:22:56 +0100 Subject: [PATCH 559/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4188b22a..fd219a94 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4188b22aea3356a02768505103e42a96d18547a3 +Subproject commit fd219a94ab585fa699a0e842335a9f33dcbb613b From 9b9fac1103ea22ab0f4048364750cedc3eee7c8a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 12 Aug 2023 21:23:38 +0100 Subject: [PATCH 560/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index b07d95f4..96e483f1 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit b07d95f474260ee6c9e39c36c24dd7050a71db20 +Subproject commit 96e483f15283f1b65b73f86c4c56afdd50d2e411 From 1e82de3ea7b0ad23ccf9eb8e1cc38684aa4b7377 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 19 Sep 2023 09:45:57 +0100 Subject: [PATCH 561/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index fd219a94..cdd7dab5 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit fd219a94ab585fa699a0e842335a9f33dcbb613b +Subproject commit cdd7dab5db4c668b962f908b57e244aa1ff4b574 From 69c8835f47c67baa235a4c71927f5e8358b8fb0c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 5 Oct 2023 13:55:06 +0100 Subject: [PATCH 562/973] Update submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 1e7d6a19..37542262 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 1e7d6a19edb2cb46910cc76595341bfcf8466608 +Subproject commit 375422626178ffcdeb2228b835cf66e2393dc27e From e19a78911e86066e895067eac41c62c900d0c886 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 5 Oct 2023 14:16:42 +0100 Subject: [PATCH 563/973] Update submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 37542262..e7a9a89f 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 375422626178ffcdeb2228b835cf66e2393dc27e +Subproject commit e7a9a89fe3b8062c3d82bcd352c3633a9fd84419 From 121601d625d8ff1318390ab72ca7e781932ba407 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 21 Oct 2023 17:16:59 +0100 Subject: [PATCH 564/973] Rust install. --- bash_profile | 1 + bashrc | 1 + profile | 1 + zshenv | 1 + 4 files changed, 4 insertions(+) diff --git a/bash_profile b/bash_profile index a032586d..2f89d20a 100644 --- a/bash_profile +++ b/bash_profile @@ -141,3 +141,4 @@ fi # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.post.bash" +. "$HOME/.cargo/env" diff --git a/bashrc b/bashrc index 3f362622..04c468c9 100644 --- a/bashrc +++ b/bashrc @@ -15,3 +15,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.post.bash" +. "$HOME/.cargo/env" diff --git a/profile b/profile index 606b9f9c..3d59ffd9 100644 --- a/profile +++ b/profile @@ -27,3 +27,4 @@ export PATH="$PATH:$GOPATH/bin" # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/profile.post.bash" ]] && builtin source "$HOME/.fig/shell/profile.post.bash" +. "$HOME/.cargo/env" diff --git a/zshenv b/zshenv index c3021676..3880e03a 100644 --- a/zshenv +++ b/zshenv @@ -2,3 +2,4 @@ fpath=($fpath $HOME/.zsh/func) typeset -U fpath alias assume="source assume" +. "$HOME/.cargo/env" From d180749947a0a2e548bc8e292dd5b5bbafb14749 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 17 Dec 2023 20:59:57 +0000 Subject: [PATCH 565/973] rust: cargo setup. --- bash_profile | 3 ++- bashrc | 3 ++- profile | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bash_profile b/bash_profile index 2f89d20a..b85513f6 100644 --- a/bash_profile +++ b/bash_profile @@ -139,6 +139,7 @@ fi # eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) +. "$HOME/.cargo/env" + # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.post.bash" -. "$HOME/.cargo/env" diff --git a/bashrc b/bashrc index 04c468c9..3bf4a7e5 100644 --- a/bashrc +++ b/bashrc @@ -13,6 +13,7 @@ source ~/.bash_profile export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) +. "$HOME/.cargo/env" + # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.post.bash" -. "$HOME/.cargo/env" diff --git a/profile b/profile index 3d59ffd9..9e5b7171 100644 --- a/profile +++ b/profile @@ -25,6 +25,7 @@ eval "$(goenv init -)" export PATH="$GOROOT/bin:$PATH" export PATH="$PATH:$GOPATH/bin" +. "$HOME/.cargo/env" + # Fig post block. Keep at the bottom of this file. [[ -f "$HOME/.fig/shell/profile.post.bash" ]] && builtin source "$HOME/.fig/shell/profile.post.bash" -. "$HOME/.cargo/env" From aa8029247f465fd6b703afcfacff8a755521587c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 17 Dec 2023 21:00:13 +0000 Subject: [PATCH 566/973] Obsidian notes path. --- obsidian/daily-note.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 24c09a46..815141bf 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -45,7 +45,7 @@ def main(): year = curr_date_obj.strftime('%Y') month = curr_date_obj.strftime('%m') - vault = f"{home}/obsidian/Notes" + vault = f"{home}/obsidian" notes_dir = f"{vault}/Daily Notes/" print(f"Scanning '{notes_dir}'...") From c3fe7048185eb35380772b22eadec9a51fde42a8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 17 Dec 2023 21:00:21 +0000 Subject: [PATCH 567/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index cdd7dab5..0a9d8278 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit cdd7dab5db4c668b962f908b57e244aa1ff4b574 +Subproject commit 0a9d82780e20e24b6fafc5b2aaefedb0957986c9 From f9169495aac3ebda4ba05de1c10828b6f86701f7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 3 Jan 2024 10:06:01 +0000 Subject: [PATCH 568/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 0a9d8278..ec74eb91 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 0a9d82780e20e24b6fafc5b2aaefedb0957986c9 +Subproject commit ec74eb91bda8ee0cb42f4b9697d13154e31a93d6 From 4a8b0bc462bdee01ac4b3f09a5503cc39e50231e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Jan 2024 12:32:51 +0000 Subject: [PATCH 569/973] Minor fixes. --- obsidian/daily-note.py | 2 +- obsidian/weekly-report.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 815141bf..cd9b7e51 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -130,7 +130,7 @@ def main(): # Generate agenda file_lines.append("## Agenda") - print(f"Running daymd...") + print("Running daymd...") daymd = os.path.join(home, "dotfiles", "scripts", "daymd") result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE) file_lines.append(result.stdout.decode()) diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index da1c6a5b..cc82f0a4 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -6,7 +6,6 @@ import datetime import glob import os -import subprocess import sys From 77d4425d7c6888c91b9e06d75afc3cbaead11c60 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Jan 2024 12:33:06 +0000 Subject: [PATCH 570/973] Fix vault paths. --- obsidian/weekly-report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index cc82f0a4..4953e4b4 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -46,7 +46,7 @@ def main(): year = curr_date_obj.strftime('%Y') month = curr_date_obj.strftime('%m') - vault = f"{home}/obsidian/Notes" + vault = f"{home}/obsidian/" daily_dir = f"{vault}/Daily Notes/" weekly_dir = f"{vault}/Weekly Reports/" From de41e1f51bab361bd3bb9c91a332bf80e25841d2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Jan 2024 12:33:43 +0000 Subject: [PATCH 571/973] Disable nav bars. --- obsidian/daily-note.py | 4 ++-- obsidian/weekly-report.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index cd9b7e51..456a7040 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -109,8 +109,8 @@ def main(): file_lines.append("") # Generate nav bar - file_lines.append(f"<< [[Daily {prev_str}]] | [[Daily {next_str}]] >>") - file_lines.append("") + # file_lines.append(f"<< [[Daily {prev_str}]] | [[Daily {next_str}]] >>") + # file_lines.append("") # Generate todos section file_lines.append("## Todo") diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 4953e4b4..c66dc00e 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -110,8 +110,8 @@ def main(): file_lines.append("") # Generate nav bar - file_lines.append(f"<< [[Weekly {prev_str}]] | [[Weekly {next_str}]] >>") - file_lines.append("") + # file_lines.append(f"<< [[Weekly {prev_str}]] | [[Weekly {next_str}]] >>") + # file_lines.append("") file_lines.append("## Activities this week") start = end = 0 From e9a8e36ba010bd6026ebbd6543e3e9b428aebe17 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Jan 2024 12:33:55 +0000 Subject: [PATCH 572/973] Disable weekly report backlog section. --- obsidian/weekly-report.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index c66dc00e..36bcf415 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -156,9 +156,9 @@ def main(): file_lines.append("- ") file_lines.append("") - file_lines.append("## Backlog") - file_lines.append("- ") - file_lines.append("") + # file_lines.append("## Backlog") + # file_lines.append("- ") + # file_lines.append("") # Write new file print(f"Writing to {output_file_path}") From c1987257fe028e1b6d2164bd63b0aef11569e79a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 17 Jan 2024 15:10:39 +0000 Subject: [PATCH 573/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index ec74eb91..c0074974 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit ec74eb91bda8ee0cb42f4b9697d13154e31a93d6 +Subproject commit c0074974313215360a9529e01204792cdf6ca473 From ba5120f826d1e16b28d13598fa07aead80406521 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 30 Jan 2024 10:54:06 +0000 Subject: [PATCH 574/973] Update Brefile. --- Brewfile | 103 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 26 deletions(-) diff --git a/Brewfile b/Brewfile index 1e2b011f..3042243f 100644 --- a/Brewfile +++ b/Brewfile @@ -14,7 +14,6 @@ tap "homebrew/bundle" tap "homebrew/cask" tap "homebrew/cask-fonts" tap "homebrew/cask-versions" -tap "homebrew/core" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" @@ -23,36 +22,31 @@ tap "sachaos/todoist" tap "terrastruct/d2" brew "a2ps" brew "adr-tools" -brew "openssl@3" -brew "readline" -brew "xz" -brew "ansible" -brew "black" -brew "pygments" -brew "yamllint" -brew "ansible-lint" brew "giflib" +brew "xz" brew "libtiff" brew "apr" +brew "openssl@3" brew "apr-util" -brew "gcc" brew "boost" +brew "readline" brew "asciidoc" brew "asciinema" brew "gettext" -brew "libffi" -brew "python@3.9" brew "atomicparsley" brew "autojump" brew "awk" brew "node" brew "aws-cdk" -brew "aws-shell" brew "docutils" +brew "pygments" +brew "aws-shell" brew "awscli" brew "base64" brew "bash" brew "bash-completion" +brew "libssh2" +brew "oniguruma" brew "bat" brew "freetype" brew "cairo" @@ -63,8 +57,11 @@ brew "protobuf" brew "bear" brew "bit-git" brew "bitwarden-cli" +brew "python-packaging" +brew "black" brew "brew-cask-completion" brew "bzip2" +brew "gcc" brew "checkov" brew "chezmoi" brew "clang-format" @@ -74,7 +71,6 @@ brew "consul" brew "consul-template" brew "coreutils" brew "libidn2" -brew "libssh2" brew "rtmpdump" brew "curl" brew "d2" @@ -89,7 +85,6 @@ brew "docker-credential-helper-ecr" brew "dos2unix" brew "doxygen" brew "envconsul" -brew "ghostscript" brew "exa" brew "fd" brew "fribidi" @@ -103,10 +98,10 @@ brew "x265" brew "xvid" brew "zeromq" brew "ffmpeg" -brew "netpbm" brew "flake8" brew "fzf" brew "gh" +brew "ghostscript" brew "gimme-aws-creds" brew "gist" brew "git" @@ -128,6 +123,7 @@ brew "gobject-introspection" brew "goenv" brew "golangci-lint" brew "gopls" +brew "netpbm" brew "gts" brew "librsvg" brew "graphviz" @@ -147,32 +143,36 @@ brew "iproute2mac" brew "ipython" brew "isort" brew "jfrog-cli" -brew "oniguruma" +brew "jless" brew "jq" brew "jsonlint" brew "jsonnet" +brew "mypy" brew "pandoc" +brew "ruff" brew "jupyterlab" brew "lastpass-cli" brew "lftp" brew "libcaca" +brew "libffi" brew "libressl" +brew "python@3.9" brew "libusb-compat" brew "llvm" brew "make" brew "markdownlint-cli" brew "mas" brew "md5sha1sum", link: false +brew "mdbook" brew "micro" brew "mmark" brew "mosh" brew "mplayer" brew "mtr" -brew "mypy" brew "ncftp" brew "neovim" brew "ocrad" -brew "octave" +brew "okta-aws-cli" brew "openconnect" brew "ossp-uuid" brew "packer" @@ -184,7 +184,6 @@ brew "percol" brew "pip-completion" brew "pipenv" brew "pipx" -brew "pre-commit" brew "progress" brew "protobuf-c" brew "protoc-gen-go" @@ -204,8 +203,7 @@ brew "repo" brew "ripgrep" brew "rlwrap" brew "robot-framework" -brew "ruff" -brew "rust" +brew "rustup-init" brew "semgrep" brew "shellcheck" brew "sloccount" @@ -233,6 +231,7 @@ brew "vim" brew "wget" brew "xpdf" brew "yaegi" +brew "yamllint" brew "youtube-dl" brew "zlib" brew "zoxide" @@ -245,6 +244,7 @@ brew "coretech/terrafile/terrafile" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" +cask "alt-tab" cask "aws-vault" cask "beardedspice" cask "cakebrew" @@ -273,20 +273,60 @@ cask "font-ubuntu-mono-derivative-powerline" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" -cask "mactex" +cask "maccy" cask "meetingbar" cask "openconnect-gui" cask "rectangle" cask "staruml" cask "sublime-merge-dev" cask "sublime-text-dev" -cask "textmate" cask "vlc" cask "xquartz" cask "yt-music" cask "ytmdesktop-youtube-music" +mas "24 Hour Wallpaper", id: 1226087575 +mas "AdBlock", id: 1402042596 +mas "Agenda", id: 1287445660 +mas "aText", id: 488566438 +mas "Battery Monitor", id: 836505650 +mas "Bear", id: 1091189122 +mas "Bitwarden", id: 1352778147 +mas "CleanMyMac X", id: 1339170533 +mas "CopyClip", id: 1020812363 +mas "Delicious Library", id: 635124250 +mas "Disk Space", id: 603688030 +mas "Elisi", id: 1406239881 +mas "EtreCheck", id: 1423715984 +mas "Evernote", id: 406056744 +mas "feedly", id: 865500966 +mas "Funter", id: 1109422934 +mas "GoPro Player", id: 1460836908 +mas "Keynote", id: 409183694 +mas "Kindle", id: 405399194 +mas "Magnet", id: 441258766 +mas "Microsoft Excel", id: 462058435 +mas "Microsoft OneNote", id: 784801555 +mas "Microsoft Outlook", id: 985367838 +mas "Microsoft Remote Desktop", id: 1295203466 +mas "Microsoft Word", id: 462054704 +mas "MindNode", id: 1289197285 +mas "my41cx", id: 949272407 +mas "Notability", id: 360593530 +mas "Okta Extension App", id: 1439967473 +mas "Okta Verify", id: 490179405 +mas "Slack", id: 803453959 +mas "Speedtest", id: 1153157709 +mas "Tailscale", id: 1475387142 +mas "The Archive Browser", id: 510232205 +mas "The Unarchiver", id: 425424353 +mas "Twitter", id: 409789998 +mas "Typist", id: 415166115 +mas "Unsplash Wallpapers", id: 1284863847 +mas "WhatsApp", id: 1147396723 +mas "Yubico Authenticator", id: 1497506650 vscode "amazonwebservices.aws-toolkit-vscode" vscode "AryanAhire.sublime-monokai" +vscode "atlassian.atlascode" vscode "charliermarsh.ruff" vscode "cschlosser.doxdocgen" vscode "DavidAnson.vscode-markdownlint" @@ -294,22 +334,29 @@ vscode "davidbwaters.macos-modern-theme" vscode "donjayamanne.githistory" vscode "eamodio.gitlens" vscode "EditorConfig.EditorConfig" +vscode "fabiospampinato.vscode-diff" vscode "giovdk21.vscode-sublime-merge" +vscode "GitHub.copilot" +vscode "GitHub.copilot-chat" vscode "GitHub.github-vscode-theme" vscode "GitHub.vscode-pull-request-github" vscode "golang.go" vscode "Grafana.vscode-jsonnet" vscode "GrapeCity.gc-excelviewer" +vscode "Gruntfuggly.todo-tree" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" vscode "humao.rest-client" vscode "janjoerke.jenkins-pipeline-linter-connector" vscode "jeff-hykin.better-cpp-syntax" +vscode "joffreykern.markdown-toc" +vscode "mechatroner.rainbow-csv" vscode "Meezilla.json" vscode "MellowMarshmallow.groovy" vscode "mrmlnc.vscode-duplicate" vscode "ms-azuretools.vscode-docker" vscode "ms-python.isort" +vscode "ms-python.mypy-type-checker" vscode "ms-python.python" vscode "ms-toolsai.jupyter" vscode "ms-toolsai.jupyter-keymap" @@ -320,17 +367,21 @@ vscode "ms-vscode.cmake-tools" vscode "ms-vscode.cpptools" vscode "ms-vscode.cpptools-extension-pack" vscode "ms-vscode.cpptools-themes" +vscode "ms-vscode.live-server" vscode "ms-vscode.makefile-tools" +vscode "peterj.proto" vscode "PKief.material-icon-theme" vscode "redhat.vscode-yaml" +vscode "ritwickdey.LiveServer" vscode "rust-lang.rust-analyzer" +vscode "ryanluker.vscode-coverage-gutters" vscode "SonarSource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" -vscode "TabNine.tabnine-vscode" vscode "tadayosi.vscode-makefile-outliner" +vscode "TakumiI.markdowntable" vscode "timonwong.shellcheck" +vscode "tomoki1207.pdf" vscode "twxs.cmake" vscode "vscode-icons-team.vscode-icons" vscode "withfig.fig" vscode "ziglang.vscode-zig" -vscode "zxh404.vscode-proto3" From 3fbec1538abf08a90b87117bac01dc2ea02e9319 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 12 Feb 2024 14:20:39 +0000 Subject: [PATCH 575/973] Change to using GCM. --- gitconfig-macos | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gitconfig-macos b/gitconfig-macos index 04a65712..450fdcf1 100644 --- a/gitconfig-macos +++ b/gitconfig-macos @@ -2,8 +2,12 @@ path = ~/dotfiles/gitconfig-common [credential] helper = osxkeychain + helper = + helper = /usr/local/share/gcm-core/git-credential-manager [safe] directory = "*" [push] default = current +[credential "https://dev.azure.com"] + useHttpPath = true From c0922b914e83f12a3131524b6ff85b21de5cb31f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Feb 2024 15:58:34 +0000 Subject: [PATCH 576/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index c0074974..8f22370a 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit c0074974313215360a9529e01204792cdf6ca473 +Subproject commit 8f22370af8bd390ea3b8610da1ccf388826d909d From 0a58d4831195ed637f0682208142c0d37039a181 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 Feb 2024 16:05:04 +0000 Subject: [PATCH 577/973] Remove fig references. --- Brewfile | 1 - bash_profile | 4 ---- bashrc | 4 ---- profile | 4 ---- zprofile | 4 ---- zshrc | 4 ---- 6 files changed, 21 deletions(-) diff --git a/Brewfile b/Brewfile index 3042243f..a70338a5 100644 --- a/Brewfile +++ b/Brewfile @@ -383,5 +383,4 @@ vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "twxs.cmake" vscode "vscode-icons-team.vscode-icons" -vscode "withfig.fig" vscode "ziglang.vscode-zig" diff --git a/bash_profile b/bash_profile index b85513f6..e64c11bd 100644 --- a/bash_profile +++ b/bash_profile @@ -1,5 +1,3 @@ -# Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/bash_profile.pre.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.pre.bash" #!/bin/bash ######################################################################## @@ -141,5 +139,3 @@ fi . "$HOME/.cargo/env" -# Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/bash_profile.post.bash" ]] && builtin source "$HOME/.fig/shell/bash_profile.post.bash" diff --git a/bashrc b/bashrc index 3bf4a7e5..a8a98e4e 100644 --- a/bashrc +++ b/bashrc @@ -1,5 +1,3 @@ -# Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/bashrc.pre.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.pre.bash" #!/bin/bash ######################################################################## @@ -15,5 +13,3 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" . "$HOME/.cargo/env" -# Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/bashrc.post.bash" ]] && builtin source "$HOME/.fig/shell/bashrc.post.bash" diff --git a/profile b/profile index 9e5b7171..c1eac83e 100644 --- a/profile +++ b/profile @@ -1,5 +1,3 @@ -# Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/profile.pre.bash" ]] && builtin source "$HOME/.fig/shell/profile.pre.bash" ############################################################# # Generic configuration that applies to all shells ############################################################# @@ -27,5 +25,3 @@ export PATH="$PATH:$GOPATH/bin" . "$HOME/.cargo/env" -# Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/profile.post.bash" ]] && builtin source "$HOME/.fig/shell/profile.post.bash" diff --git a/zprofile b/zprofile index e97bfd0e..4fc9027f 100644 --- a/zprofile +++ b/zprofile @@ -1,5 +1,3 @@ -# Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/zprofile.pre.zsh" ]] && . "$HOME/.fig/shell/zprofile.pre.zsh" ############################################################################## # Import the shell-agnostic (Bash or Zsh) environment config ############################################################################## @@ -10,5 +8,3 @@ source ~/.profile ############################################################################## source ~/dotfiles/z/z.sh -# Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/zprofile.post.zsh" ]] && . "$HOME/.fig/shell/zprofile.post.zsh" diff --git a/zshrc b/zshrc index 9426bdb9..d32b2f7d 100644 --- a/zshrc +++ b/zshrc @@ -1,5 +1,3 @@ -# Fig pre block. Keep at the top of this file. -[[ -f "$HOME/.fig/shell/zshrc.pre.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.pre.zsh" # Interactive shell configuration. ############################################################################## @@ -200,5 +198,3 @@ unset __conda_setup export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) -# Fig post block. Keep at the bottom of this file. -[[ -f "$HOME/.fig/shell/zshrc.post.zsh" ]] && builtin source "$HOME/.fig/shell/zshrc.post.zsh" From 80984be012326f090a88f7f6e81d59ef87a51a35 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 26 Feb 2024 13:07:07 +0000 Subject: [PATCH 578/973] Add .local/bin to path. --- zshrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zshrc b/zshrc index d32b2f7d..6090ede9 100644 --- a/zshrc +++ b/zshrc @@ -198,3 +198,6 @@ unset __conda_setup export PATH="/Users/james.lawton/.rd/bin:$PATH" ### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) + +# Created by `pipx` on 2024-02-23 11:28:21 +export PATH="$PATH:/Users/james.lawton/.local/bin" From 4b34dbba7b189d99f1ed781fb0072bd6f6652ea5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 27 Mar 2024 11:47:39 +0000 Subject: [PATCH 579/973] Update Brewfile. --- Brewfile | 83 +++++++++++++++----------------------------------------- 1 file changed, 22 insertions(+), 61 deletions(-) diff --git a/Brewfile b/Brewfile index a70338a5..aac46d30 100644 --- a/Brewfile +++ b/Brewfile @@ -57,7 +57,6 @@ brew "protobuf" brew "bear" brew "bit-git" brew "bitwarden-cli" -brew "python-packaging" brew "black" brew "brew-cask-completion" brew "bzip2" @@ -92,6 +91,7 @@ brew "p11-kit" brew "unbound" brew "gnutls" brew "leptonica" +brew "python-packaging" brew "sdl2" brew "tesseract" brew "x265" @@ -147,9 +147,7 @@ brew "jless" brew "jq" brew "jsonlint" brew "jsonnet" -brew "mypy" brew "pandoc" -brew "ruff" brew "jupyterlab" brew "lastpass-cli" brew "lftp" @@ -169,6 +167,7 @@ brew "mmark" brew "mosh" brew "mplayer" brew "mtr" +brew "mypy" brew "ncftp" brew "neovim" brew "ocrad" @@ -203,6 +202,7 @@ brew "repo" brew "ripgrep" brew "rlwrap" brew "robot-framework" +brew "ruff" brew "rustup-init" brew "semgrep" brew "shellcheck" @@ -270,6 +270,7 @@ cask "font-roboto-mono-for-powerline" cask "font-sf-mono-for-powerline" cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" +cask "git-credential-manager" cask "jupyter-notebook-ql" cask "kdiff3" cask "lumen" @@ -277,73 +278,31 @@ cask "maccy" cask "meetingbar" cask "openconnect-gui" cask "rectangle" -cask "staruml" cask "sublime-merge-dev" cask "sublime-text-dev" cask "vlc" cask "xquartz" cask "yt-music" -cask "ytmdesktop-youtube-music" -mas "24 Hour Wallpaper", id: 1226087575 -mas "AdBlock", id: 1402042596 -mas "Agenda", id: 1287445660 -mas "aText", id: 488566438 -mas "Battery Monitor", id: 836505650 -mas "Bear", id: 1091189122 -mas "Bitwarden", id: 1352778147 -mas "CleanMyMac X", id: 1339170533 -mas "CopyClip", id: 1020812363 -mas "Delicious Library", id: 635124250 -mas "Disk Space", id: 603688030 -mas "Elisi", id: 1406239881 -mas "EtreCheck", id: 1423715984 -mas "Evernote", id: 406056744 -mas "feedly", id: 865500966 -mas "Funter", id: 1109422934 -mas "GoPro Player", id: 1460836908 -mas "Keynote", id: 409183694 -mas "Kindle", id: 405399194 -mas "Magnet", id: 441258766 -mas "Microsoft Excel", id: 462058435 -mas "Microsoft OneNote", id: 784801555 -mas "Microsoft Outlook", id: 985367838 -mas "Microsoft Remote Desktop", id: 1295203466 -mas "Microsoft Word", id: 462054704 -mas "MindNode", id: 1289197285 -mas "my41cx", id: 949272407 -mas "Notability", id: 360593530 -mas "Okta Extension App", id: 1439967473 -mas "Okta Verify", id: 490179405 -mas "Slack", id: 803453959 -mas "Speedtest", id: 1153157709 -mas "Tailscale", id: 1475387142 -mas "The Archive Browser", id: 510232205 -mas "The Unarchiver", id: 425424353 -mas "Twitter", id: 409789998 -mas "Typist", id: 415166115 -mas "Unsplash Wallpapers", id: 1284863847 -mas "WhatsApp", id: 1147396723 -mas "Yubico Authenticator", id: 1497506650 vscode "amazonwebservices.aws-toolkit-vscode" -vscode "AryanAhire.sublime-monokai" +vscode "aryanahire.sublime-monokai" vscode "atlassian.atlascode" vscode "charliermarsh.ruff" vscode "cschlosser.doxdocgen" -vscode "DavidAnson.vscode-markdownlint" +vscode "davidanson.vscode-markdownlint" vscode "davidbwaters.macos-modern-theme" vscode "donjayamanne.githistory" vscode "eamodio.gitlens" -vscode "EditorConfig.EditorConfig" +vscode "editorconfig.editorconfig" vscode "fabiospampinato.vscode-diff" vscode "giovdk21.vscode-sublime-merge" -vscode "GitHub.copilot" -vscode "GitHub.copilot-chat" -vscode "GitHub.github-vscode-theme" -vscode "GitHub.vscode-pull-request-github" +vscode "github.copilot" +vscode "github.copilot-chat" +vscode "github.github-vscode-theme" +vscode "github.vscode-pull-request-github" vscode "golang.go" -vscode "Grafana.vscode-jsonnet" -vscode "GrapeCity.gc-excelviewer" -vscode "Gruntfuggly.todo-tree" +vscode "grafana.vscode-jsonnet" +vscode "grapecity.gc-excelviewer" +vscode "gruntfuggly.todo-tree" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" vscode "humao.rest-client" @@ -351,10 +310,11 @@ vscode "janjoerke.jenkins-pipeline-linter-connector" vscode "jeff-hykin.better-cpp-syntax" vscode "joffreykern.markdown-toc" vscode "mechatroner.rainbow-csv" -vscode "Meezilla.json" -vscode "MellowMarshmallow.groovy" +vscode "meezilla.json" +vscode "mellowmarshmallow.groovy" vscode "mrmlnc.vscode-duplicate" vscode "ms-azuretools.vscode-docker" +vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" vscode "ms-python.python" @@ -370,17 +330,18 @@ vscode "ms-vscode.cpptools-themes" vscode "ms-vscode.live-server" vscode "ms-vscode.makefile-tools" vscode "peterj.proto" -vscode "PKief.material-icon-theme" +vscode "pkief.material-icon-theme" vscode "redhat.vscode-yaml" -vscode "ritwickdey.LiveServer" +vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" -vscode "SonarSource.sonarlint-vscode" +vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" -vscode "TakumiI.markdowntable" +vscode "takumii.markdowntable" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "twxs.cmake" vscode "vscode-icons-team.vscode-icons" +vscode "withfig.fig" vscode "ziglang.vscode-zig" From 1289dcf41c4471189b7acc30927dada49bb3606f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Apr 2024 19:31:42 +0100 Subject: [PATCH 580/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 8f22370a..803e1a78 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 8f22370af8bd390ea3b8610da1ccf388826d909d +Subproject commit 803e1a784cd520f101d126b47deea3297e6a82fc From 3e6e56d5b9cf892942b63e15e18314a60fc3cf5f Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Apr 2024 19:34:24 +0100 Subject: [PATCH 581/973] Disable autocorrection of command arguments. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index 6090ede9..3601b399 100644 --- a/zshrc +++ b/zshrc @@ -31,7 +31,7 @@ setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. setopt AUTO_CD # Automatically cd to a path if specified as a command. setopt CORRECT # Correction. -setopt CORRECT_ALL # Correction. +#setopt CORRECT_ALL # Correction. setopt NO_CASE_GLOB # Case-insensitive globbing. # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. From 669108b3e8bbfc12a0b3b3952b0c8167f1e3591b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 3 May 2024 11:44:30 +0100 Subject: [PATCH 582/973] Rename afcheck to afping. --- shellaliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shellaliases b/shellaliases index 76c17985..22dd53d6 100644 --- a/shellaliases +++ b/shellaliases @@ -287,4 +287,4 @@ alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initia alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\"" alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\"" -alias afcheck='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping' +alias afping='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping' From 7dbcfb53e8e5ceb8dbc5f1c71195036b8e035780 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 21 May 2024 20:01:49 +0100 Subject: [PATCH 583/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 803e1a78..a779d656 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 803e1a784cd520f101d126b47deea3297e6a82fc +Subproject commit a779d6563ffb2f0093b4b74c8d5ff0982fa3e930 From d2de0a85f5fbe5e506e259d4a2493c055b005b19 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 11 Jun 2024 12:04:10 +0100 Subject: [PATCH 584/973] Update Brewfile. --- Brewfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Brewfile b/Brewfile index aac46d30..0a6b41fa 100644 --- a/Brewfile +++ b/Brewfile @@ -19,6 +19,7 @@ tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" tap "romkatv/powerlevel10k" tap "sachaos/todoist" +tap "taiki-e/tap" tap "terrastruct/d2" brew "a2ps" brew "adr-tools" @@ -53,8 +54,6 @@ brew "cairo" brew "harfbuzz" brew "openjdk@11" brew "bazel" -brew "protobuf" -brew "bear" brew "bit-git" brew "bitwarden-cli" brew "black" @@ -91,7 +90,6 @@ brew "p11-kit" brew "unbound" brew "gnutls" brew "leptonica" -brew "python-packaging" brew "sdl2" brew "tesseract" brew "x265" @@ -154,7 +152,6 @@ brew "lftp" brew "libcaca" brew "libffi" brew "libressl" -brew "python@3.9" brew "libusb-compat" brew "llvm" brew "make" @@ -164,7 +161,6 @@ brew "md5sha1sum", link: false brew "mdbook" brew "micro" brew "mmark" -brew "mosh" brew "mplayer" brew "mtr" brew "mypy" @@ -184,15 +180,17 @@ brew "pip-completion" brew "pipenv" brew "pipx" brew "progress" +brew "protobuf" brew "protobuf-c" brew "protoc-gen-go" -brew "protoc-gen-go-grpc" brew "pth" brew "pulumi" brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" +brew "python-packaging" +brew "python@3.9" brew "qemu" brew "qt" brew "rake-completion" @@ -204,6 +202,7 @@ brew "rlwrap" brew "robot-framework" brew "ruff" brew "rustup-init" +brew "scc" brew "semgrep" brew "shellcheck" brew "sloccount" @@ -244,6 +243,7 @@ brew "coretech/terrafile/terrafile" brew "dutchcoders/cloudman/cloudman" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" +brew "taiki-e/tap/cargo-llvm-cov" cask "alt-tab" cask "aws-vault" cask "beardedspice" @@ -278,8 +278,8 @@ cask "maccy" cask "meetingbar" cask "openconnect-gui" cask "rectangle" -cask "sublime-merge-dev" -cask "sublime-text-dev" +cask "sublime-merge@dev" +cask "sublime-text@dev" cask "vlc" cask "xquartz" cask "yt-music" From 6ef06e234d0e2cbfb94e6ef296a161faa099b87a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 11 Jun 2024 12:21:55 +0100 Subject: [PATCH 585/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 96e483f1..cc98f00c 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 96e483f15283f1b65b73f86c4c56afdd50d2e411 +Subproject commit cc98f00cfecfb3f26eef415489019bcf8ff6f39f From 563ef9e7b92cdea798dacdc5c10306284fc74921 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 11 Jun 2024 12:22:06 +0100 Subject: [PATCH 586/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index a779d656..4295aed1 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit a779d6563ffb2f0093b4b74c8d5ff0982fa3e930 +Subproject commit 4295aed17b4b1180b7e42bd7debd7685686c1307 From c8d3d2c00caa45783745d0870d242e7cd337c292 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 26 Jun 2024 14:24:55 +0100 Subject: [PATCH 587/973] Update brewfile. --- Brewfile | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 0a6b41fa..e9734f78 100644 --- a/Brewfile +++ b/Brewfile @@ -39,8 +39,6 @@ brew "autojump" brew "awk" brew "node" brew "aws-cdk" -brew "docutils" -brew "pygments" brew "aws-shell" brew "awscli" brew "base64" @@ -80,6 +78,7 @@ brew "dive" brew "docker-completion" brew "docker-credential-helper" brew "docker-credential-helper-ecr" +brew "docutils" brew "dos2unix" brew "doxygen" brew "envconsul" @@ -189,6 +188,7 @@ brew "pycodestyle" brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" +brew "pygments" brew "python-packaging" brew "python@3.9" brew "qemu" @@ -205,7 +205,6 @@ brew "rustup-init" brew "scc" brew "semgrep" brew "shellcheck" -brew "sloccount" brew "socat" brew "sonar-scanner" brew "sphinx-doc" @@ -223,6 +222,7 @@ brew "tfsec" brew "tig" brew "tldr" brew "todo-txt" +brew "tokei" brew "tree" brew "vagrant-completion" brew "vault" @@ -248,7 +248,6 @@ cask "alt-tab" cask "aws-vault" cask "beardedspice" cask "cakebrew" -cask "devtoys" cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" @@ -283,6 +282,37 @@ cask "sublime-text@dev" cask "vlc" cask "xquartz" cask "yt-music" +mas "AdBlock", id: 1402042596 +mas "Agenda", id: 1287445660 +mas "Battery Monitor", id: 836505650 +mas "Bitwarden", id: 1352778147 +mas "CleanMyMac X", id: 1339170533 +mas "Disk Space", id: 603688030 +mas "Elisi", id: 1406239881 +mas "EtreCheck", id: 1423715984 +mas "Funter", id: 1109422934 +mas "GoPro Player", id: 1460836908 +mas "GoPro Quik", id: 561350520 +mas "Kindle", id: 302584613 +mas "Magnet", id: 441258766 +mas "Microsoft Excel", id: 462058435 +mas "Microsoft OneNote", id: 784801555 +mas "Microsoft Outlook", id: 985367838 +mas "Microsoft Remote Desktop", id: 1295203466 +mas "Microsoft Word", id: 462054704 +mas "MindNode", id: 1289197285 +mas "my41cx", id: 949272407 +mas "Notability", id: 360593530 +mas "Okta Extension App", id: 1439967473 +mas "Okta Verify", id: 490179405 +mas "Speedtest", id: 1153157709 +mas "Tailscale", id: 1475387142 +mas "The Archive Browser", id: 510232205 +mas "The Unarchiver", id: 425424353 +mas "Twitter", id: 409789998 +mas "Typist", id: 415166115 +mas "Unsplash Wallpapers", id: 1284863847 +mas "Yubico Authenticator", id: 1497506650 vscode "amazonwebservices.aws-toolkit-vscode" vscode "aryanahire.sublime-monokai" vscode "atlassian.atlascode" From ed524ca96b6b2ad9fc3a6da95065f6ee12f3d017 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 27 Jun 2024 12:33:08 +0100 Subject: [PATCH 588/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index e9734f78..d377cc97 100644 --- a/Brewfile +++ b/Brewfile @@ -248,6 +248,7 @@ cask "alt-tab" cask "aws-vault" cask "beardedspice" cask "cakebrew" +cask "doll" cask "dozer" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" From 40157b433b4ed802fdaa5f019673d15ded82ecc7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 22:37:08 +0100 Subject: [PATCH 589/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 4295aed1..8127e583 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 4295aed17b4b1180b7e42bd7debd7685686c1307 +Subproject commit 8127e5838c24a7fbfaac5b9a02609e033cb3c5e2 From 0e1afc61d15cc6397de412fa440599d2f1d961f7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 22:37:28 +0100 Subject: [PATCH 590/973] Add rustup path. --- zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/zshrc b/zshrc index 3601b399..3d90a666 100644 --- a/zshrc +++ b/zshrc @@ -201,3 +201,4 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" # Created by `pipx` on 2024-02-23 11:28:21 export PATH="$PATH:/Users/james.lawton/.local/bin" +export PATH="/opt/homebrew/opt/rustup/bin:$PATH" From ce0fd84dbe72a0321c074279927e5d0bf73e7c1c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 22:42:21 +0100 Subject: [PATCH 591/973] Add comment. --- zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zshrc b/zshrc index 3d90a666..60e7448c 100644 --- a/zshrc +++ b/zshrc @@ -201,4 +201,6 @@ export PATH="/Users/james.lawton/.rd/bin:$PATH" # Created by `pipx` on 2024-02-23 11:28:21 export PATH="$PATH:/Users/james.lawton/.local/bin" + +# Add rustup to path. export PATH="/opt/homebrew/opt/rustup/bin:$PATH" From c163ea1a59a42d4a2e55738804e91fbdbde1b5dc Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 22:42:36 +0100 Subject: [PATCH 592/973] Remove Rancher Desktop setup. --- zshrc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/zshrc b/zshrc index 60e7448c..b3577014 100644 --- a/zshrc +++ b/zshrc @@ -194,11 +194,6 @@ fi unset __conda_setup # <<< conda initialize <<< -### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT) -export PATH="/Users/james.lawton/.rd/bin:$PATH" -### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT) - - # Created by `pipx` on 2024-02-23 11:28:21 export PATH="$PATH:/Users/james.lawton/.local/bin" From 7d16e2219dee2bfc54e856dcdb52647325dbbba8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 22:43:13 +0100 Subject: [PATCH 593/973] Add (commented out) git-spice completion setup. --- zshrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zshrc b/zshrc index b3577014..bbc7e6af 100644 --- a/zshrc +++ b/zshrc @@ -199,3 +199,6 @@ export PATH="$PATH:/Users/james.lawton/.local/bin" # Add rustup to path. export PATH="/opt/homebrew/opt/rustup/bin:$PATH" + +# git-spice shell completion. +# eval "$(gs shell completion zsh)" From 401331cd322f79e103f9bdaf9aa4b6db3387750b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 23:11:12 +0100 Subject: [PATCH 594/973] Remove 'gs' alias. --- shellaliases | 1 - 1 file changed, 1 deletion(-) diff --git a/shellaliases b/shellaliases index 22dd53d6..2e417a80 100644 --- a/shellaliases +++ b/shellaliases @@ -54,7 +54,6 @@ alias gitscribe.gp='git scribe gen pdf && open output/book.pdf' alias gitscribe.gh='git scribe gen html && open output/book.html' # Git shortcuts -alias gs='git status' alias gpl='git pull' alias gps='git push' alias gsy='git pull && git push' From f143b15dcf5af756059504eafa018b815b5ffced Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 23:11:29 +0100 Subject: [PATCH 595/973] Remove repo aliases. --- shellaliases | 7 ------- 1 file changed, 7 deletions(-) diff --git a/shellaliases b/shellaliases index 2e417a80..47191f3f 100644 --- a/shellaliases +++ b/shellaliases @@ -58,13 +58,6 @@ alias gpl='git pull' alias gps='git push' alias gsy='git pull && git push' -# repo shortcuts -alias rsy='repo sync' -alias rst='repo status' -alias rpu='repo forall -e -c git push' -alias rcm='repo forall -e -c git checkout master' -alias rsyp='repo sync && repo forall -e -c git push' - # Show network connections # Often useful to prefix with SUDO to see more system level network usage alias network.connections='lsof -l -i +L -R -V' From 35f77669266f7a9b03e5739805c27708af4272fb Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 28 Jul 2024 23:11:41 +0100 Subject: [PATCH 596/973] Remove more unused aliases. --- shellaliases | 5 ----- 1 file changed, 5 deletions(-) diff --git a/shellaliases b/shellaliases index 47191f3f..51759284 100644 --- a/shellaliases +++ b/shellaliases @@ -49,14 +49,9 @@ alias pbcopynn='tr -d "\n" | pbcopy' alias finder.astext='xattr -wx com.apple.FinderInfo "54 45 58 54 21 52 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" $1' #alias finder.qltext2='osascript -e tell application "Finder" to set file type of ((POSIX file "$1") as alias) to "TEXT"' -# Git Scribe Commands -alias gitscribe.gp='git scribe gen pdf && open output/book.pdf' -alias gitscribe.gh='git scribe gen html && open output/book.html' - # Git shortcuts alias gpl='git pull' alias gps='git push' -alias gsy='git pull && git push' # Show network connections # Often useful to prefix with SUDO to see more system level network usage From 94c3bba1fa2533f0507d2066a1708287af048a9c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 31 Jul 2024 16:37:17 +0100 Subject: [PATCH 597/973] Update Brewfile. --- Brewfile | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Brewfile b/Brewfile index d377cc97..bcb671a5 100644 --- a/Brewfile +++ b/Brewfile @@ -1,3 +1,4 @@ +tap "abhinav/tap" tap "ankitpokhrel/jira-cli" tap "bufbuild/buf" tap "charmbracelet/tap" @@ -23,14 +24,15 @@ tap "taiki-e/tap" tap "terrastruct/d2" brew "a2ps" brew "adr-tools" -brew "giflib" +brew "openssl@3" +brew "readline" brew "xz" +brew "ansible" +brew "giflib" brew "libtiff" brew "apr" -brew "openssl@3" brew "apr-util" brew "boost" -brew "readline" brew "asciidoc" brew "asciinema" brew "gettext" @@ -98,7 +100,7 @@ brew "ffmpeg" brew "flake8" brew "fzf" brew "gh" -brew "ghostscript" +brew "ghostscript", link: false brew "gimme-aws-creds" brew "gist" brew "git" @@ -201,7 +203,7 @@ brew "ripgrep" brew "rlwrap" brew "robot-framework" brew "ruff" -brew "rustup-init" +brew "rustup" brew "scc" brew "semgrep" brew "shellcheck" @@ -235,6 +237,7 @@ brew "youtube-dl" brew "zlib" brew "zoxide" brew "zsh" +brew "abhinav/tap/git-spice" brew "ankitpokhrel/jira-cli/jira-cli" brew "bufbuild/buf/buf" brew "charmbracelet/tap/skate" @@ -276,6 +279,8 @@ cask "kdiff3" cask "lumen" cask "maccy" cask "meetingbar" +cask "notunes" +cask "obsidian" cask "openconnect-gui" cask "rectangle" cask "sublime-merge@dev" @@ -283,6 +288,7 @@ cask "sublime-text@dev" cask "vlc" cask "xquartz" cask "yt-music" +cask "zed" mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "Battery Monitor", id: 836505650 From 9cdbe4a4b2d5e672448197562480bd86689d8a54 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Aug 2024 10:29:35 +0100 Subject: [PATCH 598/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 8127e583..0ffcc3b6 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 8127e5838c24a7fbfaac5b9a02609e033cb3c5e2 +Subproject commit 0ffcc3b68a1196e9164ff42fac8a5fdd4804abd0 From def368280654a1e0453b8cc076c22b5c9de74a28 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Aug 2024 10:30:59 +0100 Subject: [PATCH 599/973] Disable ripgrep plugin. --- zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zshrc b/zshrc index bbc7e6af..46d27523 100644 --- a/zshrc +++ b/zshrc @@ -110,7 +110,7 @@ plugins=( pyenv pylint python - ripgrep + # ripgrep # ssh-agent sublime sublime-merge From 3d47c118512826e95ec0cc52834b19147705f72e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 8 Aug 2024 10:34:39 +0100 Subject: [PATCH 600/973] Update submodules. --- autoenv | 2 +- icdiff | 2 +- powerlevel10k | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-markdown | 2 +- vim/bundle/vim-scriptease | 2 +- vim/bundle/vim-sensible | 2 +- vim/bundle/vim-surround | 2 +- vim/bundle/vundle | 2 +- z | 2 +- zsh-autosuggestions | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/autoenv b/autoenv index dc783c9c..c3699a43 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit dc783c9c681feb5e744741b9631543fb6d7b702d +Subproject commit c3699a4375f5fd623dfc430fef3a27d705f7c954 diff --git a/icdiff b/icdiff index 34aa2d0d..7b3692c7 160000 --- a/icdiff +++ b/icdiff @@ -1 +1 @@ -Subproject commit 34aa2d0d5836663869bfc2d255ce769ca49011d0 +Subproject commit 7b3692c79555e981e3cdc6da1fdfabf5e7b0a4ea diff --git a/powerlevel10k b/powerlevel10k index 3bfbb829..2b7da93d 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit 3bfbb8294fd61d3fb9f75f944b178eb9c8c2c0f7 +Subproject commit 2b7da93df04acd04d84f5de827e5b14077839a4b diff --git a/vim/bundle/command-t b/vim/bundle/command-t index f862693a..e2a0513c 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit f862693a674fec84617b3bc86e8b71d4df1c05e2 +Subproject commit e2a0513c91a7ebdde23cab0b6724ba05292551ff diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index b411b753..0444df68 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit b411b753f805b969cca856e2ae51fdbab49880df +Subproject commit 0444df68cd1cdabc7453d6bd84099458327e5513 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index b78bbce3..f405b47f 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit b78bbce3371a2eb56c89f618cd4ab2baadc9ee61 +Subproject commit f405b47fd8774ecd5e808e6de9c85d9029da251c diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease index 18511d38..cdb5981d 160000 --- a/vim/bundle/vim-scriptease +++ b/vim/bundle/vim-scriptease @@ -1 +1 @@ -Subproject commit 18511d389675d773994215ddb572ccdc2b72f52b +Subproject commit cdb5981d47ac98221a408ae2e7cae66524d9e872 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible index 8985da76..0ce2d843 160000 --- a/vim/bundle/vim-sensible +++ b/vim/bundle/vim-sensible @@ -1 +1 @@ -Subproject commit 8985da7669bbd73afce85ef0e4a3e1ce2e488595 +Subproject commit 0ce2d843d6f588bb0c8c7eec6449171615dc56d9 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround index bf3480dc..3d188ed2 160000 --- a/vim/bundle/vim-surround +++ b/vim/bundle/vim-surround @@ -1 +1 @@ -Subproject commit bf3480dc9ae7bea34c78fbba4c65b4548b5b1fea +Subproject commit 3d188ed2113431cf8dac77be61b842acb64433d9 diff --git a/vim/bundle/vundle b/vim/bundle/vundle index b255382d..5548a1a9 160000 --- a/vim/bundle/vundle +++ b/vim/bundle/vundle @@ -1 +1 @@ -Subproject commit b255382d6242d7ea3877bf059d2934125e0c4d95 +Subproject commit 5548a1a937d4e72606520c7484cd384e6c76b565 diff --git a/z b/z index b82ac78a..d37a763a 160000 --- a/z +++ b/z @@ -1 +1 @@ -Subproject commit b82ac78a2d4457d2ca09973332638f123f065fd1 +Subproject commit d37a763a6a30e1b32766fecc3b8ffd6127f8a0fd diff --git a/zsh-autosuggestions b/zsh-autosuggestions index a411ef3e..c3d4e576 160000 --- a/zsh-autosuggestions +++ b/zsh-autosuggestions @@ -1 +1 @@ -Subproject commit a411ef3e0992d4839f0732ebeb9823024afaaaa8 +Subproject commit c3d4e576c9c86eac62884bd47c01f6faed043fc5 From 71dfd141cda8b207f4d024ea422501179cc2eda9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 16 Aug 2024 11:53:41 +0100 Subject: [PATCH 601/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 0ffcc3b6..b0204f78 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 0ffcc3b68a1196e9164ff42fac8a5fdd4804abd0 +Subproject commit b0204f78394d84771436a7717aafee6cad140319 From c5b52c02c2d7133db4109c53823b70a22fc3f8f4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 2 Sep 2024 10:57:31 +0100 Subject: [PATCH 602/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index b0204f78..b8c69d26 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit b0204f78394d84771436a7717aafee6cad140319 +Subproject commit b8c69d265257fae88fe504ea43cbcf2728bc1308 From b439b6dc07ff5d634a718263414f55dda72778f7 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 4 Sep 2024 10:31:47 +0100 Subject: [PATCH 603/973] git-spice: don't commit when creating new branch. --- gitconfig-common | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gitconfig-common b/gitconfig-common index cacdc773..9f9482a6 100644 --- a/gitconfig-common +++ b/gitconfig-common @@ -172,3 +172,6 @@ clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process + +[spice "branchCreate"] + commit = false From 9cbbf83b72eb26d39e9172c1e154dc635e4e69e0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 18 Sep 2024 13:57:11 +0100 Subject: [PATCH 604/973] Update Brewfile. --- Brewfile | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Brewfile b/Brewfile index bcb671a5..340f8efa 100644 --- a/Brewfile +++ b/Brewfile @@ -27,7 +27,7 @@ brew "adr-tools" brew "openssl@3" brew "readline" brew "xz" -brew "ansible" +brew "ansible@9" brew "giflib" brew "libtiff" brew "apr" @@ -52,7 +52,6 @@ brew "bat" brew "freetype" brew "cairo" brew "harfbuzz" -brew "openjdk@11" brew "bazel" brew "bit-git" brew "bitwarden-cli" @@ -68,12 +67,10 @@ brew "cmake" brew "consul" brew "consul-template" brew "coreutils" -brew "libidn2" brew "rtmpdump" brew "curl" brew "d2" brew "dateutils" -brew "delta" brew "delve" brew "diffutils" brew "dive" @@ -87,6 +84,7 @@ brew "envconsul" brew "exa" brew "fd" brew "fribidi" +brew "libidn2" brew "p11-kit" brew "unbound" brew "gnutls" @@ -104,6 +102,7 @@ brew "ghostscript", link: false brew "gimme-aws-creds" brew "gist" brew "git" +brew "git-delta" brew "git-extras" brew "git-filter-repo" brew "git-quick-stats" @@ -112,6 +111,7 @@ brew "glow" brew "gnu-indent" brew "gnu-sed" brew "gnu-tar" +brew "gnu-time" brew "libgcrypt" brew "libksba" brew "libusb" @@ -170,6 +170,7 @@ brew "neovim" brew "ocrad" brew "okta-aws-cli" brew "openconnect" +brew "openjdk@11" brew "ossp-uuid" brew "packer" brew "packer-completion" @@ -324,11 +325,11 @@ vscode "amazonwebservices.aws-toolkit-vscode" vscode "aryanahire.sublime-monokai" vscode "atlassian.atlascode" vscode "charliermarsh.ruff" +vscode "codezombiech.gitignore" vscode "cschlosser.doxdocgen" vscode "davidanson.vscode-markdownlint" vscode "davidbwaters.macos-modern-theme" vscode "donjayamanne.githistory" -vscode "eamodio.gitlens" vscode "editorconfig.editorconfig" vscode "fabiospampinato.vscode-diff" vscode "giovdk21.vscode-sublime-merge" @@ -340,6 +341,7 @@ vscode "golang.go" vscode "grafana.vscode-jsonnet" vscode "grapecity.gc-excelviewer" vscode "gruntfuggly.todo-tree" +vscode "hashicorp.hcl" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" vscode "humao.rest-client" @@ -355,10 +357,6 @@ vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" vscode "ms-python.python" -vscode "ms-toolsai.jupyter" -vscode "ms-toolsai.jupyter-keymap" -vscode "ms-toolsai.vscode-jupyter-cell-tags" -vscode "ms-toolsai.vscode-jupyter-slideshow" vscode "ms-vscode-remote.remote-containers" vscode "ms-vscode.cmake-tools" vscode "ms-vscode.cpptools" @@ -372,6 +370,7 @@ vscode "redhat.vscode-yaml" vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" +vscode "solomonkinard.git-blame" vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" @@ -380,5 +379,4 @@ vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "twxs.cmake" vscode "vscode-icons-team.vscode-icons" -vscode "withfig.fig" vscode "ziglang.vscode-zig" From fb580ece47f6de3f2552b57d223d8e990d650299 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 18 Sep 2024 14:00:19 +0100 Subject: [PATCH 605/973] Updatre submodules. --- oh-my-zsh | 2 +- powerlevel10k | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/oh-my-zsh b/oh-my-zsh index b8c69d26..3151c9c1 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit b8c69d265257fae88fe504ea43cbcf2728bc1308 +Subproject commit 3151c9c1a330cdea66dd7d1a24810fe805298711 diff --git a/powerlevel10k b/powerlevel10k index 2b7da93d..087405df 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit 2b7da93df04acd04d84f5de827e5b14077839a4b +Subproject commit 087405df7838f4c3e835025699bd7b98b9731acc diff --git a/vim/bundle/command-t b/vim/bundle/command-t index e2a0513c..4ee21e27 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit e2a0513c91a7ebdde23cab0b6724ba05292551ff +Subproject commit 4ee21e27bd28f6d17ea620633c6f83830ee23570 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index 0444df68..d4877e54 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 0444df68cd1cdabc7453d6bd84099458327e5513 +Subproject commit d4877e54cef67f5af4f950935b1ade19ed6b7370 From 08d4bcbbce470001b6d432abf67a38a2fd25f5a0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 23 Sep 2024 11:37:51 +0100 Subject: [PATCH 606/973] Update Brewfile. --- Brewfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 340f8efa..f90c4546 100644 --- a/Brewfile +++ b/Brewfile @@ -36,6 +36,7 @@ brew "boost" brew "asciidoc" brew "asciinema" brew "gettext" +brew "python-packaging" brew "atomicparsley" brew "autojump" brew "awk" @@ -192,7 +193,6 @@ brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "pygments" -brew "python-packaging" brew "python@3.9" brew "qemu" brew "qt" @@ -303,6 +303,7 @@ mas "GoPro Player", id: 1460836908 mas "GoPro Quik", id: 561350520 mas "Kindle", id: 302584613 mas "Magnet", id: 441258766 +mas "Mattermost", id: 1614666244 mas "Microsoft Excel", id: 462058435 mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 From a86c74f5962cce8695373f5638d59f30ae993d62 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 13:39:48 +0100 Subject: [PATCH 607/973] Update scripts submodule. --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index cc98f00c..15b44478 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit cc98f00cfecfb3f26eef415489019bcf8ff6f39f +Subproject commit 15b444789593a01174a99a4cdc10e0a28dbaeede From d2f9584dfc4e2ac5271a17b349ef48e71164e4d1 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 21:57:02 +0100 Subject: [PATCH 608/973] Reformat. --- obsidian/daily-note.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 456a7040..85d9a4e3 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -28,22 +28,24 @@ def main(): if args.date: try: - datetime.datetime.strptime(args.date, '%Y-%m-%d') + datetime.datetime.strptime(args.date, "%Y-%m-%d") date_str = args.date except ValueError: - sys.exit("Invalid date, must be valid calendar date in the form YYYY-MM-DD!") + sys.exit( + "Invalid date, must be valid calendar date in the form YYYY-MM-DD!" + ) else: - date_str = datetime.datetime.today().strftime('%Y-%m-%d') + date_str = datetime.datetime.today().strftime("%Y-%m-%d") - curr_date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') + curr_date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d") - home = os.getenv('HOME') + home = os.getenv("HOME") if home is None: sys.exit("$HOME is not defined!") - now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') - year = curr_date_obj.strftime('%Y') - month = curr_date_obj.strftime('%m') + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + year = curr_date_obj.strftime("%Y") + month = curr_date_obj.strftime("%m") vault = f"{home}/obsidian" notes_dir = f"{vault}/Daily Notes/" @@ -53,9 +55,9 @@ def main(): # Get a dict of all daily notes, with paths. notes_dict = {} date_objs = [] - files = glob.glob(notes_dir + '/**/Daily*.md', recursive=True) + files = glob.glob(notes_dir + "/**/Daily*.md", recursive=True) for file_path in sorted(files): - note_date = file_path.split('/')[-1].split('.')[0].split()[1] + note_date = file_path.split("/")[-1].split(".")[0].split()[1] notes_dict[note_date] = file_path date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) @@ -74,14 +76,16 @@ def main(): # Find previous date. prev_date = max(d for d in date_objs if d < curr_date_obj) - prev_str = prev_date.strftime('%Y-%m-%d') + prev_str = prev_date.strftime("%Y-%m-%d") # Find next date. This depends on whether we're creating a note in a date gap, or adding at the end. if curr_date_obj < last_date_obj: next_date = min(d for d in date_objs if d > curr_date_obj) else: - next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=1) - next_str = next_date.strftime('%Y-%m-%d') + next_date = datetime.datetime.strptime( + date_str, "%Y-%m-%d" + ) + datetime.timedelta(days=1) + next_str = next_date.strftime("%Y-%m-%d") file_lines = [] @@ -92,7 +96,7 @@ def main(): print(f"Reading from {prev_file_path}") prev_data_lines = [] - with open(prev_file_path, 'r') as f: + with open(prev_file_path, "r") as f: prev_data_lines = f.readlines() output_dir_path = f"{notes_dir + year + '/' + month}" @@ -125,7 +129,7 @@ def main(): # - Remove any items done for line in todo_lines: if not line.startswith(("- [x]", "- [X]")): - file_lines.append(line.strip('\n')) + file_lines.append(line.strip("\n")) file_lines.append("") # Generate agenda @@ -145,8 +149,8 @@ def main(): # Write new file print(f"Writing to {output_file_path}") - with open(output_file_path, 'w') as f: - f.write('\n'.join(file_lines)) + with open(output_file_path, "w") as f: + f.write("\n".join(file_lines)) if __name__ == "__main__": From 7ee3595e61f594c2d691d0c6c8985fb42032c797 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 21:57:19 +0100 Subject: [PATCH 609/973] Add reminder about using Hyper-D for agenda. --- obsidian/daily-note.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 85d9a4e3..8040864b 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -133,7 +133,7 @@ def main(): file_lines.append("") # Generate agenda - file_lines.append("## Agenda") + file_lines.append("## Agenda (Hyper-D)") print("Running daymd...") daymd = os.path.join(home, "dotfiles", "scripts", "daymd") result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE) From 3c3d370454365b9657facb766c8ee476fb5724e0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 21:57:44 +0100 Subject: [PATCH 610/973] Reformat. --- obsidian/weekly-report.py | 56 +++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 36bcf415..308735b1 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -24,27 +24,33 @@ def main(): if args.date: try: - datetime.datetime.strptime(args.date, '%Y-%m-%d') + datetime.datetime.strptime(args.date, "%Y-%m-%d") date_str = args.date except ValueError: - sys.exit("Invalid date, must be valid calendar date in the form YYYY-MM-DD!") + sys.exit( + "Invalid date, must be valid calendar date in the form YYYY-MM-DD!" + ) else: weekday_today = datetime.datetime.now().weekday() if weekday_today >= 4: end_date = datetime.datetime.now() - datetime.timedelta(weekday_today - 4) else: - end_date = datetime.datetime.now() - datetime.timedelta(weeks=1) + datetime.timedelta(4 - weekday_today) - date_str = end_date.strftime('%Y-%m-%d') + end_date = ( + datetime.datetime.now() + - datetime.timedelta(weeks=1) + + datetime.timedelta(4 - weekday_today) + ) + date_str = end_date.strftime("%Y-%m-%d") - curr_date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') + curr_date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d") - home = os.getenv('HOME') + home = os.getenv("HOME") if home is None: sys.exit("$HOME is not defined!") - now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') - year = curr_date_obj.strftime('%Y') - month = curr_date_obj.strftime('%m') + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + year = curr_date_obj.strftime("%Y") + month = curr_date_obj.strftime("%m") vault = f"{home}/obsidian/" daily_dir = f"{vault}/Daily Notes/" @@ -53,18 +59,18 @@ def main(): # Get a dict of all daily notes, with paths. daily_dict = {} daily_date_objs = [] - files = glob.glob(daily_dir + '/**/Daily*.md', recursive=True) + files = glob.glob(daily_dir + "/**/Daily*.md", recursive=True) for file_path in sorted(files): - note_date = file_path.split('/')[-1].split('.')[0].split()[1] + note_date = file_path.split("/")[-1].split(".")[0].split()[1] daily_dict[note_date] = file_path daily_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) # Get a dict of all weekly notes, with paths. weekly_dict = {} weekly_date_objs = [] - files = glob.glob(weekly_dir + '/**/Weekly*.md', recursive=True) + files = glob.glob(weekly_dir + "/**/Weekly*.md", recursive=True) for file_path in sorted(files): - note_date = file_path.split('/')[-1].split('.')[0].split()[1] + note_date = file_path.split("/")[-1].split(".")[0].split()[1] weekly_dict[note_date] = file_path weekly_date_objs.append(datetime.datetime.strptime(note_date, "%Y-%m-%d")) @@ -77,13 +83,15 @@ def main(): # Find previous date. prev_date = max(d for d in weekly_date_objs if d < curr_date_obj) - prev_str = prev_date.strftime('%Y-%m-%d') + prev_str = prev_date.strftime("%Y-%m-%d") if curr_date_obj < last_date_obj: next_date = min(d for d in weekly_date_objs if d > curr_date_obj) else: - next_date = datetime.datetime.strptime(date_str, '%Y-%m-%d') + datetime.timedelta(days=7) - next_str = next_date.strftime('%Y-%m-%d') + next_date = datetime.datetime.strptime( + date_str, "%Y-%m-%d" + ) + datetime.timedelta(days=7) + next_str = next_date.strftime("%Y-%m-%d") print(f"Next weekly report: {next_str}") file_lines = [] @@ -93,7 +101,7 @@ def main(): print(f"Reading from {prev_file_path}") prev_data_lines = [] - with open(prev_file_path, 'r') as f: + with open(prev_file_path, "r") as f: prev_data_lines = f.readlines() output_dir_path = f"{weekly_dir + year + '/' + month}" @@ -123,7 +131,7 @@ def main(): planned_lines = prev_data_lines[start:end] # Populate activities with planned from last week, plus FIXME. for line in planned_lines: - file_lines.append(line.strip('\n').replace("- ", "- `FIXME` ")) + file_lines.append(line.strip("\n").replace("- ", "- `FIXME` ")) # Extract all activities from daily reports since last weekly report. prev_dates = [d for d in daily_date_objs if prev_date < d <= curr_date_obj] @@ -132,7 +140,7 @@ def main(): d_str = d.strftime("%Y-%m-%d") prev_file_path = daily_dict[d_str] print(f"Reading from {prev_file_path}") - with open(prev_file_path, 'r') as f: + with open(prev_file_path, "r") as f: start = 0 daily_lines = f.readlines() for i, line in enumerate(daily_lines): @@ -141,14 +149,16 @@ def main(): daily_lines = daily_lines[start:] daily_lines_tmp = [] for line in daily_lines: - if line.strip() == '-': + if line.strip() == "-": continue if line.startswith("- "): daily_lines_tmp.append(f"- {d_str} {line[2:]}") else: daily_lines_tmp.append(line) prev_data_lines.extend(daily_lines_tmp) - prev_data_lines = [line.strip('\n') for line in prev_data_lines if line.strip() != '-'] + prev_data_lines = [ + line.strip("\n") for line in prev_data_lines if line.strip() != "-" + ] file_lines.extend(prev_data_lines) file_lines.append("") @@ -162,8 +172,8 @@ def main(): # Write new file print(f"Writing to {output_file_path}") - with open(output_file_path, 'w') as f: - f.write('\n'.join(file_lines)) + with open(output_file_path, "w") as f: + f.write("\n".join(file_lines)) if __name__ == "__main__": From 463bd538e349ab70947ad07d16dba25ed2e6c604 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 21:58:30 +0100 Subject: [PATCH 611/973] Reformat. --- obsidian/note.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/note.js b/obsidian/note.js index c40b56db..4e66f56f 100644 --- a/obsidian/note.js +++ b/obsidian/note.js @@ -87,7 +87,7 @@ function make_new_date_str(year, month, day) { function note(type, tp) { console.log(""); console.log(""); - var dir = tp.file.folder(relative=true); + var dir = tp.file.folder(relative = true); console.log("note: dir:", dir); var name = tp.file.title; console.log("note: name:", name); From cb6b673710b19ffa0b51667f64cf6e9b1e8e174e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 22:00:58 +0100 Subject: [PATCH 612/973] Fix function comments. --- obsidian/daily-note.py | 2 +- obsidian/weekly-report.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 8040864b..70667636 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -14,7 +14,7 @@ def main(): - """Generate a EasyConnect connection request.""" + """Generate daily agenda as Markdown.""" parser = argparse.ArgumentParser() parser.add_argument( diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 308735b1..12f8de5d 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -10,7 +10,7 @@ def main(): - """Generate a EasyConnect connection request.""" + """Generate weekly report as Markdown.""" parser = argparse.ArgumentParser() parser.add_argument( From 487abbff4ee5c7ba462a9fdb8c3ba327e8d24552 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Oct 2024 22:29:24 +0100 Subject: [PATCH 613/973] Disable scanning message. --- obsidian/daily-note.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 70667636..182fc8cc 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -50,7 +50,7 @@ def main(): vault = f"{home}/obsidian" notes_dir = f"{vault}/Daily Notes/" - print(f"Scanning '{notes_dir}'...") + # print(f"Scanning '{notes_dir}'...") # Get a dict of all daily notes, with paths. notes_dict = {} From 5a4a5c0d01c768178c3659af6ac45ffceb5eb963 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 16 Oct 2024 09:01:04 +0100 Subject: [PATCH 614/973] Update hyper-hacks submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index e7a9a89f..249be6a0 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit e7a9a89fe3b8062c3d82bcd352c3633a9fd84419 +Subproject commit 249be6a01881e6566a89247d259b5f2c43372eab From 9bfed6daa26841f4f61d7e305178c77e8dfe6b90 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 16 Oct 2024 09:54:39 +0100 Subject: [PATCH 615/973] Update hyper-hacks submodule. --- hyper-hacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hyper-hacks b/hyper-hacks index 249be6a0..f8ee8b2c 160000 --- a/hyper-hacks +++ b/hyper-hacks @@ -1 +1 @@ -Subproject commit 249be6a01881e6566a89247d259b5f2c43372eab +Subproject commit f8ee8b2cfef7c98a3d3574c4c803f26e7c7ba5be From 1d02bf25b4da2cc6a5970a147c667cbc9001858e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 24 Nov 2024 12:29:29 +0000 Subject: [PATCH 616/973] Update Brewfile. --- Brewfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Brewfile b/Brewfile index f90c4546..50ad28f3 100644 --- a/Brewfile +++ b/Brewfile @@ -73,6 +73,7 @@ brew "curl" brew "d2" brew "dateutils" brew "delve" +brew "difftastic" brew "diffutils" brew "dive" brew "docker-completion" @@ -119,6 +120,7 @@ brew "libusb" brew "pinentry" brew "gnupg" brew "go" +brew "pkgconf" brew "gobject-introspection" brew "goenv" brew "golangci-lint" @@ -138,6 +140,7 @@ brew "hub" brew "ical-buddy" brew "id3lib" brew "id3v2" +brew "imagemagick" brew "infracost" brew "iproute2mac" brew "ipython" @@ -171,6 +174,7 @@ brew "neovim" brew "ocrad" brew "okta-aws-cli" brew "openconnect" +brew "openjdk" brew "openjdk@11" brew "ossp-uuid" brew "packer" @@ -182,6 +186,7 @@ brew "percol" brew "pip-completion" brew "pipenv" brew "pipx" +brew "pre-commit" brew "progress" brew "protobuf" brew "protobuf-c" @@ -227,6 +232,7 @@ brew "tldr" brew "todo-txt" brew "tokei" brew "tree" +brew "uv" brew "vagrant-completion" brew "vault" brew "vim" @@ -365,6 +371,7 @@ vscode "ms-vscode.cpptools-extension-pack" vscode "ms-vscode.cpptools-themes" vscode "ms-vscode.live-server" vscode "ms-vscode.makefile-tools" +vscode "pdconsec.vscode-print" vscode "peterj.proto" vscode "pkief.material-icon-theme" vscode "redhat.vscode-yaml" From f44a554837cf6e63c4d4e65b68623ed52a33249c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 13 Dec 2024 13:20:22 +0000 Subject: [PATCH 617/973] Update Brewfile. --- Brewfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index 50ad28f3..5f5fb686 100644 --- a/Brewfile +++ b/Brewfile @@ -99,6 +99,7 @@ brew "zeromq" brew "ffmpeg" brew "flake8" brew "fzf" +brew "get_iplayer" brew "gh" brew "ghostscript", link: false brew "gimme-aws-creds" @@ -192,6 +193,7 @@ brew "protobuf" brew "protobuf-c" brew "protoc-gen-go" brew "pth" +brew "pulseaudio" brew "pulumi" brew "pycodestyle" brew "pyenv" @@ -215,7 +217,7 @@ brew "semgrep" brew "shellcheck" brew "socat" brew "sonar-scanner" -brew "sphinx-doc" +brew "sphinx-doc", link: false brew "ssh-copy-id", link: true brew "sshuttle" brew "starship" @@ -300,7 +302,6 @@ mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "Battery Monitor", id: 836505650 mas "Bitwarden", id: 1352778147 -mas "CleanMyMac X", id: 1339170533 mas "Disk Space", id: 603688030 mas "Elisi", id: 1406239881 mas "EtreCheck", id: 1423715984 @@ -383,6 +384,7 @@ vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" vscode "takumii.markdowntable" +vscode "tamasfe.even-better-toml" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "twxs.cmake" From 2c7e9d42e713cfc48914e4f76134bda3ac5e6f02 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Jan 2025 11:46:27 +0000 Subject: [PATCH 618/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 3151c9c1..6e9cda3d 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 3151c9c1a330cdea66dd7d1a24810fe805298711 +Subproject commit 6e9cda3d30d8e73c11e4d32044b7f4c5e06f822d From fa76bfb50b16d053863eb47409766aa583691fa2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Jan 2025 11:47:51 +0000 Subject: [PATCH 619/973] Update submodules. --- autoenv | 2 +- powerlevel10k | 2 +- vim/bundle/command-t | 2 +- vim/bundle/vim-fugitive | 2 +- vim/bundle/vim-markdown | 2 +- zsh-autosuggestions | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/autoenv b/autoenv index c3699a43..90241f18 160000 --- a/autoenv +++ b/autoenv @@ -1 +1 @@ -Subproject commit c3699a4375f5fd623dfc430fef3a27d705f7c954 +Subproject commit 90241f182d6a7c96e9de8a25c1eccaf2a2d1b43a diff --git a/powerlevel10k b/powerlevel10k index 087405df..3e2053a9 160000 --- a/powerlevel10k +++ b/powerlevel10k @@ -1 +1 @@ -Subproject commit 087405df7838f4c3e835025699bd7b98b9731acc +Subproject commit 3e2053a9341fe4cf5ab69909d3f39d53b1dfe772 diff --git a/vim/bundle/command-t b/vim/bundle/command-t index 4ee21e27..3e937f91 160000 --- a/vim/bundle/command-t +++ b/vim/bundle/command-t @@ -1 +1 @@ -Subproject commit 4ee21e27bd28f6d17ea620633c6f83830ee23570 +Subproject commit 3e937f91260acca0061d884d0ff3c9a521c1fde9 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive index d4877e54..d74a7cff 160000 --- a/vim/bundle/vim-fugitive +++ b/vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit d4877e54cef67f5af4f950935b1ade19ed6b7370 +Subproject commit d74a7cff4cfcf84f83cc7eccfa365488f3bbabc2 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown index f405b47f..f9f845f2 160000 --- a/vim/bundle/vim-markdown +++ b/vim/bundle/vim-markdown @@ -1 +1 @@ -Subproject commit f405b47fd8774ecd5e808e6de9c85d9029da251c +Subproject commit f9f845f28f4da33a7655accb22f4ad21f7d9fb66 diff --git a/zsh-autosuggestions b/zsh-autosuggestions index c3d4e576..0e810e5a 160000 --- a/zsh-autosuggestions +++ b/zsh-autosuggestions @@ -1 +1 @@ -Subproject commit c3d4e576c9c86eac62884bd47c01f6faed043fc5 +Subproject commit 0e810e5afa27acbd074398eefbe28d13005dbc15 From ed866ff5201655cdd1db54ab9d1b4cf0525eff43 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 20 Jan 2025 11:48:44 +0000 Subject: [PATCH 620/973] Update Brewfile. --- Brewfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 5f5fb686..eb9e86b8 100644 --- a/Brewfile +++ b/Brewfile @@ -178,6 +178,7 @@ brew "openconnect" brew "openjdk" brew "openjdk@11" brew "ossp-uuid" +brew "p7zip" brew "packer" brew "packer-completion" brew "parallel" @@ -217,7 +218,7 @@ brew "semgrep" brew "shellcheck" brew "socat" brew "sonar-scanner" -brew "sphinx-doc", link: false +brew "sphinx-doc" brew "ssh-copy-id", link: true brew "sshuttle" brew "starship" @@ -243,6 +244,7 @@ brew "xpdf" brew "yaegi" brew "yamllint" brew "youtube-dl" +brew "zig" brew "zlib" brew "zoxide" brew "zsh" @@ -282,6 +284,7 @@ cask "font-roboto-mono-for-powerline" cask "font-sf-mono-for-powerline" cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" +cask "ghostty" cask "git-credential-manager" cask "jupyter-notebook-ql" cask "kdiff3" From f7680e21e8d1c6f1c151a6cb41e6126cca1af5c2 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 23 Jan 2025 21:39:59 +0000 Subject: [PATCH 621/973] Update Brewfile. --- Brewfile | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/Brewfile b/Brewfile index eb9e86b8..360a6b14 100644 --- a/Brewfile +++ b/Brewfile @@ -301,37 +301,7 @@ cask "vlc" cask "xquartz" cask "yt-music" cask "zed" -mas "AdBlock", id: 1402042596 -mas "Agenda", id: 1287445660 -mas "Battery Monitor", id: 836505650 -mas "Bitwarden", id: 1352778147 -mas "Disk Space", id: 603688030 -mas "Elisi", id: 1406239881 -mas "EtreCheck", id: 1423715984 -mas "Funter", id: 1109422934 -mas "GoPro Player", id: 1460836908 -mas "GoPro Quik", id: 561350520 -mas "Kindle", id: 302584613 -mas "Magnet", id: 441258766 -mas "Mattermost", id: 1614666244 -mas "Microsoft Excel", id: 462058435 -mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 -mas "Microsoft Remote Desktop", id: 1295203466 -mas "Microsoft Word", id: 462054704 -mas "MindNode", id: 1289197285 -mas "my41cx", id: 949272407 -mas "Notability", id: 360593530 -mas "Okta Extension App", id: 1439967473 -mas "Okta Verify", id: 490179405 -mas "Speedtest", id: 1153157709 -mas "Tailscale", id: 1475387142 -mas "The Archive Browser", id: 510232205 -mas "The Unarchiver", id: 425424353 -mas "Twitter", id: 409789998 -mas "Typist", id: 415166115 -mas "Unsplash Wallpapers", id: 1284863847 -mas "Yubico Authenticator", id: 1497506650 vscode "amazonwebservices.aws-toolkit-vscode" vscode "aryanahire.sublime-monokai" vscode "atlassian.atlascode" From 3942054ba92a6eb745f59712afa507c99f1bc6b5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 27 Jan 2025 12:20:29 +0000 Subject: [PATCH 622/973] Update Brewfile. --- Brewfile | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/Brewfile b/Brewfile index 360a6b14..02371353 100644 --- a/Brewfile +++ b/Brewfile @@ -301,14 +301,39 @@ cask "vlc" cask "xquartz" cask "yt-music" cask "zed" +mas "AdBlock", id: 1402042596 +mas "Agenda", id: 1287445660 +mas "Battery Monitor", id: 836505650 +mas "Bitwarden", id: 1352778147 +mas "Disk Space", id: 603688030 +mas "Elisi", id: 1406239881 +mas "EtreCheck", id: 1423715984 +mas "Funter", id: 1109422934 +mas "GoPro Player", id: 1460836908 +mas "GoPro Quik", id: 561350520 +mas "Kindle", id: 302584613 +mas "Magnet", id: 441258766 +mas "Mattermost", id: 1614666244 +mas "Microsoft Excel", id: 462058435 +mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 -vscode "amazonwebservices.aws-toolkit-vscode" +mas "Microsoft Remote Desktop", id: 1295203466 +mas "Microsoft Word", id: 462054704 +mas "MindNode", id: 1289197285 +mas "my41cx", id: 949272407 +mas "Notability", id: 360593530 +mas "Okta Extension App", id: 1439967473 +mas "Okta Verify", id: 490179405 +mas "Speedtest", id: 1153157709 +mas "Tailscale", id: 1475387142 +mas "The Archive Browser", id: 510232205 +mas "The Unarchiver", id: 425424353 +mas "Typist", id: 415166115 +mas "Yubico Authenticator", id: 1497506650 vscode "aryanahire.sublime-monokai" -vscode "atlassian.atlascode" vscode "charliermarsh.ruff" vscode "codezombiech.gitignore" vscode "cschlosser.doxdocgen" -vscode "davidanson.vscode-markdownlint" vscode "davidbwaters.macos-modern-theme" vscode "donjayamanne.githistory" vscode "editorconfig.editorconfig" @@ -319,14 +344,10 @@ vscode "github.copilot-chat" vscode "github.github-vscode-theme" vscode "github.vscode-pull-request-github" vscode "golang.go" -vscode "grafana.vscode-jsonnet" -vscode "grapecity.gc-excelviewer" vscode "gruntfuggly.todo-tree" vscode "hashicorp.hcl" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" -vscode "humao.rest-client" -vscode "janjoerke.jenkins-pipeline-linter-connector" vscode "jeff-hykin.better-cpp-syntax" vscode "joffreykern.markdown-toc" vscode "mechatroner.rainbow-csv" @@ -338,7 +359,6 @@ vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" vscode "ms-python.python" -vscode "ms-vscode-remote.remote-containers" vscode "ms-vscode.cmake-tools" vscode "ms-vscode.cpptools" vscode "ms-vscode.cpptools-extension-pack" @@ -353,7 +373,6 @@ vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" vscode "solomonkinard.git-blame" -vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" vscode "takumii.markdowntable" From e2e0be511da2c6245a43cbd55661ec886cb849b3 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 6 Feb 2025 09:55:21 +0000 Subject: [PATCH 623/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index 6e9cda3d..db32c6cc 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit 6e9cda3d30d8e73c11e4d32044b7f4c5e06f822d +Subproject commit db32c6ccce91e0b36873c8bfccd1e40f452a2060 From 1359239bcd7a950aaa31e04fc2d1118abdb8a6ab Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 6 Feb 2025 12:35:25 +0000 Subject: [PATCH 624/973] Update Brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index 02371353..f7056628 100644 --- a/Brewfile +++ b/Brewfile @@ -311,6 +311,7 @@ mas "EtreCheck", id: 1423715984 mas "Funter", id: 1109422934 mas "GoPro Player", id: 1460836908 mas "GoPro Quik", id: 561350520 +mas "Keynote", id: 409183694 mas "Kindle", id: 302584613 mas "Magnet", id: 441258766 mas "Mattermost", id: 1614666244 From 33a2d28c09ec4bedf16b6242db75308a6f8edb35 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 21 Feb 2025 15:41:58 +0000 Subject: [PATCH 625/973] Update OMZ. --- oh-my-zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh b/oh-my-zsh index db32c6cc..6e7ac054 160000 --- a/oh-my-zsh +++ b/oh-my-zsh @@ -1 +1 @@ -Subproject commit db32c6ccce91e0b36873c8bfccd1e40f452a2060 +Subproject commit 6e7ac0544e71c7b777746cb50f70de68c6495b86 From 3c36a8c18ac583a4ff771f5ee0d17a3762c733a5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 21 Feb 2025 15:42:13 +0000 Subject: [PATCH 626/973] Bun setup. --- zshrc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zshrc b/zshrc index 46d27523..9f916ed0 100644 --- a/zshrc +++ b/zshrc @@ -202,3 +202,10 @@ export PATH="/opt/homebrew/opt/rustup/bin:$PATH" # git-spice shell completion. # eval "$(gs shell completion zsh)" + +# bun completions +[ -s "/Users/james.lawton/.bun/_bun" ] && source "/Users/james.lawton/.bun/_bun" + +# bun +export BUN_INSTALL="$HOME/.bun" +export PATH="$BUN_INSTALL/bin:$PATH" From 01a7f5dc2750624d265a628c08d789b1b1527d16 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 21 Feb 2025 15:42:47 +0000 Subject: [PATCH 627/973] Update Brewfile. --- Brewfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Brewfile b/Brewfile index f7056628..fc404b5e 100644 --- a/Brewfile +++ b/Brewfile @@ -188,6 +188,7 @@ brew "percol" brew "pip-completion" brew "pipenv" brew "pipx" +brew "plantuml" brew "pre-commit" brew "progress" brew "protobuf" @@ -264,6 +265,7 @@ cask "beardedspice" cask "cakebrew" cask "doll" cask "dozer" +cask "firefox" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" cask "font-dejavu-sans-mono-for-powerline" @@ -297,6 +299,7 @@ cask "openconnect-gui" cask "rectangle" cask "sublime-merge@dev" cask "sublime-text@dev" +cask "temurin" cask "vlc" cask "xquartz" cask "yt-music" @@ -349,6 +352,7 @@ vscode "gruntfuggly.todo-tree" vscode "hashicorp.hcl" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" +vscode "jebbs.plantuml" vscode "jeff-hykin.better-cpp-syntax" vscode "joffreykern.markdown-toc" vscode "mechatroner.rainbow-csv" From a5cf4b0878acb56a839d74ef1374488f96d0d5b5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 7 Mar 2025 11:23:33 +0000 Subject: [PATCH 628/973] Enable rust OMZ plugin. --- zshrc | 1 + 1 file changed, 1 insertion(+) diff --git a/zshrc b/zshrc index 9f916ed0..29409e60 100644 --- a/zshrc +++ b/zshrc @@ -111,6 +111,7 @@ plugins=( pylint python # ripgrep + rust # ssh-agent sublime sublime-merge From f29eb9ea27ecb8db75908f0c4732eb0f4ff5e718 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 12 Mar 2025 17:03:02 +0000 Subject: [PATCH 629/973] Update Brewfile, remove obsolete packages. --- Brewfile | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/Brewfile b/Brewfile index fc404b5e..b9038267 100644 --- a/Brewfile +++ b/Brewfile @@ -12,9 +12,6 @@ tap "eddieantonio/eddieantonio" tap "github/bootstrap" tap "github/gh" tap "homebrew/bundle" -tap "homebrew/cask" -tap "homebrew/cask-fonts" -tap "homebrew/cask-versions" tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" @@ -65,8 +62,6 @@ brew "chezmoi" brew "clang-format" brew "cloc" brew "cmake" -brew "consul" -brew "consul-template" brew "coreutils" brew "rtmpdump" brew "curl" @@ -82,8 +77,6 @@ brew "docker-credential-helper-ecr" brew "docutils" brew "dos2unix" brew "doxygen" -brew "envconsul" -brew "exa" brew "fd" brew "fribidi" brew "libidn2" @@ -179,8 +172,6 @@ brew "openjdk" brew "openjdk@11" brew "ossp-uuid" brew "p7zip" -brew "packer" -brew "packer-completion" brew "parallel" brew "patchutils" brew "peco" @@ -237,14 +228,11 @@ brew "todo-txt" brew "tokei" brew "tree" brew "uv" -brew "vagrant-completion" -brew "vault" brew "vim" brew "wget" brew "xpdf" brew "yaegi" brew "yamllint" -brew "youtube-dl" brew "zig" brew "zlib" brew "zoxide" @@ -262,9 +250,7 @@ brew "taiki-e/tap/cargo-llvm-cov" cask "alt-tab" cask "aws-vault" cask "beardedspice" -cask "cakebrew" cask "doll" -cask "dozer" cask "firefox" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" @@ -295,7 +281,6 @@ cask "maccy" cask "meetingbar" cask "notunes" cask "obsidian" -cask "openconnect-gui" cask "rectangle" cask "sublime-merge@dev" cask "sublime-text@dev" From 68a6de120b0870789756cddae5924df5a20c7d5d Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 13 Mar 2025 10:31:34 +0000 Subject: [PATCH 630/973] Ensure that perms of cloned repo are correct. --- _setup_zsh.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_setup_zsh.sh b/_setup_zsh.sh index 2ae0efd5..b2486e58 100755 --- a/_setup_zsh.sh +++ b/_setup_zsh.sh @@ -5,7 +5,7 @@ if [ -d oh-my-zsh ]; then (cd oh-my-zsh/custom; ln -sf ../../override_window_title.zsh) fi if [ ! -e oh-my-zsh/custom/plugins/fast-syntax-highlighting ]; then - (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git) + (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git; chmod -R 755 fast-syntax-highlighting) fi echo "Done!" fi From ae381de8cc116db863cc67878a7d70469e6af4dd Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 13 Mar 2025 11:23:12 +0000 Subject: [PATCH 631/973] Update Brewfile. --- Brewfile | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Brewfile b/Brewfile index b9038267..19192812 100644 --- a/Brewfile +++ b/Brewfile @@ -33,7 +33,6 @@ brew "boost" brew "asciidoc" brew "asciinema" brew "gettext" -brew "python-packaging" brew "atomicparsley" brew "autojump" brew "awk" @@ -62,6 +61,7 @@ brew "chezmoi" brew "clang-format" brew "cloc" brew "cmake" +brew "consul-template" brew "coreutils" brew "rtmpdump" brew "curl" @@ -172,6 +172,7 @@ brew "openjdk" brew "openjdk@11" brew "ossp-uuid" brew "p7zip" +brew "packer-completion" brew "parallel" brew "patchutils" brew "peco" @@ -193,6 +194,7 @@ brew "pyenv" brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "pygments" +brew "python-packaging" brew "python@3.9" brew "qemu" brew "qt" @@ -249,7 +251,9 @@ brew "sachaos/todoist/todoist" brew "taiki-e/tap/cargo-llvm-cov" cask "alt-tab" cask "aws-vault" +cask "bartender" cask "beardedspice" +cask "bitwarden" cask "doll" cask "firefox" cask "font-anonymice-powerline" @@ -272,9 +276,12 @@ cask "font-roboto-mono-for-powerline" cask "font-sf-mono-for-powerline" cask "font-source-code-pro-for-powerline" cask "font-ubuntu-mono-derivative-powerline" +cask "funter" cask "ghostty" cask "git-credential-manager" +cask "hammerspoon" cask "jupyter-notebook-ql" +cask "karabiner-elements" cask "kdiff3" cask "lumen" cask "maccy" @@ -285,6 +292,7 @@ cask "rectangle" cask "sublime-merge@dev" cask "sublime-text@dev" cask "temurin" +cask "visual-studio-code" cask "vlc" cask "xquartz" cask "yt-music" @@ -293,10 +301,7 @@ mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "Battery Monitor", id: 836505650 mas "Bitwarden", id: 1352778147 -mas "Disk Space", id: 603688030 mas "Elisi", id: 1406239881 -mas "EtreCheck", id: 1423715984 -mas "Funter", id: 1109422934 mas "GoPro Player", id: 1460836908 mas "GoPro Quik", id: 561350520 mas "Keynote", id: 409183694 @@ -306,23 +311,22 @@ mas "Mattermost", id: 1614666244 mas "Microsoft Excel", id: 462058435 mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 -mas "Microsoft Remote Desktop", id: 1295203466 mas "Microsoft Word", id: 462054704 mas "MindNode", id: 1289197285 -mas "my41cx", id: 949272407 mas "Notability", id: 360593530 mas "Okta Extension App", id: 1439967473 mas "Okta Verify", id: 490179405 mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 -mas "The Archive Browser", id: 510232205 mas "The Unarchiver", id: 425424353 -mas "Typist", id: 415166115 +mas "Windows App", id: 1295203466 mas "Yubico Authenticator", id: 1497506650 vscode "aryanahire.sublime-monokai" +vscode "atlassian.atlascode" vscode "charliermarsh.ruff" vscode "codezombiech.gitignore" vscode "cschlosser.doxdocgen" +vscode "davidanson.vscode-markdownlint" vscode "davidbwaters.macos-modern-theme" vscode "donjayamanne.githistory" vscode "editorconfig.editorconfig" @@ -333,10 +337,14 @@ vscode "github.copilot-chat" vscode "github.github-vscode-theme" vscode "github.vscode-pull-request-github" vscode "golang.go" +vscode "grafana.vscode-jsonnet" +vscode "grapecity.gc-excelviewer" vscode "gruntfuggly.todo-tree" vscode "hashicorp.hcl" vscode "hashicorp.terraform" vscode "hediet.vscode-drawio" +vscode "humao.rest-client" +vscode "janjoerke.jenkins-pipeline-linter-connector" vscode "jebbs.plantuml" vscode "jeff-hykin.better-cpp-syntax" vscode "joffreykern.markdown-toc" @@ -349,6 +357,13 @@ vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" vscode "ms-python.python" +vscode "ms-python.vscode-pylance" +vscode "ms-toolsai.jupyter" +vscode "ms-toolsai.jupyter-keymap" +vscode "ms-toolsai.jupyter-renderers" +vscode "ms-toolsai.vscode-jupyter-cell-tags" +vscode "ms-toolsai.vscode-jupyter-slideshow" +vscode "ms-vscode-remote.remote-containers" vscode "ms-vscode.cmake-tools" vscode "ms-vscode.cpptools" vscode "ms-vscode.cpptools-extension-pack" @@ -363,6 +378,7 @@ vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" vscode "solomonkinard.git-blame" +vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" vscode "takumii.markdowntable" From c27f2ac884cbe220c1a91860f9f323295813a924 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 19 Mar 2025 12:50:41 +0000 Subject: [PATCH 632/973] Update Obsidian vault path. --- obsidian/daily-note.py | 2 +- obsidian/weekly-report.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 182fc8cc..2833b3d0 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -47,7 +47,7 @@ def main(): year = curr_date_obj.strftime("%Y") month = curr_date_obj.strftime("%m") - vault = f"{home}/obsidian" + vault = f"{home}/Obsidian/Notes" notes_dir = f"{vault}/Daily Notes/" # print(f"Scanning '{notes_dir}'...") diff --git a/obsidian/weekly-report.py b/obsidian/weekly-report.py index 12f8de5d..328f3b87 100755 --- a/obsidian/weekly-report.py +++ b/obsidian/weekly-report.py @@ -52,7 +52,7 @@ def main(): year = curr_date_obj.strftime("%Y") month = curr_date_obj.strftime("%m") - vault = f"{home}/obsidian/" + vault = f"{home}/Obsidian/Notes" daily_dir = f"{vault}/Daily Notes/" weekly_dir = f"{vault}/Weekly Reports/" From c830f329d669ed1ff425810e30d67f222157f03b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 19 Mar 2025 12:50:54 +0000 Subject: [PATCH 633/973] Copilot CLI alias. --- zshrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zshrc b/zshrc index 29409e60..d3607232 100644 --- a/zshrc +++ b/zshrc @@ -210,3 +210,7 @@ export PATH="/opt/homebrew/opt/rustup/bin:$PATH" # bun export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH" + +# GitHub Copilot CLI. +eval "$(gh copilot alias -- zsh)" + From 629c30f97fbbf77683b23e8887fadd250e83c56a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 19 Mar 2025 12:54:57 +0000 Subject: [PATCH 634/973] Add git-spice config. --- gitconfig-common | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gitconfig-common b/gitconfig-common index 9f9482a6..bea3dbb6 100644 --- a/gitconfig-common +++ b/gitconfig-common @@ -175,3 +175,8 @@ [spice "branchCreate"] commit = false + +[spice "forge.github"] + url = https://github.cicd.cloud.fpdev.io + apiUrl = https://github.cicd.cloud.fpdev.io/api + From b592104b86b75fb9f2fc80d733f703fec300a40e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 25 Mar 2025 23:02:25 +0000 Subject: [PATCH 635/973] Update Brewfile. --- Brewfile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Brewfile b/Brewfile index 19192812..5a6c34a0 100644 --- a/Brewfile +++ b/Brewfile @@ -94,7 +94,6 @@ brew "flake8" brew "fzf" brew "get_iplayer" brew "gh" -brew "ghostscript", link: false brew "gimme-aws-creds" brew "gist" brew "git" @@ -134,7 +133,6 @@ brew "hub" brew "ical-buddy" brew "id3lib" brew "id3v2" -brew "imagemagick" brew "infracost" brew "iproute2mac" brew "ipython" @@ -186,6 +184,7 @@ brew "progress" brew "protobuf" brew "protobuf-c" brew "protoc-gen-go" +brew "protoc-gen-go-grpc" brew "pth" brew "pulseaudio" brew "pulumi" @@ -286,6 +285,7 @@ cask "kdiff3" cask "lumen" cask "maccy" cask "meetingbar" +cask "mitmproxy" cask "notunes" cask "obsidian" cask "rectangle" @@ -297,7 +297,6 @@ cask "vlc" cask "xquartz" cask "yt-music" cask "zed" -mas "AdBlock", id: 1402042596 mas "Agenda", id: 1287445660 mas "Battery Monitor", id: 836505650 mas "Bitwarden", id: 1352778147 @@ -312,7 +311,6 @@ mas "Microsoft Excel", id: 462058435 mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 mas "Microsoft Word", id: 462054704 -mas "MindNode", id: 1289197285 mas "Notability", id: 360593530 mas "Okta Extension App", id: 1439967473 mas "Okta Verify", id: 490179405 @@ -385,6 +383,5 @@ vscode "takumii.markdowntable" vscode "tamasfe.even-better-toml" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" -vscode "twxs.cmake" vscode "vscode-icons-team.vscode-icons" vscode "ziglang.vscode-zig" From b67d078fa905477e6e254cf87b6ad86ce48a5594 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 7 Apr 2025 20:45:06 +0100 Subject: [PATCH 636/973] Remove deprecated taps. --- Brewfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Brewfile b/Brewfile index 5a6c34a0..54677480 100644 --- a/Brewfile +++ b/Brewfile @@ -11,8 +11,6 @@ tap "dutchcoders/cloudman" tap "eddieantonio/eddieantonio" tap "github/bootstrap" tap "github/gh" -tap "homebrew/bundle" -tap "homebrew/services" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" tap "romkatv/powerlevel10k" From 61b6685a8c20e00def77f4cf0bb4309bf83b9c62 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 13 Apr 2025 22:10:29 +0100 Subject: [PATCH 637/973] Run p10k configure. --- p10k.zsh | 342 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 238 insertions(+), 104 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index 978ab7b0..4e617bab 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,8 +1,7 @@ -# Generated by Powerlevel10k configuration wizard on 2022-05-26 at 16:55 IST. -# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 25238. -# Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, -# angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise, -# transient_prompt, instant_prompt=verbose. +# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:09 IST. +# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619. +# Wizard options: powerline, rainbow, ascii, 1 line, compact, concise, transient_prompt, +# instant_prompt=verbose. # Type `p10k configure` to generate another config. # # Config for Powerlevel10k with powerline prompt style with colorful background. @@ -27,7 +26,7 @@ unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' # Zsh >= 5.1 is required. - autoload -Uz is-at-least && is-at-least 5.1 || return + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return # The list of segments shown on the left. Fill it with the most important segments. typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( @@ -46,14 +45,14 @@ command_execution_time # duration of the last command background_jobs # presence of background jobs direnv # direnv status (https://direnv.net/) - # asdf # asdf version manager (https://github.com/asdf-vm/asdf) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) anaconda # conda environment (https://conda.io/) pyenv # python environment (https://github.com/pyenv/pyenv) goenv # go environment (https://github.com/syndbg/goenv) - # nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) - # nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) - # nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) # node_version # node.js version # go_version # go version (https://golang.org) # rust_version # rustc version (https://www.rust-lang.org) @@ -62,30 +61,36 @@ # laravel_version # laravel php framework version (https://laravel.com/) # java_version # java version (https://www.java.com/) # package # name@version from package.json (https://docs.npmjs.com/files/package.json) - # rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) - # rvm # ruby version from rvm (https://rvm.io) - # fvm # flutter version management (https://github.com/leoafarias/fvm) - # luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) - # jenv # java version from jenv (https://github.com/jenv/jenv) - # plenv # perl version from plenv (https://github.com/tokuhirom/plenv) - # phpenv # php version from phpenv (https://github.com/phpenv/phpenv) - # scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) - # haskell_stack # haskell version from stack (https://haskellstack.org/) - # kubecontext # current kubernetes context (https://kubernetes.io/) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) terraform # terraform workspace (https://www.terraform.io) + # terraform_version # terraform version (https://www.terraform.io) aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) - # aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) - # azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) - # gcloud # google cloud cli account and project (https://cloud.google.com/) - # google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + toolbox # toolbox name (https://github.com/containers/toolbox) context # user@hostname - # nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) - # ranger # ranger shell (https://github.com/ranger/ranger) - # nnn # nnn shell (https://github.com/jarun/nnn) - # xplr # xplr shell (https://github.com/sayanarijit/xplr) + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + yazi # yazi shell (https://github.com/sxyazi/yazi) + nnn # nnn shell (https://github.com/jarun/nnn) + lf # lf shell (https://github.com/gokcehan/lf) + xplr # xplr shell (https://github.com/sayanarijit/xplr) vim_shell # vim shell indicator (:sh) - # midnight_commander # midnight commander shell (https://midnight-commander.org/) + midnight_commander # midnight commander shell (https://midnight-commander.org/) nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + chezmoi_shell # chezmoi shell (https://www.chezmoi.io/) vi_mode # vi mode (you don't need this if you've enabled prompt_char) # vpn_ip # virtual private network indicator # load # CPU load @@ -93,8 +98,10 @@ # ram # free RAM # swap # used swap todo # todo items (https://github.com/todotxt/todo.txt-cli) - # timewarrior # timewarrior tracking status (https://timewarrior.net/) - # taskwarrior # taskwarrior task count (https://taskwarrior.org/) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + per_directory_history # Oh My Zsh per-directory-history local/global indicator + # cpu_arch # CPU architecture # time # current time # ip # ip address and bandwidth usage for a specified network interface # public_ip # public IP address @@ -105,7 +112,7 @@ ) # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. - typeset -g POWERLEVEL9K_MODE=nerdfont-complete + typeset -g POWERLEVEL9K_MODE=ascii # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. typeset -g POWERLEVEL9K_ICON_PADDING=none @@ -128,18 +135,18 @@ # Connect left prompt lines with these symbols. You'll probably want to use the same color # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─' - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─' - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭-' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├-' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰-' # Connect right prompt lines with these symbols. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮' - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤' - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F-╮' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F-┤' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F-╯' # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or - # '─'. The last two make it easier to see the alignment between left and right prompt and to + # '-'. The last two make it easier to see the alignment between left and right prompt and to # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false - # for more compact prompt if using using this option. + # for more compact prompt if using this option. typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND= @@ -154,17 +161,20 @@ fi # Separator between same-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1' + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='|' # Separator between same-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3' + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='|' # Separator between different-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='' # Separator between different-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='' + # To remove a separator between two segments, add "_joined" to the second segment name. + # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined) + # The right end of left prompt. - typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' # The left end of right prompt. - typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' # The left end of left prompt. typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' # The right end of right prompt. @@ -187,15 +197,13 @@ # Red prompt symbol if the last command failed. typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 # Default prompt symbol. - # jiml 2021-03-26 change prompt char - #typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='>' # Prompt symbol in command vi mode. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='<' # Prompt symbol in visual vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' # Prompt symbol in overwrite vi mode. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='^' typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true # No line terminator if prompt_char is the last segment. typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= @@ -235,7 +243,8 @@ .java-version .perl-version .php-version - .tool-version + .tool-versions + .mise.toml .shorten_folder_marker .svn .terraform @@ -284,7 +293,7 @@ # The default icon shown next to non-writable and non-existent directories when # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. - typeset -g POWERLEVEL9K_LOCK_ICON='∅' + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different # directories. It must be an array with 3 * N elements. Each triplet consists of: @@ -344,15 +353,15 @@ # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' #####################################[ vcs: git status ]###################################### - # Version control system colors. + # Version control background colors. typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2 typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3 typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2 typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3 typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 - # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. - typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' + # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= # Untracked files icon. It's really a question mark, your font isn't broken. # Change the value of this parameter to show a different icon. @@ -360,7 +369,7 @@ # Formatter for Git status. # - # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # Example output: master wip <42>42 *42 merge ~42 +42 !42 ?42. # # You can edit the function to customize how Git status looks. # @@ -388,9 +397,9 @@ if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then local branch=${(V)VCS_STATUS_LOCAL_BRANCH} # If local branch name is at most 32 characters long, show it in full. - # Otherwise show the first 12 … the last 12. + # Otherwise show the first 12 .. the last 12. # Tip: To always show local branch name in full without truncation, delete the next line. - (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + (( $#branch > 32 )) && branch[13,-13]=".." # <-- this line res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" fi @@ -401,9 +410,9 @@ ]]; then local tag=${(V)VCS_STATUS_TAG} # If tag name is at most 32 characters long, show it in full. - # Otherwise show the first 12 … the last 12. + # Otherwise show the first 12 .. the last 12. # Tip: To always show tag name in full without truncation, delete the next line. - (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + (( $#tag > 32 )) && tag[13,-13]=".." # <-- this line res+="${meta}#${clean}${tag//\%/%%}" fi @@ -422,16 +431,22 @@ res+=" ${modified}wip" fi - # ⇣42 if behind the remote. - (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" - # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. - (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " - (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" - # ⇠42 if behind the push remote. - (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then + # <42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}<${VCS_STATUS_COMMITS_BEHIND}" + # >42 if ahead of the remote; no leading space if also behind the remote: <42>42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}>${VCS_STATUS_COMMITS_AHEAD}" + elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then + # Tip: Uncomment the next line to display '=' if up to date with the remote. + # res+=" ${clean}=" + fi + + # <-42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}<-${VCS_STATUS_PUSH_COMMITS_BEHIND}" (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " - # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. - (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # ->42 if ahead of the push remote; no leading space if also behind: <-42->42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}->${VCS_STATUS_PUSH_COMMITS_AHEAD}" # *42 if have stashes. (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" # 'merge' if the repo is in an unusual state. @@ -446,12 +461,12 @@ # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. # Remove the next line if you don't want to see untracked files at all. (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" - # "─" if the number of unstaged files is unknown. This can happen due to + # "-" if the number of unstaged files is unknown. This can happen due to # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower # than the number of files in the Git index, or due to bash.showDirtyState being set to false # in the repository config. The number of staged and untracked files may also be unknown # in this case. - (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}-" typeset -g my_git_format=$res } @@ -479,13 +494,13 @@ typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 # Custom icon. - # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= # Custom prefix. # typeset -g POWERLEVEL9K_VCS_PREFIX='on ' # Show status of repositories of these types. You can add svn and/or hg if you are # using them. If you do, your prompt may become slow even when your current directory - # isn't in an svn or hg reposotiry. + # isn't in an svn or hg repository. typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) ##########################[ status: exit code of the last command ]########################### @@ -496,21 +511,21 @@ # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as # it will signify success by turning green. typeset -g POWERLEVEL9K_STATUS_OK=true - typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='ok' typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2 typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0 # Status when some part of a pipe command fails but the overall exit status is zero. It may look # like this: 1|0. typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true - typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='ok' typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2 typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0 # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as # it will signify error by turning red. typeset -g POWERLEVEL9K_STATUS_ERROR=true - typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='err' typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1 @@ -518,14 +533,14 @@ typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true # Use terse signal names: "INT" instead of "SIGINT(2)". typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION= typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1 # Status when some part of a pipe command fails and the overall exit status is also non-zero. # It may look like this: 1|0. typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true - typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='err' typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1 @@ -551,7 +566,7 @@ # Don't show the number of background jobs. typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false # Custom icon. - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡' + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' #######################[ direnv: direnv status (https://direnv.net/) ]######################## # Direnv color. @@ -726,15 +741,22 @@ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= # Custom icon. - typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## # Ranger shell color. typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 # Custom icon. - typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲' - + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]##################### + # Yazi shell color. + typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3 + typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐' + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### # Nnn shell color. typeset -g POWERLEVEL9K_NNN_FOREGROUND=0 @@ -742,6 +764,13 @@ # Custom icon. # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]####################### + # lf shell color. + typeset -g POWERLEVEL9K_LF_FOREGROUND=0 + typeset -g POWERLEVEL9K_LF_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐' + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## # xplr shell color. typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0 @@ -768,12 +797,22 @@ typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0 typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4 + # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store. + # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= # Custom icon. # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]################## + # chezmoi shell color. + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + ##################################[ disk_usage: disk usage ]################################## # Colors for different levels of disk usage. typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3 @@ -805,6 +844,8 @@ # Text and color for insert vi mode. typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8 + # Custom icon. + # typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐' ######################################[ ram: free RAM ]####################################### # RAM color. @@ -865,11 +906,11 @@ typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255 typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8 - # If the tracked task is longer than 24 characters, truncate and append "…". + # If the tracked task is longer than 24 characters, truncate and append "..". # Tip: To always display tasks without truncation, delete the following parameter. # Tip: To hide task names and display just the icon when time tracking is enabled, set the # value of the following parameter to "". - typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+..}' # Custom icon. # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' @@ -895,6 +936,33 @@ # Custom icon. # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]####### + # Color when using local/global history. + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_BACKGROUND=5 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_BACKGROUND=3 + + # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION='' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION='' + + # Custom icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ cpu_arch: CPU architecture ]################################ + # CPU architecture color. + typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=0 + typeset -g POWERLEVEL9K_CPU_ARCH_BACKGROUND=3 + + # Hide the segment when on a specific CPU architecture. + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION= + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐' + ##################################[ context: user@hostname ]################################## # Context color when running with privileges. typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 @@ -1029,6 +1097,11 @@ # Nvm color. typeset -g POWERLEVEL9K_NVM_FOREGROUND=0 typeset -g POWERLEVEL9K_NVM_BACKGROUND=5 + # If set to false, hide node version if it's the same as default: + # $(nvm version current) == $(nvm version default). + typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true # Custom icon. # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' @@ -1195,6 +1268,16 @@ # Custom icon. # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ + # Perlbrew color. + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 + # Show perlbrew version only when in a perl project subdirectory. + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true + # Don't show "perl-" at the front. + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐' + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ # PHP color. typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0 @@ -1274,10 +1357,20 @@ typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0 # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## + # Terraform version color. + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4 + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]################# + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf' + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# - # Show kubecontext only when the the command you are typing invokes one of these tools. + # Show kubecontext only when the command you are typing invokes one of these tools. # Tip: Remove the next line to always show kubecontext. - typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|fluxctl|stern' + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl' # Kubernetes context classes for the purpose of using different colors, icons and expansions with # different contexts. @@ -1312,7 +1405,7 @@ '*' DEFAULT) typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○' + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext # segment. Parameter expansions are very flexible and fast, too. See reference: @@ -1364,9 +1457,9 @@ # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at ' #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# - # Show aws only when the the command you are typing invokes one of these tools. + # Show aws only when the command you are typing invokes one of these tools. # Tip: Remove the next line to always show aws. - typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt' + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt' # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element # in each pair defines a pattern against which the current AWS profile gets matched. @@ -1410,22 +1503,52 @@ typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 # Custom icon. - typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## - # Show azure only when the the command you are typing invokes one of these tools. + # Show azure only when the command you are typing invokes one of these tools. # Tip: Remove the next line to always show azure. typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current azure account name gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current azure account is "company_test", its class is TEST because "company_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2 + # typeset -g POWERLEVEL9K_AZURE_TEST_BACKGROUND=0 + # typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + # Azure account name color. - typeset -g POWERLEVEL9K_AZURE_FOREGROUND=7 - typeset -g POWERLEVEL9K_AZURE_BACKGROUND=4 + typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=7 + typeset -g POWERLEVEL9K_AZURE_OTHER_BACKGROUND=4 # Custom icon. - typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' + # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### - # Show gcloud only when the the command you are typing invokes one of these tools. + # Show gcloud only when the command you are typing invokes one of these tools. # Tip: Remove the next line to always show gcloud. - typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs' + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' # Google cloud color. typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7 typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4 @@ -1465,7 +1588,7 @@ # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# - # Show google_app_cred only when the the command you are typing invokes one of these tools. + # Show google_app_cred only when the command you are typing invokes one of these tools. # Tip: Remove the next line to always show google_app_cred. typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' @@ -1519,6 +1642,17 @@ # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### + # Toolbox color. + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0 + typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' + # Custom icon. + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in ' + ###############################[ public_ip: public IP address ]############################### # Public IP color. typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7 @@ -1535,7 +1669,7 @@ typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN # to see the name of the interface. - typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*' + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)' # If set to true, show one segment per matching network interface. If set to false, show only # one segment corresponding to the first matching network interface. # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. @@ -1559,7 +1693,7 @@ # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt # P9K_IP_RX_RATE | receive rate (since last prompt) # P9K_IP_TX_RATE | send rate (since last prompt) - typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP' + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+<$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+>$P9K_IP_TX_RATE }$P9K_IP_IP' # Show information for the first network interface whose name matches this regular expression. # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' @@ -1582,7 +1716,7 @@ # Show battery in yellow when it's discharging. typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 # Battery pictograms going from low to high level of charge. - typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█') + typeset -g POWERLEVEL9K_BATTERY_STAGES=('battery') # Don't show the remaining time to charge/discharge. typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 @@ -1636,12 +1770,12 @@ # # Type `p10k help segment` for documentation and a more sophisticated example. function prompt_example() { - p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n' + p10k segment -b 1 -f 3 -i '*' -t 'hello, %n' } # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job # is to generate the prompt segment for display in instant prompt. See - # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # https://github.com/romkatv/powerlevel10k#instant-prompt. # # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k @@ -1678,7 +1812,7 @@ # it incompatible with your zsh configuration files. # - quiet: Enable instant prompt and don't print warnings when detecting console output # during zsh initialization. Choose this if you've read and understood - # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # https://github.com/romkatv/powerlevel10k#instant-prompt. # - verbose: Enable instant prompt and print a warning when detecting console output during # zsh initialization. Choose this if you've never tried instant prompt, haven't # seen the warning, or if you are unsure what this all means. From f80a24978d0d4f15a1ec8f03c691e5f1e9fc3517 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 13 Apr 2025 22:13:09 +0100 Subject: [PATCH 638/973] Run p10k configure again. --- p10k.zsh | 104 +++++++++++++++++++++++++++---------------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/p10k.zsh b/p10k.zsh index 4e617bab..5abd37e9 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -1,7 +1,7 @@ -# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:09 IST. +# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:12 IST. # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619. -# Wizard options: powerline, rainbow, ascii, 1 line, compact, concise, transient_prompt, -# instant_prompt=verbose. +# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads, +# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose. # Type `p10k configure` to generate another config. # # Config for Powerlevel10k with powerline prompt style with colorful background. @@ -112,7 +112,7 @@ ) # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. - typeset -g POWERLEVEL9K_MODE=ascii + typeset -g POWERLEVEL9K_MODE=powerline # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. typeset -g POWERLEVEL9K_ICON_PADDING=none @@ -135,16 +135,16 @@ # Connect left prompt lines with these symbols. You'll probably want to use the same color # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭-' - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├-' - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰-' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─' # Connect right prompt lines with these symbols. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F-╮' - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F-┤' - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F-╯' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯' # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or - # '-'. The last two make it easier to see the alignment between left and right prompt and to + # '─'. The last two make it easier to see the alignment between left and right prompt and to # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false # for more compact prompt if using this option. typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' @@ -161,20 +161,20 @@ fi # Separator between same-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='|' + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1' # Separator between same-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='|' + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3' # Separator between different-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='' + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' # Separator between different-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='' + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' # To remove a separator between two segments, add "_joined" to the second segment name. # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined) # The right end of left prompt. - typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' # The left end of right prompt. - typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' # The left end of left prompt. typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' # The right end of right prompt. @@ -197,13 +197,13 @@ # Red prompt symbol if the last command failed. typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 # Default prompt symbol. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='>' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' # Prompt symbol in command vi mode. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='<' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' # Prompt symbol in visual vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' # Prompt symbol in overwrite vi mode. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='^' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true # No line terminator if prompt_char is the last segment. typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= @@ -293,7 +293,7 @@ # The default icon shown next to non-writable and non-existent directories when # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. - # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + typeset -g POWERLEVEL9K_LOCK_ICON='∅' # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different # directories. It must be an array with 3 * N elements. Each triplet consists of: @@ -369,7 +369,7 @@ # Formatter for Git status. # - # Example output: master wip <42>42 *42 merge ~42 +42 !42 ?42. + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. # # You can edit the function to customize how Git status looks. # @@ -397,9 +397,9 @@ if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then local branch=${(V)VCS_STATUS_LOCAL_BRANCH} # If local branch name is at most 32 characters long, show it in full. - # Otherwise show the first 12 .. the last 12. + # Otherwise show the first 12 … the last 12. # Tip: To always show local branch name in full without truncation, delete the next line. - (( $#branch > 32 )) && branch[13,-13]=".." # <-- this line + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" fi @@ -410,9 +410,9 @@ ]]; then local tag=${(V)VCS_STATUS_TAG} # If tag name is at most 32 characters long, show it in full. - # Otherwise show the first 12 .. the last 12. + # Otherwise show the first 12 … the last 12. # Tip: To always show tag name in full without truncation, delete the next line. - (( $#tag > 32 )) && tag[13,-13]=".." # <-- this line + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line res+="${meta}#${clean}${tag//\%/%%}" fi @@ -432,21 +432,21 @@ fi if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then - # <42 if behind the remote. - (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}<${VCS_STATUS_COMMITS_BEHIND}" - # >42 if ahead of the remote; no leading space if also behind the remote: <42>42. + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " - (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}>${VCS_STATUS_COMMITS_AHEAD}" + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then # Tip: Uncomment the next line to display '=' if up to date with the remote. # res+=" ${clean}=" fi - # <-42 if behind the push remote. - (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}<-${VCS_STATUS_PUSH_COMMITS_BEHIND}" + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " - # ->42 if ahead of the push remote; no leading space if also behind: <-42->42. - (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}->${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" # *42 if have stashes. (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" # 'merge' if the repo is in an unusual state. @@ -461,12 +461,12 @@ # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. # Remove the next line if you don't want to see untracked files at all. (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" - # "-" if the number of unstaged files is unknown. This can happen due to + # "─" if the number of unstaged files is unknown. This can happen due to # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower # than the number of files in the Git index, or due to bash.showDirtyState being set to false # in the repository config. The number of staged and untracked files may also be unknown # in this case. - (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}-" + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" typeset -g my_git_format=$res } @@ -511,21 +511,21 @@ # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as # it will signify success by turning green. typeset -g POWERLEVEL9K_STATUS_OK=true - typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='ok' + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2 typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0 # Status when some part of a pipe command fails but the overall exit status is zero. It may look # like this: 1|0. typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true - typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='ok' + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2 typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0 # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as # it will signify error by turning red. typeset -g POWERLEVEL9K_STATUS_ERROR=true - typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='err' + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1 @@ -533,14 +533,14 @@ typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true # Use terse signal names: "INT" instead of "SIGINT(2)". typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION= + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1 # Status when some part of a pipe command fails and the overall exit status is also non-zero. # It may look like this: 1|0. typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true - typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='err' + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3 typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1 @@ -566,7 +566,7 @@ # Don't show the number of background jobs. typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false # Custom icon. - # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡' #######################[ direnv: direnv status (https://direnv.net/) ]######################## # Direnv color. @@ -741,21 +741,21 @@ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= # Custom icon. - # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## # Ranger shell color. typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 # Custom icon. - # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲' ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]##################### # Yazi shell color. typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3 typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0 # Custom icon. - # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='▲' ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### # Nnn shell color. @@ -906,11 +906,11 @@ typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255 typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8 - # If the tracked task is longer than 24 characters, truncate and append "..". + # If the tracked task is longer than 24 characters, truncate and append "…". # Tip: To always display tasks without truncation, delete the following parameter. # Tip: To hide task names and display just the icon when time tracking is enabled, set the # value of the following parameter to "". - typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+..}' + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' # Custom icon. # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' @@ -1405,7 +1405,7 @@ '*' DEFAULT) typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 - # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○' # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext # segment. Parameter expansions are very flexible and fast, too. See reference: @@ -1503,7 +1503,7 @@ typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 # Custom icon. - # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## # Show azure only when the command you are typing invokes one of these tools. @@ -1693,7 +1693,7 @@ # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt # P9K_IP_RX_RATE | receive rate (since last prompt) # P9K_IP_TX_RATE | send rate (since last prompt) - typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+<$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+>$P9K_IP_TX_RATE }$P9K_IP_IP' + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP' # Show information for the first network interface whose name matches this regular expression. # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' @@ -1716,7 +1716,7 @@ # Show battery in yellow when it's discharging. typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 # Battery pictograms going from low to high level of charge. - typeset -g POWERLEVEL9K_BATTERY_STAGES=('battery') + typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█') # Don't show the remaining time to charge/discharge. typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 @@ -1770,7 +1770,7 @@ # # Type `p10k help segment` for documentation and a more sophisticated example. function prompt_example() { - p10k segment -b 1 -f 3 -i '*' -t 'hello, %n' + p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n' } # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job From 6131ae039cc2b24e47cef8e66316d1591da247a0 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 13 Apr 2025 22:13:38 +0100 Subject: [PATCH 639/973] Update zshrc. --- zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zshrc b/zshrc index d3607232..99f628d3 100644 --- a/zshrc +++ b/zshrc @@ -214,3 +214,5 @@ export PATH="$BUN_INSTALL/bin:$PATH" # GitHub Copilot CLI. eval "$(gh copilot alias -- zsh)" +# To customize prompt, run `p10k configure` or edit ~/Personal/git/dotfiles/p10k.zsh. +[[ ! -f ~/Personal/git/dotfiles/p10k.zsh ]] || source ~/Personal/git/dotfiles/p10k.zsh From d3e4214524d452fba00364e1501ca202d2971653 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sun, 13 Apr 2025 22:19:58 +0100 Subject: [PATCH 640/973] Change shell prompt char to arrow. --- p10k.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/p10k.zsh b/p10k.zsh index 5abd37e9..d41ac916 100644 --- a/p10k.zsh +++ b/p10k.zsh @@ -197,7 +197,9 @@ # Red prompt symbol if the last command failed. typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 # Default prompt symbol. - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # jiml 2021-03-26 change prompt char + # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜' # Prompt symbol in command vi mode. typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' # Prompt symbol in visual vi mode. From 84b1bcf9cdeb7302ecc8165b0f3fe81c173aef17 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Apr 2025 14:53:51 +0100 Subject: [PATCH 641/973] Update brewfile. --- Brewfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 54677480..efb17750 100644 --- a/Brewfile +++ b/Brewfile @@ -295,7 +295,6 @@ cask "vlc" cask "xquartz" cask "yt-music" cask "zed" -mas "Agenda", id: 1287445660 mas "Battery Monitor", id: 836505650 mas "Bitwarden", id: 1352778147 mas "Elisi", id: 1406239881 @@ -308,10 +307,12 @@ mas "Mattermost", id: 1614666244 mas "Microsoft Excel", id: 462058435 mas "Microsoft OneNote", id: 784801555 mas "Microsoft Outlook", id: 985367838 +mas "Microsoft PowerPoint", id: 462062816 mas "Microsoft Word", id: 462054704 mas "Notability", id: 360593530 mas "Okta Extension App", id: 1439967473 mas "Okta Verify", id: 490179405 +mas "Slack", id: 803453959 mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 mas "The Unarchiver", id: 425424353 @@ -324,6 +325,7 @@ vscode "codezombiech.gitignore" vscode "cschlosser.doxdocgen" vscode "davidanson.vscode-markdownlint" vscode "davidbwaters.macos-modern-theme" +vscode "docker.docker" vscode "donjayamanne.githistory" vscode "editorconfig.editorconfig" vscode "fabiospampinato.vscode-diff" From f39b58dd9cabe0013645bf107a54878be528d094 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Apr 2025 19:11:33 +0100 Subject: [PATCH 642/973] Update brewfile. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index efb17750..9eda8146 100644 --- a/Brewfile +++ b/Brewfile @@ -284,6 +284,7 @@ cask "lumen" cask "maccy" cask "meetingbar" cask "mitmproxy" +cask "monitorcontrol" cask "notunes" cask "obsidian" cask "rectangle" From 4bc37cbd1ec2d7691ac7c447f7d4296b8312cdaa Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 14 Apr 2025 19:14:17 +0100 Subject: [PATCH 643/973] Update brewfile. --- Brewfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Brewfile b/Brewfile index 9eda8146..e2033eb8 100644 --- a/Brewfile +++ b/Brewfile @@ -280,7 +280,6 @@ cask "hammerspoon" cask "jupyter-notebook-ql" cask "karabiner-elements" cask "kdiff3" -cask "lumen" cask "maccy" cask "meetingbar" cask "mitmproxy" From d57f3b0b812672809515badc608c564b122c85c8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 15 Apr 2025 10:12:03 +0100 Subject: [PATCH 644/973] Add git-who. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index e2033eb8..bbc9d167 100644 --- a/Brewfile +++ b/Brewfile @@ -99,6 +99,7 @@ brew "git-delta" brew "git-extras" brew "git-filter-repo" brew "git-quick-stats" +brew "git-who" brew "gitleaks" brew "glow" brew "gnu-indent" From 1e250e1bbcbef891e7f4a45a9a57903ea972b77e Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 15 Apr 2025 10:12:38 +0100 Subject: [PATCH 645/973] Add atuin. --- Brewfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Brewfile b/Brewfile index bbc9d167..77cad0ae 100644 --- a/Brewfile +++ b/Brewfile @@ -32,6 +32,7 @@ brew "asciidoc" brew "asciinema" brew "gettext" brew "atomicparsley" +brew "atuin" brew "autojump" brew "awk" brew "node" From b1b1585f587a0deb3bb2f2517e19c65fd9a44729 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Fri, 18 Apr 2025 15:08:57 +0100 Subject: [PATCH 646/973] Docker setup. --- zshrc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zshrc b/zshrc index 99f628d3..fafc11ed 100644 --- a/zshrc +++ b/zshrc @@ -216,3 +216,8 @@ eval "$(gh copilot alias -- zsh)" # To customize prompt, run `p10k configure` or edit ~/Personal/git/dotfiles/p10k.zsh. [[ ! -f ~/Personal/git/dotfiles/p10k.zsh ]] || source ~/Personal/git/dotfiles/p10k.zsh +# The following lines have been added by Docker Desktop to enable Docker CLI completions. +fpath=(/Users/james.lawton/.docker/completions $fpath) +autoload -Uz compinit +compinit +# End of Docker CLI completions From de5706480cb8ebf1987af2fa1b3407777fbe2d21 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Sat, 19 Apr 2025 12:48:10 +0100 Subject: [PATCH 647/973] Update Brewfile. --- Brewfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 77cad0ae..94d4f909 100644 --- a/Brewfile +++ b/Brewfile @@ -314,7 +314,6 @@ mas "Microsoft Word", id: 462054704 mas "Notability", id: 360593530 mas "Okta Extension App", id: 1439967473 mas "Okta Verify", id: 490179405 -mas "Slack", id: 803453959 mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 mas "The Unarchiver", id: 425424353 @@ -377,6 +376,7 @@ vscode "redhat.vscode-yaml" vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" +vscode "seansassenrath.vscode-theme-superonedark" vscode "solomonkinard.git-blame" vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" @@ -386,4 +386,5 @@ vscode "tamasfe.even-better-toml" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "vscode-icons-team.vscode-icons" +vscode "zhuangtongfa.material-theme" vscode "ziglang.vscode-zig" From 9595def2bcd4faed7eeafd50db4cf6dab97b23a8 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 May 2025 11:02:00 +0100 Subject: [PATCH 648/973] Glance config. --- glance/.env | 3 ++ glance/assets/user.css | 0 glance/config/glance.yml | 12 ++++++ glance/config/home.yml | 88 +++++++++++++++++++++++++++++++++++++++ glance/docker-compose.yml | 13 ++++++ 5 files changed, 116 insertions(+) create mode 100644 glance/.env create mode 100644 glance/assets/user.css create mode 100644 glance/config/glance.yml create mode 100644 glance/config/home.yml create mode 100644 glance/docker-compose.yml diff --git a/glance/.env b/glance/.env new file mode 100644 index 00000000..146599f7 --- /dev/null +++ b/glance/.env @@ -0,0 +1,3 @@ +# Variables defined here will be available to use anywhere in the config with the syntax ${MY_SECRET_TOKEN} +# Note: making changes to this file requires re-running docker compose up +MY_SECRET_TOKEN=123456 diff --git a/glance/assets/user.css b/glance/assets/user.css new file mode 100644 index 00000000..e69de29b diff --git a/glance/config/glance.yml b/glance/config/glance.yml new file mode 100644 index 00000000..a4902e30 --- /dev/null +++ b/glance/config/glance.yml @@ -0,0 +1,12 @@ +server: + assets-path: /app/assets + +theme: + # Note: assets are cached by the browser, changes to the CSS file + # will not be reflected until the browser cache is cleared (Ctrl+F5) + custom-css-file: /assets/user.css + +pages: + # It's not necessary to create a new file for each page and include it, you can simply + # put its contents here, though multiple pages are easier to manage when separated + !include: home.yml diff --git a/glance/config/home.yml b/glance/config/home.yml new file mode 100644 index 00000000..0d172e0e --- /dev/null +++ b/glance/config/home.yml @@ -0,0 +1,88 @@ +- name: Home + # Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look + # hide-desktop-navigation: true + columns: + - size: small + widgets: + - type: calendar + first-day-of-week: monday + + - type: rss + limit: 10 + collapse-after: 3 + cache: 12h + feeds: + - url: https://selfh.st/rss/ + title: selfh.st + - url: https://ciechanow.ski/atom.xml + - url: https://www.joshwcomeau.com/rss.xml + title: Josh Comeau + - url: https://samwho.dev/rss.xml + - url: https://ishadeed.com/feed.xml + title: Ahmad Shadeed + + - type: twitch-channels + channels: + - theprimeagen + - j_blow + - piratesoftware + - cohhcarnage + - christitustech + - EJ_SA + + - size: full + widgets: + - type: group + widgets: + - type: hacker-news + - type: lobsters + + - type: videos + channels: + - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips + - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling + - UCsBjURrPoezykLs9EqgamOA # Fireship + - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee + - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium + + - type: group + widgets: + - type: reddit + subreddit: technology + show-thumbnails: true + - type: reddit + subreddit: selfhosted + show-thumbnails: true + + - size: small + widgets: + - type: weather + location: London, United Kingdom + units: metric # alternatively "imperial" + hour-format: 12h # alternatively "24h" + # Optionally hide the location from being displayed in the widget + # hide-location: true + + - type: markets + markets: + - symbol: SPY + name: S&P 500 + - symbol: BTC-USD + name: Bitcoin + - symbol: NVDA + name: NVIDIA + - symbol: AAPL + name: Apple + - symbol: MSFT + name: Microsoft + + - type: releases + cache: 1d + # Without authentication the Github API allows for up to 60 requests per hour. You can create a + # read-only token from your Github account settings and use it here to increase the limit. + # token: ... + repositories: + - glanceapp/glance + - go-gitea/gitea + - immich-app/immich + - syncthing/syncthing diff --git a/glance/docker-compose.yml b/glance/docker-compose.yml new file mode 100644 index 00000000..6251f16c --- /dev/null +++ b/glance/docker-compose.yml @@ -0,0 +1,13 @@ +services: + glance: + container_name: glance + image: glanceapp/glance + restart: unless-stopped + volumes: + - ./config:/app/config + - ./assets:/app/assets + # Optionally, also mount docker socket if you want to use the docker containers widget + # - /var/run/docker.sock:/var/run/docker.sock:ro + ports: + - 8080:8080 + env_file: .env From e2504884ef11e36125ab2dbe493551c9f95eb05c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 6 May 2025 11:03:33 +0100 Subject: [PATCH 649/973] Change weather location. --- glance/config/home.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glance/config/home.yml b/glance/config/home.yml index 0d172e0e..f9a588a0 100644 --- a/glance/config/home.yml +++ b/glance/config/home.yml @@ -57,7 +57,7 @@ - size: small widgets: - type: weather - location: London, United Kingdom + location: Cork, Ireland units: metric # alternatively "imperial" hour-format: 12h # alternatively "24h" # Optionally hide the location from being displayed in the widget From 2fcb7274f34481a6b7c33aeaab5261cd3ba34460 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 13 May 2025 11:10:58 +0100 Subject: [PATCH 650/973] Update Brewfile. --- Brewfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Brewfile b/Brewfile index 94d4f909..92d3beb9 100644 --- a/Brewfile +++ b/Brewfile @@ -169,6 +169,7 @@ brew "openconnect" brew "openjdk" brew "openjdk@11" brew "ossp-uuid" +brew "osv-scanner" brew "p7zip" brew "packer-completion" brew "parallel" @@ -318,6 +319,7 @@ mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 mas "The Unarchiver", id: 425424353 mas "Windows App", id: 1295203466 +mas "Xmind", id: 1327661892 mas "Yubico Authenticator", id: 1497506650 vscode "aryanahire.sublime-monokai" vscode "atlassian.atlascode" @@ -371,14 +373,11 @@ vscode "ms-vscode.live-server" vscode "ms-vscode.makefile-tools" vscode "pdconsec.vscode-print" vscode "peterj.proto" -vscode "pkief.material-icon-theme" vscode "redhat.vscode-yaml" vscode "ritwickdey.liveserver" vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" -vscode "seansassenrath.vscode-theme-superonedark" vscode "solomonkinard.git-blame" -vscode "sonarsource.sonarlint-vscode" vscode "streetsidesoftware.code-spell-checker" vscode "tadayosi.vscode-makefile-outliner" vscode "takumii.markdowntable" @@ -386,5 +385,4 @@ vscode "tamasfe.even-better-toml" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" vscode "vscode-icons-team.vscode-icons" -vscode "zhuangtongfa.material-theme" vscode "ziglang.vscode-zig" From 1547e4a3a3a5306152670d01ac89130588098b32 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Mon, 19 May 2025 11:28:12 +0100 Subject: [PATCH 651/973] Update Brewfile. --- Brewfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 92d3beb9..2a198f4b 100644 --- a/Brewfile +++ b/Brewfile @@ -282,7 +282,6 @@ cask "git-credential-manager" cask "hammerspoon" cask "jupyter-notebook-ql" cask "karabiner-elements" -cask "kdiff3" cask "maccy" cask "meetingbar" cask "mitmproxy" @@ -352,6 +351,7 @@ vscode "joffreykern.markdown-toc" vscode "mechatroner.rainbow-csv" vscode "meezilla.json" vscode "mellowmarshmallow.groovy" +vscode "mermaidchart.vscode-mermaid-chart" vscode "mrmlnc.vscode-duplicate" vscode "ms-azuretools.vscode-docker" vscode "ms-python.debugpy" From 02c8b290cce77e3206f4d24de710527fbe9f39c9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 28 May 2025 10:41:19 +0100 Subject: [PATCH 652/973] Update Brewfile. --- Brewfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 2a198f4b..caedff86 100644 --- a/Brewfile +++ b/Brewfile @@ -89,6 +89,7 @@ brew "x265" brew "xvid" brew "zeromq" brew "ffmpeg" +brew "figlet" brew "flake8" brew "fzf" brew "get_iplayer" @@ -318,6 +319,7 @@ mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 mas "The Unarchiver", id: 425424353 mas "Windows App", id: 1295203466 +mas "Xcode", id: 497799835 mas "Xmind", id: 1327661892 mas "Yubico Authenticator", id: 1497506650 vscode "aryanahire.sublime-monokai" @@ -348,12 +350,13 @@ vscode "janjoerke.jenkins-pipeline-linter-connector" vscode "jebbs.plantuml" vscode "jeff-hykin.better-cpp-syntax" vscode "joffreykern.markdown-toc" +vscode "llvm-vs-code-extensions.lldb-dap" vscode "mechatroner.rainbow-csv" vscode "meezilla.json" vscode "mellowmarshmallow.groovy" vscode "mermaidchart.vscode-mermaid-chart" vscode "mrmlnc.vscode-duplicate" -vscode "ms-azuretools.vscode-docker" +vscode "ms-azuretools.vscode-containers" vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" @@ -379,6 +382,7 @@ vscode "rust-lang.rust-analyzer" vscode "ryanluker.vscode-coverage-gutters" vscode "solomonkinard.git-blame" vscode "streetsidesoftware.code-spell-checker" +vscode "swiftlang.swift-vscode" vscode "tadayosi.vscode-makefile-outliner" vscode "takumii.markdowntable" vscode "tamasfe.even-better-toml" From eeac244f740ef090e9359d0c6c42e7bd466756fa Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 18 Jun 2025 11:06:26 +0100 Subject: [PATCH 653/973] Update credential helpers to use gh. --- git-identity-personal | 4 ++++ git-identity-work | 2 ++ 2 files changed, 6 insertions(+) diff --git a/git-identity-personal b/git-identity-personal index ffb903e9..b17f25e9 100644 --- a/git-identity-personal +++ b/git-identity-personal @@ -3,3 +3,7 @@ email = jim.lawton@gmail.com [hub] protocol = https +[credential "https://github.com"] + helper = !/opt/homebrew/bin/gh auth git-credential +[credential "https://gist.github.com"] + helper = !/opt/homebrew/bin/gh auth git-credential diff --git a/git-identity-work b/git-identity-work index 1a1c6a4a..3d5c6baf 100644 --- a/git-identity-work +++ b/git-identity-work @@ -6,3 +6,5 @@ host = https://github.cicd.cloud.fpdev.io [init] templateDir = ~/dotfiles/git-template +[credential "https://github.cicd.cloud.fpdev.io"] + helper = !/opt/homebrew/bin/gh auth git-credential From 5e6137e1e978d6062321f15b7c1c910b9bca93c4 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 18 Jun 2025 11:08:35 +0100 Subject: [PATCH 654/973] Add fish config skeleton. --- fish/completions/.keep | 0 fish/conf.d/.keep | 0 fish/config.fish | 3 +++ fish/fish_variables | 31 +++++++++++++++++++++++++++++++ fish/functions/.keep | 0 5 files changed, 34 insertions(+) create mode 100644 fish/completions/.keep create mode 100644 fish/conf.d/.keep create mode 100644 fish/config.fish create mode 100644 fish/fish_variables create mode 100644 fish/functions/.keep diff --git a/fish/completions/.keep b/fish/completions/.keep new file mode 100644 index 00000000..e69de29b diff --git a/fish/conf.d/.keep b/fish/conf.d/.keep new file mode 100644 index 00000000..e69de29b diff --git a/fish/config.fish b/fish/config.fish new file mode 100644 index 00000000..d714361f --- /dev/null +++ b/fish/config.fish @@ -0,0 +1,3 @@ +if status is-interactive + # Commands to run in interactive sessions can go here +end diff --git a/fish/fish_variables b/fish/fish_variables new file mode 100644 index 00000000..74b1ee1b --- /dev/null +++ b/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:normal +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/fish/functions/.keep b/fish/functions/.keep new file mode 100644 index 00000000..e69de29b From 9efc0c9d13278ffd1aac42fb1bc11768bf56d575 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 18 Jun 2025 11:22:06 +0100 Subject: [PATCH 655/973] Symlink fish directory. --- _setupdotfiles.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh index 060e60d1..ff53becd 100755 --- a/_setupdotfiles.sh +++ b/_setupdotfiles.sh @@ -77,14 +77,17 @@ if [ ! -d dotfiles ]; then exit 1 fi +echo "Symlinking dot files..." for dotfile in $DOTFILES; do symlinkifne $dotfile done +echo "Symlinking dot directories..." for dotdir in $DOTDIRS; do symlinkifne $dotdir done +echo "Symlinking Dropbox directories..." # Any directories you want linked from Dropbox. if [ -e ~/Dropbox/ ]; then for dropdir in $DROPDIRS; do @@ -94,6 +97,7 @@ if [ -e ~/Dropbox/ ]; then done fi +echo "Symlinking Dropbox files..." # Any files you want linked from Dropbox. if [ -e ~/Dropbox/ ]; then for dropfile in $DROPFILES; do @@ -103,9 +107,12 @@ if [ -e ~/Dropbox/ ]; then done fi +echo "Symlinking config directories..." mkdir -p ~/.config ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner +ln -sf ~/dotfiles/fish ~/.config/fish +echo "Creating Terraform directory..." mkdir -p ~/.terraform.d popd From 008a46d00de4f585fc98bf26f912ff9dacb9909c Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 26 Jun 2025 16:42:23 +0100 Subject: [PATCH 656/973] Add .cargo/bin to path. --- shellpaths | 1 + 1 file changed, 1 insertion(+) diff --git a/shellpaths b/shellpaths index b899a317..a78da022 100644 --- a/shellpaths +++ b/shellpaths @@ -10,6 +10,7 @@ export PATH=$PATH:~/bin export PATH=$PATH:~/dotfiles/scripts export PATH=$PATH:~/utils export PATH=$PATH:~/dotfiles/git/git-identify/bin +export PATH=$PATH:~/.cargo/bin export PATH=$PATH:$GOPATH/bin export PATH=$PATH:$GOROOT/bin #export PATH=~/pebble-dev/sdk/bin:$PATH From 366ca93453ce443b270b3f1423c85482e9190056 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 5 Aug 2025 10:18:36 +0100 Subject: [PATCH 657/973] Update Brewfile. --- Brewfile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Brewfile b/Brewfile index caedff86..30dac163 100644 --- a/Brewfile +++ b/Brewfile @@ -11,6 +11,7 @@ tap "dutchcoders/cloudman" tap "eddieantonio/eddieantonio" tap "github/bootstrap" tap "github/gh" +tap "messense/macos-cross-toolchains" tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git" tap "nvie/tap" tap "romkatv/powerlevel10k" @@ -54,6 +55,7 @@ brew "bitwarden-cli" brew "black" brew "brew-cask-completion" brew "bzip2" +brew "cargo-binstall" brew "gcc" brew "checkov" brew "chezmoi" @@ -90,6 +92,7 @@ brew "xvid" brew "zeromq" brew "ffmpeg" brew "figlet" +brew "fish" brew "flake8" brew "fzf" brew "get_iplayer" @@ -139,6 +142,7 @@ brew "iproute2mac" brew "ipython" brew "isort" brew "jfrog-cli" +brew "jj" brew "jless" brew "jq" brew "jsonlint" @@ -164,6 +168,7 @@ brew "mtr" brew "mypy" brew "ncftp" brew "neovim" +brew "nushell" brew "ocrad" brew "okta-aws-cli" brew "openconnect" @@ -196,7 +201,6 @@ brew "pyenv-virtualenv" brew "pyenv-virtualenvwrapper" brew "pygments" brew "python-packaging" -brew "python@3.9" brew "qemu" brew "qt" brew "rake-completion" @@ -235,6 +239,7 @@ brew "vim" brew "wget" brew "xpdf" brew "yaegi" +brew "yamlfmt" brew "yamllint" brew "zig" brew "zlib" @@ -247,15 +252,17 @@ brew "charmbracelet/tap/skate" brew "common-fate/granted/granted" brew "coretech/terrafile/terrafile" brew "dutchcoders/cloudman/cloudman" +brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu" brew "mkchoi212/fac/fac" brew "sachaos/todoist/todoist" brew "taiki-e/tap/cargo-llvm-cov" cask "alt-tab" -cask "aws-vault" +cask "aws-vault-binary" cask "bartender" cask "beardedspice" cask "bitwarden" cask "doll" +cask "drawio" cask "firefox" cask "font-anonymice-powerline" cask "font-consolas-for-powerline" @@ -357,6 +364,7 @@ vscode "mellowmarshmallow.groovy" vscode "mermaidchart.vscode-mermaid-chart" vscode "mrmlnc.vscode-duplicate" vscode "ms-azuretools.vscode-containers" +vscode "ms-azuretools.vscode-docker" vscode "ms-python.debugpy" vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" @@ -388,5 +396,6 @@ vscode "takumii.markdowntable" vscode "tamasfe.even-better-toml" vscode "timonwong.shellcheck" vscode "tomoki1207.pdf" +vscode "visualjj.visualjj" vscode "vscode-icons-team.vscode-icons" vscode "ziglang.vscode-zig" From 2362cdafa32118e283454e16c2e90b1a073919ab Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 26 Aug 2025 14:52:12 +0100 Subject: [PATCH 658/973] Handle completed nested todos. --- obsidian/daily-note.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py index 2833b3d0..46a52711 100755 --- a/obsidian/daily-note.py +++ b/obsidian/daily-note.py @@ -9,7 +9,6 @@ import subprocess import sys - DAYMD_SCRIPT = "dotfiles/scripts/daymd" @@ -126,9 +125,9 @@ def main(): if line.startswith("## Agenda") and start > 0: end = i - 1 todo_lines = prev_data_lines[start:end] - # - Remove any items done + # - Remove any items done (including done nested todos) for line in todo_lines: - if not line.startswith(("- [x]", "- [X]")): + if not line.strip().startswith(("- [x]", "- [X]")): file_lines.append(line.strip("\n")) file_lines.append("") From 4a6c13f13c329c8720abe9e400f667f9fb3c5e89 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Thu, 4 Sep 2025 15:06:34 +0100 Subject: [PATCH 659/973] Update Brewfile. --- Brewfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Brewfile b/Brewfile index 30dac163..4712281c 100644 --- a/Brewfile +++ b/Brewfile @@ -40,6 +40,7 @@ brew "node" brew "aws-cdk" brew "aws-shell" brew "awscli" +brew "bandwhich" brew "base64" brew "bash" brew "bash-completion" @@ -159,9 +160,10 @@ brew "llvm" brew "make" brew "markdownlint-cli" brew "mas" -brew "md5sha1sum", link: false +brew "md5sha1sum" brew "mdbook" brew "micro" +brew "microsocks" brew "mmark" brew "mplayer" brew "mtr" @@ -213,6 +215,7 @@ brew "robot-framework" brew "ruff" brew "rustup" brew "scc" +brew "sccache" brew "semgrep" brew "shellcheck" brew "socat" @@ -241,6 +244,7 @@ brew "xpdf" brew "yaegi" brew "yamlfmt" brew "yamllint" +brew "yt-dlp" brew "zig" brew "zlib" brew "zoxide" @@ -322,8 +326,10 @@ mas "Microsoft Word", id: 462054704 mas "Notability", id: 360593530 mas "Okta Extension App", id: 1439967473 mas "Okta Verify", id: 490179405 +mas "Proxy", id: 0 mas "Speedtest", id: 1153157709 mas "Tailscale", id: 1475387142 +mas "TestFlight", id: 899247664 mas "The Unarchiver", id: 425424353 mas "Windows App", id: 1295203466 mas "Xcode", id: 497799835 @@ -370,6 +376,7 @@ vscode "ms-python.isort" vscode "ms-python.mypy-type-checker" vscode "ms-python.python" vscode "ms-python.vscode-pylance" +vscode "ms-python.vscode-python-envs" vscode "ms-toolsai.jupyter" vscode "ms-toolsai.jupyter-keymap" vscode "ms-toolsai.jupyter-renderers" From 159dae249c125fcb4646bcd079147656c6352109 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Tue, 23 Sep 2025 13:23:07 +0100 Subject: [PATCH 660/973] Update iTerm2 shell integration. --- iterm2_shell_integration.zsh | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/iterm2_shell_integration.zsh b/iterm2_shell_integration.zsh index 21e0b0de..31080ce3 100755 --- a/iterm2_shell_integration.zsh +++ b/iterm2_shell_integration.zsh @@ -13,12 +13,16 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. if [[ -o interactive ]]; then - if [ "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "screen" -a "${ITERM_SHELL_INTEGRATION_INSTALLED-}" = "" -a "$TERM" != linux -a "$TERM" != dumb ]; then + if [ "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "tmux-256color" -a "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "screen" -a "${ITERM_SHELL_INTEGRATION_INSTALLED-}" = "" -a "$TERM" != linux -a "$TERM" != dumb ]; then ITERM_SHELL_INTEGRATION_INSTALLED=Yes ITERM2_SHOULD_DECORATE_PROMPT="1" # Indicates start of command output. Runs just before command executes. iterm2_before_cmd_executes() { - printf "\033]133;C;\007" + if [ "$TERM_PROGRAM" = "iTerm.app" ]; then + printf "\033]133;C;\r\007" + else + printf "\033]133;C;\007" + fi } iterm2_set_user_var() { @@ -108,7 +112,7 @@ if [[ -o interactive ]]; then ITERM2_SHOULD_DECORATE_PROMPT="" # Add our escape sequences just before the prompt is shown. - # Use ITERM2_SQUELCH_MARK for people who can't mdoify PS1 directly, like powerlevel9k users. + # Use ITERM2_SQUELCH_MARK for people who can't modify PS1 directly, like powerlevel9k users. # This is gross but I had a heck of a time writing a correct if statetment for zsh 5.0.2. local PREFIX="" if [[ $PS1 == *"$(iterm2_prompt_mark)"* ]]; then @@ -119,6 +123,7 @@ if [[ -o interactive ]]; then PREFIX="%{$(iterm2_prompt_mark)%}" fi PS1="$PREFIX$PS1%{$(iterm2_prompt_end)%}" + ITERM2_DECORATED_PS1="$PS1" } iterm2_precmd() { @@ -126,6 +131,10 @@ if [[ -o interactive ]]; then if [ -z "${ITERM2_SHOULD_DECORATE_PROMPT-}" ]; then # You pressed ^C while entering a command (iterm2_preexec did not run) iterm2_before_cmd_executes + if [ "$PS1" != "${ITERM2_DECORATED_PS1-}" ]; then + # PS1 changed, perhaps in another precmd. See issue 9938. + ITERM2_SHOULD_DECORATE_PROMPT="1" + fi fi iterm2_after_cmd_executes "$STATUS" @@ -164,9 +173,8 @@ if [[ -o interactive ]]; then preexec_functions=($preexec_functions iterm2_preexec) iterm2_print_state_data - printf "\033]1337;ShellIntegrationVersion=12;shell=zsh\007" + printf "\033]1337;ShellIntegrationVersion=14;shell=zsh\007" fi fi - -# DISABLED because of issues with iTerm2 imgcat! -#alias imgcat=/Users/james.lawton/.iterm2/imgcat;alias imgls=/Users/james.lawton/.iterm2/imgls;alias it2api=/Users/james.lawton/.iterm2/it2api;alias it2attention=/Users/james.lawton/.iterm2/it2attention;alias it2check=/Users/james.lawton/.iterm2/it2check;alias it2copy=/Users/james.lawton/.iterm2/it2copy;alias it2dl=/Users/james.lawton/.iterm2/it2dl;alias it2getvar=/Users/james.lawton/.iterm2/it2getvar;alias it2git=/Users/james.lawton/.iterm2/it2git;alias it2setcolor=/Users/james.lawton/.iterm2/it2setcolor;alias it2setkeylabel=/Users/james.lawton/.iterm2/it2setkeylabel;alias it2ul=/Users/james.lawton/.iterm2/it2ul;alias it2universion=/Users/james.lawton/.iterm2/it2universion +#alias imgcat=${HOME}/.iterm2/imgcat;alias imgls=${HOME}/.iterm2/imgls;alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2tip=${HOME}/.iterm2/it2tip;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion;alias it2profile=${HOME}/.iterm2/it2profile;alias it2cat=${HOME}/.iterm2/it2cat +alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2tip=${HOME}/.iterm2/it2tip;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion;alias it2profile=${HOME}/.iterm2/it2profile;alias it2cat=${HOME}/.iterm2/it2cat From edd5143bfc6a80ee1a270b691d124653216935e9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:21:47 +0000 Subject: [PATCH 661/973] Remove obsolete bits. --- .gitmodules | 3 -- glance/.env | 3 -- glance/assets/user.css | 0 glance/config/glance.yml | 12 ------ glance/config/home.yml | 88 --------------------------------------- glance/docker-compose.yml | 13 ------ go-bash-completion | 1 - 7 files changed, 120 deletions(-) delete mode 100644 glance/.env delete mode 100644 glance/assets/user.css delete mode 100644 glance/config/glance.yml delete mode 100644 glance/config/home.yml delete mode 100644 glance/docker-compose.yml delete mode 160000 go-bash-completion diff --git a/.gitmodules b/.gitmodules index abe2d944..fe66110c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,9 +52,6 @@ [submodule "git/mingit"] path = git/mingit url = https://github.com/jimlawton/mingit.git -[submodule "go-bash-completion"] - path = go-bash-completion - url = https://github.com/jimlawton/go-bash-completion.git [submodule "git/git-identify"] path = git/git-identify url = https://github.com/ConnorAtherton/git-identify.git diff --git a/glance/.env b/glance/.env deleted file mode 100644 index 146599f7..00000000 --- a/glance/.env +++ /dev/null @@ -1,3 +0,0 @@ -# Variables defined here will be available to use anywhere in the config with the syntax ${MY_SECRET_TOKEN} -# Note: making changes to this file requires re-running docker compose up -MY_SECRET_TOKEN=123456 diff --git a/glance/assets/user.css b/glance/assets/user.css deleted file mode 100644 index e69de29b..00000000 diff --git a/glance/config/glance.yml b/glance/config/glance.yml deleted file mode 100644 index a4902e30..00000000 --- a/glance/config/glance.yml +++ /dev/null @@ -1,12 +0,0 @@ -server: - assets-path: /app/assets - -theme: - # Note: assets are cached by the browser, changes to the CSS file - # will not be reflected until the browser cache is cleared (Ctrl+F5) - custom-css-file: /assets/user.css - -pages: - # It's not necessary to create a new file for each page and include it, you can simply - # put its contents here, though multiple pages are easier to manage when separated - !include: home.yml diff --git a/glance/config/home.yml b/glance/config/home.yml deleted file mode 100644 index f9a588a0..00000000 --- a/glance/config/home.yml +++ /dev/null @@ -1,88 +0,0 @@ -- name: Home - # Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look - # hide-desktop-navigation: true - columns: - - size: small - widgets: - - type: calendar - first-day-of-week: monday - - - type: rss - limit: 10 - collapse-after: 3 - cache: 12h - feeds: - - url: https://selfh.st/rss/ - title: selfh.st - - url: https://ciechanow.ski/atom.xml - - url: https://www.joshwcomeau.com/rss.xml - title: Josh Comeau - - url: https://samwho.dev/rss.xml - - url: https://ishadeed.com/feed.xml - title: Ahmad Shadeed - - - type: twitch-channels - channels: - - theprimeagen - - j_blow - - piratesoftware - - cohhcarnage - - christitustech - - EJ_SA - - - size: full - widgets: - - type: group - widgets: - - type: hacker-news - - type: lobsters - - - type: videos - channels: - - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips - - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling - - UCsBjURrPoezykLs9EqgamOA # Fireship - - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee - - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium - - - type: group - widgets: - - type: reddit - subreddit: technology - show-thumbnails: true - - type: reddit - subreddit: selfhosted - show-thumbnails: true - - - size: small - widgets: - - type: weather - location: Cork, Ireland - units: metric # alternatively "imperial" - hour-format: 12h # alternatively "24h" - # Optionally hide the location from being displayed in the widget - # hide-location: true - - - type: markets - markets: - - symbol: SPY - name: S&P 500 - - symbol: BTC-USD - name: Bitcoin - - symbol: NVDA - name: NVIDIA - - symbol: AAPL - name: Apple - - symbol: MSFT - name: Microsoft - - - type: releases - cache: 1d - # Without authentication the Github API allows for up to 60 requests per hour. You can create a - # read-only token from your Github account settings and use it here to increase the limit. - # token: ... - repositories: - - glanceapp/glance - - go-gitea/gitea - - immich-app/immich - - syncthing/syncthing diff --git a/glance/docker-compose.yml b/glance/docker-compose.yml deleted file mode 100644 index 6251f16c..00000000 --- a/glance/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -services: - glance: - container_name: glance - image: glanceapp/glance - restart: unless-stopped - volumes: - - ./config:/app/config - - ./assets:/app/assets - # Optionally, also mount docker socket if you want to use the docker containers widget - # - /var/run/docker.sock:/var/run/docker.sock:ro - ports: - - 8080:8080 - env_file: .env diff --git a/go-bash-completion b/go-bash-completion deleted file mode 160000 index 73c7543f..00000000 --- a/go-bash-completion +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 73c7543f2a295d27ae9bc71baa1ef1a858447eae From 3d508d3d4524e5e7523d50f90744f4388a0806e5 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:22:20 +0000 Subject: [PATCH 662/973] Remove old Atom and Sublime proxy scripts. --- atom/atom-set-proxy.py | 57 ------------------------------- sublime-text/sublime-set-proxy.py | 56 ------------------------------ 2 files changed, 113 deletions(-) delete mode 100755 atom/atom-set-proxy.py delete mode 100755 sublime-text/sublime-set-proxy.py diff --git a/atom/atom-set-proxy.py b/atom/atom-set-proxy.py deleted file mode 100755 index ff2a1b80..00000000 --- a/atom/atom-set-proxy.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python -# Python script to set/unset Atom Package Manager proxy setting. -# Jim Lawton, 29th June, 2015. - -from __future__ import print_function -import os -import os.path -import sys -from optparse import OptionParser - -_APM_CFGFILE = ".atom/.apmrc" -_NPM_CFGFILE = ".npmrc" - - -def _getOpts(): - """Parse command line options and arguments.""" - usage = "%prog [options] [proxy-url]" - parser = OptionParser(usage=usage, - description="Set/unset Atom Package Manager " - "proxy setting.") - (opts, args) = parser.parse_args() - opts.proxy = None - if len(args) > 0: - opts.proxy = args[0] - return (opts, args) - - -def main(): - "Main function." - opts, args = _getOpts() - - for cfgfile in [_APM_CFGFILE, _NPM_CFGFILE]: - cfgfile = os.path.join(os.getenv("HOME"), cfgfile) - if not os.path.exists(cfgfile): - # print("Config file %s does not exist!" % cfgfile) - return - - lines = newlines = [] - with open(cfgfile, 'r') as f: - lines = f.readlines() - for line in lines: - newline = None - if "proxy" in line: - continue - else: - newline = line - if newline: - newlines.append(newline) - if opts.proxy: - newlines.append("proxy = %s\n" % opts.proxy) - newlines.append("https-proxy = %s\n" % opts.proxy) - with open(cfgfile, 'w') as f: - f.writelines(newlines) - - -if __name__ == '__main__': - main() diff --git a/sublime-text/sublime-set-proxy.py b/sublime-text/sublime-set-proxy.py deleted file mode 100755 index 4766f3b8..00000000 --- a/sublime-text/sublime-set-proxy.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# Python script to set/unset SublimeText Package Control proxy setting. -# Jim Lawton, 26th April, 2014. - -from __future__ import print_function -import os -import os.path -import sys -from optparse import OptionParser -import json - -_CFGFILE = ".config/sublime-text-3/Packages/User/Package Control.sublime-settings" - - -def _getOpts(): - """Parse command line options and arguments.""" - usage = "%prog [options] [proxy-url]" - parser = OptionParser(usage=usage, - description="Set/unset SublimeText Package Control " - "proxy setting.") - (opts, args) = parser.parse_args() - opts.proxy = None - if len(args) > 0: - opts.proxy = args[0] - return (opts, args) - - -def main(): - "Main function." - opts, args = _getOpts() - - cfgfile = os.path.join(os.getenv("HOME"), _CFGFILE) - config = {} - if os.path.exists(cfgfile): - with open(cfgfile, 'r') as f: - config = json.load(f) - - if "http_proxy" in config.keys(): - if opts.proxy: - #print("Setting SublimeText proxy to %s" % opts.proxy) - config["http_proxy"] = opts.proxy - else: - #print("Clearing SublimeText proxy setting") - del config["http_proxy"] - else: - if opts.proxy: - #print("Setting SublimeText proxy to %s" % opts.proxy) - config["http_proxy"] = opts.proxy - - with open(cfgfile, 'w') as f: - json.dump(config, f, indent=8, sort_keys=True) - - -if __name__ == '__main__': - main() - sys.exit(0) From 8cf80fca62def683a9a4317fbd113ec3955ac55a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:23:19 +0000 Subject: [PATCH 663/973] Remove icdiff. --- .gitmodules | 3 --- icdiff | 1 - 2 files changed, 4 deletions(-) delete mode 160000 icdiff diff --git a/.gitmodules b/.gitmodules index fe66110c..15402a63 100644 --- a/.gitmodules +++ b/.gitmodules @@ -43,9 +43,6 @@ [submodule "vim/bundle/tabnine-vim"] path = vim/bundle/tabnine-vim url = https://github.com/zxqfl/tabnine-vim.git -[submodule "icdiff"] - path = icdiff - url = https://github.com/jeffkaufman/icdiff.git [submodule "autoenv"] path = autoenv url = http://github.com/kennethreitz/autoenv.git diff --git a/icdiff b/icdiff deleted file mode 160000 index 7b3692c7..00000000 --- a/icdiff +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7b3692c79555e981e3cdc6da1fdfabf5e7b0a4ea From 948465787b02b3be92fe96352b5f121a9bc8edaf Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:25:41 +0000 Subject: [PATCH 664/973] Update crontab. --- crontab.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crontab.txt b/crontab.txt index 52426423..60e70baa 100644 --- a/crontab.txt +++ b/crontab.txt @@ -1,3 +1,3 @@ 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1 -0,15,30,45 9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 -0,15,30,45 9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 +0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1 +0,15,30,45 8,9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1 From 4573ec6820aebe99131dd3278f82c2cad3707010 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:51:15 +0000 Subject: [PATCH 665/973] Prune vim config and addons. --- .gitmodules | 36 ---- vim/autoload/pathogen.vim | 328 ------------------------------------- vim/bundle/FuzzyFinder | 1 - vim/bundle/L9 | 1 - vim/bundle/command-t | 1 - vim/bundle/sparkup | 1 - vim/bundle/vim-easymotion | 1 - vim/bundle/vim-fugitive | 1 - vim/bundle/vim-liquid | 1 - vim/bundle/vim-markdown | 1 - vim/bundle/vim-scriptease | 1 - vim/bundle/vim-sensible | 1 - vim/bundle/vim-surround | 1 - vim/bundle/vundle | 1 - vim/syntax/CVSAnnotate.vim | 45 ----- vim/syntax/SVKAnnotate.vim | 42 ----- vim/syntax/SVNAnnotate.vim | 40 ----- vim/syntax/logs-tmp.vim | 38 ----- vim/syntax/logs_old.vim | 50 ------ vim/syntax/nds-logs.vim | 44 ----- vim/syntax/ndslog.vim | 43 ----- vim/syntax/svn.vim | 57 ------- vim/syntax/svnlog.vim | 93 ----------- vim/syntax/vts_log.vim | 30 ---- vimrc | 42 +---- 25 files changed, 1 insertion(+), 899 deletions(-) delete mode 100644 vim/autoload/pathogen.vim delete mode 160000 vim/bundle/FuzzyFinder delete mode 160000 vim/bundle/L9 delete mode 160000 vim/bundle/command-t delete mode 160000 vim/bundle/sparkup delete mode 160000 vim/bundle/vim-easymotion delete mode 160000 vim/bundle/vim-fugitive delete mode 160000 vim/bundle/vim-liquid delete mode 160000 vim/bundle/vim-markdown delete mode 160000 vim/bundle/vim-scriptease delete mode 160000 vim/bundle/vim-sensible delete mode 160000 vim/bundle/vim-surround delete mode 160000 vim/bundle/vundle delete mode 100644 vim/syntax/CVSAnnotate.vim delete mode 100644 vim/syntax/SVKAnnotate.vim delete mode 100644 vim/syntax/SVNAnnotate.vim delete mode 100644 vim/syntax/logs-tmp.vim delete mode 100644 vim/syntax/logs_old.vim delete mode 100644 vim/syntax/nds-logs.vim delete mode 100644 vim/syntax/ndslog.vim delete mode 100644 vim/syntax/svn.vim delete mode 100644 vim/syntax/svnlog.vim delete mode 100644 vim/syntax/vts_log.vim diff --git a/.gitmodules b/.gitmodules index 15402a63..6fcaff70 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,45 +1,9 @@ -[submodule "vim-fugitive"] - path = vim/bundle/vim-fugitive - url = https://github.com/tpope/vim-fugitive.git -[submodule "vim-markdown"] - path = vim/bundle/vim-markdown - url = https://github.com/tpope/vim-markdown.git -[submodule "vim-sensible"] - path = vim/bundle/vim-sensible - url = https://github.com/tpope/vim-sensible.git -[submodule "vim-liquid"] - path = vim/bundle/vim-liquid - url = https://github.com/tpope/vim-liquid.git -[submodule "vim-scriptease"] - path = vim/bundle/vim-scriptease - url = https://github.com/tpope/vim-scriptease.git -[submodule "vim-surround"] - path = vim/bundle/vim-surround - url = https://github.com/tpope/vim-surround.git [submodule "scripts"] path = scripts url = https://github.com/jimlawton/scripts [submodule "unison-sync"] path = unison-sync url = https://github.com/jimlawton/unison-sync -[submodule "vim/bundle/vundle"] - path = vim/bundle/vundle - url = https://github.com/gmarik/vundle.git -[submodule "vim/bundle/vim-easymotion"] - path = vim/bundle/vim-easymotion - url = https://github.com/Lokaltog/vim-easymotion -[submodule "vim/bundle/sparkup"] - path = vim/bundle/sparkup - url = https://github.com/rstacruz/sparkup -[submodule "vim/bundle/L9"] - path = vim/bundle/L9 - url = https://github.com/vim-scripts/L9 -[submodule "vim/bundle/FuzzyFinder"] - path = vim/bundle/FuzzyFinder - url = https://github.com/vim-scripts/FuzzyFinder -[submodule "vim/bundle/command-t"] - path = vim/bundle/command-t - url = https://github.com/wincent/Command-T.git [submodule "vim/bundle/tabnine-vim"] path = vim/bundle/tabnine-vim url = https://github.com/zxqfl/tabnine-vim.git diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim deleted file mode 100644 index 16c21feb..00000000 --- a/vim/autoload/pathogen.vim +++ /dev/null @@ -1,328 +0,0 @@ -" pathogen.vim - path option manipulation -" Maintainer: Tim Pope -" Version: 2.2 - -" Install in ~/.vim/autoload (or ~\vimfiles\autoload). -" -" For management of individually installed plugins in ~/.vim/bundle (or -" ~\vimfiles\bundle), adding `call pathogen#infect()` to the top of your -" .vimrc is the only other setup necessary. -" -" The API is documented inline below. For maximum ease of reading, -" :set foldmethod=marker - -if exists("g:loaded_pathogen") || &cp - finish -endif -let g:loaded_pathogen = 1 - -function! s:warn(msg) - if &verbose - echohl WarningMsg - echomsg a:msg - echohl NONE - endif -endfunction - -" Point of entry for basic default usage. Give a relative path to invoke -" pathogen#incubate() (defaults to "bundle/{}"), or an absolute path to invoke -" pathogen#surround(). For backwards compatibility purposes, a full path that -" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories() -" instead. -function! pathogen#infect(...) abort " {{{1 - for path in a:0 ? reverse(copy(a:000)) : ['bundle/{}'] - if path =~# '^[^\\/]\+$' - call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') - call pathogen#incubate(path . '/{}') - elseif path =~# '^[^\\/]\+[\\/]\%({}\|\*\)$' - call pathogen#incubate(path) - elseif path =~# '[\\/]\%({}\|\*\)$' - call pathogen#surround(path) - else - call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') - call pathogen#surround(path . '/{}') - endif - endfor - call pathogen#cycle_filetype() - return '' -endfunction " }}}1 - -" Split a path into a list. -function! pathogen#split(path) abort " {{{1 - if type(a:path) == type([]) | return a:path | endif - let split = split(a:path,'\\\@"),'!isdirectory(v:val)')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags')) - helptags `=dir.'/doc'` - endif - endfor - endfor -endfunction " }}}1 - -command! -bar Helptags :call pathogen#helptags() - -" Execute the given command. This is basically a backdoor for --remote-expr. -function! pathogen#execute(...) abort " {{{1 - for command in a:000 - execute command - endfor - return '' -endfunction " }}}1 - -" Like findfile(), but hardcoded to use the runtimepath. -function! pathogen#runtime_findfile(file,count) abort "{{{1 - let rtp = pathogen#join(1,pathogen#split(&rtp)) - let file = findfile(a:file,rtp,a:count) - if file ==# '' - return '' - else - return fnamemodify(file,':p') - endif -endfunction " }}}1 - -" Backport of fnameescape(). -function! pathogen#fnameescape(string) abort " {{{1 - if exists('*fnameescape') - return fnameescape(a:string) - elseif a:string ==# '-' - return '\-' - else - return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','') - endif -endfunction " }}}1 - -if exists(':Vedit') - finish -endif - -let s:vopen_warning = 0 - -function! s:find(count,cmd,file,lcd) " {{{1 - let rtp = pathogen#join(1,pathogen#split(&runtimepath)) - let file = pathogen#runtime_findfile(a:file,a:count) - if file ==# '' - return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'" - endif - if !s:vopen_warning - let s:vopen_warning = 1 - let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE' - else - let warning = '' - endif - if a:lcd - let path = file[0:-strlen(a:file)-2] - execute 'lcd `=path`' - return a:cmd.' '.pathogen#fnameescape(a:file) . warning - else - return a:cmd.' '.pathogen#fnameescape(file) . warning - endif -endfunction " }}}1 - -function! s:Findcomplete(A,L,P) " {{{1 - let sep = pathogen#separator() - let cheats = { - \'a': 'autoload', - \'d': 'doc', - \'f': 'ftplugin', - \'i': 'indent', - \'p': 'plugin', - \'s': 'syntax'} - if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0]) - let request = cheats[a:A[0]].a:A[1:-1] - else - let request = a:A - endif - let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*' - let found = {} - for path in pathogen#split(&runtimepath) - let path = expand(path, ':p') - let matches = split(glob(path.sep.pattern),"\n") - call map(matches,'isdirectory(v:val) ? v:val.sep : v:val') - call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]') - for match in matches - let found[match] = 1 - endfor - endfor - return sort(keys(found)) -endfunction " }}}1 - -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(,'edit',,0) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(,'edit',,0) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(,'edit',,1) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(,'split',,1) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(,'vsplit',,1) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',,1) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(,'pedit',,1) -command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(,'read',,1) - -" vim:set et sw=2: diff --git a/vim/bundle/FuzzyFinder b/vim/bundle/FuzzyFinder deleted file mode 160000 index b9f16597..00000000 --- a/vim/bundle/FuzzyFinder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b9f165970346df55862853dd83c8a4f2b2b70262 diff --git a/vim/bundle/L9 b/vim/bundle/L9 deleted file mode 160000 index c822b05e..00000000 --- a/vim/bundle/L9 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c822b05ee0886f9a9703227dc85a6d47612c4bf1 diff --git a/vim/bundle/command-t b/vim/bundle/command-t deleted file mode 160000 index 3e937f91..00000000 --- a/vim/bundle/command-t +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3e937f91260acca0061d884d0ff3c9a521c1fde9 diff --git a/vim/bundle/sparkup b/vim/bundle/sparkup deleted file mode 160000 index d400a570..00000000 --- a/vim/bundle/sparkup +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d400a570bf64b0c216aa7c8e1795820b911a7404 diff --git a/vim/bundle/vim-easymotion b/vim/bundle/vim-easymotion deleted file mode 160000 index b3cfab2a..00000000 --- a/vim/bundle/vim-easymotion +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b3cfab2a6302b3b39f53d9fd2cd997e1127d7878 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive deleted file mode 160000 index d74a7cff..00000000 --- a/vim/bundle/vim-fugitive +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d74a7cff4cfcf84f83cc7eccfa365488f3bbabc2 diff --git a/vim/bundle/vim-liquid b/vim/bundle/vim-liquid deleted file mode 160000 index fd2f0017..00000000 --- a/vim/bundle/vim-liquid +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fd2f0017fbc50f214db2f57c207c34cda3aa1522 diff --git a/vim/bundle/vim-markdown b/vim/bundle/vim-markdown deleted file mode 160000 index f9f845f2..00000000 --- a/vim/bundle/vim-markdown +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f9f845f28f4da33a7655accb22f4ad21f7d9fb66 diff --git a/vim/bundle/vim-scriptease b/vim/bundle/vim-scriptease deleted file mode 160000 index cdb5981d..00000000 --- a/vim/bundle/vim-scriptease +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cdb5981d47ac98221a408ae2e7cae66524d9e872 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible deleted file mode 160000 index 0ce2d843..00000000 --- a/vim/bundle/vim-sensible +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0ce2d843d6f588bb0c8c7eec6449171615dc56d9 diff --git a/vim/bundle/vim-surround b/vim/bundle/vim-surround deleted file mode 160000 index 3d188ed2..00000000 --- a/vim/bundle/vim-surround +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3d188ed2113431cf8dac77be61b842acb64433d9 diff --git a/vim/bundle/vundle b/vim/bundle/vundle deleted file mode 160000 index 5548a1a9..00000000 --- a/vim/bundle/vundle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5548a1a937d4e72606520c7484cd384e6c76b565 diff --git a/vim/syntax/CVSAnnotate.vim b/vim/syntax/CVSAnnotate.vim deleted file mode 100644 index 4af5809f..00000000 --- a/vim/syntax/CVSAnnotate.vim +++ /dev/null @@ -1,45 +0,0 @@ -" Vim syntax file -" Language: CVS annotate output -" Maintainer: Bob Hiestand -" Remark: Used by the cvscommand plugin. Originally written by Mathieu -" Clabaut -" License: -" Copyright (c) 2007 Bob Hiestand -" -" Permission is hereby granted, free of charge, to any person obtaining a copy -" of this software and associated documentation files (the "Software"), to -" deal in the Software without restriction, including without limitation the -" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -" sell copies of the Software, and to permit persons to whom the Software is -" furnished to do so, subject to the following conditions: -" -" The above copyright notice and this permission notice shall be included in -" all copies or substantial portions of the Software. -" -" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -" IN THE SOFTWARE. - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn match cvsDate /\d\d-...-\d\d/ contained -syn match cvsName /(\S* /hs=s+1,he=e-1 contained nextgroup=cvsDate -syn match cvsVer /^\d\+\(\.\d\+\)\+/ contained nextgroup=cvsName -syn region cvsHead start="^\d\+\.\d\+" end="):" contains=cvsVer,cvsName,cvsDate - -if !exists("did_cvsannotate_syntax_inits") - let did_cvsannotate_syntax_inits = 1 - hi link cvsDate Comment - hi link cvsName Type - hi link cvsVer Statement -endif - -let b:current_syntax="CVSAnnotate" diff --git a/vim/syntax/SVKAnnotate.vim b/vim/syntax/SVKAnnotate.vim deleted file mode 100644 index 3c53c3ca..00000000 --- a/vim/syntax/SVKAnnotate.vim +++ /dev/null @@ -1,42 +0,0 @@ -" Vim syntax file -" Language: SVK annotate output -" Maintainer: Bob Hiestand -" Remark: Used by the vcscommand plugin. -" License: -" Copyright (c) 2007 Bob Hiestand -" -" Permission is hereby granted, free of charge, to any person obtaining a copy -" of this software and associated documentation files (the "Software"), to -" deal in the Software without restriction, including without limitation the -" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -" sell copies of the Software, and to permit persons to whom the Software is -" furnished to do so, subject to the following conditions: -" -" The above copyright notice and this permission notice shall be included in -" all copies or substantial portions of the Software. -" -" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -" IN THE SOFTWARE. - -if exists("b:current_syntax") - finish -endif - -syn match svkDate /\d\{4}-\d\{1,2}-\d\{1,2}/ skipwhite contained -syn match svkName /(\s*\zs\S\+/ contained nextgroup=svkDate skipwhite -syn match svkVer /^\s*\d\+/ contained nextgroup=svkName skipwhite -syn region svkHead start=/^/ end="):" contains=svkVer,svkName,svkDate oneline - -if !exists("did_svkannotate_syntax_inits") - let did_svkannotate_syntax_inits = 1 - hi link svkName Type - hi link svkDate Comment - hi link svkVer Statement -endif - -let b:current_syntax="svkAnnotate" diff --git a/vim/syntax/SVNAnnotate.vim b/vim/syntax/SVNAnnotate.vim deleted file mode 100644 index d46f771e..00000000 --- a/vim/syntax/SVNAnnotate.vim +++ /dev/null @@ -1,40 +0,0 @@ -" Vim syntax file -" Language: SVN annotate output -" Maintainer: Bob Hiestand -" Remark: Used by the vcscommand plugin. -" License: -" Copyright (c) 2007 Bob Hiestand -" -" Permission is hereby granted, free of charge, to any person obtaining a copy -" of this software and associated documentation files (the "Software"), to -" deal in the Software without restriction, including without limitation the -" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -" sell copies of the Software, and to permit persons to whom the Software is -" furnished to do so, subject to the following conditions: -" -" The above copyright notice and this permission notice shall be included in -" all copies or substantial portions of the Software. -" -" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -" IN THE SOFTWARE. - -if exists("b:current_syntax") - finish -endif - -syn match svnName /\S\+/ contained -syn match svnVer /^\s\+\zs\d\+/ contained nextgroup=svnName skipwhite -syn match svnHead /^\s\+\d\+\s\+\S\+/ contains=svnVer,svnName - -if !exists("did_svnannotate_syntax_inits") - let did_svnannotate_syntax_inits = 1 - hi link svnName Type - hi link svnVer Statement -endif - -let b:current_syntax="svnAnnotate" diff --git a/vim/syntax/logs-tmp.vim b/vim/syntax/logs-tmp.vim deleted file mode 100644 index 4db1835b..00000000 --- a/vim/syntax/logs-tmp.vim +++ /dev/null @@ -1,38 +0,0 @@ -" Vim syntax file -" Language: Log files -" Maintainer: Jim Lawton (jim.lawton@gmail.com) -" Last change: August 13, 2008 - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - - -" shut case off -syn case ignore - -"syn match embraced "\[[^\]]*\]" contains=ip,time -"syn match errorlv "\[error\]\|\[warn\]\|\[notice\]" -syn match errorlv "\[error\]\|\[warn\]\|\[notice\]\|\[info\]" -syn match errorlver "\[error\]" -syn match time contained "[^0-9a-z]\([0-9]\{2}:\)\{2}[0-9]\{2}[^0-9a-z]" -syn match ip contained "[^0-9a-z]\([0-9]\{1,3}\.\)\{3}[0-9]\{1,3}[^0-9a-z]" -"syn match refer "referer: http://.*" - -command -nargs=+ HiLink hi def link - -"HiLink embraced String -HiLink errorlv Comment -HiLink errorlver Error -HiLink time Identifier -HiLink ip Special -"HiLink refer Keyword - -delcommand HiLink - -let b:current_syntax = "logs" - -" vim: ts=4 sw=4 - diff --git a/vim/syntax/logs_old.vim b/vim/syntax/logs_old.vim deleted file mode 100644 index 719a1a0b..00000000 --- a/vim/syntax/logs_old.vim +++ /dev/null @@ -1,50 +0,0 @@ -" Vim syntax file -" Language: Log files -" Maintainer: Jim Lawton -" Latest Revision: 2008-08-13 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -"syn match messagesBegin display '^' nextgroup=messagesDate -"syn match messagesPID contained display '\[\zs\d\+\ze\]' -"syn match messagesKernel '^kernel:' -"syn match messagesIP '\d\+\.\d\+\.\d\+\.\d\+' -"syn match messagesURL '\w\+://\S\+' -"syn match messagesText contained display '.*' -" \ contains=messagesNumber,messagesIP,messagesURL,messagesError - -"syn match messagesNumber '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*' - -syn match messagesFatal '^.*\<\(FATAL\|FAILED\|FAILURE\).*' -syn match messagesError '^.*\<\(ERROR\|ERRORS\).*' -syn match messagesWarn '^.*\<\(WARN\).*' -syn match messagesInfo '^.*\<\(INFO\).*' -syn match messagesEnter '^.*\<\(ENTER\).*' -syn match messagesExit '^.*\<\(EXIT\).*' - -"hi def link messagesDate Constant -"hi def link messagesHour Type -"hi def link messagesHost Identifier -"hi def link messagesLabel Operator -"hi def link messagesPID Constant -"hi def link messagesKernel Special -hi def link messagesFatal ErrorMsg -hi def link messagesError Operator -hi def link messagesWarn Identifier -hi def link messagesInfo Keyword -"hi def link messagesIP Constant -"hi def link messagesURL Underlined -"hi def link messagesText Normal -"hi def link messagesNumber Number -hi def link messagesEnter Type -hi def link messagesExit Type - -let b:current_syntax = "messages" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/vim/syntax/nds-logs.vim b/vim/syntax/nds-logs.vim deleted file mode 100644 index 815fe27c..00000000 --- a/vim/syntax/nds-logs.vim +++ /dev/null @@ -1,44 +0,0 @@ -" Vim syntax file -" Language: Log files -" Maintainer: Jim Lawton -" Latest Revision: 2008-08-13 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn match messages display '^NDS: \^[^>]*> ' contains=messagesDate,messagesSeverity,messagesComponent,messagesInfo,message nextgroup=messagesDate -syn match messagesDate contained display '\^\d\+\.\d\+ ' nextgroup=messagesSeverity -syn match messagesSeverity contained display '\![A-Z]* *' contains=messagesFatal,messagesError,messagesWarn,messagesInfo,messagesEnter,messagesExit nextgroup=messagesComponent -syn match messagesComponent contained display '-[^ ]* *' contains=wlm nextgroup=messagesStuff -syn match wlm contained display 'WLM_[^ ]*' -syn match messagesStuff contained display '<[^>]*> *' contains=messagesFunction -syn match messagesFunction contained display 'F:[^@]*'hs=s+2 - -syn match messagesFatal contained display '!FATAL' -syn match messagesError contained display '!ERROR' -syn match messagesWarn contained display '!WARN' -syn match messagesInfo contained display '!INFO' -syn match messagesEnter contained display '!ENTER' -syn match messagesExit contained display '!EXIT' - -hi def link messagesDate Constant -hi def link messagesSeverity Special -hi def link messagesComponent Identifier -hi def link messagesStuff Normal -hi messagesFunction ctermfg=3 -hi wlm cterm=bold ctermfg=3 -hi def link messagesFatal ErrorMsg -hi def link messagesError ErrorMsg -hi def link messagesWarn Identifier -hi def link messagesEnter Type -hi def link messagesExit Type - -let b:current_syntax = "messages" - -let &cpo = s:cpo_save -unlet s:cpo_save - diff --git a/vim/syntax/ndslog.vim b/vim/syntax/ndslog.vim deleted file mode 100644 index dc81dd82..00000000 --- a/vim/syntax/ndslog.vim +++ /dev/null @@ -1,43 +0,0 @@ -" Vim syntax file -" Language: Log files -" Maintainer: Jim Lawton -" Latest Revision: 2008-08-13 - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn match messages display '^NDS: \^[^>]*> ' contains=messagesDate,messagesSeverity,messagesComponent,messagesInfo,message nextgroup=messagesDate -syn match messagesDate contained display '\^\d\+\.\d\+ ' nextgroup=messagesSeverity -syn match messagesSeverity contained display '\![A-Z]* *' contains=messagesFatal,messagesError,messagesWarn,messagesInfo,messagesEnter,messagesExit nextgroup=messagesComponent -syn match messagesComponent contained display '-[^ ]* *' contains=wlm nextgroup=messagesStuff -syn match wlm contained display 'WLM_[^ ]*' -syn match messagesStuff contained display '<[^>]*> *' contains=messagesFunction -syn match messagesFunction contained display 'F:[^@]*'hs=s+2 - -syn match messagesFatal contained display '!FATAL' -syn match messagesError contained display '!ERROR' -syn match messagesWarn contained display '!WARN' -syn match messagesInfo contained display '!INFO' -syn match messagesEnter contained display '!ENTER' -syn match messagesExit contained display '!EXIT' - -hi def link messagesDate Constant -hi def link messagesSeverity Special -hi def link messagesComponent Identifier -hi def link messagesStuff Normal -hi messagesFunction ctermfg=3 -hi wlm cterm=bold ctermfg=3 -hi def link messagesFatal ErrorMsg -hi def link messagesError ErrorMsg -hi def link messagesWarn Identifier -hi def link messagesEnter Type -hi def link messagesExit Type - -let b:current_syntax = "messages" - -let &cpo = s:cpo_save -unlet s:cpo_save diff --git a/vim/syntax/svn.vim b/vim/syntax/svn.vim deleted file mode 100644 index ffa80f04..00000000 --- a/vim/syntax/svn.vim +++ /dev/null @@ -1,57 +0,0 @@ -" Vim syntax file -" Language: SVN commit file -" Maintainer: Ben Collins -" URL: XXX -" Last Change: Tue Oct 22 00:22:19 EDT 2002 - -" Based on the similar CVS commit file syntax - -" Place this file as ~/.vim/syntax/svn.vim -" -" Then add the following lines to ~/.vimrc -" -" au BufNewFile,BufRead svn-commit.* setf svn - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn cluster svnChange contains=svnAdd,svnDel,svnMod,svnProp -syn match svnLine /^--This line, and those below, will be ignored--$/ skipwhite skipnl skipempty nextgroup=@svnChange -syn match svnAdd /^A[M ] .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange -syn match svnDel /^D[M ] .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange -syn match svnMod /^M[M ] .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange -syn match svnProp /^_[M ] .*$/ contained skipwhite skipnl skipempty nextgroup=@svnChange - -"The following is the old SVN template format markings -" -"syn region svnLine start="^SVN:" end="$" contains=svnAdd,svnDel,svnMod -"syn match svnAdd contained " [A_][ A] .*" -"syn match svnDel contained " [D_][ D] .*" -"syn match svnMod contained " [M_][ M] .*" - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_svn_syn_inits") - if version < 508 - let did_svn_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink svnAdd Structure - HiLink svnDel SpecialChar - HiLink svnMod PreProc - HiLink svnProp Keyword - HiLink svnLine Comment - - delcommand HiLink -endif - -let b:current_syntax = "svn" diff --git a/vim/syntax/svnlog.vim b/vim/syntax/svnlog.vim deleted file mode 100644 index f2944528..00000000 --- a/vim/syntax/svnlog.vim +++ /dev/null @@ -1,93 +0,0 @@ -" Vim syntax file -" Language: SVN log file -" Maintainer: Adam Lazur -" URL: XXX -" Last Change: $Date: 2005-04-16 23:27:24 -0400 (Sat, 16 Apr 2005) $ - -" 1) Place this file in ~/.vim/syntax -" -" 2a) Then add the following lines to ~/.vimrc -" -" au BufNewFile,BufRead svn-log.* setf svn -" -" 2b) Or for autodetection, make a ~/.vim/scripts.vim with the following: -" -" if did_filetype() " filetype already set... -" finish " ...then don't do these checks -" endif -" if getline(1) =~ /^-\{72}$/ -" setfiletype svnlog -" endif - - - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - - -syn match svnLogSeparator /^-\{72}$/ skipwhite skipnl skipempty nextgroup=svnRevision - -syn cluster svnLogInfoLine contains=svnRevision,svnLogUser,@svnLogDate,svnLogLines,svnLogInfoSeparator - -syn match svnRevision /[r:]\d\+/ contained - -syn match svnLogUser /\S\+/ contained -syn match svnLogInfoSeparator /|/ skipwhite nextgroup=@svnLogInfoLine -syn cluster svnLogDate contains=svnLogDateStamp,svnLogDateHuman -syn match svnLogDateStamp /\d\{4}-\d\d-\d\d \d\d:\d\d:\d\d -\d\{4}/ skipwhite nextgroup=svnLogDateHuman -syn match svnLogDateHuman /(.\D\{3} \d\d \D\{3} \d\{4})/he=e-1,hs=s+1 skipwhite nextgroup=svnLogInfoSeparator -syn match svnLogLines /\d\+ lines\?/ skipnl nextgroup=svnChangedPaths,svnLogComment - -" Changed paths highlighting -syn region svnChangedPaths start=/^Changed paths:$/ end=/^$/ transparent contains=svnChangeLine,svnChange nextgroup=svnLogComment - -syn match svnChangeLine /^Changed paths:$/ skipwhite skipnl skipempty contained nextgroup=@svnChange -syn cluster svnChange contains=svnChangeAdd,svnChangeDel,svnChangeMod,svnChangeCopy -syn match svnChangeDel /^ D .\+$/ contained skipnl nextgroup=@svnChange -syn match svnChangeMod /^ M .\+$/ contained skipnl nextgroup=@svnChange -syn match svnChangeAdd /^ A [^ ]\+/ contained skipnl nextgroup=@svnChange -syn match svnChangeCopy /^ A [^ ]* (from [^)]\+)$/ contained skipnl nextgroup=@svnChange contains=svnRevision - -" The comment is a region, we're cheating and swallowing the next -" svnLogSeparator, but we add a contains to it'll highlight okay (breaks -" comments containing svnLogSeparator... but that shouldn't be super common) -syn region svnLogComment start=/\n/ end=/^-\{72}$/ skipnl keepend nextgroup=svnRevision contains=svnLogSeparator - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_svnlog_syn_inits") - if version < 508 - let did_svnlog_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink svnLogSeparator Comment - HiLink svnLogInfoSeparator Comment - HiLink svnRevision Label - HiLink svnLogUser Normal - HiLink svnLogDateStamp Comment - HiLink svnLogDateHuman Comment - HiLink svnLogLines Comment - - HiLink svnLogComment Normal - - HiLink svnChangeLine Comment - HiLink svnChangeAdd Identifier - HiLink svnChangeDel WarningMsg - HiLink svnChangeMod PreProc - HiLink svnChangeCopy SpecialKey - - - delcommand HiLink -endif - -let b:current_syntax = "svnlog" diff --git a/vim/syntax/vts_log.vim b/vim/syntax/vts_log.vim deleted file mode 100644 index 0dfcdfb2..00000000 --- a/vim/syntax/vts_log.vim +++ /dev/null @@ -1,30 +0,0 @@ -" Vim syntax file -" Language: vts log -" Maintainer: Wenzhi Liang -" Last Change: May 2007 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -" if version < 600 -" syntax clear -" elseif exists("b:current_syntax") -" finish -" endif - -syntax clear -syn match vtslog_Pass '^PASS ' -syn match vtslog_Comment '^COMMENT ' -syn match vtslog_Fail '^FAIL .*' -syn match vtslogStart '^START.*' -syn match vtslogEnd '^END.*' - -hi link vtslog_Pass Keyword -hi link vtslog_Comment Keyword -hi link vtslog_Fail Error -hi link vtslogStart Visual -hi link vtslogEnd Visual - - -" let b:current_syntax = "vtslog" - -"EOF vim: ts=8 noet tw=100 sw=8 sts=0 diff --git a/vimrc b/vimrc index bc008041..98b85c16 100644 --- a/vimrc +++ b/vimrc @@ -2,14 +2,10 @@ " # VI text editor setup " ######################################################################## -" NOTE: make sure vim ins actually installed, and that you're not trying +" NOTE: make sure vim is actually installed, and that you're not trying " to run this in vi! -execute pathogen#infect() - set shell=/bin/bash - -"set term=screen set term=linux " set paste @@ -50,31 +46,9 @@ set expandtab shiftwidth=4 tabstop=4 filetype off " required! -set rtp+=~/.vim/bundle/vundle/ -call vundle#rc() - " use `:W` to sudo save a file if you forget to `sudo vim` the file command W w !sudo tee % > /dev/null -" let Vundle manage Vundle -" required! -Bundle 'gmarik/vundle' - -" My Bundles here: -" -" original repos on github -Bundle 'tpope/vim-fugitive' -Bundle 'Lokaltog/vim-easymotion' -Bundle 'rstacruz/sparkup', {'rtp': 'vim/'} -" vim-scripts repos -Bundle 'L9' -Bundle 'FuzzyFinder' -" non github repos -Bundle 'git://git.wincent.com/command-t.git' -" ... - -Plugin 'zxqfl/tabnine-vim' - filetype plugin indent on " required! "let g:syntastic_enable_signs=1 @@ -85,16 +59,6 @@ filetype plugin indent on " required! "set statusline+=%{SyntasticStatuslineFlag()} "set statusline+=%* -" -" Brief help -" :BundleList - list configured bundles -" :BundleInstall(!) - install(update) bundles -" :BundleSearch(!) foo - search(or refresh cache first) for foo -" :BundleClean(!) - confirm(or auto-approve) removal of unused bundles -" -" see :h vundle for more details or wiki for FAQ -" NOTE: comments after Bundle command are not allowed.. - " Syntax highlighting only when vim-common is there if has("mouse_gpm") && filereadable("/usr/share/vim/syntax/syntax.vim") syntax on filetype on @@ -162,12 +126,8 @@ augroup resCur autocmd BufWinEnter * call ResCur() augroup END -" Darwin/Fusion log files. au BufNewFile,BufRead *.log setf logs -" SVN commit messages. -au BufNewFile,BufRead svn-commit.* setf svn - " Set some sensible defaults for editing C-files augroup cprog " Remove all cprog autocommands From 5596469caf46141d17122fd474b3c7379f341e82 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 10:59:55 +0000 Subject: [PATCH 666/973] Remove rvmrc. --- rvmrc | 1 - 1 file changed, 1 deletion(-) delete mode 100644 rvmrc diff --git a/rvmrc b/rvmrc deleted file mode 100644 index 52c159c3..00000000 --- a/rvmrc +++ /dev/null @@ -1 +0,0 @@ -export rvm_path="~/.rvm" From 8c28faccdc31babd5435859698e44b80ded7dc9b Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 11:01:16 +0000 Subject: [PATCH 667/973] Remove old venv configs. --- virtualenvs/jupyter/Pipfile | 21 -- virtualenvs/jupyter/Pipfile.lock | 348 ---------------------------- virtualenvs/youtube-dl/Pipfile | 21 -- virtualenvs/youtube-dl/Pipfile.lock | 41 ---- 4 files changed, 431 deletions(-) delete mode 100644 virtualenvs/jupyter/Pipfile delete mode 100644 virtualenvs/jupyter/Pipfile.lock delete mode 100644 virtualenvs/youtube-dl/Pipfile delete mode 100644 virtualenvs/youtube-dl/Pipfile.lock diff --git a/virtualenvs/jupyter/Pipfile b/virtualenvs/jupyter/Pipfile deleted file mode 100644 index 7b6abc40..00000000 --- a/virtualenvs/jupyter/Pipfile +++ /dev/null @@ -1,21 +0,0 @@ -[[source]] - -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - - -[packages] - -pip = "*" -setuptools = "*" -jupyter = "*" - - -[dev-packages] - - - -[requires] - -python_version = "3.6" diff --git a/virtualenvs/jupyter/Pipfile.lock b/virtualenvs/jupyter/Pipfile.lock deleted file mode 100644 index a3237a4a..00000000 --- a/virtualenvs/jupyter/Pipfile.lock +++ /dev/null @@ -1,348 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "fc8293a48dc28fd78c7f4af038a52851fba1a7b4ef46496b308166109d8f5ced" - }, - "host-environment-markers": { - "implementation_name": "cpython", - "implementation_version": "3.6.4", - "os_name": "posix", - "platform_machine": "x86_64", - "platform_python_implementation": "CPython", - "platform_release": "17.3.0", - "platform_system": "Darwin", - "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64", - "python_full_version": "3.6.4", - "python_version": "3.6", - "sys_platform": "darwin" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.6" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "appnope": { - "hashes": [ - "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", - "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" - ], - "markers": "sys_platform == 'darwin'", - "version": "==0.1.0" - }, - "bleach": { - "hashes": [ - "sha256:cf567e7ed30ea5e05b31231d88ae170af1c5544758b9d7bebbc20590b7c30b1e", - "sha256:38fc8cbebea4e787d8db55d6f324820c7f74362b70db9142c1ac7920452d1a19" - ], - "version": "==2.1.2" - }, - "decorator": { - "hashes": [ - "sha256:94d1d8905f5010d74bbbd86c30471255661a14187c45f8d7f3e5aa8540fdb2e5", - "sha256:7d46dd9f3ea1cf5f06ee0e4e1277ae618cf48dfb10ada7c8427cd46c42702a0e" - ], - "version": "==4.2.1" - }, - "entrypoints": { - "hashes": [ - "sha256:10ad569bb245e7e2ba425285b9fa3e8178a0dc92fc53b1e1c553805e15a8825b", - "sha256:d2d587dde06f99545fb13a383d2cd336a8ff1f359c5839ce3a64c917d10c029f" - ], - "version": "==0.2.3" - }, - "html5lib": { - "hashes": [ - "sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3", - "sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736" - ], - "version": "==1.0.1" - }, - "ipykernel": { - "hashes": [ - "sha256:9b9a9c1c566eabed6dc1536e9ea0cdb7b3a642cdb8a23b67e2047d8d7d61f5f7", - "sha256:8622cd42d952849057db38b81f0837a0ee6b865dea65d4b0b660164c96e6d052", - "sha256:dedc199df6a38725c732986dfa606c245fb8fe0fe999b33a0c305b73d80c6774" - ], - "version": "==4.8.0" - }, - "ipython": { - "hashes": [ - "sha256:fcc6d46f08c3c4de7b15ae1c426e15be1b7932bcda9d83ce1a4304e8c1129df3", - "sha256:51c158a6c8b899898d1c91c6b51a34110196815cc905f9be0fa5878e19355608" - ], - "version": "==6.2.1" - }, - "ipython-genutils": { - "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" - ], - "version": "==0.2.0" - }, - "ipywidgets": { - "hashes": [ - "sha256:05e10c4eccd8505cda16c6bb3cf78d3ddee913004c557f8da7ea9c81162d78bd", - "sha256:3e2be7dea4f97c9a4df71ef065cad9f2e420dd901127bf7cb690fb56d2b34ea3" - ], - "version": "==7.1.0" - }, - "jedi": { - "hashes": [ - "sha256:d795f2c2e659f5ea39a839e5230d70a0b045d0daee7ca2403568d8f348d0ad89", - "sha256:d6e799d04d1ade9459ed0f20de47c32f2285438956a677d083d3c98def59fa97" - ], - "version": "==0.11.1" - }, - "jinja2": { - "hashes": [ - "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", - "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" - ], - "version": "==2.10" - }, - "jsonschema": { - "hashes": [ - "sha256:000e68abd33c972a5248544925a0cae7d1125f9bf6c58280d37546b946769a08", - "sha256:6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02" - ], - "version": "==2.6.0" - }, - "jupyter": { - "hashes": [ - "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78", - "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f", - "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7" - ], - "version": "==1.0.0" - }, - "jupyter-client": { - "hashes": [ - "sha256:ce1434979e7d1c0a4db351bc263b4da80de20f6515dc6059a8b05106b8eb0187", - "sha256:462790d46b244f0a631ea5e3cd5cdbad6874d5d24cc0ff512deb7c16cdf8653d" - ], - "version": "==5.2.1" - }, - "jupyter-console": { - "hashes": [ - "sha256:3f928b817fc82cda95e431eb4c2b5eb21be5c483c2b43f424761a966bb808094", - "sha256:545dedd3aaaa355148093c5609f0229aeb121b4852995c2accfa64fe3e0e55cd" - ], - "version": "==5.2.0" - }, - "jupyter-core": { - "hashes": [ - "sha256:927d713ffa616ea11972534411544589976b2493fc7e09ad946e010aa7eb9970", - "sha256:ba70754aa680300306c699790128f6fbd8c306ee5927976cbe48adacf240c0b7" - ], - "version": "==4.4.0" - }, - "markupsafe": { - "hashes": [ - "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" - ], - "version": "==1.0" - }, - "mistune": { - "hashes": [ - "sha256:b4c512ce2fc99e5a62eb95a4aba4b73e5f90264115c40b70a21e1f7d4e0eac91", - "sha256:bc10c33bfdcaa4e749b779f62f60d6e12f8215c46a292d05e486b869ae306619" - ], - "version": "==0.8.3" - }, - "nbconvert": { - "hashes": [ - "sha256:260d390b989a647575b8ecae2cd06a9eaead10d396733d6e50185d5ebd08996e", - "sha256:12b1a4671d4463ab73af6e4cbcc965b62254e05d182cd54995dda0d0ef9e2db9" - ], - "version": "==5.3.1" - }, - "nbformat": { - "hashes": [ - "sha256:b9a0dbdbd45bb034f4f8893cafd6f652ea08c8c1674ba83f2dc55d3955743b0b", - "sha256:f7494ef0df60766b7cabe0a3651556345a963b74dbc16bc7c18479041170d402" - ], - "version": "==4.4.0" - }, - "notebook": { - "hashes": [ - "sha256:dbce87812b7f2025e0f83eaab1701a71d874a7aba0766cd8c03ba9be77760643", - "sha256:380bbed63117accbb13e42d01d06153c72da6a386f75c81ae4c174eaa11e738b" - ], - "version": "==5.3.1" - }, - "pandocfilters": { - "hashes": [ - "sha256:b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9" - ], - "version": "==1.4.2" - }, - "parso": { - "hashes": [ - "sha256:a7bb86fe0844304869d1c08e8bd0e52be931228483025c422917411ab82d628a", - "sha256:5815f3fe254e5665f3c5d6f54f086c2502035cb631a91341591b5a564203cffb" - ], - "version": "==0.1.1" - }, - "pexpect": { - "hashes": [ - "sha256:144939a072a46d32f6e5ecc866509e1d613276781f7182148a08df52eaa7b022", - "sha256:8e287b171dbaf249d0b06b5f2e88cb7e694651d2d0b8c15bccb83170d3c55575" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.3.1" - }, - "pickleshare": { - "hashes": [ - "sha256:c9a2541f25aeabc070f12f452e1f2a8eae2abd51e1cd19e8430402bdf4c1d8b5", - "sha256:84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b" - ], - "version": "==0.7.4" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:3f473ae040ddaa52b52f97f6b4a493cfa9f5920c255a12dc56a7d34397a398a4", - "sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381", - "sha256:858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917" - ], - "version": "==1.0.15" - }, - "ptyprocess": { - "hashes": [ - "sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a", - "sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365" - ], - "markers": "os_name != 'nt'", - "version": "==0.5.2" - }, - "pygments": { - "hashes": [ - "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", - "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc" - ], - "version": "==2.2.0" - }, - "python-dateutil": { - "hashes": [ - "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c", - "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca" - ], - "version": "==2.6.1" - }, - "pyzmq": { - "hashes": [ - "sha256:f88d8ffa32bf729bed806ca3205846ed98b61f149562dc828db5c3a2194ca0c3", - "sha256:83c30a7fa401d5f26378414c6e67bdf8633780cf514b31bd2084b9ab4b226484", - "sha256:5f357871b560bfacfa62a737292c59b42fe06c6e3433567f49f42dec32b45b11", - "sha256:6602d9958656a255a067ab87b569695a51e275bb77111b057c12ac702544fdca", - "sha256:068977e0f5cfba05d910df9899bcbd379e6536666ddabb2ce6a1218673229c65", - "sha256:29fe1d6a79ea3b4cfcb3b23ef2159b34a42a347f74010fe5510484543a5367e2", - "sha256:09ecf151c912f1d0907bfda331fa0ed5cd0032bf1d8733512f1befc8e89b387f", - "sha256:edde3830b2ac4c97f11fdafeea02dffd2343b470482864a3cd3894c839a0a416", - "sha256:37d7c8bfa3c7e8121ca7a71fe807cd5b63793d05ad598df53449d49e5dea1cc3", - "sha256:9848772e952f2addbb77182ae14ef201fd4f0e394e6e73c4620b9fd8f154f4a9", - "sha256:4d2bda85a2fe827fe1cce007f4bab20dae4bf56fa468d19bc730bb225c349bf3", - "sha256:7ded1d19978e52557348fd89f2c3f67eb73c19700b248355bcc50ac582387a95", - "sha256:b3c6abbebd79866465d6bbc0ab239cc4d1ba3bcce203b5294bb494665dcf4105", - "sha256:c382cb87d65de9718c738ee3a2f4f7c8444bd5d1a002bd370b5365d906c13f27", - "sha256:f41626459031c36457a6af56dd91e432b315b0bce8458ba08edbf6e4de88b467", - "sha256:afe36a0ab8ada3b8d9a005c6aaca8a434c425bd019b7fa6d323b9fda46157389", - "sha256:686ffacf9c62bdd4253ab3e093b32aaf195961c7545583a416cc534caa8a5900", - "sha256:09802528d0092b70131a9df92c975bb625cf2038fc0f53915bf51ffa665a7957", - "sha256:22ea664f4d115cd9fa0f2dc8c907298437f4d2fcf0677c18eddf45da2436f923", - "sha256:505d2a4fc2a899d30663e12550dca3d17d48c5796dd1307a0197656bc40b67c8", - "sha256:657147db62a16794aca7a18b51139180bc98d6249931507b1c8ef696607ada43", - "sha256:3a942e278f79ddcf455ba160881a95de474123667c3c847683bc3ae1929093f5", - "sha256:8a883824147523c0fe76d247dd58994c1c28ef07f1cc5dde595a4fd1c28f2580" - ], - "version": "==16.0.3" - }, - "qtconsole": { - "hashes": [ - "sha256:b3d10314cbaad76c3157cf922eb410812cde472e8e7c6bd3d5a92d30145bcde1", - "sha256:eff8c2faeda567a0bef5781f419a64e9977988db101652b312b9d74ec0a5109c" - ], - "version": "==4.3.1" - }, - "send2trash": { - "hashes": [ - "sha256:b308bfafe781617f57b69315f7f0636662405137da667dde3913bf5ff720a3c4", - "sha256:725fbce571dffe0b640e2f1788d52c3c544b510f9d8f69b2597c8c2555bc8441" - ], - "version": "==1.4.2" - }, - "simplegeneric": { - "hashes": [ - "sha256:dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173" - ], - "version": "==0.8.1" - }, - "six": { - "hashes": [ - "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb", - "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9" - ], - "version": "==1.11.0" - }, - "terminado": { - "hashes": [ - "sha256:65011551baff97f5414c67018e908110693143cfbaeb16831b743fe7cad8b927", - "sha256:55abf9ade563b8f9be1f34e4233c7b7bde726059947a593322e8a553cc4c067a" - ], - "version": "==0.8.1" - }, - "testpath": { - "hashes": [ - "sha256:039fa6a6c9fd3488f8336d23aebbfead5fa602c4a47d49d83845f55a595ec1b4", - "sha256:0d5337839c788da5900df70f8e01015aec141aa3fe7936cb0d0a2953f7ac7609" - ], - "version": "==0.3.1" - }, - "tornado": { - "hashes": [ - "sha256:92b7ca81e18ba9ec3031a7ee73d4577ac21d41a0c9b775a9182f43301c3b5f8e", - "sha256:b36298e9f63f18cad97378db2222c0e0ca6a55f6304e605515e05a25483ed51a", - "sha256:ab587996fe6fb9ce65abfda440f9b61e4f9f2cf921967723540679176915e4c3", - "sha256:5ef073ac6180038ccf99411fe05ae9aafb675952a2c8db60592d5daf8401f803", - "sha256:6d14e47eab0e15799cf3cdcc86b0b98279da68522caace2bd7ce644287685f0a" - ], - "version": "==4.5.3" - }, - "traitlets": { - "hashes": [ - "sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9", - "sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835" - ], - "version": "==4.3.2" - }, - "wcwidth": { - "hashes": [ - "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c", - "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e" - ], - "version": "==0.1.7" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "widgetsnbextension": { - "hashes": [ - "sha256:d38e6873ea18f22c2a2b32025cdde35b635efa46b234e8738c81eec993f0bf1e", - "sha256:67fc28c3b9fede955d69bccbd92784e3f0c6d0dee3a71532cd3367c257feb178" - ], - "version": "==3.1.0" - } - }, - "develop": {} -} diff --git a/virtualenvs/youtube-dl/Pipfile b/virtualenvs/youtube-dl/Pipfile deleted file mode 100644 index c43d88b6..00000000 --- a/virtualenvs/youtube-dl/Pipfile +++ /dev/null @@ -1,21 +0,0 @@ -[[source]] - -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - - -[packages] - -pip = "*" -setuptools = "*" -youtube-dl = "*" - - -[dev-packages] - - - -[requires] - -python_version = "3.6" diff --git a/virtualenvs/youtube-dl/Pipfile.lock b/virtualenvs/youtube-dl/Pipfile.lock deleted file mode 100644 index cb2a0d61..00000000 --- a/virtualenvs/youtube-dl/Pipfile.lock +++ /dev/null @@ -1,41 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "2969da49d42908416e4bf97b5347926df0e4541d9a56a5b4e004a0efe46a3f2d" - }, - "host-environment-markers": { - "implementation_name": "cpython", - "implementation_version": "3.6.4", - "os_name": "posix", - "platform_machine": "x86_64", - "platform_python_implementation": "CPython", - "platform_release": "17.3.0", - "platform_system": "Darwin", - "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64", - "python_full_version": "3.6.4", - "python_version": "3.6", - "sys_platform": "darwin" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.6" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "youtube-dl": { - "hashes": [ - "sha256:de9967ed2dcfef1bbce66165f7636573a6825dd49ca9a08127179fd421ac8a33", - "sha256:94fd80f8a12baa8ae9614b4d3c447687ae96baf2c18dd69cb07483850164e880" - ], - "version": "==2018.1.18" - } - }, - "develop": {} -} From 399b49f56ebd86b2726c52027166a3dc91148c2a Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 11:12:30 +0000 Subject: [PATCH 668/973] Remove unison-sync. --- .gitmodules | 3 --- unison-sync | 1 - 2 files changed, 4 deletions(-) delete mode 160000 unison-sync diff --git a/.gitmodules b/.gitmodules index 6fcaff70..ffbfc6f8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "scripts"] path = scripts url = https://github.com/jimlawton/scripts -[submodule "unison-sync"] - path = unison-sync - url = https://github.com/jimlawton/unison-sync [submodule "vim/bundle/tabnine-vim"] path = vim/bundle/tabnine-vim url = https://github.com/zxqfl/tabnine-vim.git diff --git a/unison-sync b/unison-sync deleted file mode 160000 index b440fa12..00000000 --- a/unison-sync +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b440fa12287290e48e4aef00986b93d795e0c718 From cf2a296eda98cbc2ab9d7874f27b68518b97dca9 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 11:14:04 +0000 Subject: [PATCH 669/973] Remove obsolete modules. --- .gitmodules | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index ffbfc6f8..bfdeb1a0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "scripts"] path = scripts url = https://github.com/jimlawton/scripts -[submodule "vim/bundle/tabnine-vim"] - path = vim/bundle/tabnine-vim - url = https://github.com/zxqfl/tabnine-vim.git [submodule "autoenv"] path = autoenv url = http://github.com/kennethreitz/autoenv.git @@ -31,6 +28,3 @@ [submodule "zsh-autosuggestions"] path = zsh-autosuggestions url = https://github.com/zsh-users/zsh-autosuggestions -[submodule "vim/bundle/YouCompleteMe"] - path = vim/bundle/YouCompleteMe - url = https://github.com/tabnine/YouCompleteMe.git From 96561db3dc648ad34e0f71b42c4bd7b36fa93367 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 11:15:48 +0000 Subject: [PATCH 670/973] Remove git-identify module. --- .gitmodules | 3 --- git/git-identify | 1 - 2 files changed, 4 deletions(-) delete mode 160000 git/git-identify diff --git a/.gitmodules b/.gitmodules index bfdeb1a0..de75068f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,9 +7,6 @@ [submodule "git/mingit"] path = git/mingit url = https://github.com/jimlawton/mingit.git -[submodule "git/git-identify"] - path = git/git-identify - url = https://github.com/ConnorAtherton/git-identify.git [submodule "hyper-hacks"] path = hyper-hacks url = https://github.com/jimlawton/hyper-hacks.git diff --git a/git/git-identify b/git/git-identify deleted file mode 160000 index f7092fcd..00000000 --- a/git/git-identify +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f7092fcd357a0176a40ed27e21932818d4f9266f From 9a0007d83ca969cec422abbf8d1f3d0f0d630470 Mon Sep 17 00:00:00 2001 From: Jim Lawton Date: Wed, 29 Oct 2025 11:19:23 +0000 Subject: [PATCH 671/973] Remove old git-prompt script. --- git/git-prompt.sh | 461 ---------------------------------------------- 1 file changed, 461 deletions(-) delete mode 100644 git/git-prompt.sh diff --git a/git/git-prompt.sh b/git/git-prompt.sh deleted file mode 100644 index 54489080..00000000 --- a/git/git-prompt.sh +++ /dev/null @@ -1,461 +0,0 @@ -# bash/zsh git prompt support -# -# Copyright (C) 2006,2007 Shawn O. Pearce -# Distributed under the GNU General Public License, version 2.0. -# -# This script allows you to see repository status in your prompt. -# -# To enable: -# -# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). -# 2) Add the following line to your .bashrc/.zshrc: -# source ~/.git-prompt.sh -# 3a) Change your PS1 to call __git_ps1 as -# command-substitution: -# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' -# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' -# the optional argument will be used as format string. -# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can -# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh -# with two parameters,

 and , which are strings
-#        you would put in $PS1 before and after the status string
-#        generated by the git-prompt machinery.  e.g.
-#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
-#          will show username, at-sign, host, colon, cwd, then
-#          various status string, followed by dollar and SP, as
-#          your prompt.
-#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
-#          will show username, pipe, then various status string,
-#          followed by colon, cwd, dollar and SP, as your prompt.
-#        Optionally, you can supply a third argument with a printf
-#        format string to finetune the output of the branch status
-#
-# The repository status will be displayed only if you are currently in a
-# git repository. The %s token is the placeholder for the shown status.
-#
-# The prompt status always includes the current branch name.
-#
-# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
-# unstaged (*) and staged (+) changes will be shown next to the branch
-# name.  You can configure this per-repository with the
-# bash.showDirtyState variable, which defaults to true once
-# GIT_PS1_SHOWDIRTYSTATE is enabled.
-#
-# You can also see if currently something is stashed, by setting
-# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
-# then a '$' will be shown next to the branch name.
-#
-# If you would like to see if there're untracked files, then you can set
-# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
-# files, then a '%' will be shown next to the branch name.  You can
-# configure this per-repository with the bash.showUntrackedFiles
-# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
-# enabled.
-#
-# If you would like to see the difference between HEAD and its upstream,
-# set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
-# indicates you are ahead, "<>" indicates you have diverged and "="
-# indicates that there is no difference. You can further control
-# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
-# of values:
-#
-#     verbose       show number of commits ahead/behind (+/-) upstream
-#     name          if verbose, then also show the upstream abbrev name
-#     legacy        don't use the '--count' option available in recent
-#                   versions of git-rev-list
-#     git           always compare HEAD to @{upstream}
-#     svn           always compare HEAD to your SVN upstream
-#
-# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
-# find one, or @{upstream} otherwise.  Once you have set
-# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
-# setting the bash.showUpstream config variable.
-#
-# If you would like to see more information about the identity of
-# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
-# to one of these values:
-#
-#     contains      relative to newer annotated tag (v1.6.3.2~35)
-#     branch        relative to newer tag or branch (master~4)
-#     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
-#     default       exactly matching tag
-#
-# If you would like a colored hint about the current dirty state, set
-# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
-# the colored output of "git status -sb" and are available only when
-# using __git_ps1 for PROMPT_COMMAND or precmd.
-
-# check whether printf supports -v
-__git_printf_supports_v=
-printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
-
-# stores the divergence from upstream in $p
-# used by GIT_PS1_SHOWUPSTREAM
-__git_ps1_show_upstream ()
-{
-	local key value
-	local svn_remote svn_url_pattern count n
-	local upstream=git legacy="" verbose="" name=""
-
-	svn_remote=()
-	# get some config options from git-config
-	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
-	while read -r key value; do
-		case "$key" in
-		bash.showupstream)
-			GIT_PS1_SHOWUPSTREAM="$value"
-			if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
-				p=""
-				return
-			fi
-			;;
-		svn-remote.*.url)
-			svn_remote[$((${#svn_remote[@]} + 1))]="$value"
-			svn_url_pattern="$svn_url_pattern\\|$value"
-			upstream=svn+git # default upstream is SVN if available, else git
-			;;
-		esac
-	done <<< "$output"
-
-	# parse configuration values
-	for option in ${GIT_PS1_SHOWUPSTREAM}; do
-		case "$option" in
-		git|svn) upstream="$option" ;;
-		verbose) verbose=1 ;;
-		legacy)  legacy=1  ;;
-		name)    name=1 ;;
-		esac
-	done
-
-	# Find our upstream
-	case "$upstream" in
-	git)    upstream="@{upstream}" ;;
-	svn*)
-		# get the upstream from the "git-svn-id: ..." in a commit message
-		# (git-svn uses essentially the same procedure internally)
-		local -a svn_upstream
-		svn_upstream=($(git log --first-parent -1 \
-					--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
-		if [[ 0 -ne ${#svn_upstream[@]} ]]; then
-			svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
-			svn_upstream=${svn_upstream%@*}
-			local n_stop="${#svn_remote[@]}"
-			for ((n=1; n <= n_stop; n++)); do
-				svn_upstream=${svn_upstream#${svn_remote[$n]}}
-			done
-
-			if [[ -z "$svn_upstream" ]]; then
-				# default branch name for checkouts with no layout:
-				upstream=${GIT_SVN_ID:-git-svn}
-			else
-				upstream=${svn_upstream#/}
-			fi
-		elif [[ "svn+git" = "$upstream" ]]; then
-			upstream="@{upstream}"
-		fi
-		;;
-	esac
-
-	# Find how many commits we are ahead/behind our upstream
-	if [[ -z "$legacy" ]]; then
-		count="$(git rev-list --count --left-right \
-				"$upstream"...HEAD 2>/dev/null)"
-	else
-		# produce equivalent output to --count for older versions of git
-		local commits
-		if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
-		then
-			local commit behind=0 ahead=0
-			for commit in $commits
-			do
-				case "$commit" in
-				"<"*) ((behind++)) ;;
-				*)    ((ahead++))  ;;
-				esac
-			done
-			count="$behind	$ahead"
-		else
-			count=""
-		fi
-	fi
-
-	# calculate the result
-	if [[ -z "$verbose" ]]; then
-		case "$count" in
-		"") # no upstream
-			p="" ;;
-		"0	0") # equal to upstream
-			p="=" ;;
-		"0	"*) # ahead of upstream
-			p=">" ;;
-		*"	0") # behind upstream
-			p="<" ;;
-		*)	    # diverged from upstream
-			p="<>" ;;
-		esac
-	else
-		case "$count" in
-		"") # no upstream
-			p="" ;;
-		"0	0") # equal to upstream
-			p=" u=" ;;
-		"0	"*) # ahead of upstream
-			p=" u+${count#0	}" ;;
-		*"	0") # behind upstream
-			p=" u-${count%	0}" ;;
-		*)	    # diverged from upstream
-			p=" u+${count#*	}-${count%	*}" ;;
-		esac
-		if [[ -n "$count" && -n "$name" ]]; then
-			p="$p $(git rev-parse --abbrev-ref "$upstream" 2>/dev/null)"
-		fi
-	fi
-
-}
-
-# Helper function that is meant to be called from __git_ps1.  It
-# injects color codes into the appropriate gitstring variables used
-# to build a gitstring.
-__git_ps1_colorize_gitstring ()
-{
-	if [[ -n ${ZSH_VERSION-} ]]; then
-		local c_red='%F{red}'
-		local c_green='%F{green}'
-		local c_lblue='%F{blue}'
-		local c_clear='%f'
-	else
-		# Using \[ and \] around colors is necessary to prevent
-		# issues with command line editing/browsing/completion!
-		local c_red='\[\e[31m\]'
-		local c_green='\[\e[32m\]'
-		local c_lblue='\[\e[1;34m\]'
-		local c_clear='\[\e[0m\]'
-	fi
-	local bad_color=$c_red
-	local ok_color=$c_green
-	local flags_color="$c_lblue"
-
-	local branch_color=""
-	if [ $detached = no ]; then
-		branch_color="$ok_color"
-	else
-		branch_color="$bad_color"
-	fi
-	c="$branch_color$c"
-
-	z="$c_clear$z"
-	if [ "$w" = "*" ]; then
-		w="$bad_color$w"
-	fi
-	if [ -n "$i" ]; then
-		i="$ok_color$i"
-	fi
-	if [ -n "$s" ]; then
-		s="$flags_color$s"
-	fi
-	if [ -n "$u" ]; then
-		u="$bad_color$u"
-	fi
-	r="$c_clear$r"
-}
-
-eread ()
-{
-	f="$1"
-	shift
-	test -r "$f" && read "$@" <"$f"
-}
-
-# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
-# when called from PS1 using command substitution
-# in this mode it prints text to add to bash PS1 prompt (includes branch name)
-#
-# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
-# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
-# when two arguments are given, the first is prepended and the second appended
-# to the state string when assigned to PS1.
-# The optional third parameter will be used as printf format string to further
-# customize the output of the git-status string.
-# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
-__git_ps1 ()
-{
-	local pcmode=no
-	local detached=no
-	local ps1pc_start='\u@\h:\w '
-	local ps1pc_end='\$ '
-	local printf_format=' (%s)'
-
-	case "$#" in
-		2|3)	pcmode=yes
-			ps1pc_start="$1"
-			ps1pc_end="$2"
-			printf_format="${3:-$printf_format}"
-		;;
-		0|1)	printf_format="${1:-$printf_format}"
-		;;
-		*)	return
-		;;
-	esac
-
-	local repo_info rev_parse_exit_code
-	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
-		--is-bare-repository --is-inside-work-tree \
-		--short HEAD 2>/dev/null)"
-	rev_parse_exit_code="$?"
-
-	if [ -z "$repo_info" ]; then
-		if [ $pcmode = yes ]; then
-			#In PC mode PS1 always needs to be set
-			PS1="$ps1pc_start$ps1pc_end"
-		fi
-		return
-	fi
-
-	local short_sha
-	if [ "$rev_parse_exit_code" = "0" ]; then
-		short_sha="${repo_info##*$'\n'}"
-		repo_info="${repo_info%$'\n'*}"
-	fi
-	local inside_worktree="${repo_info##*$'\n'}"
-	repo_info="${repo_info%$'\n'*}"
-	local bare_repo="${repo_info##*$'\n'}"
-	repo_info="${repo_info%$'\n'*}"
-	local inside_gitdir="${repo_info##*$'\n'}"
-	local g="${repo_info%$'\n'*}"
-
-	local r=""
-	local b=""
-	local step=""
-	local total=""
-	if [ -d "$g/rebase-merge" ]; then
-		eread "$g/rebase-merge/head-name" b
-		eread "$g/rebase-merge/msgnum" step
-		eread "$g/rebase-merge/end" total
-		if [ -f "$g/rebase-merge/interactive" ]; then
-			r="|REBASE-i"
-		else
-			r="|REBASE-m"
-		fi
-	else
-		if [ -d "$g/rebase-apply" ]; then
-			eread "$g/rebase-apply/next" step
-			eread "$g/rebase-apply/last" total
-			if [ -f "$g/rebase-apply/rebasing" ]; then
-				eread "$g/rebase-apply/head-name" b
-				r="|REBASE"
-			elif [ -f "$g/rebase-apply/applying" ]; then
-				r="|AM"
-			else
-				r="|AM/REBASE"
-			fi
-		elif [ -f "$g/MERGE_HEAD" ]; then
-			r="|MERGING"
-		elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
-			r="|CHERRY-PICKING"
-		elif [ -f "$g/REVERT_HEAD" ]; then
-			r="|REVERTING"
-		elif [ -f "$g/BISECT_LOG" ]; then
-			r="|BISECTING"
-		fi
-
-		if [ -n "$b" ]; then
-			:
-		elif [ -h "$g/HEAD" ]; then
-			# symlink symbolic ref
-			b="$(git symbolic-ref HEAD 2>/dev/null)"
-		else
-			local head=""
-			if ! eread "$g/HEAD" head; then
-				if [ $pcmode = yes ]; then
-					PS1="$ps1pc_start$ps1pc_end"
-				fi
-				return
-			fi
-			# is it a symbolic ref?
-			b="${head#ref: }"
-			if [ "$head" = "$b" ]; then
-				detached=yes
-				b="$(
-				case "${GIT_PS1_DESCRIBE_STYLE-}" in
-				(contains)
-					git describe --contains HEAD ;;
-				(branch)
-					git describe --contains --all HEAD ;;
-				(describe)
-					git describe HEAD ;;
-				(* | default)
-					git describe --tags --exact-match HEAD ;;
-				esac 2>/dev/null)" ||
-
-				b="$short_sha..."
-				b="($b)"
-			fi
-		fi
-	fi
-
-	if [ -n "$step" ] && [ -n "$total" ]; then
-		r="$r $step/$total"
-	fi
-
-	local w=""
-	local i=""
-	local s=""
-	local u=""
-	local c=""
-	local p=""
-
-	if [ "true" = "$inside_gitdir" ]; then
-		if [ "true" = "$bare_repo" ]; then
-			c="BARE:"
-		else
-			b="GIT_DIR!"
-		fi
-	elif [ "true" = "$inside_worktree" ]; then
-		if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
-		   [ "$(git config --bool bash.showDirtyState)" != "false" ]
-		then
-			git diff --no-ext-diff --quiet --exit-code || w="*"
-			if [ -n "$short_sha" ]; then
-				git diff-index --cached --quiet HEAD -- || i="+"
-			else
-				i="#"
-			fi
-		fi
-		if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
-		   [ -r "$g/refs/stash" ]; then
-			s="$"
-		fi
-
-		if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
-		   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
-		   git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
-		then
-			u="%${ZSH_VERSION+%}"
-		fi
-
-		if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
-			__git_ps1_show_upstream
-		fi
-	fi
-
-	local z="${GIT_PS1_STATESEPARATOR-" "}"
-
-	# NO color option unless in PROMPT_COMMAND mode
-	if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
-		__git_ps1_colorize_gitstring
-	fi
-
-	local f="$w$i$s$u"
-	local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
-
-	if [ $pcmode = yes ]; then
-		if [ "${__git_printf_supports_v-}" != yes ]; then
-			gitstring=$(printf -- "$printf_format" "$gitstring")
-		else
-			printf -v gitstring -- "$printf_format" "$gitstring"
-		fi
-		PS1="$ps1pc_start$gitstring$ps1pc_end"
-	else
-		printf -- "$printf_format" "$gitstring"
-	fi
-}

From fe932282b8b8e882d6860f43014b8f07986991bd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 11:21:01 +0000
Subject: [PATCH 672/973] Remove mingit module.

---
 .gitmodules | 3 ---
 git/mingit  | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 git/mingit

diff --git a/.gitmodules b/.gitmodules
index de75068f..87f2e454 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,9 +4,6 @@
 [submodule "autoenv"]
 	path = autoenv
 	url = http://github.com/kennethreitz/autoenv.git
-[submodule "git/mingit"]
-	path = git/mingit
-	url = https://github.com/jimlawton/mingit.git
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
diff --git a/git/mingit b/git/mingit
deleted file mode 160000
index 5891c310..00000000
--- a/git/mingit
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5891c310c21b0878e530789605b9ae6fdbd0e1cc

From d9b9cbaf1398cfd9ae706fbe8a2ae63df064c843 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 11:23:08 +0000
Subject: [PATCH 673/973] Remove bash and csh setups.

---
 bash_colors     |  74 -------------------------
 bash_logout     |   7 ---
 bash_options    |  45 ----------------
 bash_profile    | 141 ------------------------------------------------
 bash_prompt     |  25 ---------
 bash_prompt_old |  63 ----------------------
 bashrc          |  15 ------
 cshrc           |  20 -------
 8 files changed, 390 deletions(-)
 delete mode 100644 bash_colors
 delete mode 100644 bash_logout
 delete mode 100644 bash_options
 delete mode 100644 bash_profile
 delete mode 100644 bash_prompt
 delete mode 100644 bash_prompt_old
 delete mode 100644 bashrc
 delete mode 100644 cshrc

diff --git a/bash_colors b/bash_colors
deleted file mode 100644
index 32b80cad..00000000
--- a/bash_colors
+++ /dev/null
@@ -1,74 +0,0 @@
-# From: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
-
-# Reset
-Color_Off='\e[0m'       # Text Reset
-
-# Regular Colors
-Black='\e[0;30m'        # Black
-Red='\e[0;31m'          # Red
-Green='\e[0;32m'        # Green
-Yellow='\e[0;33m'       # Yellow
-Blue='\e[0;34m'         # Blue
-Purple='\e[0;35m'       # Purple
-Cyan='\e[0;36m'         # Cyan
-White='\e[0;37m'        # White
-
-# Bold
-BBlack='\e[1;30m'       # Black
-BRed='\e[1;31m'         # Red
-BGreen='\e[1;32m'       # Green
-BYellow='\e[1;33m'      # Yellow
-BBlue='\e[1;34m'        # Blue
-BPurple='\e[1;35m'      # Purple
-BCyan='\e[1;36m'        # Cyan
-BWhite='\e[1;37m'       # White
-
-# Underline
-UBlack='\e[4;30m'       # Black
-URed='\e[4;31m'         # Red
-UGreen='\e[4;32m'       # Green
-UYellow='\e[4;33m'      # Yellow
-UBlue='\e[4;34m'        # Blue
-UPurple='\e[4;35m'      # Purple
-UCyan='\e[4;36m'        # Cyan
-UWhite='\e[4;37m'       # White
-
-# Background
-On_Black='\e[40m'       # Black
-On_Red='\e[41m'         # Red
-On_Green='\e[42m'       # Green
-On_Yellow='\e[43m'      # Yellow
-On_Blue='\e[44m'        # Blue
-On_Purple='\e[45m'      # Purple
-On_Cyan='\e[46m'        # Cyan
-On_White='\e[47m'       # White
-
-# High Intensity
-IBlack='\e[0;90m'       # Black
-IRed='\e[0;91m'         # Red
-IGreen='\e[0;92m'       # Green
-IYellow='\e[0;93m'      # Yellow
-IBlue='\e[0;94m'        # Blue
-IPurple='\e[0;95m'      # Purple
-ICyan='\e[0;96m'        # Cyan
-IWhite='\e[0;97m'       # White
-
-# Bold High Intensity
-BIBlack='\e[1;90m'      # Black
-BIRed='\e[1;91m'        # Red
-BIGreen='\e[1;92m'      # Green
-BIYellow='\e[1;93m'     # Yellow
-BIBlue='\e[1;94m'       # Blue
-BIPurple='\e[1;95m'     # Purple
-BICyan='\e[1;96m'       # Cyan
-BIWhite='\e[1;97m'      # White
-
-# High Intensity backgrounds
-On_IBlack='\e[0;100m'   # Black
-On_IRed='\e[0;101m'     # Red
-On_IGreen='\e[0;102m'   # Green
-On_IYellow='\e[0;103m'  # Yellow
-On_IBlue='\e[0;104m'    # Blue
-On_IPurple='\e[0;105m'  # Purple
-On_ICyan='\e[0;106m'    # Cyan
-On_IWhite='\e[0;107m'   # White
diff --git a/bash_logout b/bash_logout
deleted file mode 100644
index de4f5f75..00000000
--- a/bash_logout
+++ /dev/null
@@ -1,7 +0,0 @@
-# ~/.bash_logout: executed by bash(1) when login shell exits.
-
-# when leaving the console clear the screen to increase privacy
-
-if [ "$SHLVL" = 1 ]; then
-    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
-fi
diff --git a/bash_options b/bash_options
deleted file mode 100644
index 0c6aab5b..00000000
--- a/bash_options
+++ /dev/null
@@ -1,45 +0,0 @@
-# Shell options.
-
-# Include dot (.) files in the results of expansion.
-#shopt -s dotglob
-
-# Case-insensitive matching for filename expansion.
-shopt -s nocaseglob
-
-# Enable extended pattern matching.
-shopt -s extglob
-
-# When running two bash windows, allow both to write to the history, not one
-# stomping the other.
-shopt -s histappend
-
-# Keep multiline commands as one command in history.
-shopt -s cmdhist
-
-#set nobeep
-
-# Don't put duplicate lines in the history
-export HISTCONTROL=ignoredups
-
-# Ignore successive duplicate entries.
-export HISTCONTROL=ignoreboth
-
-# Store a lot of history entries in a file for grep-age
-shopt -s histappend
-
-export HISTFILE=~/long_history
-#if [ ! -z "${ITERM_SESSION_ID}" ]; then
-#    export HISTFILE=~/long-history-${ITERM_SESSION_ID} 
-#fi
-export HISTFILESIZE=100000
-
-# No reason not to save a bunch in history
-# Takes up several more MBs of RAM now, oOOOooh
-export HISTSIZE=20000
-
-# Ignore dupe commands and other ones you don't care about
-export HISTIGNORE="&:[ ]*:exit:ls:pwd:[bf]g"
-
-# Old way to save history across multiple sessions.
-#export PROMPT_COMMAND="history -a; history -n; $PROMPT_COMMAND"
-
diff --git a/bash_profile b/bash_profile
deleted file mode 100644
index e64c11bd..00000000
--- a/bash_profile
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/bin/bash
-
-########################################################################
-# Bash Interactive Shell Setup
-########################################################################
-
-##############################################################################
-# Import the shell-agnostic (Bash or Zsh) environment config
-##############################################################################
-source ~/.profile
-
-# Load bash options.
-source ~/dotfiles/bash_colors
-source ~/dotfiles/bash_options
-
-#PROMPT_COMMAND='history -a'
-
-# Load my Git bash prompt
-source ~/dotfiles/bash_prompt
-
-# Load Brew's git bash completion
-# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-completion.bash
-# source /opt/boxen/homebrew/Cellar/git/1.9.1/etc/bash_completion.d/git-prompt.sh
-# PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
-# GIT_PS1_SHOWDIRTYSTATE=true
-
-# Set up Autojump.
-if [ -f /usr/share/autojump/autojump.sh ]; then
-    source /usr/share/autojump/autojump.sh
-fi
-if isMac; then
-    [[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
-fi
-
-# Set up autoenv
-#source ~/.autoenv/activate.sh
-
-#if [ -z "$SSH_CLIENT" -o ! -z "$SSH_TTY" ]; then
-#    bind 'set match-hidden-files off'
-#    #bind 'set show-all-if-ambiguous on'
-#    bind '"\e[3;5~":backward-kill-word'
-#    bind '"\C-?":backward-kill-word'
-#    bind '"\e[1;5D":backward-word'
-#    bind '"\e[1;5C":forward-word'
-#fi
-
-#if [ ! -z "$DISPLAY" ]; then
-	#export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:';
-	#xmodmap -e 'clear lock'
-	#xmodmap -e "remove Lock = Caps_Lock"
-	#xmodmap -e "keycode 24 = q Q at at at at"
-#fi
-
-# Unison sync script...
-# Only run on the client host, and only if interactive.
-# if [ "$HOSTNAME" == "apollo" ]; then
-#     echo $- | grep -q i
-#     if [ $? -eq 0 ]; then
-#         sync_proc_count=`ps auxww | grep unison-sync.py | grep -vc grep`
-#         if [ $sync_proc_count -eq 0 ]; then
-#             python ${HOME}/dotfiles/unison-sync/unison-sync.py >${HOME}/.unison_sync/unison_sync.log 2>&1 &
-#         fi
-#     fi
-# fi
-
-# Load mingit aliases.
-source ~/dotfiles/git/mingit/.bashrc
-
-# Set up Bash completion.
-if [ -f /etc/bash_completion ]; then
-    source /etc/bash_completion
-    source ~/dotfiles/go-bash-completion/go-bash-completion.bash
-elif [ -f /usr/local/etc/bash_completion ]; then
-    source /usr/local/etc/bash_completion
-    source /usr/local/etc/bash_completion.d/git-completion.bash
-    source ~/dotfiles/go-bash-completion/go-bash-completion.bash
-fi
-
-# All done.
-
-test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"
-
-# Added by terraform -install-autocomplete, modified by me.
-if [ -f "${HOME}/terraform/current/terraform" ]; then
-    complete -C "${HOME}/terraform/current/terraform" terraform
-fi
-
-if [ -f "${HOME}/.fzf.bash" ]; then
-    source "${HOME}/.fzf.bash"
-fi
-
-# AWS CLI completion.
-if [ -e "/usr/bin/aws_completer" ]; then
-    complete -C "/usr/bin/aws_completer" aws
-fi
-
-# Docker command completion.
-if isMac; then
-    if [ -f $(brew --prefix)/etc/bash_completion ]; then
-        . $(brew --prefix)/etc/bash_completion
-    fi
-fi
-
-if [ -d "$HOME/.pyenv" ]; then
-    if ! command -v pyenv 1>/dev/null 2>&1; then
-        export PATH="$HOME/.pyenv/bin:$PATH"
-    else
-        eval "$(pyenv init -)"
-        eval "$(pyenv virtualenv-init -)"
-    fi
-fi
-
-export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true"
-
-# Set up virtualenvwrapper.
-if [ -f /usr/share/virtualenvwrapper/virtualenvwrapper.sh ]; then
-    source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
-elif [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
-    source /usr/local/bin/virtualenvwrapper.sh
-elif [ -f /usr/bin/virtualenvwrapper.sh ]; then
-    source /usr/bin/virtualenvwrapper.sh
-else
-    echo "WARNING: Can't find virtualenvwrapper.sh"
-fi
-
-#OktaAWSCLI
-if [[ -f "$HOME/.okta/bash_functions" ]]; then
-    . "$HOME/.okta/bash_functions"
-fi
-if [[ -d "$HOME/.okta/bin" && ":$PATH:" != *":$HOME/.okta/bin:"* ]]; then
-    PATH="$HOME/.okta/bin:$PATH"
-fi
-
-if [ -e "/usr/local/bin/bit" ]; then
-    complete -C /usr/local/bin/bit bit
-fi
-
-# eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
-
-. "$HOME/.cargo/env"
-
diff --git a/bash_prompt b/bash_prompt
deleted file mode 100644
index 294856e7..00000000
--- a/bash_prompt
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-# Bash shell prompting.
-
-# Old trusty prompt.
-#export PS1='\[\033[1;34m\]\h:\W>\[\033[0m\] '
-
-# New shiny Git prompt.
-source ~/dotfiles/git/git-prompt.sh
-export GIT_PS1_SHOWDIRTYSTATE="true"
-export GIT_PS1_SHOWSTASHSTATE="true"
-export GIT_PS1_SHOWUNTRACKEDFILES="true"
-export GIT_PS1_SHOWUPSTREAM="auto"
-export GIT_PS1_SHOWCOLORHINTS="true"
-
-if isMac; then
-    if [ -e "${HOME}/.iterm2_shell_integration.bash" ]; then
-        export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} title; log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\""
-    else
-        export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]$_SHORTUSER@$_MACHNAME\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\""
-    fi
-else
-    export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ;} log_bash_persistent_history; __git_ps1 \"\[$IBlue\]\u@\h\[$White\]:\[$IYellow\]\w\" \"\[$IBlue\]> \[$White\]\""
-fi
-
-export PS4='(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]}\n'
diff --git a/bash_prompt_old b/bash_prompt_old
deleted file mode 100644
index aada5431..00000000
--- a/bash_prompt_old
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-
-########################################################################
-# Matthew's Git Bash Prompt
-########################################################################
-        RED="\[\033[0;31m\]"
-     YELLOW="\[\033[0;33m\]"
- 	  GREEN="\[\033[0;32m\]"
-       BLUE="\[\033[0;34m\]"
-  LIGHT_RED="\[\033[1;31m\]"
-LIGHT_GREEN="\[\033[1;32m\]"
-      WHITE="\[\033[1;37m\]"
- LIGHT_GRAY="\[\033[0;37m\]"
- COLOR_NONE="\[\e[0m\]"
-
-function parse_git_branch {
-  git rev-parse --git-dir &> /dev/null
-  git_status="$(git status 2> /dev/null)"
-  branch_pattern="^# On branch ([^${IFS}]*)"
-  remote_pattern="# Your branch is (.*) '"
-  diverge_pattern="# Your branch and (.*) have diverged"
-  
-  if [[ ! ${git_status}} =~ "working directory clean" ]]; then
-    state="${RED}⚡"
-  fi
-  # add an else if or two here if you want to get more specific
-  if [[ ${git_status} =~ ${remote_pattern} ]]; then
-    if [[ ${BASH_REMATCH[1]} == "ahead of" ]]; then
-      remote="${YELLOW}↑"
-    else
-      remote="${YELLOW}↓"
-    fi
-  fi
-  if [[ ${git_status} =~ ${diverge_pattern} ]]; then
-    remote="${YELLOW}↕"
-  fi
-  if [[ ${git_status} =~ ${branch_pattern} ]]; then
-    branch=${BASH_REMATCH[1]}
-    echo " (${branch})${remote}${state}"
-  fi
-}
-
-function git_dirty_flag {
-  git status 2> /dev/null | grep -c : | awk '{if ($1 > 0) print "⚡"}'
-}
-
-function prompt_func() {
-    previous_return_value=$?;
-    #The lowercase w is the full current working directory
-    #prompt="${TITLEBAR}${BLUE}[${RED}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}"
-    
-    #Capital W is just the trailing part of the current working directory
-    prompt="${TITLEBAR}${BLUE}[${RED}\W${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE}"
-    
-    if test $previous_return_value -eq 0
-    then
-        PS1="${prompt}> "
-    else
-        PS1="${prompt}${RED}>${COLOR_NONE} "
-    fi
-}
-
-PROMPT_COMMAND=prompt_func
diff --git a/bashrc b/bashrc
deleted file mode 100644
index a8a98e4e..00000000
--- a/bashrc
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-########################################################################
-# Bash non-interactive session setup
-########################################################################
-
-# Bash non-interactive shell will load the same functions as the interactive shell
-source ~/.bash_profile
-
-### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT)
-export PATH="/Users/james.lawton/.rd/bin:$PATH"
-### MANAGED BY RANCHER DESKTOP END (DO NOT EDIT)
-
-. "$HOME/.cargo/env"
-
diff --git a/cshrc b/cshrc
deleted file mode 100644
index d2fad673..00000000
--- a/cshrc
+++ /dev/null
@@ -1,20 +0,0 @@
-# .cshrc: executed by C shells on startup
-# 
-# This is intended to be a means of launching always 
-# Bash even if Csh/Tcsh is configured as the login 
-# shell (think: old-fashioned IT departments).
-
-# If this is login or some command is to be executed
-# then change to a sane shell
-if ($?loginsh || $?command) then # switch to bash
-    setenv SHELL /bin/bash
-    if ($?loginsh) then 
-        if ($?command) then 
-            exec /bin/bash --login -c "$command"
-        endif
-        exec /bin/bash --login 
-    endif
-    # not a login shell, so there must be command
-    exec /bin/bash -c "$command"
-endif
-# go ahead, use csh

From fc98ae955ecf7c54df00caba7cdfc835edd8f12a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 11:24:40 +0000
Subject: [PATCH 674/973] Remove autoenv module.

---
 .gitmodules | 3 ---
 autoenv     | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 autoenv

diff --git a/.gitmodules b/.gitmodules
index 87f2e454..7bfe668d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
 [submodule "scripts"]
 	path = scripts
 	url = https://github.com/jimlawton/scripts
-[submodule "autoenv"]
-	path = autoenv
-	url = http://github.com/kennethreitz/autoenv.git
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
diff --git a/autoenv b/autoenv
deleted file mode 160000
index 90241f18..00000000
--- a/autoenv
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 90241f182d6a7c96e9de8a25c1eccaf2a2d1b43a

From 297e12fbdb8608a726db03a1c725bf7bbba6f04b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 11:26:49 +0000
Subject: [PATCH 675/973] Remove bash items from setup script.

---
 _setupdotfiles.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index ff53becd..8e6b41e9 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 DOTFILESDIR=~/dotfiles
-DOTFILES=".bash_logout .bash_profile .bashrc .Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .profile .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .terraformrc .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc"
+DOTFILES=".Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .terraformrc .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc"
 DOTDIRS=".vim"
 DROPFILES="persistent_history"
 DROPDIRS="bin .pip"

From 273923397f76baa6d44d7eba28fb5177d9bb9361 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 14:21:17 +0000
Subject: [PATCH 676/973] Add chezmoi root file.

---
 .chezmoiroot | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 .chezmoiroot

diff --git a/.chezmoiroot b/.chezmoiroot
new file mode 100644
index 00000000..73d74c26
--- /dev/null
+++ b/.chezmoiroot
@@ -0,0 +1 @@
+chezmoi

From e4585e2ad78a9f6b92a10d8fe11e7641e616fa5a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 14:36:06 +0000
Subject: [PATCH 677/973] Initial chezmoi config.

---
 chezmoi/dot_Brewfile    |  408 +++++++++
 chezmoi/dot_colordiffrc |   27 +
 chezmoi/dot_colorgccrc  |   54 ++
 chezmoi/dot_inputrc     |   16 +
 chezmoi/dot_p10k.zsh    | 1838 +++++++++++++++++++++++++++++++++++++++
 chezmoi/dot_profile     |   27 +
 chezmoi/dot_pythonrc    |   44 +
 chezmoi/dot_terraformrc |    1 +
 chezmoi/dot_tmux.conf   |  232 +++++
 chezmoi/dot_vimrc       |  224 +++++
 chezmoi/dot_xxdiffrc    |   10 +
 chezmoi/dot_zprofile    |   10 +
 chezmoi/dot_zshenv      |    5 +
 chezmoi/dot_zshrc       |  223 +++++
 14 files changed, 3119 insertions(+)
 create mode 100644 chezmoi/dot_Brewfile
 create mode 100644 chezmoi/dot_colordiffrc
 create mode 100644 chezmoi/dot_colorgccrc
 create mode 100644 chezmoi/dot_inputrc
 create mode 100644 chezmoi/dot_p10k.zsh
 create mode 100644 chezmoi/dot_profile
 create mode 100644 chezmoi/dot_pythonrc
 create mode 100644 chezmoi/dot_terraformrc
 create mode 100644 chezmoi/dot_tmux.conf
 create mode 100644 chezmoi/dot_vimrc
 create mode 100644 chezmoi/dot_xxdiffrc
 create mode 100644 chezmoi/dot_zprofile
 create mode 100644 chezmoi/dot_zshenv
 create mode 100644 chezmoi/dot_zshrc

diff --git a/chezmoi/dot_Brewfile b/chezmoi/dot_Brewfile
new file mode 100644
index 00000000..4712281c
--- /dev/null
+++ b/chezmoi/dot_Brewfile
@@ -0,0 +1,408 @@
+tap "abhinav/tap"
+tap "ankitpokhrel/jira-cli"
+tap "bufbuild/buf"
+tap "charmbracelet/tap"
+tap "chef/chef"
+tap "common-fate/granted"
+tap "coretech/terrafile"
+tap "d12frosted/emacs-plus"
+tap "domt4/autoupdate"
+tap "dutchcoders/cloudman"
+tap "eddieantonio/eddieantonio"
+tap "github/bootstrap"
+tap "github/gh"
+tap "messense/macos-cross-toolchains"
+tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git"
+tap "nvie/tap"
+tap "romkatv/powerlevel10k"
+tap "sachaos/todoist"
+tap "taiki-e/tap"
+tap "terrastruct/d2"
+brew "a2ps"
+brew "adr-tools"
+brew "openssl@3"
+brew "readline"
+brew "xz"
+brew "ansible@9"
+brew "giflib"
+brew "libtiff"
+brew "apr"
+brew "apr-util"
+brew "boost"
+brew "asciidoc"
+brew "asciinema"
+brew "gettext"
+brew "atomicparsley"
+brew "atuin"
+brew "autojump"
+brew "awk"
+brew "node"
+brew "aws-cdk"
+brew "aws-shell"
+brew "awscli"
+brew "bandwhich"
+brew "base64"
+brew "bash"
+brew "bash-completion"
+brew "libssh2"
+brew "oniguruma"
+brew "bat"
+brew "freetype"
+brew "cairo"
+brew "harfbuzz"
+brew "bazel"
+brew "bit-git"
+brew "bitwarden-cli"
+brew "black"
+brew "brew-cask-completion"
+brew "bzip2"
+brew "cargo-binstall"
+brew "gcc"
+brew "checkov"
+brew "chezmoi"
+brew "clang-format"
+brew "cloc"
+brew "cmake"
+brew "consul-template"
+brew "coreutils"
+brew "rtmpdump"
+brew "curl"
+brew "d2"
+brew "dateutils"
+brew "delve"
+brew "difftastic"
+brew "diffutils"
+brew "dive"
+brew "docker-completion"
+brew "docker-credential-helper"
+brew "docker-credential-helper-ecr"
+brew "docutils"
+brew "dos2unix"
+brew "doxygen"
+brew "fd"
+brew "fribidi"
+brew "libidn2"
+brew "p11-kit"
+brew "unbound"
+brew "gnutls"
+brew "leptonica"
+brew "sdl2"
+brew "tesseract"
+brew "x265"
+brew "xvid"
+brew "zeromq"
+brew "ffmpeg"
+brew "figlet"
+brew "fish"
+brew "flake8"
+brew "fzf"
+brew "get_iplayer"
+brew "gh"
+brew "gimme-aws-creds"
+brew "gist"
+brew "git"
+brew "git-delta"
+brew "git-extras"
+brew "git-filter-repo"
+brew "git-quick-stats"
+brew "git-who"
+brew "gitleaks"
+brew "glow"
+brew "gnu-indent"
+brew "gnu-sed"
+brew "gnu-tar"
+brew "gnu-time"
+brew "libgcrypt"
+brew "libksba"
+brew "libusb"
+brew "pinentry"
+brew "gnupg"
+brew "go"
+brew "pkgconf"
+brew "gobject-introspection"
+brew "goenv"
+brew "golangci-lint"
+brew "gopls"
+brew "netpbm"
+brew "gts"
+brew "librsvg"
+brew "graphviz"
+brew "grep"
+brew "grpcurl"
+brew "grunt-completion"
+brew "gtk+3"
+brew "hadolint"
+brew "htop"
+brew "httpie"
+brew "hub"
+brew "ical-buddy"
+brew "id3lib"
+brew "id3v2"
+brew "infracost"
+brew "iproute2mac"
+brew "ipython"
+brew "isort"
+brew "jfrog-cli"
+brew "jj"
+brew "jless"
+brew "jq"
+brew "jsonlint"
+brew "jsonnet"
+brew "pandoc"
+brew "jupyterlab"
+brew "lastpass-cli"
+brew "lftp"
+brew "libcaca"
+brew "libffi"
+brew "libressl"
+brew "libusb-compat"
+brew "llvm"
+brew "make"
+brew "markdownlint-cli"
+brew "mas"
+brew "md5sha1sum"
+brew "mdbook"
+brew "micro"
+brew "microsocks"
+brew "mmark"
+brew "mplayer"
+brew "mtr"
+brew "mypy"
+brew "ncftp"
+brew "neovim"
+brew "nushell"
+brew "ocrad"
+brew "okta-aws-cli"
+brew "openconnect"
+brew "openjdk"
+brew "openjdk@11"
+brew "ossp-uuid"
+brew "osv-scanner"
+brew "p7zip"
+brew "packer-completion"
+brew "parallel"
+brew "patchutils"
+brew "peco"
+brew "percol"
+brew "pip-completion"
+brew "pipenv"
+brew "pipx"
+brew "plantuml"
+brew "pre-commit"
+brew "progress"
+brew "protobuf"
+brew "protobuf-c"
+brew "protoc-gen-go"
+brew "protoc-gen-go-grpc"
+brew "pth"
+brew "pulseaudio"
+brew "pulumi"
+brew "pycodestyle"
+brew "pyenv"
+brew "pyenv-virtualenv"
+brew "pyenv-virtualenvwrapper"
+brew "pygments"
+brew "python-packaging"
+brew "qemu"
+brew "qt"
+brew "rake-completion"
+brew "rbenv"
+brew "rclone"
+brew "repo"
+brew "ripgrep"
+brew "rlwrap"
+brew "robot-framework"
+brew "ruff"
+brew "rustup"
+brew "scc"
+brew "sccache"
+brew "semgrep"
+brew "shellcheck"
+brew "socat"
+brew "sonar-scanner"
+brew "sphinx-doc"
+brew "ssh-copy-id", link: true
+brew "sshuttle"
+brew "starship"
+brew "staticcheck"
+brew "subversion"
+brew "telnet"
+brew "terminal-notifier"
+brew "terraform-docs"
+brew "tfenv"
+brew "tflint"
+brew "tfsec"
+brew "tig"
+brew "tldr"
+brew "todo-txt"
+brew "tokei"
+brew "tree"
+brew "uv"
+brew "vim"
+brew "wget"
+brew "xpdf"
+brew "yaegi"
+brew "yamlfmt"
+brew "yamllint"
+brew "yt-dlp"
+brew "zig"
+brew "zlib"
+brew "zoxide"
+brew "zsh"
+brew "abhinav/tap/git-spice"
+brew "ankitpokhrel/jira-cli/jira-cli"
+brew "bufbuild/buf/buf"
+brew "charmbracelet/tap/skate"
+brew "common-fate/granted/granted"
+brew "coretech/terrafile/terrafile"
+brew "dutchcoders/cloudman/cloudman"
+brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu"
+brew "mkchoi212/fac/fac"
+brew "sachaos/todoist/todoist"
+brew "taiki-e/tap/cargo-llvm-cov"
+cask "alt-tab"
+cask "aws-vault-binary"
+cask "bartender"
+cask "beardedspice"
+cask "bitwarden"
+cask "doll"
+cask "drawio"
+cask "firefox"
+cask "font-anonymice-powerline"
+cask "font-consolas-for-powerline"
+cask "font-dejavu-sans-mono-for-powerline"
+cask "font-droid-sans-mono-for-powerline"
+cask "font-fira-mono-for-powerline"
+cask "font-inconsolata-dz-for-powerline"
+cask "font-inconsolata-for-powerline"
+cask "font-inconsolata-for-powerline-bold"
+cask "font-inconsolata-g-for-powerline"
+cask "font-juliamono"
+cask "font-liberation-mono-for-powerline"
+cask "font-menlo-for-powerline"
+cask "font-meslo-for-powerline"
+cask "font-monofur-for-powerline"
+cask "font-noto-mono-for-powerline"
+cask "font-powerline-symbols"
+cask "font-roboto-mono-for-powerline"
+cask "font-sf-mono-for-powerline"
+cask "font-source-code-pro-for-powerline"
+cask "font-ubuntu-mono-derivative-powerline"
+cask "funter"
+cask "ghostty"
+cask "git-credential-manager"
+cask "hammerspoon"
+cask "jupyter-notebook-ql"
+cask "karabiner-elements"
+cask "maccy"
+cask "meetingbar"
+cask "mitmproxy"
+cask "monitorcontrol"
+cask "notunes"
+cask "obsidian"
+cask "rectangle"
+cask "sublime-merge@dev"
+cask "sublime-text@dev"
+cask "temurin"
+cask "visual-studio-code"
+cask "vlc"
+cask "xquartz"
+cask "yt-music"
+cask "zed"
+mas "Battery Monitor", id: 836505650
+mas "Bitwarden", id: 1352778147
+mas "Elisi", id: 1406239881
+mas "GoPro Player", id: 1460836908
+mas "GoPro Quik", id: 561350520
+mas "Keynote", id: 409183694
+mas "Kindle", id: 302584613
+mas "Magnet", id: 441258766
+mas "Mattermost", id: 1614666244
+mas "Microsoft Excel", id: 462058435
+mas "Microsoft OneNote", id: 784801555
+mas "Microsoft Outlook", id: 985367838
+mas "Microsoft PowerPoint", id: 462062816
+mas "Microsoft Word", id: 462054704
+mas "Notability", id: 360593530
+mas "Okta Extension App", id: 1439967473
+mas "Okta Verify", id: 490179405
+mas "Proxy", id: 0
+mas "Speedtest", id: 1153157709
+mas "Tailscale", id: 1475387142
+mas "TestFlight", id: 899247664
+mas "The Unarchiver", id: 425424353
+mas "Windows App", id: 1295203466
+mas "Xcode", id: 497799835
+mas "Xmind", id: 1327661892
+mas "Yubico Authenticator", id: 1497506650
+vscode "aryanahire.sublime-monokai"
+vscode "atlassian.atlascode"
+vscode "charliermarsh.ruff"
+vscode "codezombiech.gitignore"
+vscode "cschlosser.doxdocgen"
+vscode "davidanson.vscode-markdownlint"
+vscode "davidbwaters.macos-modern-theme"
+vscode "docker.docker"
+vscode "donjayamanne.githistory"
+vscode "editorconfig.editorconfig"
+vscode "fabiospampinato.vscode-diff"
+vscode "giovdk21.vscode-sublime-merge"
+vscode "github.copilot"
+vscode "github.copilot-chat"
+vscode "github.github-vscode-theme"
+vscode "github.vscode-pull-request-github"
+vscode "golang.go"
+vscode "grafana.vscode-jsonnet"
+vscode "grapecity.gc-excelviewer"
+vscode "gruntfuggly.todo-tree"
+vscode "hashicorp.hcl"
+vscode "hashicorp.terraform"
+vscode "hediet.vscode-drawio"
+vscode "humao.rest-client"
+vscode "janjoerke.jenkins-pipeline-linter-connector"
+vscode "jebbs.plantuml"
+vscode "jeff-hykin.better-cpp-syntax"
+vscode "joffreykern.markdown-toc"
+vscode "llvm-vs-code-extensions.lldb-dap"
+vscode "mechatroner.rainbow-csv"
+vscode "meezilla.json"
+vscode "mellowmarshmallow.groovy"
+vscode "mermaidchart.vscode-mermaid-chart"
+vscode "mrmlnc.vscode-duplicate"
+vscode "ms-azuretools.vscode-containers"
+vscode "ms-azuretools.vscode-docker"
+vscode "ms-python.debugpy"
+vscode "ms-python.isort"
+vscode "ms-python.mypy-type-checker"
+vscode "ms-python.python"
+vscode "ms-python.vscode-pylance"
+vscode "ms-python.vscode-python-envs"
+vscode "ms-toolsai.jupyter"
+vscode "ms-toolsai.jupyter-keymap"
+vscode "ms-toolsai.jupyter-renderers"
+vscode "ms-toolsai.vscode-jupyter-cell-tags"
+vscode "ms-toolsai.vscode-jupyter-slideshow"
+vscode "ms-vscode-remote.remote-containers"
+vscode "ms-vscode.cmake-tools"
+vscode "ms-vscode.cpptools"
+vscode "ms-vscode.cpptools-extension-pack"
+vscode "ms-vscode.cpptools-themes"
+vscode "ms-vscode.live-server"
+vscode "ms-vscode.makefile-tools"
+vscode "pdconsec.vscode-print"
+vscode "peterj.proto"
+vscode "redhat.vscode-yaml"
+vscode "ritwickdey.liveserver"
+vscode "rust-lang.rust-analyzer"
+vscode "ryanluker.vscode-coverage-gutters"
+vscode "solomonkinard.git-blame"
+vscode "streetsidesoftware.code-spell-checker"
+vscode "swiftlang.swift-vscode"
+vscode "tadayosi.vscode-makefile-outliner"
+vscode "takumii.markdowntable"
+vscode "tamasfe.even-better-toml"
+vscode "timonwong.shellcheck"
+vscode "tomoki1207.pdf"
+vscode "visualjj.visualjj"
+vscode "vscode-icons-team.vscode-icons"
+vscode "ziglang.vscode-zig"
diff --git a/chezmoi/dot_colordiffrc b/chezmoi/dot_colordiffrc
new file mode 100644
index 00000000..d6b36ea9
--- /dev/null
+++ b/chezmoi/dot_colordiffrc
@@ -0,0 +1,27 @@
+# Example colordiffrc file for dark backgrounds
+#
+# Set banner=no to suppress authorship info at top of
+# colordiff output
+banner=no
+# By default, when colordiff output is being redirected
+# to a file, it detects this and does not colour-highlight
+# To make the patch file *include* colours, change the option
+# below to 'yes'
+color_patches=no
+# 
+# available colours are: white, yellow, green, blue,
+#                        cyan, red, magenta, black,
+#                        darkwhite, darkyellow, darkgreen,
+#                        darkblue, darkcyan, darkred,
+#                        darkmagenta, darkblack
+#
+# Can also specify 'none', 'normal' or 'off' which are all
+# aliases for the same thing, namely "don't colour highlight
+# this, use the default output colour"
+#
+plain=darkwhite
+newtext=blue
+oldtext=red
+#diffstuff=magenta
+diffstuff=darkgreen
+cvsstuff=darkyellow
diff --git a/chezmoi/dot_colorgccrc b/chezmoi/dot_colorgccrc
new file mode 100644
index 00000000..5ec5949b
--- /dev/null
+++ b/chezmoi/dot_colorgccrc
@@ -0,0 +1,54 @@
+#
+# colorgcc configuration file
+#
+# $Id: colorgccrc,v 1.1.1.1 1999/04/25 15:24:03 jamoyers Exp $
+#
+# This file should be named $HOME/.colorgccrc
+#
+#
+# The following groups of attributes may be combined for a given color:
+#
+# clear         black      on_black   
+# reset	        red        on_red     
+# bold	        green      on_green   
+# underline     yellow     on_yellow  
+# underscore    blue       on_blue    
+# blink	        magenta    on_magenta 
+# reverse       cyan       on_cyan    
+# concealed     white      on_white   
+#
+# For example, srcColor: bold cyan on_yellow
+#
+
+# Define the paths to the actual location of the various compilers.
+# (Currently, colorgcc only understands these: g++ gcc c++ cc)
+g++: /usr/bin/g++
+gcc: /usr/bin/gcc
+c++: /usr/bin/c++
+cc:  /usr/bin/cc
+
+# Don't do color if our terminal type ($TERM) is one of these.
+# (List all terminal types on one line, seperated by whitespace.)
+nocolor: dumb
+
+# Text between ` and ' is usually source code.
+srcColor: bold cyan
+
+# Text other than a warning or error.
+introColor: reset
+
+# Warnings and errors both have similar formats:
+#    filename:999:Message
+# Each field may be assigned a different color.
+
+# Warnings
+warningFileNameColor: reset
+warningNumberColor:   white
+warningMessageColor:  yellow
+
+# Errors
+errorFileNameColor: reset
+errorNumberColor:   white
+errorMessageColor:  bold red
+
+
diff --git a/chezmoi/dot_inputrc b/chezmoi/dot_inputrc
new file mode 100644
index 00000000..0b063553
--- /dev/null
+++ b/chezmoi/dot_inputrc
@@ -0,0 +1,16 @@
+set bell-style none
+set match-hidden-files off
+"\eOA": history-search-backward
+"\e[A": history-search-backward
+"\eOB": history-search-forward
+"\e[B": history-search-forward
+"\eOC": forward-char
+"\e[C": forward-char
+"\eOD": backward-char
+"\e[D": backward-char
+"\e[3;5~": backward-kill-word
+"\C-?": backward-kill-word
+"\e(": kill-word
+"\e[1;5D": backward-word
+"\e[1;5C": forward-word
+
diff --git a/chezmoi/dot_p10k.zsh b/chezmoi/dot_p10k.zsh
new file mode 100644
index 00000000..d41ac916
--- /dev/null
+++ b/chezmoi/dot_p10k.zsh
@@ -0,0 +1,1838 @@
+# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:12 IST.
+# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619.
+# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads,
+# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose.
+# Type `p10k configure` to generate another config.
+#
+# Config for Powerlevel10k with powerline prompt style with colorful background.
+# Type `p10k configure` to generate your own config based on it.
+#
+# Tip: Looking for a nice color? Here's a one-liner to print colormap.
+#
+#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
+
+# Temporarily change options.
+'builtin' 'local' '-a' 'p10k_config_opts'
+[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
+[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
+[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
+'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
+
+() {
+  emulate -L zsh -o extended_glob
+
+  # Unset all configuration options. This allows you to apply configuration changes without
+  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
+  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
+
+  # Zsh >= 5.1 is required.
+  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
+
+  # The list of segments shown on the left. Fill it with the most important segments.
+  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
+    # os_icon               # os identifier
+    dir                     # current directory
+    vcs                     # git status
+    # prompt_char           # prompt symbol
+  )
+
+  # The list of segments shown on the right. Fill it with less important segments.
+  # Right prompt on the last prompt line (where you are typing your commands) gets
+  # automatically hidden when the input line reaches it. Right prompt above the
+  # last prompt line gets hidden if it would overlap with left prompt.
+  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
+    status                  # exit code of the last command
+    command_execution_time  # duration of the last command
+    background_jobs         # presence of background jobs
+    direnv                  # direnv status (https://direnv.net/)
+    asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
+    virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
+    anaconda                # conda environment (https://conda.io/)
+    pyenv                   # python environment (https://github.com/pyenv/pyenv)
+    goenv                   # go environment (https://github.com/syndbg/goenv)
+    nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
+    nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
+    nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
+    # node_version          # node.js version
+    # go_version            # go version (https://golang.org)
+    # rust_version          # rustc version (https://www.rust-lang.org)
+    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
+    # php_version           # php version (https://www.php.net/)
+    # laravel_version       # laravel php framework version (https://laravel.com/)
+    # java_version          # java version (https://www.java.com/)
+    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
+    rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
+    rvm                     # ruby version from rvm (https://rvm.io)
+    fvm                     # flutter version management (https://github.com/leoafarias/fvm)
+    luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
+    jenv                    # java version from jenv (https://github.com/jenv/jenv)
+    plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
+    perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
+    phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
+    scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
+    haskell_stack           # haskell version from stack (https://haskellstack.org/)
+    kubecontext             # current kubernetes context (https://kubernetes.io/)
+    terraform               # terraform workspace (https://www.terraform.io)
+    # terraform_version     # terraform version (https://www.terraform.io)
+    aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+    aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
+    azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
+    gcloud                  # google cloud cli account and project (https://cloud.google.com/)
+    google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
+    toolbox                 # toolbox name (https://github.com/containers/toolbox)
+    context                 # user@hostname
+    nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
+    ranger                  # ranger shell (https://github.com/ranger/ranger)
+    yazi                    # yazi shell (https://github.com/sxyazi/yazi)
+    nnn                     # nnn shell (https://github.com/jarun/nnn)
+    lf                      # lf shell (https://github.com/gokcehan/lf)
+    xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
+    vim_shell               # vim shell indicator (:sh)
+    midnight_commander      # midnight commander shell (https://midnight-commander.org/)
+    nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
+    chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
+    vi_mode                 # vi mode (you don't need this if you've enabled prompt_char)
+    # vpn_ip                # virtual private network indicator
+    # load                  # CPU load
+    # disk_usage            # disk usage
+    # ram                   # free RAM
+    # swap                  # used swap
+    todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
+    timewarrior             # timewarrior tracking status (https://timewarrior.net/)
+    taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
+    per_directory_history   # Oh My Zsh per-directory-history local/global indicator
+    # cpu_arch              # CPU architecture
+    # time                  # current time
+    # ip                    # ip address and bandwidth usage for a specified network interface
+    # public_ip             # public IP address
+    # proxy                 # system-wide http/https/ftp proxy
+    # battery               # internal battery
+    # wifi                  # wifi speed
+    # example               # example user-defined segment (see prompt_example function below)
+  )
+
+  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
+  typeset -g POWERLEVEL9K_MODE=powerline
+  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
+  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
+  typeset -g POWERLEVEL9K_ICON_PADDING=none
+
+  # When set to true, icons appear before content on both sides of the prompt. When set
+  # to false, icons go after content. If empty or not set, icons go before content in the left
+  # prompt and after content in the right prompt.
+  #
+  # You can also override it for a specific segment:
+  #
+  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
+  #
+  # Or for a specific segment in specific state:
+  #
+  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
+  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=
+
+  # Add an empty line before each prompt.
+  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
+
+  # Connect left prompt lines with these symbols. You'll probably want to use the same color
+  # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─'
+  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─'
+  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─'
+  # Connect right prompt lines with these symbols.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮'
+  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤'
+  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯'
+
+  # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
+  # '─'. The last two make it easier to see the alignment between left and right prompt and to
+  # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
+  # for more compact prompt if using this option.
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
+  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
+  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
+  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
+    # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
+    # ornaments defined above.
+    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242
+    # Start filler from the edge of the screen if there are no left segments on the first line.
+    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
+    # End filler on the edge of the screen if there are no right segments on the first line.
+    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
+  fi
+
+  # Separator between same-color segments on the left.
+  typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1'
+  # Separator between same-color segments on the right.
+  typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3'
+  # Separator between different-color segments on the left.
+  typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
+  # Separator between different-color segments on the right.
+  typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
+  # To remove a separator between two segments, add "_joined" to the second segment name.
+  # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined)
+
+  # The right end of left prompt.
+  typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
+  # The left end of right prompt.
+  typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
+  # The left end of left prompt.
+  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=''
+  # The right end of right prompt.
+  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
+  # Left prompt terminator for lines without any segments.
+  typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
+
+  #################################[ os_icon: os identifier ]##################################
+  # OS identifier color.
+  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=232
+  typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=7
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
+
+  ################################[ prompt_char: prompt symbol ]################################
+  # Transparent background.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=
+  # Green prompt symbol if the last command succeeded.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
+  # Red prompt symbol if the last command failed.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
+  # Default prompt symbol.
+  # jiml 2021-03-26 change prompt char
+  # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜'
+  # Prompt symbol in command vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
+  # Prompt symbol in visual vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
+  # Prompt symbol in overwrite vi mode.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
+  # No line terminator if prompt_char is the last segment.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
+  # No line introducer if prompt_char is the first segment.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
+  # No surrounding whitespace.
+  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE=
+
+  ##################################[ dir: current directory ]##################################
+  # Current directory background color.
+  typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
+  # Default current directory foreground color.
+  typeset -g POWERLEVEL9K_DIR_FOREGROUND=254
+  # If directory is too long, shorten some of its segments to the shortest possible unique
+  # prefix. The shortened directory can be tab-completed to the original.
+  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
+  # Replace removed segment suffixes with this symbol.
+  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
+  # Color of the shortened directory segments.
+  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250
+  # Color of the anchor directory segments. Anchor segments are never shortened. The first
+  # segment is always an anchor.
+  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255
+  # Display anchor directory segments in bold.
+  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
+  # Don't shorten directories that contain any of these files. They are anchors.
+  local anchor_files=(
+    .bzr
+    .citc
+    .git
+    .hg
+    .node-version
+    .python-version
+    .go-version
+    .ruby-version
+    .lua-version
+    .java-version
+    .perl-version
+    .php-version
+    .tool-versions
+    .mise.toml
+    .shorten_folder_marker
+    .svn
+    .terraform
+    CVS
+    Cargo.toml
+    composer.json
+    go.mod
+    package.json
+    stack.yaml
+  )
+  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
+  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
+  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
+  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
+  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
+  # and other directories don't.
+  #
+  # Optionally, "first" and "last" can be followed by ":" where  is an integer.
+  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
+  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
+  # respectively.
+  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
+  # Don't shorten this many last directory segments. They are anchors.
+  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
+  # Shorten directory if it's longer than this even if there is space for it. The value can
+  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
+  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
+  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
+  # If set to `0`, directory will always be shortened to its minimum length.
+  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
+  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
+  # many columns for typing commands.
+  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
+  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
+  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
+  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
+  # If set to true, embed a hyperlink into the directory. Useful for quickly
+  # opening a directory in the file manager simply by clicking the link.
+  # Can also be handy when the directory is shortened, as it allows you to see
+  # the full directory that was used in previous commands.
+  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
+
+  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+  # and POWERLEVEL9K_DIR_CLASSES below.
+  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
+
+  # The default icon shown next to non-writable and non-existent directories when
+  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
+  typeset -g POWERLEVEL9K_LOCK_ICON='∅'
+
+  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
+  # directories. It must be an array with 3 * N elements. Each triplet consists of:
+  #
+  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
+  #      extended_glob option enabled.
+  #   2. Directory class for the purpose of styling.
+  #   3. An empty string.
+  #
+  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
+  #
+  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
+  #     '~/work(|/*)'  WORK     ''
+  #     '~(|/*)'       HOME     ''
+  #     '*'            DEFAULT  '')
+  #
+  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+  # WORK_NON_EXISTENT.
+  #
+  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
+  # option to define custom colors and icons for different directory classes.
+  #
+  #   # Styling for WORK.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4
+  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254
+  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250
+  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255
+  #
+  #   # Styling for WORK_NOT_WRITABLE.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_BACKGROUND=4
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=254
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255
+  #
+  #   # Styling for WORK_NON_EXISTENT.
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250
+  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255
+  #
+  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
+  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
+  # back to POWERLEVEL9K_DIR_FOREGROUND.
+  #
+  typeset -g POWERLEVEL9K_DIR_CLASSES=()
+
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_DIR_PREFIX='in '
+
+  #####################################[ vcs: git status ]######################################
+  # Version control background colors.
+  typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2
+  typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3
+  typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2
+  typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3
+  typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8
+
+  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
+  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
+
+  # Untracked files icon. It's really a question mark, your font isn't broken.
+  # Change the value of this parameter to show a different icon.
+  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
+
+  # Formatter for Git status.
+  #
+  # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
+  #
+  # You can edit the function to customize how Git status looks.
+  #
+  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
+  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
+  function my_git_formatter() {
+    emulate -L zsh
+
+    if [[ -n $P9K_CONTENT ]]; then
+      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
+      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
+      typeset -g my_git_format=$P9K_CONTENT
+      return
+    fi
+
+    # Styling for different parts of Git status.
+    local       meta='%7F' # white foreground
+    local      clean='%0F' # black foreground
+    local   modified='%0F' # black foreground
+    local  untracked='%0F' # black foreground
+    local conflicted='%1F' # red foreground
+
+    local res
+
+    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
+      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
+      # If local branch name is at most 32 characters long, show it in full.
+      # Otherwise show the first 12 … the last 12.
+      # Tip: To always show local branch name in full without truncation, delete the next line.
+      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
+      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
+    fi
+
+    if [[ -n $VCS_STATUS_TAG
+          # Show tag only if not on a branch.
+          # Tip: To always show tag, delete the next line.
+          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
+        ]]; then
+      local tag=${(V)VCS_STATUS_TAG}
+      # If tag name is at most 32 characters long, show it in full.
+      # Otherwise show the first 12 … the last 12.
+      # Tip: To always show tag name in full without truncation, delete the next line.
+      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
+      res+="${meta}#${clean}${tag//\%/%%}"
+    fi
+
+    # Display the current Git commit if there is no branch and no tag.
+    # Tip: To always display the current Git commit, delete the next line.
+    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
+      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
+
+    # Show tracking branch name if it differs from local branch.
+    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
+      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
+    fi
+
+    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
+    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
+      res+=" ${modified}wip"
+    fi
+
+    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
+      # ⇣42 if behind the remote.
+      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
+      # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
+      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
+      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
+    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
+      # Tip: Uncomment the next line to display '=' if up to date with the remote.
+      # res+=" ${clean}="
+    fi
+
+    # ⇠42 if behind the push remote.
+    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
+    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
+    # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
+    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
+    # *42 if have stashes.
+    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
+    # 'merge' if the repo is in an unusual state.
+    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
+    # ~42 if have merge conflicts.
+    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
+    # +42 if have staged changes.
+    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
+    # !42 if have unstaged changes.
+    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
+    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
+    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
+    # Remove the next line if you don't want to see untracked files at all.
+    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
+    # "─" if the number of unstaged files is unknown. This can happen due to
+    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
+    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
+    # in the repository config. The number of staged and untracked files may also be unknown
+    # in this case.
+    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
+
+    typeset -g my_git_format=$res
+  }
+  functions -M my_git_formatter 2>/dev/null
+
+  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
+  # more than this many files in the index. Negative value means infinity.
+  #
+  # If you are working in Git repositories with tens of millions of files and seeing performance
+  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
+  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
+  # config: `git config bash.showDirtyState false`.
+  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
+
+  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
+  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
+  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
+  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
+
+  # Disable the default Git status formatting.
+  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
+  # Install our own Git status formatter.
+  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}'
+  # Enable counters for staged, unstaged, etc.
+  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
+
+  # Custom icon.
+  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_VCS_PREFIX='on '
+
+  # Show status of repositories of these types. You can add svn and/or hg if you are
+  # using them. If you do, your prompt may become slow even when your current directory
+  # isn't in an svn or hg repository.
+  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
+
+  ##########################[ status: exit code of the last command ]###########################
+  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
+  # style them independently from the regular OK and ERROR state.
+  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
+
+  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
+  # it will signify success by turning green.
+  typeset -g POWERLEVEL9K_STATUS_OK=true
+  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
+  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2
+  typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0
+
+  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
+  # like this: 1|0.
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2
+  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0
+
+  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
+  # it will signify error by turning red.
+  typeset -g POWERLEVEL9K_STATUS_ERROR=true
+  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
+  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3
+  typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1
+
+  # Status when the last command was terminated by a signal.
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
+  # Use terse signal names: "INT" instead of "SIGINT(2)".
+  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3
+  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1
+
+  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
+  # It may look like this: 1|0.
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3
+  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1
+
+  ###################[ command_execution_time: duration of the last command ]###################
+  # Execution time color.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3
+  # Show duration of the last command if takes at least this many seconds.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
+  # Show this many fractional digits. Zero means round to seconds.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
+  # Duration format: 1d 2h 3m 4s.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
+  # Custom icon.
+  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took '
+
+  #######################[ background_jobs: presence of background jobs ]#######################
+  # Background jobs color.
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0
+  # Don't show the number of background jobs.
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
+  # Custom icon.
+  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡'
+
+  #######################[ direnv: direnv status (https://direnv.net/) ]########################
+  # Direnv color.
+  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=3
+  typeset -g POWERLEVEL9K_DIRENV_BACKGROUND=0
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
+  # Default asdf color. Only used to display tools for which there is no color override (see below).
+  # Tip:  Override these parameters for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND and
+  # POWERLEVEL9K_ASDF_${TOOL}_BACKGROUND.
+  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_BACKGROUND=7
+
+  # There are four parameters that can be used to hide asdf tools. Each parameter describes
+  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
+  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
+  # hide a tool, it gets shown.
+  #
+  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
+  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
+  #
+  #   asdf local  python 3.8.1
+  #   asdf global python 3.8.1
+  #
+  # After running both commands the current python version is 3.8.1 and its source is "local" as
+  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
+  # it'll hide python version in this case because 3.8.1 is the same as the global version.
+  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
+  # contain "local".
+
+  # Hide tool versions that don't come from one of these sources.
+  #
+  # Available sources:
+  #
+  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
+  # - local   `asdf current` says "set by /some/not/home/directory/file"
+  # - global  `asdf current` says "set by /home/username/file"
+  #
+  # Note: If this parameter is set to (shell local global), it won't hide tools.
+  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
+  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
+
+  # If set to false, hide tool versions that are the same as global.
+  #
+  # Note: The name of this parameter doesn't reflect its meaning at all.
+  # Note: If this parameter is set to true, it won't hide tools.
+  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
+  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
+
+  # If set to false, hide tool versions that are equal to "system".
+  #
+  # Note: If this parameter is set to true, it won't hide tools.
+  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
+  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
+
+  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
+  # in the current directory, or its parent directory, or its grandparent directory, and so on.
+  #
+  # Note: If this parameter is set to empty value, it won't hide tools.
+  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
+  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
+  #
+  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
+  # directory, in `..`, in `../..` and so on.
+  #
+  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
+  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
+
+  # Ruby version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_RUBY_BACKGROUND=1
+  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Python version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_PYTHON_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Go version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_GOLANG_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Node.js version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_NODEJS_BACKGROUND=2
+  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Rust version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_RUST_BACKGROUND=208
+  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # .NET Core version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_BACKGROUND=5
+  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Flutter version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_FLUTTER_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Lua version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_LUA_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Java version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=1
+  typeset -g POWERLEVEL9K_ASDF_JAVA_BACKGROUND=7
+  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Perl version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_PERL_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Erlang version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_ERLANG_BACKGROUND=1
+  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Elixir version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_ELIXIR_BACKGROUND=5
+  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Postgres version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_POSTGRES_BACKGROUND=6
+  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # PHP version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_PHP_BACKGROUND=5
+  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Haskell version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_HASKELL_BACKGROUND=3
+  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  # Julia version from asdf.
+  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ASDF_JULIA_BACKGROUND=2
+  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
+  # NordVPN connection indicator color.
+  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7
+  typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4
+  # Hide NordVPN connection indicator when not connected.
+  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
+  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom icon.
+  typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord'
+
+  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
+  # Ranger shell color.
+  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3
+  typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0
+  # Custom icon.
+  typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲'
+  
+  ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
+  # Yazi shell color.
+  typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3
+  typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0
+  # Custom icon.
+  typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='▲'
+  
+  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
+  # Nnn shell color.
+  typeset -g POWERLEVEL9K_NNN_FOREGROUND=0
+  typeset -g POWERLEVEL9K_NNN_BACKGROUND=6
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
+  # lf shell color.
+  typeset -g POWERLEVEL9K_LF_FOREGROUND=0
+  typeset -g POWERLEVEL9K_LF_BACKGROUND=6
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
+  # xplr shell color.
+  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0
+  typeset -g POWERLEVEL9K_XPLR_BACKGROUND=6
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
+  # Vim shell indicator color.
+  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_VIM_SHELL_BACKGROUND=2
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
+  # Midnight Commander shell color.
+  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=3
+  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_BACKGROUND=0
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
+  # Nix shell color.
+  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4
+
+  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
+
+  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
+  # chezmoi shell color.
+  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_BACKGROUND=4
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################################[ disk_usage: disk usage ]##################################
+  # Colors for different levels of disk usage.
+  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3
+  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=0
+  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=0
+  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=3
+  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=7
+  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=1
+  # Thresholds for different levels of disk usage (percentage points).
+  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
+  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
+  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
+  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]###########
+  # Foreground color.
+  typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0
+  # Text and color for normal (a.k.a. command) vi mode.
+  typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL
+  typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2
+  # Text and color for visual vi mode.
+  typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL
+  typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=4
+  # Text and color for overtype (a.k.a. overwrite and replace) vi mode.
+  typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE
+  typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=3
+  # Text and color for insert vi mode.
+  typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=
+  typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################################[ ram: free RAM ]#######################################
+  # RAM color.
+  typeset -g POWERLEVEL9K_RAM_FOREGROUND=0
+  typeset -g POWERLEVEL9K_RAM_BACKGROUND=3
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################################[ swap: used swap ]######################################
+  # Swap color.
+  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=0
+  typeset -g POWERLEVEL9K_SWAP_BACKGROUND=3
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######################################[ load: CPU load ]######################################
+  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
+  typeset -g POWERLEVEL9K_LOAD_WHICH=5
+  # Load color when load is under 50%.
+  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2
+  # Load color when load is between 50% and 70%.
+  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0
+  typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3
+  # Load color when load is over 70%.
+  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
+  # Todo color.
+  typeset -g POWERLEVEL9K_TODO_FOREGROUND=0
+  typeset -g POWERLEVEL9K_TODO_BACKGROUND=8
+  # Hide todo when the total number of tasks is zero.
+  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
+  # Hide todo when the number of tasks after filtering is zero.
+  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
+
+  # Todo format. The following parameters are available within the expansion.
+  #
+  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
+  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
+  #
+  # These variables correspond to the last line of the output of `todo.sh -p ls`:
+  #
+  #   TODO: 24 of 42 tasks shown
+  #
+  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
+  #
+  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
+  # Timewarrior color.
+  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255
+  typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8
+
+  # If the tracked task is longer than 24 characters, truncate and append "…".
+  # Tip: To always display tasks without truncation, delete the following parameter.
+  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
+  # value of the following parameter to "".
+  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
+  # Taskwarrior color.
+  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=0
+  typeset -g POWERLEVEL9K_TASKWARRIOR_BACKGROUND=6
+
+  # Taskwarrior segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
+  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
+  #
+  # Zero values are represented as empty parameters.
+  #
+  # The default format:
+  #
+  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
+  #
+  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
+  # Color when using local/global history.
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_BACKGROUND=5
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_BACKGROUND=3
+
+  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################################[ cpu_arch: CPU architecture ]################################
+  # CPU architecture color.
+  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=0
+  typeset -g POWERLEVEL9K_CPU_ARCH_BACKGROUND=3
+
+  # Hide the segment when on a specific CPU architecture.
+  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
+  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##################################[ context: user@hostname ]##################################
+  # Context color when running with privileges.
+  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
+  typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0
+  # Context color in SSH without privileges.
+  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3
+  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0
+  # Default context color (no privileges, no SSH).
+  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3
+  typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0
+
+  # Context format when running with privileges: user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m'
+  # Context format when in SSH without privileges: user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
+  # Default context format (no privileges, no SSH): user@hostname.
+  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
+
+  # Don't show context unless running with privileges or in SSH.
+  # Tip: Remove the next line to always show context.
+  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='with '
+
+  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
+  # Python virtual environment color.
+  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4
+  # Don't show Python version next to the virtual environment name.
+  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
+  # If set to "false", won't show virtualenv if pyenv is already shown.
+  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
+  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
+  # Separate environment name from Python version only with a space.
+  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################[ anaconda: conda environment (https://conda.io/) ]######################
+  # Anaconda environment color.
+  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=0
+  typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4
+
+  # Anaconda segment format. The following parameters are available within the expansion.
+  #
+  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
+  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
+  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
+  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
+  #
+  # CONDA_PROMPT_MODIFIER can be configured with the following command:
+  #
+  #   conda config --set env_prompt '({default_env}) '
+  #
+  # The last argument is a Python format string that can use the following variables:
+  #
+  # - prefix       The same as CONDA_PREFIX.
+  # - default_env  The same as CONDA_DEFAULT_ENV.
+  # - name         The last segment of CONDA_PREFIX.
+  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
+  #                always the same as default_env.
+  #
+  # Note: '({default_env}) ' is the default value of env_prompt.
+  #
+  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
+  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
+  # is empty.
+  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
+  # Pyenv color.
+  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4
+  # Hide python version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
+  # If set to false, hide python version if it's the same as global:
+  # $(pyenv version-name) == $(pyenv global).
+  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide python version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
+
+  # Pyenv segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
+  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
+  #
+  # The default format has the following logic:
+  #
+  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
+  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
+  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
+  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
+  # Goenv color.
+  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_GOENV_BACKGROUND=4
+  # Hide go version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
+  # If set to false, hide go version if it's the same as global:
+  # $(goenv version-name) == $(goenv global).
+  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide go version if it's equal to "system".
+  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
+  # Nodenv color.
+  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2
+  typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0
+  # Hide node version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
+  # If set to false, hide node version if it's the same as global:
+  # $(nodenv version-name) == $(nodenv global).
+  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide node version if it's equal to "system".
+  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
+  # Nvm color.
+  typeset -g POWERLEVEL9K_NVM_FOREGROUND=0
+  typeset -g POWERLEVEL9K_NVM_BACKGROUND=5
+  # If set to false, hide node version if it's the same as default:
+  # $(nvm version current) == $(nvm version default).
+  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide node version if it's equal to "system".
+  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
+  # Nodeenv color.
+  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=2
+  typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0
+  # Don't show Node version next to the environment name.
+  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
+  # Separate environment name from Node version only with a space.
+  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##############################[ node_version: node.js version ]###############################
+  # Node version color.
+  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=7
+  typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2
+  # Show node version only when in a directory tree containing package.json.
+  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######################[ go_version: go version (https://golang.org) ]########################
+  # Go version color.
+  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=255
+  typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2
+  # Show go version only when in a go project subdirectory.
+  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
+  # Rust version color.
+  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=0
+  typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208
+  # Show rust version only when in a rust project subdirectory.
+  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
+  # .NET version color.
+  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=7
+  typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5
+  # Show .NET version only when in a .NET project subdirectory.
+  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #####################[ php_version: php version (https://www.php.net/) ]######################
+  # PHP version color.
+  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PHP_VERSION_BACKGROUND=5
+  # Show PHP version only when in a PHP project subdirectory.
+  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
+  # Laravel version color.
+  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=1
+  typeset -g POWERLEVEL9K_LARAVEL_VERSION_BACKGROUND=7
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
+  # Rbenv color.
+  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1
+  # Hide ruby version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
+  # If set to false, hide ruby version if it's the same as global:
+  # $(rbenv version-name) == $(rbenv global).
+  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide ruby version if it's equal to "system".
+  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ####################[ java_version: java version (https://www.java.com/) ]####################
+  # Java version color.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=1
+  typeset -g POWERLEVEL9K_JAVA_VERSION_BACKGROUND=7
+  # Show java version only when in a java project subdirectory.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
+  # Show brief version.
+  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
+  # Package color.
+  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PACKAGE_BACKGROUND=6
+
+  # Package format. The following parameters are available within the expansion.
+  #
+  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
+  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
+  #
+  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
+  # Rvm color.
+  typeset -g POWERLEVEL9K_RVM_FOREGROUND=0
+  typeset -g POWERLEVEL9K_RVM_BACKGROUND=240
+  # Don't show @gemset at the end.
+  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
+  # Don't show ruby- at the front.
+  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
+  # Fvm color.
+  typeset -g POWERLEVEL9K_FVM_FOREGROUND=0
+  typeset -g POWERLEVEL9K_FVM_BACKGROUND=4
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
+  # Lua color.
+  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_LUAENV_BACKGROUND=4
+  # Hide lua version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
+  # If set to false, hide lua version if it's the same as global:
+  # $(luaenv version-name) == $(luaenv global).
+  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide lua version if it's equal to "system".
+  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
+  # Java color.
+  typeset -g POWERLEVEL9K_JENV_FOREGROUND=1
+  typeset -g POWERLEVEL9K_JENV_BACKGROUND=7
+  # Hide java version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
+  # If set to false, hide java version if it's the same as global:
+  # $(jenv version-name) == $(jenv global).
+  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide java version if it's equal to "system".
+  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
+  # Perl color.
+  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PLENV_BACKGROUND=4
+  # Hide perl version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
+  # If set to false, hide perl version if it's the same as global:
+  # $(plenv version-name) == $(plenv global).
+  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide perl version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
+  # Perlbrew color.
+  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
+  # Show perlbrew version only when in a perl project subdirectory.
+  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
+  # Don't show "perl-" at the front.
+  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
+  # PHP color.
+  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_PHPENV_BACKGROUND=5
+  # Hide php version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
+  # If set to false, hide php version if it's the same as global:
+  # $(phpenv version-name) == $(phpenv global).
+  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide PHP version if it's equal to "system".
+  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
+  # Scala color.
+  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=0
+  typeset -g POWERLEVEL9K_SCALAENV_BACKGROUND=1
+  # Hide scala version if it doesn't come from one of these sources.
+  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
+  # If set to false, hide scala version if it's the same as global:
+  # $(scalaenv version-name) == $(scalaenv global).
+  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
+  # If set to false, hide scala version if it's equal to "system".
+  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
+  # Haskell color.
+  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=0
+  typeset -g POWERLEVEL9K_HASKELL_STACK_BACKGROUND=3
+
+  # Hide haskell version if it doesn't come from one of these sources.
+  #
+  #   shell:  version is set by STACK_YAML
+  #   local:  version is set by stack.yaml up the directory tree
+  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
+  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
+  # If set to false, hide haskell version if it's the same as in the implicit global project.
+  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
+  # Don't show terraform workspace if it's literally "default".
+  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
+  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current terraform workspace gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       OTHER)
+  #
+  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
+  # doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=2
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_BACKGROUND=0
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'         OTHER)
+  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4
+  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0
+  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
+  # Terraform version color.
+  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4
+  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]#################
+  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf'
+
+  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
+  # Show kubecontext only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show kubecontext.
+  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
+
+  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
+  # different contexts.
+  #
+  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current kubernetes context gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       DEFAULT)
+  #
+  # If your current kubernetes context is "deathray-testing/default", its class is TEST
+  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=0
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'       DEFAULT)
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○'
+
+  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
+  # segment. Parameter expansions are very flexible and fast, too. See reference:
+  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+  #
+  # Within the expansion the following parameters are always available:
+  #
+  # - P9K_CONTENT                The content that would've been displayed if there was no content
+  #                              expansion defined.
+  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
+  #                              output of `kubectl config get-contexts`.
+  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
+  #                              output of `kubectl config get-contexts`.
+  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
+  #                              in the output of `kubectl config get-contexts`. If there is no
+  #                              namespace, the parameter is set to "default".
+  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
+  #                              output of `kubectl config get-contexts`.
+  #
+  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
+  # the following extra parameters are available:
+  #
+  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
+  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
+  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
+  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
+  #
+  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
+  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
+  #
+  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
+  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
+  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
+  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+  #
+  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
+  #
+  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
+  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
+  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
+  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
+  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
+  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
+  # Append the current context's namespace if it's not "default".
+  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
+
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at '
+
+  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
+  # Show aws only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show aws.
+  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
+
+  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current AWS profile gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       DEFAULT)
+  #
+  # If your current AWS profile is "company_test", its class is TEST
+  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_AWS_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'       DEFAULT)
+  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=7
+  typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1
+  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # AWS segment format. The following parameters are available within the expansion.
+  #
+  # - P9K_AWS_PROFILE  The name of the current AWS profile.
+  # - P9K_AWS_REGION   The region associated with the current AWS profile.
+  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
+
+  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
+  # AWS Elastic Beanstalk environment color.
+  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2
+  typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0
+  # Custom icon.
+  typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb'
+
+  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
+  # Show azure only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show azure.
+  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
+
+  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
+  # in each pair defines a pattern against which the current azure account name gets matched.
+  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
+  # you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
+  # first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+  #     '*prod*'  PROD
+  #     '*test*'  TEST
+  #     '*'       OTHER)
+  #
+  # If your current azure account is "company_test", its class is TEST because "company_test"
+  # doesn't match the pattern '*prod*' but does match '*test*'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_BACKGROUND=0
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+      # '*prod*'  PROD    # These values are examples that are unlikely
+      # '*test*'  TEST    # to match your needs. Customize them as needed.
+      '*'         OTHER)
+
+  # Azure account name color.
+  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=7
+  typeset -g POWERLEVEL9K_AZURE_OTHER_BACKGROUND=4
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
+  # Show gcloud only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show gcloud.
+  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
+  # Google cloud color.
+  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7
+  typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4
+
+  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
+  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
+  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
+  # output of `gcloud` tool.
+  #
+  #   Parameter                | Source
+  #   -------------------------|--------------------------------------------------------------------
+  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
+  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
+  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
+  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
+  #
+  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
+  #
+  # Obtaining project name requires sending a request to Google servers. This can take a long time
+  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
+  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
+  # set and gcloud prompt segment transitions to state COMPLETE.
+  #
+  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
+  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
+  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
+  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
+  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
+  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
+
+  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
+  # this often. Negative value disables periodic polling. In this mode project name is retrieved
+  # only when the current configuration, account or project id changes.
+  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
+
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
+  # Show google_app_cred only when the command you are typing invokes one of these tools.
+  # Tip: Remove the next line to always show google_app_cred.
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
+
+  # Google application credentials classes for the purpose of using different colors, icons and
+  # expansions with different credentials.
+  #
+  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
+  # element in each pair defines a pattern against which the current kubernetes context gets
+  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
+  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
+  # parameters, you'll see this value in your prompt. The second element of each pair in
+  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
+  # The first match wins.
+  #
+  # For example, given these settings:
+  #
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+  #     '*:*prod*:*'  PROD
+  #     '*:*test*:*'  TEST
+  #     '*'           DEFAULT)
+  #
+  # If your current Google application credentials is "service_account deathray-testing x@y.com",
+  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
+  #
+  # You can define different colors, icons and content expansions for different classes:
+  #
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
+      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
+      '*'             DEFAULT)
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=7
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_BACKGROUND=4
+  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
+  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
+  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+  #
+  # You can use the following parameters in the expansion. Each of them corresponds to one of the
+  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
+  #
+  #   Parameter                        | JSON key file field
+  #   ---------------------------------+---------------
+  #   P9K_GOOGLE_APP_CRED_TYPE         | type
+  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
+  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
+  #
+  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
+  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
+
+  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
+  # Toolbox color.
+  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0
+  typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3
+  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
+  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in '
+
+  ###############################[ public_ip: public IP address ]###############################
+  # Public IP color.
+  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7
+  typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ########################[ vpn_ip: virtual private network indicator ]#########################
+  # VPN IP color.
+  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=0
+  typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6
+  # When on VPN, show just an icon without the IP address.
+  # Tip: To display the private IP address when on VPN, remove the next line.
+  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
+  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
+  # to see the name of the interface.
+  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
+  # If set to true, show one segment per matching network interface. If set to false, show only
+  # one segment corresponding to the first matching network interface.
+  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
+  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
+  # IP color.
+  typeset -g POWERLEVEL9K_IP_BACKGROUND=4
+  typeset -g POWERLEVEL9K_IP_FOREGROUND=0
+  # The following parameters are accessible within the expansion:
+  #
+  #   Parameter             | Meaning
+  #   ----------------------+-------------------------------------------
+  #   P9K_IP_IP             | IP address
+  #   P9K_IP_INTERFACE      | network interface
+  #   P9K_IP_RX_BYTES       | total number of bytes received
+  #   P9K_IP_TX_BYTES       | total number of bytes sent
+  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
+  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
+  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
+  #   P9K_IP_TX_RATE        | send rate (since last prompt)
+  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP'
+  # Show information for the first network interface whose name matches this regular expression.
+  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
+  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
+  # Proxy color.
+  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4
+  typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  ################################[ battery: internal battery ]#################################
+  # Show battery in red when it's below this level and not connected to power supply.
+  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
+  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=1
+  # Show battery in green when it's charging or fully charged.
+  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2
+  # Show battery in yellow when it's discharging.
+  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3
+  # Battery pictograms going from low to high level of charge.
+  typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█')
+  # Don't show the remaining time to charge/discharge.
+  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
+  typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0
+
+  #####################################[ wifi: wifi speed ]#####################################
+  # WiFi color.
+  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=0
+  typeset -g POWERLEVEL9K_WIFI_BACKGROUND=4
+  # Custom icon.
+  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
+  #
+  #   # Wifi colors and icons for different signal strength levels (low to high).
+  #   typeset -g my_wifi_fg=(0 0 0 0 0)                                # <-- change these values
+  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
+  #
+  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
+  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
+  #
+  # The following parameters are accessible within the expansions:
+  #
+  #   Parameter             | Meaning
+  #   ----------------------+---------------
+  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
+  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
+  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
+  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
+  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
+  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
+
+  ####################################[ time: current time ]####################################
+  # Current time color.
+  typeset -g POWERLEVEL9K_TIME_FOREGROUND=0
+  typeset -g POWERLEVEL9K_TIME_BACKGROUND=7
+  # Format for the current time: 09:51:02. See `man 3 strftime`.
+  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
+  # If set to true, time will update when you hit enter. This way prompts for the past
+  # commands will contain the start times of their commands as opposed to the default
+  # behavior where they contain the end times of their preceding commands.
+  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
+  # Custom icon.
+  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=
+  # Custom prefix.
+  # typeset -g POWERLEVEL9K_TIME_PREFIX='at '
+
+  # Example of a user-defined prompt segment. Function prompt_example will be called on every
+  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
+  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and yellow text on red background
+  # greeting the user.
+  #
+  # Type `p10k help segment` for documentation and a more sophisticated example.
+  function prompt_example() {
+    p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n'
+  }
+
+  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
+  # is to generate the prompt segment for display in instant prompt. See
+  # https://github.com/romkatv/powerlevel10k#instant-prompt.
+  #
+  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
+  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
+  # will replay these calls without actually calling instant_prompt_*. It is imperative that
+  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
+  # rule is not observed, the content of instant prompt will be incorrect.
+  #
+  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
+  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
+  function instant_prompt_example() {
+    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
+    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
+    # and regular prompts.
+    prompt_example
+  }
+
+  # User-defined prompt segments can be customized the same way as built-in segments.
+  typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=3
+  typeset -g POWERLEVEL9K_EXAMPLE_BACKGROUND=1
+  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
+  # when accepting a command line. Supported values:
+  #
+  #   - off:      Don't change prompt when accepting a command line.
+  #   - always:   Trim down prompt when accepting a command line.
+  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
+  #               typed after changing current working directory.
+  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
+
+  # Instant prompt mode.
+  #
+  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
+  #              it incompatible with your zsh configuration files.
+  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
+  #              during zsh initialization. Choose this if you've read and understood
+  #              https://github.com/romkatv/powerlevel10k#instant-prompt.
+  #   - verbose: Enable instant prompt and print a warning when detecting console output during
+  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
+  #              seen the warning, or if you are unsure what this all means.
+  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
+
+  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
+  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
+  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
+  # really need it.
+  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
+
+  # If p10k is already loaded, reload configuration.
+  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
+  (( ! $+functions[p10k] )) || p10k reload
+}
+
+# Tell `p10k configure` which file it should overwrite.
+typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
+
+(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
+'builtin' 'unset' 'p10k_config_opts'
diff --git a/chezmoi/dot_profile b/chezmoi/dot_profile
new file mode 100644
index 00000000..c1eac83e
--- /dev/null
+++ b/chezmoi/dot_profile
@@ -0,0 +1,27 @@
+#############################################################
+# Generic configuration that applies to all shells
+#############################################################
+
+# Load user-specific personalisation.
+source ~/dotfiles/personalisation
+
+# Load paths and environment variables
+source ~/dotfiles/shellvars
+source ~/dotfiles/shellfunctions
+source ~/dotfiles/shellpaths
+source ~/dotfiles/shellaliases
+source ~/dotfiles/shellactivities
+
+export PYENV_ROOT="$HOME/.pyenv"
+export PATH="$PYENV_ROOT/bin:$PATH"
+eval "$(pyenv init --path)"
+if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
+
+# goenv setup
+eval "$(goenv init -)"
+
+export PATH="$GOROOT/bin:$PATH"
+export PATH="$PATH:$GOPATH/bin"
+
+. "$HOME/.cargo/env"
+
diff --git a/chezmoi/dot_pythonrc b/chezmoi/dot_pythonrc
new file mode 100644
index 00000000..b3fd2b2e
--- /dev/null
+++ b/chezmoi/dot_pythonrc
@@ -0,0 +1,44 @@
+# vim: set ft=python :
+# Add auto-completion and a stored history file of commands to your Python
+# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
+# bound to the Esc key by default (you can change it - see readline docs).
+#
+# Store the file in ~/.pystartup, and set an environment variable to point
+# to it:  "export PYTHONSTARTUP=/home/gsf/.pystartup" in bash.
+#
+# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
+# full path to your home directory.
+
+
+from __future__ import print_function
+
+try:
+    import readline
+    import atexit
+    import os
+    import sys
+    import platform
+    import gnureadline as readline
+except ImportError as exception:
+    print('Python shell enhancement module problem: {0}'.format(exception))
+else:
+    # Enable Tab Completion
+    # OSX's bind should only be applied with legacy readline.
+    if sys.platform == 'darwin' and 'libedit' in readline.__doc__:
+        readline.parse_and_bind("bind ^I rl_complete")
+    else:
+        readline.parse_and_bind("tab: complete")
+
+    # Enable History File
+    history_file = os.environ.get("PYTHON_HISTORY_FILE",
+                                  os.path.join(os.environ['HOME'],
+                                               '.pyhistory'))
+    if os.path.isfile(history_file):
+        readline.read_history_file(history_file)
+    else:
+        open(history_file, 'a').close()
+    atexit.register(readline.write_history_file, history_file)
+    print('Completed ~/pythonstartup.py')
+
+    # anything not deleted (sys and os) will remain in the interpreter session
+    del atexit, readline, history_file
diff --git a/chezmoi/dot_terraformrc b/chezmoi/dot_terraformrc
new file mode 100644
index 00000000..d8e09193
--- /dev/null
+++ b/chezmoi/dot_terraformrc
@@ -0,0 +1 @@
+plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf
new file mode 100644
index 00000000..09cf1be0
--- /dev/null
+++ b/chezmoi/dot_tmux.conf
@@ -0,0 +1,232 @@
+# ~/.tmux.conf
+
+###########################################################################
+# General options
+
+# Set profix to C-a.
+set -g prefix C-b
+unbind C-a
+
+# Default termtype. If the rcfile sets $TERM, that overrides this value.
+set -g default-terminal screen-256color
+
+# Ring the bell if any background window rang a bell
+set -g bell-action any
+
+# Watch for activity in background windows
+setw -g monitor-activity on
+set -g visual-activity on
+
+# scrollback size
+set -g history-limit 10000
+
+# set first window to index 1 (not 0) to map more to the keyboard layout
+set -g base-index 1
+setw -g pane-base-index 1
+
+# pass through xterm keys
+set -g xterm-keys on
+
+###########################################################################
+# General keymap
+
+# Keep your finger on ctrl, or don't, same result
+bind-key C-d detach-client
+bind-key C-c new-window
+bind-key C-p paste-buffer
+
+# Redraw the client (if interrupted by wall, etc)
+bind R refresh-client
+
+# reload tmux config
+unbind r
+bind r \
+    source-file ~/.tmux.conf \;\
+    display 'Reloaded tmux config.'
+
+# Use emacs keybindings for tmux commandline input.
+#set -g status-keys emacs
+
+# Use vi keybindings in copy and choice modes
+#setw -g mode-keys vi
+
+###########################################################################
+# Window management / navigation
+
+# move between windows
+#bind-key C-h previous-window
+#bind-key C-l next-window
+
+# C-\ (no prefix) to skip to last window we were in before this one
+bind -n "C-\\" last-window
+
+# C-Space (no prefix) to tab to next window
+bind -n C-Space next-window
+
+# C-Shift-Left swaps current window with window to the left.
+bind-key -n C-S-Left swap-window -t -1
+
+# C-Shift-Right swaps current window with window to the right.
+bind-key -n C-S-Right swap-window -t +1
+
+###########################################################################
+# Pane management / navigation
+
+# Horizontal splits with s or C-s
+#unbind s
+#unbind C-s
+#bind-key s split-window
+#bind-key C-s split-window
+bind | split-window -h
+
+# Vertical split with v or C-v
+#unbind v
+#unbind C-v
+#bind-key v split-window -h
+#bind-key C-v split-window -h
+bind - split-window -v
+
+# navigation with C-{h,j,k,l} -- NO PREFIX
+# https://gist.github.com/mislav/5189704
+
+#bind -n C-k run-shell 'tmux-vim-select-pane -U'
+#bind -n C-j run-shell 'tmux-vim-select-pane -D'
+#bind -n C-h run-shell 'tmux-vim-select-pane -L'
+#bind -n C-l run-shell 'tmux-vim-select-pane -R'
+
+# C-b C-k to passthrough a C-k
+# C-k is consumed for pane navigation but we want it for kill-to-eol
+unbind C-k
+bind C-k send-key C-k
+
+# Pane resize in all four directions using vi bindings.
+# Can use these raw but I map them to Cmd-Opt- in iTerm2.
+# http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
+# Note on a few prefix options: C-a = 0x01, C-b = 0x02, C-g = 0x06
+#bind-key J resize-pane -D
+#bind-key K resize-pane -U
+#bind-key H resize-pane -L
+#bind-key L resize-pane -R
+
+# easily toggle synchronization (mnemonic: e is for echo)
+# sends input to all panes in a given window.
+#bind e setw synchronize-panes on
+#bind E setw synchronize-panes off
+
+###########################################################################
+# Scrollback / pastebuffer
+
+# Vim-style copy/paste
+#unbind [
+#bind y copy-mode
+#unbind p
+#bind p paste-buffer
+#bind -t vi-copy v begin-selection
+#bind -t vi-copy y copy-selection
+#bind -t vi-copy Escape cancel
+
+###########################################################################
+# Mouse mode
+
+#set -g mode-mouse on
+#set -g mouse-resize-pane on
+#set -g mouse-select-pane on
+#set -g mouse-select-window on
+
+# Toggle mouse on
+bind m \
+    set -g mode-mouse on \;\
+    set -g mouse-resize-pane on \;\
+    set -g mouse-select-pane on \;\
+    set -g mouse-select-window on \;\
+    display 'Mouse: ON'
+
+# Toggle mouse off
+bind M \
+    set -g mode-mouse off \;\
+    set -g mouse-resize-pane off \;\
+    set -g mouse-select-pane off \;\
+    set -g mouse-select-window off \;\
+    display 'Mouse: OFF'
+
+###########################################################################
+# Color scheme (Solarized light)
+
+### default statusbar colors
+##set-option -g status-bg colour231 #base2
+##set-option -g status-fg colour130 #yellow
+##set-option -g status-attr default
+##
+### default window title colors
+##set-window-option -g window-status-fg colour180 #base00
+##set-window-option -g window-status-bg default
+##
+### active window title colors
+##set-window-option -g window-status-current-fg colour196 #orange
+##set-window-option -g window-status-current-bg default
+##
+### pane border
+##set-option -g pane-active-border-fg black
+##set-option -g pane-active-border-bg white
+##set-option -g pane-border-fg brightcyan
+##set-option -g pane-border-bg default
+##
+### message text
+##set-option -g message-bg colour231 #base2
+##set-option -g message-fg colour196 #orange
+##
+### pane number display
+##set-option -g display-panes-active-colour colour20 #blue
+##set-option -g display-panes-colour colour196 #orange
+##
+### clock
+##set-window-option -g clock-mode-colour colour40 #green
+
+###########################################################################
+# Color scheme (Solarized Dark)
+
+# default statusbar colors
+set-option -g status-bg brightgreen
+set-option -g status-fg white
+set-option -g status-attr default
+
+# default window title colors
+set-window-option -g window-status-fg brightcyan
+set-window-option -g window-status-bg default
+#set-window-option -g window-status-attr dim
+
+# active window title colors
+set-window-option -g window-status-current-fg white
+set-window-option -g window-status-current-bg blue
+#set-window-option -g window-status-current-attr bright
+
+# pane border
+set-option -g pane-border-fg brightgreen
+set-option -g pane-active-border-fg red
+
+# message text
+set-option -g message-bg black
+set-option -g message-fg red
+
+# pane number display
+set-option -g display-panes-active-colour red
+set-option -g display-panes-colour white
+
+# clock
+set-window-option -g clock-mode-colour cyan
+
+###########################################################################
+
+# List of plugins
+set -g @plugin 'tmux-plugins/tpm'
+set -g @plugin 'tmux-plugins/tmux-sensible'
+set -g @plugin 'tmux-plugins/tmux-resurrect'
+set -g @plugin 'tmux-plugins/tmux-continuum'
+
+# Other examples:
+# set -g @plugin 'github_username/plugin_name'
+# set -g @plugin 'git@github.com/user/plugin'
+# set -g @plugin 'git@bitbucket.com/user/plugin'
+
+# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
+run '~/.tmux/plugins/tpm/tpm'
diff --git a/chezmoi/dot_vimrc b/chezmoi/dot_vimrc
new file mode 100644
index 00000000..98b85c16
--- /dev/null
+++ b/chezmoi/dot_vimrc
@@ -0,0 +1,224 @@
+" ########################################################################
+" # VI text editor setup
+" ########################################################################
+
+" NOTE: make sure vim is actually installed, and that you're not trying 
+" to run this in vi!
+
+set shell=/bin/bash 
+set term=linux
+
+" set paste
+" set number
+
+" set our tabs to four spaces
+set ts=4
+" set smartindent
+set tabstop=4
+set shiftwidth=4
+set expandtab
+
+" turn syntax highlighting on by default
+syntax on
+filetype plugin indent on
+
+" set auto-indenting on for programming
+set ai
+
+" turn off compatibility with the old vi
+set nocompatible
+
+" turn on the "visual bell" - which is much quieter than the "audio blink"
+set visualbell 
+set t_vb=
+
+" disable screen restoring
+set t_ti= t_te=
+
+" automatically show matching brackets. works like it does in bbedit.
+set showmatch
+
+" make that backspace key work the way it should
+" set backspace=indent,eol,start
+set backspace=indent,eol
+
+set expandtab shiftwidth=4 tabstop=4
+
+filetype off                   " required!
+
+" use `:W` to sudo save a file if you forget to `sudo vim` the file
+command W w !sudo tee % > /dev/null
+
+filetype plugin indent on     " required!
+
+"let g:syntastic_enable_signs=1
+"let g:syntastic_auto_jump=1
+"let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'
+
+"set statusline+=%#warningmsg#
+"set statusline+=%{SyntasticStatuslineFlag()}
+"set statusline+=%*
+
+" Syntax highlighting only when vim-common is there
+if has("mouse_gpm") && filereadable("/usr/share/vim/syntax/syntax.vim")
+  syntax on filetype on
+endif
+
+set background=dark
+colorscheme solarized
+
+"Display a status-line
+set statusline=~
+
+"I know it's horrible for a vi master but useful for newbies.
+imap  I
+imap  A
+map  w
+imap  w
+cmap  
+
+"Some macros to manage the buffer of vim
+map  :bp
+map  :bn
+map  :bd
+
+" set our tabs to four spaces
+set ts=4
+
+"Default backspace like normal
+set bs=2
+
+"Terminal for 80 char ? so vim can play till 79 char.
+set textwidth=79
+
+"Some option desactivate by default (remove the no).
+set nobackup
+set nohlsearch
+set noincsearch
+
+" Tell vim to remember certain things when we exit
+"  '50  :  marks will be remembered for up to 50 previously edited files
+"  "100 :  will save up to 100 lines for each register
+"  :50 :  up to 50 lines of command-line history will be remembered
+"  %    :  saves and restores the buffer list
+"  n... :  where to save the viminfo files
+set viminfo='50,\"100,:50,%,n~/.viminfo
+
+"Show the position of the cursor.
+set ruler
+
+"" Gzip and Bzip2 files support
+" Take from the Debian package and the exemple on $VIM/vim_exemples
+if has("autocmd")
+
+autocmd FileType agc setlocal shiftwidth=8 tabstop=8
+"autocmd FileType agc setlocal tabstop=8
+
+function! ResCur()
+  if line("'\"") <= line("$")
+    normal! g`"
+    return 1
+  endif
+endfunction
+
+augroup resCur
+  autocmd!
+  autocmd BufWinEnter * call ResCur()
+augroup END
+
+au BufNewFile,BufRead *.log setf logs
+
+" Set some sensible defaults for editing C-files
+augroup cprog
+  " Remove all cprog autocommands
+  au!
+
+  " When starting to edit a file:
+  "   For *.c and *.h files set formatting of comments and set C-indenting on.
+  "   For other files switch it off.
+  "   Don't change the order, it's important that the line with * comes first.
+  autocmd BufRead *       set formatoptions=tcql nocindent comments&
+  autocmd BufRead *.c,*.h set expandtab shiftwidth=4 tabstop=4 formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,://
+augroup END
+
+" Set some sensible defaults for editing Python files
+augroup pyprog
+  " Remove all pyprog autocommands
+  au!
+
+  " When starting to edit a file:
+  "   For *.py set formatting of comments and set indenting on.
+  "   Don't change the order, it's important that the line with * comes first.
+  autocmd BufRead *.py set expandtab shiftwidth=4 tabstop=4
+augroup END
+
+" Also, support editing of gzip-compressed files. DO NOT REMOVE THIS!
+" This is also used when loading the compressed helpfiles.
+augroup gzip
+  " Remove all gzip autocommands
+  au!
+
+  " Enable editing of gzipped files
+  "	  read:	set binary mode before reading the file
+  "		uncompress text in buffer after reading
+  "	 write:	compress file after writing
+  "	append:	uncompress file, append, compress file
+  autocmd BufReadPre,FileReadPre	*.gz set bin
+  autocmd BufReadPre,FileReadPre	*.gz let ch_save = &ch|set ch=2
+  autocmd BufReadPost,FileReadPost	*.gz '[,']!gunzip
+  autocmd BufReadPost,FileReadPost	*.gz set nobin
+  autocmd BufReadPost,FileReadPost	*.gz let &ch = ch_save|unlet ch_save
+  autocmd BufReadPost,FileReadPost	*.gz execute ":doautocmd BufReadPost " . %:r
+
+  autocmd BufWritePost,FileWritePost	*.gz !mv  :r
+  autocmd BufWritePost,FileWritePost	*.gz !gzip :r
+
+  autocmd FileAppendPre			*.gz !gunzip 
+  autocmd FileAppendPre			*.gz !mv :r 
+  autocmd FileAppendPost		*.gz !mv  :r
+  autocmd FileAppendPost		*.gz !gzip :r
+augroup END
+
+augroup bzip2
+  " Remove all bzip2 autocommands
+  au!
+
+  " Enable editing of bzipped files
+  "       read: set binary mode before reading the file
+  "             uncompress text in buffer after reading
+  "      write: compress file after writing
+  "     append: uncompress file, append, compress file
+  autocmd BufReadPre,FileReadPre        *.bz2 set bin
+  autocmd BufReadPre,FileReadPre        *.bz2 let ch_save = &ch|set ch=2
+  autocmd BufReadPost,FileReadPost      *.bz2 set cmdheight=2|'[,']!bunzip2
+  autocmd BufReadPost,FileReadPost      *.bz2 set cmdheight=1 nobin|execute ":doautocmd BufReadPost " . %:r
+  autocmd BufReadPost,FileReadPost      *.bz2 let &ch = ch_save|unlet ch_save
+
+  autocmd BufWritePost,FileWritePost    *.bz2 !mv  :r
+  autocmd BufWritePost,FileWritePost    *.bz2 !bzip2 :r
+
+  autocmd FileAppendPre                 *.bz2 !bunzip2 
+  autocmd FileAppendPre                 *.bz2 !mv :r 
+  autocmd FileAppendPost                *.bz2 !mv  :r
+  autocmd FileAppendPost                *.bz2 !bzip2 -9 --repetitive-best :r
+
+  autocmd FileType make setlocal noexpandtab
+augroup END
+
+autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,(
+
+endif " has ("autocmd")
+
+" Use terminals bracketed paste mode to set/unset Vims paste mode when you paste.
+" https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
+let &t_SI .= "\[?2004h"
+let &t_EI .= "\[?2004l"
+
+inoremap   [200~ XTermPasteBegin()
+
+function! XTermPasteBegin()
+  set pastetoggle=[201~
+  set paste
+  return ""
+endfunction
+
diff --git a/chezmoi/dot_xxdiffrc b/chezmoi/dot_xxdiffrc
new file mode 100644
index 00000000..c8bd699c
--- /dev/null
+++ b/chezmoi/dot_xxdiffrc
@@ -0,0 +1,10 @@
+FontText: "Lucida Console,7,-1,5,50,0,0,0,0,0"
+Color.Same.Back: "#e2e2e2"
+AutoSelectMerge: True
+DirDiffRecursive: True
+Show.Toolbar: True
+TabWidth: 4
+Command.DiffDirectories: "diff -q -s -x .svn"
+Command.DiffDirectoriesRec: "diff -q -s -r -x .svn"
+Command.DiffFiles2: "diff -d"
+Geometry: Maximize
diff --git a/chezmoi/dot_zprofile b/chezmoi/dot_zprofile
new file mode 100644
index 00000000..4fc9027f
--- /dev/null
+++ b/chezmoi/dot_zprofile
@@ -0,0 +1,10 @@
+##############################################################################
+# Import the shell-agnostic (Bash or Zsh) environment config
+##############################################################################
+source ~/.profile
+
+##############################################################################
+# rupa/z setup (path frecency with tab completion)
+##############################################################################
+source ~/dotfiles/z/z.sh
+
diff --git a/chezmoi/dot_zshenv b/chezmoi/dot_zshenv
new file mode 100644
index 00000000..3880e03a
--- /dev/null
+++ b/chezmoi/dot_zshenv
@@ -0,0 +1,5 @@
+fpath=($fpath $HOME/.zsh/func)
+typeset -U fpath
+alias assume="source assume"
+
+. "$HOME/.cargo/env"
diff --git a/chezmoi/dot_zshrc b/chezmoi/dot_zshrc
new file mode 100644
index 00000000..fafc11ed
--- /dev/null
+++ b/chezmoi/dot_zshrc
@@ -0,0 +1,223 @@
+# Interactive shell configuration.
+
+##############################################################################
+# ZShell History Configuration
+##############################################################################
+export HISTFILE=~/.zsh_history   # Where to save history to disk
+export HISTFILESIZE=1000000000
+export HISTSIZE=1000000000       # How many lines of history to keep in memory
+export SAVEHIST=1000000000       # Number of history entries to save to disk
+export HISTTIMEFORMAT="[%F %T] "
+export HIST_STAMPS="+%Y-%m-%d %H:%M:%S"
+export HISTDUP=erase             # Erase duplicates in the history file
+#export DISABLE_VENV_CD=1         # virtualenvwrapper
+
+setopt APPEND_HISTORY            # Append history to the history file (no overwriting)
+#setopt SHARE_HISTORY             # Share history between all sessions.
+setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
+setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
+setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
+setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
+setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
+setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
+setopt BANG_HIST                 # Treat the '!' character specially during expansion.
+
+#setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
+setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
+#setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
+#setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
+#setopt HIST_BEEP                 # Beep when accessing nonexistent history.
+
+setopt AUTO_CD                   # Automatically cd to a path if specified as a command.
+
+setopt CORRECT                   # Correction.
+#setopt CORRECT_ALL               # Correction.
+setopt NO_CASE_GLOB              # Case-insensitive globbing.
+
+# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
+# Initialization code that may require console input (password prompts, [y/n]
+# confirmations, etc.) must go above this block; everything else may go below.
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+
+##############################################################################
+# Input key bindings.
+##############################################################################
+#set bell-style none
+#set match-hidden-files off
+bindkey '\e[A' history-search-backward
+bindkey '\e[B' history-search-forward
+bindkey '\e[C' forward-char
+bindkey '\e[D' backward-char
+bindkey '\e[3;5~' backward-kill-word
+bindkey '^?' backward-kill-word
+bindkey '\e(' kill-word
+bindkey '\e[1;5D' backward-word
+bindkey '\e[1;5C' forward-word
+
+##############################################################################
+# oh-my-zsh setup
+##############################################################################
+
+# Path to your oh-my-zsh configuration.
+export ZSH=$HOME/dotfiles/oh-my-zsh
+
+# Set name of the theme to load.
+# Look in $ZSH/themes/
+# Optionally, if you set this to "random", it'll load a random theme each
+# time that oh-my-zsh is loaded.
+
+#export ZSH_THEME="gozilla"
+#export ZSH_THEME="fino"
+#export ZSH_THEME="takashiyoshida"
+#export ZSH_THEME="random"
+#export ZSH_THEME="jnrowe"
+#export ZSH_THEME="agnoster"
+
+# powerlevel10k has to be set separately. See:
+# https://github.com/romkatv/powerlevel10k/blob/master/README.md#cannot-make-powerlevel10k-work-with-my-plugin-manager
+#export ZSH_THEME="powerline10k"
+
+# Set to this to use case-sensitive completion
+export CASE_SENSITIVE="true"
+
+# Comment this out to disable weekly auto-update checks
+# export DISABLE_AUTO_UPDATE="true"
+
+# Uncomment following line if you want to disable colors in ls
+# export DISABLE_LS_COLORS="true"
+
+# Uncomment following line if you want to disable autosetting terminal title.
+# export DISABLE_AUTO_TITLE="true"
+
+# Which plugins would you like to load? (plugins can be found in ~/.dotfiles/oh-my-zsh/plugins/*)
+plugins=(
+  aws
+  battery
+  brew
+  colorize
+  dirpersist
+  docker
+  fast-syntax-highlighting
+  git
+  gitignore
+  golang
+  iterm2
+  macos
+  pip
+  # pipenv
+  pyenv
+  pylint
+  python
+  # ripgrep
+  rust
+  # ssh-agent
+  sublime
+  sublime-merge
+  # sudo
+  terraform
+  textmate
+  virtualenv
+  # virtualenvwrapper
+)
+
+source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme
+source $HOME/dotfiles/zsh-autosuggestions/zsh-autosuggestions.zsh
+source $ZSH/oh-my-zsh.sh
+
+# Load rbenv ruby version selector
+# https://github.com/rbenv/rbenv#homebrew-on-macos
+#eval "$(rbenv init -)"
+
+##############################################################################
+# pyenv setup.
+##############################################################################
+if [ -d "$HOME/.pyenv" ]; then
+    # See if there is a user-install...
+    if ! command -v pyenv 1>/dev/null 2>&1; then
+        export PYENV_ROOT="$HOME/.pyenv"
+        export PATH="$PYENV_ROOT/bin:$PATH"
+    fi
+    if command -v pyenv 1>/dev/null 2>&1; then
+        eval "$(pyenv init --path)"
+        eval "$(pyenv virtualenv-init -)"
+    fi
+fi
+eval "$(pyenv init - --no-rehash zsh)"
+
+test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
+# For proper imgcat use, comment out the following line:
+# unalias imgcat
+# see https://github.com/eddieantonio/imgcat
+
+# To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh.
+[[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh
+
+# Quieten startup errors.
+#typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
+
+##############################################################################
+# zsh completion setup.
+##############################################################################
+
+GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh
+[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS
+
+# Make target completion.
+zstyle ':completion:*:*:make:*' tag-order 'targets'
+
+# Partial completion suggestions.
+# https://scriptingosx.com/2019/07/moving-to-zsh-part-5-completions/
+zstyle ':completion:*' list-suffixes
zstyle ':completion:*' expand prefix suffix

+
+# The following lines were added by compinstall
+
+zstyle ':completion:*' completer _expand _complete _ignored _approximate
+zstyle :compinstall filename $HOME/.zshrc
+
+autoload -Uz compinit
+compinit
+# End of lines added by compinstall
+
+# >>> conda initialize >>>
+# !! Contents within this block are managed by 'conda init' !!
+__conda_setup="$(\"${HOME}/opt/miniconda3/bin/conda\" \"shell.zsh\" \"hook\" 2> /dev/null)"
+if [ $? -eq 0 ]; then
+    eval "$__conda_setup"
+else
+    if [ -f "${HOME}/opt/miniconda3/etc/profile.d/conda.sh" ]; then
+        . "${HOME}/opt/miniconda3/etc/profile.d/conda.sh"
+    else
+        export PATH="${HOME}/opt/miniconda3/bin:$PATH"
+    fi
+fi
+unset __conda_setup
+# <<< conda initialize <<<
+
+# Created by `pipx` on 2024-02-23 11:28:21
+export PATH="$PATH:/Users/james.lawton/.local/bin"
+
+# Add rustup to path.
+export PATH="/opt/homebrew/opt/rustup/bin:$PATH"
+
+# git-spice shell completion.
+# eval "$(gs shell completion zsh)"
+
+# bun completions
+[ -s "/Users/james.lawton/.bun/_bun" ] && source "/Users/james.lawton/.bun/_bun"
+
+# bun
+export BUN_INSTALL="$HOME/.bun"
+export PATH="$BUN_INSTALL/bin:$PATH"
+
+# GitHub Copilot CLI.
+eval "$(gh copilot alias -- zsh)"
+
+# To customize prompt, run `p10k configure` or edit ~/Personal/git/dotfiles/p10k.zsh.
+[[ ! -f ~/Personal/git/dotfiles/p10k.zsh ]] || source ~/Personal/git/dotfiles/p10k.zsh
+# The following lines have been added by Docker Desktop to enable Docker CLI completions.
+fpath=(/Users/james.lawton/.docker/completions $fpath)
+autoload -Uz compinit
+compinit
+# End of Docker CLI completions

From ea6954575601b5d82e7f0939d2cc8698b81a9ba1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 14:56:12 +0000
Subject: [PATCH 678/973] Add more dotfiles to chezmoi.

---
 chezmoi/dot_shellactivities |   3 +
 chezmoi/dot_shellaliases    | 277 ++++++++++++++++++++++++++++++++++++
 chezmoi/dot_shellpaths      |  69 +++++++++
 chezmoi/dot_shellvars       | 102 +++++++++++++
 4 files changed, 451 insertions(+)
 create mode 100644 chezmoi/dot_shellactivities
 create mode 100644 chezmoi/dot_shellaliases
 create mode 100644 chezmoi/dot_shellpaths
 create mode 100644 chezmoi/dot_shellvars

diff --git a/chezmoi/dot_shellactivities b/chezmoi/dot_shellactivities
new file mode 100644
index 00000000..0f6d3cfa
--- /dev/null
+++ b/chezmoi/dot_shellactivities
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+# TODO
diff --git a/chezmoi/dot_shellaliases b/chezmoi/dot_shellaliases
new file mode 100644
index 00000000..51759284
--- /dev/null
+++ b/chezmoi/dot_shellaliases
@@ -0,0 +1,277 @@
+#!/bin/sh
+
+#########################################
+# Connectivity
+
+
+#########################################
+# Commands to run apps
+alias run.clojure.repl='java -cp ${CLOJURE_HOME}/clojure.jar clojure.lang.Repl'
+alias run.jlineclojure.repl='java -cp ${CLOJURE_HOME}/jline-0.9.91.jar:${CLOJURE_HOME}/clojure.jar jline.ConsoleRunner clojure.lang.Repl'
+alias run.clojure.script='java -cp ${CLOJURE_HOME}/clojure.jar clojure.main'
+
+
+#########################################
+# Commands to change dirs
+
+
+#################################
+# Simple Program Name Shortening
+# alias aq=aquamacs
+# alias g=git
+
+
+#############################
+# Utilities
+alias zipall='for D in *; do zip -r "$D" "$D"; done'
+
+alias pram.reset='sudo nvram boot-args=”-p -r”'
+
+alias macports.cleansource='sudo port -f uninstall inactive'
+# alias macports.cleanold='sudo port clean --all installed'
+
+alias rubygems.update='sudo gem update --system'
+# alias macports.update='sudo port selfupdate && sudo port upgrade outdated'
+alias brew.update='brew update && brew upgrade'
+
+alias timemachine.enablelocalversions='sudo tmutil enablelocal'
+alias timemachine.disablelocalversions='sudo tmutil disablelocal'
+
+alias hexdumpfile='od -h'
+
+# Flush the DNS on Mac
+alias network.dnsflush='dscacheutil -flushcache'
+
+# Copy and paste and prune the usless newline
+alias pbcopynn='tr -d "\n" | pbcopy'
+
+# Set the extended MacOS attributes on a file such that Quicklook will open it as text
+alias finder.astext='xattr -wx com.apple.FinderInfo "54 45 58 54 21 52 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" $1'
+#alias finder.qltext2='osascript -e tell application "Finder" to set file type of ((POSIX file "$1") as alias) to "TEXT"'
+
+# Git shortcuts
+alias gpl='git pull'
+alias gps='git push'
+
+# Show network connections
+# Often useful to prefix with SUDO to see more system level network usage
+alias network.connections='lsof -l -i +L -R -V'
+alias network.established='lsof -l -i +L -R -V | grep ESTABLISHED'
+alias network.internalip="ifconfig en0 | egrep -o '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'"
+alias network.externalip='curl -s http://checkip.dyndns.org/ | sed "s/[a-zA-Z<>/ :]//g"'
+
+# Files used, anywhere on the filesystem
+alias files.usage='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep'
+# Files being opened
+alias files.open='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep open'
+# Files in use in the Users directory
+alias files.usage.user='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep Users'
+
+# Directory listings
+# LS_COLORS='no=01;37:fi=01;37:di=07;96:ln=01;36:pi=01;32:so=01;35:do=01;35:bd=01;33:cd=01;33:ex=01;31:mi=00;05;37:or=00;05;37:'
+# -G Add colors to ls
+# -l Long format
+# -h Short size suffixes (B, K, M, G, P)
+# -p Postpend slash to folders
+alias ls='ls -G -h -p '
+alias ll='ls -l -G -h -p '
+
+if isLinux; then
+    alias ls='ls --color=auto'
+fi
+
+alias latest='ls -alt | head -20'
+
+#########################################
+# Utility Functions
+
+# Restart Apache on Mac
+alias apacherestart="sudo /usr/sbin/apachectl restart"
+
+# Do a Matrix movie effect of falling characters
+function matrix1() {
+echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) ;sleep 0.05; done|gawk '{ letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
+}
+
+function matrix2() {
+echo -e "\e[1;40m" ; clear ; characters=$( jot -c 94 33 | tr -d '\n' ) ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) $characters ;sleep 0.05; done|gawk '{ letters=$5; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
+}
+
+function matrix3() {
+echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $( printf "\U$(( $RANDOM % 500 ))" ) ;sleep 0.05; done|gawk '{c=$4; letter=$4;a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
+}
+
+# Use Mac OSX Preview to open a man page in a more handsome format
+function manp() {
+    man -t $1 | open -f -a /Applications/Preview.app
+}
+
+# Show normally hidden system and dotfile types of files
+# in Mac OSX Finder
+function finder.showhiddenfiles() {
+    defaults write com.apple.Finder AppleShowAllFiles YES
+    osascript -e 'tell application "Finder" to quit'
+    sleep 0.25
+    osascript -e 'tell application "Finder" to activate'
+}
+
+# Hide (back to defaults) normally hidden system and dotfile types of files
+# in Mac OSX Finder
+function finder.hidehiddenfiles() {
+    defaults write com.apple.Finder AppleShowAllFiles NO
+    osascript -e 'tell application "Finder" to quit'
+    sleep 0.25
+    osascript -e 'tell application "Finder" to activate'
+}
+
+# Get (cache) all Cheat sheets
+function cheat.getall() {
+	cheat sheets | grep '^  ' | xargs -n 1 -I {} bash -c 'cheat {} | :'
+}
+
+function find.name() {
+    wild=\'\*$1\*\'
+    sh -c "find . -iname $wild"
+}
+
+alias lessc='less -R' # Lets color escape sequences carry through to less
+alias morec='more -R'
+alias lesscolor='less -R'
+alias morecolor='more -R'
+
+function screenshot.setjpg() {
+    defaults write com.apple.screencapture type jpg
+    killall SystemUIServer
+}
+
+function screenshot.setpng() {
+    defaults write com.apple.screencapture type png
+	killall SystemUIServer
+}
+
+## Show third party kernel extensions
+alias thirdpartykernelextensions='kextstat | grep -v apple'
+
+## DHCP renew
+alias ipreleaserenew="sudo ipconfig set en0 BOOTP && sudo ipconfig set en0 DHCP"
+
+alias nasquota='ssh svn /home/nasadmin/nasquota/cur/bin/nasquota'
+alias prettyprint='enscript --pretty-print --color -2 -r'
+if [ -f /usr/bin/colordiff ]; then
+    alias diff='colordiff'
+fi
+alias grep='grep --color=auto --exclude=.svn'
+alias egrep='egrep --color=auto --exclude=.svn'
+alias fgrep='fgrep --color=auto --exclude=.svn'
+#alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n'
+alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n >sortedlog.log; dos2unix -q sortedlog.log'
+alias prunelog='cat sortedlog.log | grep WLM | grep -v SERVER_HTTP_IsValidKeyword | grep -v SERVER_HTTP_SetValue | grep -v SERVER_HTTP_ExtractValue | grep -v ClearReceiveMessageBuffer | grep -v ClearTransmitMessageBuffer | grep -v CopyToTransmitBuffer | grep -v CopyFromReceiveBuffer | grep -v SERVER_ReadConfigFile | grep -v SERVER_HTTP_SetKeywordTable | grep -v SERVER_HTTP_ClearBuffer > prunedlog.log'
+#alias vilastlog='vi logs/`ls -t logs/ | head -1`'
+alias vilastlog='vi `ls -t *.log | head -1`'
+alias catlastlog='cat logs/`ls -t logs/ | head -1`'
+alias brokenlinks='find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)'
+
+alias rm='rm -i'
+alias cp='cp -i'
+alias mv='mv -i'
+#alias cd='cd \!*; pwd'
+#alias cd='pushd !*'
+#alias more=less
+
+#alias du='du --exclude=.svn'
+
+alias now='date +"%Y%m%d-%H%M%S"'
+alias minicom='minicom -C minicom-`now`.log'
+
+#alias svnst='svn st --ignore-externals'
+#alias svnup='svn up --ignore-externals'
+
+alias svnrepos='export REPOS=$(~/utils/svnrepos -r) ; echo $REPOS'
+alias svnurl='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
+alias svndot='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
+alias svndotdot='svn info .. | awk '\''/^URL:/ {print}'\'' | sed '\''s/^URL: //'\'''
+
+alias svndiff='svn diff --diff-cmd=xx-diff-proxy'
+
+# shortcuts for doing process stuff
+alias pgrep='ps auxww | grep \!* | grep -v grep'
+#alias pfind='pgrep \!* | awk "{print \${2}}"'
+
+#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2 --toc'
+#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2'
+alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
+
+_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \) \( -name .venv -prune \)'
+_mfiles='\( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \)'
+_sfiles='\( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \)'
+_shfiles='\( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \)'
+_cfiles='\( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \)'
+_hfiles='\( -name "*\.[hH]" -o -name "*\.hpp" \)'
+_jfiles='\( -name "*\.java" \)'
+_pyfiles='\( -name "*\.py" \)'
+_dfiles='\( -name "*\.[dD]" \)'
+_rstfiles='\( -name "*\.rst" \)'
+_gofiles='\( -name "*\.go" \)'
+_grepargs='xargs egrep --color=auto -n'
+
+alias mfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs"
+alias mnotfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs -v"
+alias sfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs"
+alias snotfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs -v"
+alias shfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs"
+alias shnotfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs -v"
+alias cfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs"
+alias cnotfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs -v"
+alias hfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs"
+alias hnotfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs -v"
+alias jfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs"
+alias jnotfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs -v"
+alias pyfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs"
+alias pynotfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs -v"
+alias dfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs"
+alias dnotfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs -v"
+alias rstfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs"
+alias rstnotfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs -v"
+alias gofind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs"
+alias gonotfind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs -v"
+
+if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then
+    alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe"
+    alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe"
+    alias powerpnt="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app powerpnt.exe"
+    alias visio="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Visio\ 2010 --cx-app visio.exe"
+fi
+
+# History search.
+alias hgrep='history | grep --color'
+alias phgrep='cat ~/.persistent_history | grep -v phgrep | grep --color'
+
+# Kill ssh or sshpass sessions (e.g. if VPN hangs).
+alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9"
+
+# http://randsinrepose.com/links/2016/10/16/nesting-and-networking/
+alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8'
+
+# OSX gatekeeper disable...
+alias gatekeeper='sudo xattr -d com.apple.quarantine'
+
+if isMac; then
+    alias readlink='greadlink'
+    alias get_iplayer='PATH=/usr/bin:/usr/local/bin get_iplayer'
+    # On Mac OSX, uuidgen produces uppercase.
+    alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"'
+fi
+
+# Alias for parsing structure JSON logs...
+alias plog="jq -r -s 'map(select(.) | .log_level |=  ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'"
+
+# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli)
+alias jfullboard="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
+alias jtodo="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\""
+alias jbacklog="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\""
+alias jreview="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\""
+alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\""
+alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\""
+alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
+
+alias afping='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
diff --git a/chezmoi/dot_shellpaths b/chezmoi/dot_shellpaths
new file mode 100644
index 00000000..a78da022
--- /dev/null
+++ b/chezmoi/dot_shellpaths
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+########################################################################
+# Shell agnostic path setup
+########################################################################
+
+# Jim's Scripts
+export PATH=$PATH:.
+export PATH=$PATH:~/bin
+export PATH=$PATH:~/dotfiles/scripts
+export PATH=$PATH:~/utils
+export PATH=$PATH:~/dotfiles/git/git-identify/bin
+export PATH=$PATH:~/.cargo/bin
+export PATH=$PATH:$GOPATH/bin
+export PATH=$PATH:$GOROOT/bin
+#export PATH=~/pebble-dev/sdk/bin:$PATH
+export PATH=$PATH:~/adr-tools/src
+
+# Path setup.
+#export PATH=
+#pathmunge ${HOME}/bin
+#pathmunge ${HOME}/utils
+#pathmunge /usr/bin
+#pathmunge /bin
+#pathmunge /usr/sbin
+#pathmunge /sbin
+
+# Brew
+export PATH="/usr/local/sbin:$PATH"
+export PATH="/opt/homebrew/sbin:$PATH"
+export PATH="/opt/homebrew/bin:$PATH"
+# Path setup for Brew Python.
+#export PATH="/usr/local/opt/python/libexec/bin:$PATH"
+
+# Dev frameworks
+#export PATH=$PATH:$ANT_HOME/bin
+#export PATH=$PATH:$M2_HOME/bin
+#export PATH=$PATH:$GROOVY_HOME/bin
+#export PATH=$PATH:$GRAILS_HOME/bin
+#export PATH=$PATH:$NEXUS_HOME/bin/jsw/macosx-universal-64
+#export PATH=$PATH:$JMETER_HOME/bin
+#export PATH=$PATH:$JRUBY_HOME/bin
+#export PATH=$PATH:$SOAPUI_HOME/bin
+#export PATH=$PATH:$APPENGINE_HOME/bin
+
+# Dev
+#export PATH=$PATH:/Applications/Dev/apache-tomcat/bin
+#export PATH=$PATH:/Applications/Dev/apache-maven/bin
+#export PATH=$PATH:/Applications/Dev/sonar/bin/macosx-universal-64
+#export PATH=$PATH:/Library/PostgreSQL/8.4/bin
+#export PATH=$PATH:/Applications/Dev/gradle/bin
+#export PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands:$PATH
+#export PATH=~/.gem/ruby/1.8/bin:$PATH             #For showoff
+#export PATH=$PATH:~/.cljr/bin
+# export PATH=~/.rbenv/bin:$PATH
+
+# Haskell
+# export PATH=$PATH:~/.cabal/bin
+
+# Node JS Packages (from Brew Install of Node and NPM)
+# PATH=$PATH:/usr/local/share/npm/bin
+
+export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
+
+# Put goenv on path.
+export PATH="$GOENV_ROOT/bin:$PATH"
+
+export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
+
diff --git a/chezmoi/dot_shellvars b/chezmoi/dot_shellvars
new file mode 100644
index 00000000..088c35c4
--- /dev/null
+++ b/chezmoi/dot_shellvars
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+export OS=$(uname -s)
+
+#########################################################################
+# Tool settings
+#########################################################################
+
+# Set the default pager to less
+export PAGER="less"
+# Set less to have a default flag of -R (RAW) so color passes through
+export LESS="-R"
+
+# GPG_TTY=$(tty)
+# export GPG_TTY
+
+#########################################################################
+# Shell settings
+#########################################################################
+
+export HISTCONTROL=ignoredups:erasedups
+export HISTSIZE=2000
+export HISTFILESIZE=2000
+export HISTTIMEFORMAT="%F %T "
+
+export HOSTNAME=`hostname -s`
+
+COMP_WORDBREAKS="${COMP_WORDBREAKS}:"
+export EDITOR=vi
+export PAGER=less
+export PSSH_HOSTS=~/.hosts_file
+
+if [ -d /local/$USER ]; then
+    export CCACHE_DIR=/local/$USER/.ccache
+fi
+export TMOUT=0
+
+#########################################################################
+# Go
+#########################################################################
+export GOPATH=~/go
+
+#########################################################################
+# Manpages colour schemes.
+#########################################################################
+# Mostly magenta...
+#export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode - red
+#export LESS_TERMCAP_md=$(printf '\e[01;35m') # enter double-bright mode - bold, magenta
+#export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
+#export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
+#export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode - yellow
+#export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
+#export LESS_TERMCAP_us=$(printf '\e[04;36m') # enter underline mode - cyan
+# Bolder...
+export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
+export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
+export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
+export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
+export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
+export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
+export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
+
+#export SERVER=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}'`
+umask 002
+
+# Set vim as default command line editor
+export EDITOR='vim'
+
+export XXDIFF_EDITOR="xterm -e 'vi %s'"
+export PYTHONSTARTUP=~/.pythonrc
+#export PRINTER=xxx
+
+#########################################################################
+# Python Virtualenv stuff.
+#########################################################################
+# virtualenvwrapper
+export WORKON_HOME=$HOME/.virtualenvs
+# All new environments isolated from the site-packages directory.
+#export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
+# Specify Python to use with virtualenvwrapper.
+# export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
+# Use the same directory for virtualenvs as virtualenvwrapper.
+export PIP_VIRTUALENV_BASE=$WORKON_HOME
+# Make pip detect an active virtualenv and install to it
+export PIP_RESPECT_VIRTUALENV=true
+# Make pip only install into a virtualenv.
+export PIP_REQUIRE_VIRTUALENV=true
+
+export PYENV_ROOT="$HOME/.pyenv"
+export PATH="$PYENV_ROOT/bin:$PATH"
+
+export GOENV_ROOT="$HOME/.goenv"
+
+export TSRC_PARALLEL_JOBS=8
+
+if [ -f ~/dotfiles/shellvars-personal ]; then
+    source ~/dotfiles/shellvars-personal
+fi
+if [ -f ~/dotfiles/shellvars-work ]; then
+    source ~/dotfiles/shellvars-work
+fi
+

From 6fac4d89797f4ffa84adb5d6ad3cb17306684ac5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 14:58:21 +0000
Subject: [PATCH 679/973] Add gitignore to chezmoi.

---
 chezmoi/dot_gitignore | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 chezmoi/dot_gitignore

diff --git a/chezmoi/dot_gitignore b/chezmoi/dot_gitignore
new file mode 100644
index 00000000..587b9b0e
--- /dev/null
+++ b/chezmoi/dot_gitignore
@@ -0,0 +1,18 @@
+*.swp
+*.swo
+*~
+.ruby-version
+.rbenv-version
+*.sublime-project
+*.sublime-workspace
+thumbs.db
+.#*
+*.pyc
+*.o
+# srclib build cache
+.srclib-cache/
+.DS_Store
+.gradle
+.gradle_targets
+.gradletasknamecache
+.gitconfig-work

From 974b98584ff03f57a754f0aaaee9a2fc471f0e6c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 15:31:12 +0000
Subject: [PATCH 680/973] Remove files moved to chezmoi directory.

---
 Brewfile        |  408 -----------
 colordiffrc     |   27 -
 colorgccrc      |   54 --
 gitignore       |   18 -
 inputrc         |   16 -
 p10k.zsh        | 1838 -----------------------------------------------
 profile         |   27 -
 pythonrc        |   44 --
 shellactivities |    3 -
 shellaliases    |  277 -------
 shellpaths      |   69 --
 shellvars       |  102 ---
 terraformrc     |    1 -
 tmux.conf       |  232 ------
 vimrc           |  224 ------
 xxdiffrc        |   10 -
 zprofile        |   10 -
 zshenv          |    5 -
 zshrc           |  223 ------
 19 files changed, 3588 deletions(-)
 delete mode 100644 Brewfile
 delete mode 100644 colordiffrc
 delete mode 100644 colorgccrc
 delete mode 100644 gitignore
 delete mode 100644 inputrc
 delete mode 100644 p10k.zsh
 delete mode 100644 profile
 delete mode 100644 pythonrc
 delete mode 100644 shellactivities
 delete mode 100644 shellaliases
 delete mode 100644 shellpaths
 delete mode 100644 shellvars
 delete mode 100644 terraformrc
 delete mode 100644 tmux.conf
 delete mode 100644 vimrc
 delete mode 100644 xxdiffrc
 delete mode 100644 zprofile
 delete mode 100644 zshenv
 delete mode 100644 zshrc

diff --git a/Brewfile b/Brewfile
deleted file mode 100644
index 4712281c..00000000
--- a/Brewfile
+++ /dev/null
@@ -1,408 +0,0 @@
-tap "abhinav/tap"
-tap "ankitpokhrel/jira-cli"
-tap "bufbuild/buf"
-tap "charmbracelet/tap"
-tap "chef/chef"
-tap "common-fate/granted"
-tap "coretech/terrafile"
-tap "d12frosted/emacs-plus"
-tap "domt4/autoupdate"
-tap "dutchcoders/cloudman"
-tap "eddieantonio/eddieantonio"
-tap "github/bootstrap"
-tap "github/gh"
-tap "messense/macos-cross-toolchains"
-tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git"
-tap "nvie/tap"
-tap "romkatv/powerlevel10k"
-tap "sachaos/todoist"
-tap "taiki-e/tap"
-tap "terrastruct/d2"
-brew "a2ps"
-brew "adr-tools"
-brew "openssl@3"
-brew "readline"
-brew "xz"
-brew "ansible@9"
-brew "giflib"
-brew "libtiff"
-brew "apr"
-brew "apr-util"
-brew "boost"
-brew "asciidoc"
-brew "asciinema"
-brew "gettext"
-brew "atomicparsley"
-brew "atuin"
-brew "autojump"
-brew "awk"
-brew "node"
-brew "aws-cdk"
-brew "aws-shell"
-brew "awscli"
-brew "bandwhich"
-brew "base64"
-brew "bash"
-brew "bash-completion"
-brew "libssh2"
-brew "oniguruma"
-brew "bat"
-brew "freetype"
-brew "cairo"
-brew "harfbuzz"
-brew "bazel"
-brew "bit-git"
-brew "bitwarden-cli"
-brew "black"
-brew "brew-cask-completion"
-brew "bzip2"
-brew "cargo-binstall"
-brew "gcc"
-brew "checkov"
-brew "chezmoi"
-brew "clang-format"
-brew "cloc"
-brew "cmake"
-brew "consul-template"
-brew "coreutils"
-brew "rtmpdump"
-brew "curl"
-brew "d2"
-brew "dateutils"
-brew "delve"
-brew "difftastic"
-brew "diffutils"
-brew "dive"
-brew "docker-completion"
-brew "docker-credential-helper"
-brew "docker-credential-helper-ecr"
-brew "docutils"
-brew "dos2unix"
-brew "doxygen"
-brew "fd"
-brew "fribidi"
-brew "libidn2"
-brew "p11-kit"
-brew "unbound"
-brew "gnutls"
-brew "leptonica"
-brew "sdl2"
-brew "tesseract"
-brew "x265"
-brew "xvid"
-brew "zeromq"
-brew "ffmpeg"
-brew "figlet"
-brew "fish"
-brew "flake8"
-brew "fzf"
-brew "get_iplayer"
-brew "gh"
-brew "gimme-aws-creds"
-brew "gist"
-brew "git"
-brew "git-delta"
-brew "git-extras"
-brew "git-filter-repo"
-brew "git-quick-stats"
-brew "git-who"
-brew "gitleaks"
-brew "glow"
-brew "gnu-indent"
-brew "gnu-sed"
-brew "gnu-tar"
-brew "gnu-time"
-brew "libgcrypt"
-brew "libksba"
-brew "libusb"
-brew "pinentry"
-brew "gnupg"
-brew "go"
-brew "pkgconf"
-brew "gobject-introspection"
-brew "goenv"
-brew "golangci-lint"
-brew "gopls"
-brew "netpbm"
-brew "gts"
-brew "librsvg"
-brew "graphviz"
-brew "grep"
-brew "grpcurl"
-brew "grunt-completion"
-brew "gtk+3"
-brew "hadolint"
-brew "htop"
-brew "httpie"
-brew "hub"
-brew "ical-buddy"
-brew "id3lib"
-brew "id3v2"
-brew "infracost"
-brew "iproute2mac"
-brew "ipython"
-brew "isort"
-brew "jfrog-cli"
-brew "jj"
-brew "jless"
-brew "jq"
-brew "jsonlint"
-brew "jsonnet"
-brew "pandoc"
-brew "jupyterlab"
-brew "lastpass-cli"
-brew "lftp"
-brew "libcaca"
-brew "libffi"
-brew "libressl"
-brew "libusb-compat"
-brew "llvm"
-brew "make"
-brew "markdownlint-cli"
-brew "mas"
-brew "md5sha1sum"
-brew "mdbook"
-brew "micro"
-brew "microsocks"
-brew "mmark"
-brew "mplayer"
-brew "mtr"
-brew "mypy"
-brew "ncftp"
-brew "neovim"
-brew "nushell"
-brew "ocrad"
-brew "okta-aws-cli"
-brew "openconnect"
-brew "openjdk"
-brew "openjdk@11"
-brew "ossp-uuid"
-brew "osv-scanner"
-brew "p7zip"
-brew "packer-completion"
-brew "parallel"
-brew "patchutils"
-brew "peco"
-brew "percol"
-brew "pip-completion"
-brew "pipenv"
-brew "pipx"
-brew "plantuml"
-brew "pre-commit"
-brew "progress"
-brew "protobuf"
-brew "protobuf-c"
-brew "protoc-gen-go"
-brew "protoc-gen-go-grpc"
-brew "pth"
-brew "pulseaudio"
-brew "pulumi"
-brew "pycodestyle"
-brew "pyenv"
-brew "pyenv-virtualenv"
-brew "pyenv-virtualenvwrapper"
-brew "pygments"
-brew "python-packaging"
-brew "qemu"
-brew "qt"
-brew "rake-completion"
-brew "rbenv"
-brew "rclone"
-brew "repo"
-brew "ripgrep"
-brew "rlwrap"
-brew "robot-framework"
-brew "ruff"
-brew "rustup"
-brew "scc"
-brew "sccache"
-brew "semgrep"
-brew "shellcheck"
-brew "socat"
-brew "sonar-scanner"
-brew "sphinx-doc"
-brew "ssh-copy-id", link: true
-brew "sshuttle"
-brew "starship"
-brew "staticcheck"
-brew "subversion"
-brew "telnet"
-brew "terminal-notifier"
-brew "terraform-docs"
-brew "tfenv"
-brew "tflint"
-brew "tfsec"
-brew "tig"
-brew "tldr"
-brew "todo-txt"
-brew "tokei"
-brew "tree"
-brew "uv"
-brew "vim"
-brew "wget"
-brew "xpdf"
-brew "yaegi"
-brew "yamlfmt"
-brew "yamllint"
-brew "yt-dlp"
-brew "zig"
-brew "zlib"
-brew "zoxide"
-brew "zsh"
-brew "abhinav/tap/git-spice"
-brew "ankitpokhrel/jira-cli/jira-cli"
-brew "bufbuild/buf/buf"
-brew "charmbracelet/tap/skate"
-brew "common-fate/granted/granted"
-brew "coretech/terrafile/terrafile"
-brew "dutchcoders/cloudman/cloudman"
-brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu"
-brew "mkchoi212/fac/fac"
-brew "sachaos/todoist/todoist"
-brew "taiki-e/tap/cargo-llvm-cov"
-cask "alt-tab"
-cask "aws-vault-binary"
-cask "bartender"
-cask "beardedspice"
-cask "bitwarden"
-cask "doll"
-cask "drawio"
-cask "firefox"
-cask "font-anonymice-powerline"
-cask "font-consolas-for-powerline"
-cask "font-dejavu-sans-mono-for-powerline"
-cask "font-droid-sans-mono-for-powerline"
-cask "font-fira-mono-for-powerline"
-cask "font-inconsolata-dz-for-powerline"
-cask "font-inconsolata-for-powerline"
-cask "font-inconsolata-for-powerline-bold"
-cask "font-inconsolata-g-for-powerline"
-cask "font-juliamono"
-cask "font-liberation-mono-for-powerline"
-cask "font-menlo-for-powerline"
-cask "font-meslo-for-powerline"
-cask "font-monofur-for-powerline"
-cask "font-noto-mono-for-powerline"
-cask "font-powerline-symbols"
-cask "font-roboto-mono-for-powerline"
-cask "font-sf-mono-for-powerline"
-cask "font-source-code-pro-for-powerline"
-cask "font-ubuntu-mono-derivative-powerline"
-cask "funter"
-cask "ghostty"
-cask "git-credential-manager"
-cask "hammerspoon"
-cask "jupyter-notebook-ql"
-cask "karabiner-elements"
-cask "maccy"
-cask "meetingbar"
-cask "mitmproxy"
-cask "monitorcontrol"
-cask "notunes"
-cask "obsidian"
-cask "rectangle"
-cask "sublime-merge@dev"
-cask "sublime-text@dev"
-cask "temurin"
-cask "visual-studio-code"
-cask "vlc"
-cask "xquartz"
-cask "yt-music"
-cask "zed"
-mas "Battery Monitor", id: 836505650
-mas "Bitwarden", id: 1352778147
-mas "Elisi", id: 1406239881
-mas "GoPro Player", id: 1460836908
-mas "GoPro Quik", id: 561350520
-mas "Keynote", id: 409183694
-mas "Kindle", id: 302584613
-mas "Magnet", id: 441258766
-mas "Mattermost", id: 1614666244
-mas "Microsoft Excel", id: 462058435
-mas "Microsoft OneNote", id: 784801555
-mas "Microsoft Outlook", id: 985367838
-mas "Microsoft PowerPoint", id: 462062816
-mas "Microsoft Word", id: 462054704
-mas "Notability", id: 360593530
-mas "Okta Extension App", id: 1439967473
-mas "Okta Verify", id: 490179405
-mas "Proxy", id: 0
-mas "Speedtest", id: 1153157709
-mas "Tailscale", id: 1475387142
-mas "TestFlight", id: 899247664
-mas "The Unarchiver", id: 425424353
-mas "Windows App", id: 1295203466
-mas "Xcode", id: 497799835
-mas "Xmind", id: 1327661892
-mas "Yubico Authenticator", id: 1497506650
-vscode "aryanahire.sublime-monokai"
-vscode "atlassian.atlascode"
-vscode "charliermarsh.ruff"
-vscode "codezombiech.gitignore"
-vscode "cschlosser.doxdocgen"
-vscode "davidanson.vscode-markdownlint"
-vscode "davidbwaters.macos-modern-theme"
-vscode "docker.docker"
-vscode "donjayamanne.githistory"
-vscode "editorconfig.editorconfig"
-vscode "fabiospampinato.vscode-diff"
-vscode "giovdk21.vscode-sublime-merge"
-vscode "github.copilot"
-vscode "github.copilot-chat"
-vscode "github.github-vscode-theme"
-vscode "github.vscode-pull-request-github"
-vscode "golang.go"
-vscode "grafana.vscode-jsonnet"
-vscode "grapecity.gc-excelviewer"
-vscode "gruntfuggly.todo-tree"
-vscode "hashicorp.hcl"
-vscode "hashicorp.terraform"
-vscode "hediet.vscode-drawio"
-vscode "humao.rest-client"
-vscode "janjoerke.jenkins-pipeline-linter-connector"
-vscode "jebbs.plantuml"
-vscode "jeff-hykin.better-cpp-syntax"
-vscode "joffreykern.markdown-toc"
-vscode "llvm-vs-code-extensions.lldb-dap"
-vscode "mechatroner.rainbow-csv"
-vscode "meezilla.json"
-vscode "mellowmarshmallow.groovy"
-vscode "mermaidchart.vscode-mermaid-chart"
-vscode "mrmlnc.vscode-duplicate"
-vscode "ms-azuretools.vscode-containers"
-vscode "ms-azuretools.vscode-docker"
-vscode "ms-python.debugpy"
-vscode "ms-python.isort"
-vscode "ms-python.mypy-type-checker"
-vscode "ms-python.python"
-vscode "ms-python.vscode-pylance"
-vscode "ms-python.vscode-python-envs"
-vscode "ms-toolsai.jupyter"
-vscode "ms-toolsai.jupyter-keymap"
-vscode "ms-toolsai.jupyter-renderers"
-vscode "ms-toolsai.vscode-jupyter-cell-tags"
-vscode "ms-toolsai.vscode-jupyter-slideshow"
-vscode "ms-vscode-remote.remote-containers"
-vscode "ms-vscode.cmake-tools"
-vscode "ms-vscode.cpptools"
-vscode "ms-vscode.cpptools-extension-pack"
-vscode "ms-vscode.cpptools-themes"
-vscode "ms-vscode.live-server"
-vscode "ms-vscode.makefile-tools"
-vscode "pdconsec.vscode-print"
-vscode "peterj.proto"
-vscode "redhat.vscode-yaml"
-vscode "ritwickdey.liveserver"
-vscode "rust-lang.rust-analyzer"
-vscode "ryanluker.vscode-coverage-gutters"
-vscode "solomonkinard.git-blame"
-vscode "streetsidesoftware.code-spell-checker"
-vscode "swiftlang.swift-vscode"
-vscode "tadayosi.vscode-makefile-outliner"
-vscode "takumii.markdowntable"
-vscode "tamasfe.even-better-toml"
-vscode "timonwong.shellcheck"
-vscode "tomoki1207.pdf"
-vscode "visualjj.visualjj"
-vscode "vscode-icons-team.vscode-icons"
-vscode "ziglang.vscode-zig"
diff --git a/colordiffrc b/colordiffrc
deleted file mode 100644
index d6b36ea9..00000000
--- a/colordiffrc
+++ /dev/null
@@ -1,27 +0,0 @@
-# Example colordiffrc file for dark backgrounds
-#
-# Set banner=no to suppress authorship info at top of
-# colordiff output
-banner=no
-# By default, when colordiff output is being redirected
-# to a file, it detects this and does not colour-highlight
-# To make the patch file *include* colours, change the option
-# below to 'yes'
-color_patches=no
-# 
-# available colours are: white, yellow, green, blue,
-#                        cyan, red, magenta, black,
-#                        darkwhite, darkyellow, darkgreen,
-#                        darkblue, darkcyan, darkred,
-#                        darkmagenta, darkblack
-#
-# Can also specify 'none', 'normal' or 'off' which are all
-# aliases for the same thing, namely "don't colour highlight
-# this, use the default output colour"
-#
-plain=darkwhite
-newtext=blue
-oldtext=red
-#diffstuff=magenta
-diffstuff=darkgreen
-cvsstuff=darkyellow
diff --git a/colorgccrc b/colorgccrc
deleted file mode 100644
index 5ec5949b..00000000
--- a/colorgccrc
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# colorgcc configuration file
-#
-# $Id: colorgccrc,v 1.1.1.1 1999/04/25 15:24:03 jamoyers Exp $
-#
-# This file should be named $HOME/.colorgccrc
-#
-#
-# The following groups of attributes may be combined for a given color:
-#
-# clear         black      on_black   
-# reset	        red        on_red     
-# bold	        green      on_green   
-# underline     yellow     on_yellow  
-# underscore    blue       on_blue    
-# blink	        magenta    on_magenta 
-# reverse       cyan       on_cyan    
-# concealed     white      on_white   
-#
-# For example, srcColor: bold cyan on_yellow
-#
-
-# Define the paths to the actual location of the various compilers.
-# (Currently, colorgcc only understands these: g++ gcc c++ cc)
-g++: /usr/bin/g++
-gcc: /usr/bin/gcc
-c++: /usr/bin/c++
-cc:  /usr/bin/cc
-
-# Don't do color if our terminal type ($TERM) is one of these.
-# (List all terminal types on one line, seperated by whitespace.)
-nocolor: dumb
-
-# Text between ` and ' is usually source code.
-srcColor: bold cyan
-
-# Text other than a warning or error.
-introColor: reset
-
-# Warnings and errors both have similar formats:
-#    filename:999:Message
-# Each field may be assigned a different color.
-
-# Warnings
-warningFileNameColor: reset
-warningNumberColor:   white
-warningMessageColor:  yellow
-
-# Errors
-errorFileNameColor: reset
-errorNumberColor:   white
-errorMessageColor:  bold red
-
-
diff --git a/gitignore b/gitignore
deleted file mode 100644
index 587b9b0e..00000000
--- a/gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-*.swp
-*.swo
-*~
-.ruby-version
-.rbenv-version
-*.sublime-project
-*.sublime-workspace
-thumbs.db
-.#*
-*.pyc
-*.o
-# srclib build cache
-.srclib-cache/
-.DS_Store
-.gradle
-.gradle_targets
-.gradletasknamecache
-.gitconfig-work
diff --git a/inputrc b/inputrc
deleted file mode 100644
index 0b063553..00000000
--- a/inputrc
+++ /dev/null
@@ -1,16 +0,0 @@
-set bell-style none
-set match-hidden-files off
-"\eOA": history-search-backward
-"\e[A": history-search-backward
-"\eOB": history-search-forward
-"\e[B": history-search-forward
-"\eOC": forward-char
-"\e[C": forward-char
-"\eOD": backward-char
-"\e[D": backward-char
-"\e[3;5~": backward-kill-word
-"\C-?": backward-kill-word
-"\e(": kill-word
-"\e[1;5D": backward-word
-"\e[1;5C": forward-word
-
diff --git a/p10k.zsh b/p10k.zsh
deleted file mode 100644
index d41ac916..00000000
--- a/p10k.zsh
+++ /dev/null
@@ -1,1838 +0,0 @@
-# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:12 IST.
-# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619.
-# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads,
-# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose.
-# Type `p10k configure` to generate another config.
-#
-# Config for Powerlevel10k with powerline prompt style with colorful background.
-# Type `p10k configure` to generate your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
-
-# Temporarily change options.
-'builtin' 'local' '-a' 'p10k_config_opts'
-[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
-[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
-[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
-'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
-
-() {
-  emulate -L zsh -o extended_glob
-
-  # Unset all configuration options. This allows you to apply configuration changes without
-  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
-  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
-
-  # Zsh >= 5.1 is required.
-  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
-
-  # The list of segments shown on the left. Fill it with the most important segments.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-    # os_icon               # os identifier
-    dir                     # current directory
-    vcs                     # git status
-    # prompt_char           # prompt symbol
-  )
-
-  # The list of segments shown on the right. Fill it with less important segments.
-  # Right prompt on the last prompt line (where you are typing your commands) gets
-  # automatically hidden when the input line reaches it. Right prompt above the
-  # last prompt line gets hidden if it would overlap with left prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
-    status                  # exit code of the last command
-    command_execution_time  # duration of the last command
-    background_jobs         # presence of background jobs
-    direnv                  # direnv status (https://direnv.net/)
-    asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
-    virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
-    anaconda                # conda environment (https://conda.io/)
-    pyenv                   # python environment (https://github.com/pyenv/pyenv)
-    goenv                   # go environment (https://github.com/syndbg/goenv)
-    nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
-    nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
-    nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
-    # node_version          # node.js version
-    # go_version            # go version (https://golang.org)
-    # rust_version          # rustc version (https://www.rust-lang.org)
-    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
-    # php_version           # php version (https://www.php.net/)
-    # laravel_version       # laravel php framework version (https://laravel.com/)
-    # java_version          # java version (https://www.java.com/)
-    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
-    rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
-    rvm                     # ruby version from rvm (https://rvm.io)
-    fvm                     # flutter version management (https://github.com/leoafarias/fvm)
-    luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
-    jenv                    # java version from jenv (https://github.com/jenv/jenv)
-    plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
-    perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
-    phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
-    scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
-    haskell_stack           # haskell version from stack (https://haskellstack.org/)
-    kubecontext             # current kubernetes context (https://kubernetes.io/)
-    terraform               # terraform workspace (https://www.terraform.io)
-    # terraform_version     # terraform version (https://www.terraform.io)
-    aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
-    aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
-    azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
-    gcloud                  # google cloud cli account and project (https://cloud.google.com/)
-    google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
-    toolbox                 # toolbox name (https://github.com/containers/toolbox)
-    context                 # user@hostname
-    nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
-    ranger                  # ranger shell (https://github.com/ranger/ranger)
-    yazi                    # yazi shell (https://github.com/sxyazi/yazi)
-    nnn                     # nnn shell (https://github.com/jarun/nnn)
-    lf                      # lf shell (https://github.com/gokcehan/lf)
-    xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
-    vim_shell               # vim shell indicator (:sh)
-    midnight_commander      # midnight commander shell (https://midnight-commander.org/)
-    nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
-    chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
-    vi_mode                 # vi mode (you don't need this if you've enabled prompt_char)
-    # vpn_ip                # virtual private network indicator
-    # load                  # CPU load
-    # disk_usage            # disk usage
-    # ram                   # free RAM
-    # swap                  # used swap
-    todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
-    timewarrior             # timewarrior tracking status (https://timewarrior.net/)
-    taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
-    per_directory_history   # Oh My Zsh per-directory-history local/global indicator
-    # cpu_arch              # CPU architecture
-    # time                  # current time
-    # ip                    # ip address and bandwidth usage for a specified network interface
-    # public_ip             # public IP address
-    # proxy                 # system-wide http/https/ftp proxy
-    # battery               # internal battery
-    # wifi                  # wifi speed
-    # example               # example user-defined segment (see prompt_example function below)
-  )
-
-  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
-  typeset -g POWERLEVEL9K_MODE=powerline
-  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
-  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
-  typeset -g POWERLEVEL9K_ICON_PADDING=none
-
-  # When set to true, icons appear before content on both sides of the prompt. When set
-  # to false, icons go after content. If empty or not set, icons go before content in the left
-  # prompt and after content in the right prompt.
-  #
-  # You can also override it for a specific segment:
-  #
-  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
-  #
-  # Or for a specific segment in specific state:
-  #
-  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
-  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=
-
-  # Add an empty line before each prompt.
-  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
-
-  # Connect left prompt lines with these symbols. You'll probably want to use the same color
-  # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─'
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─'
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─'
-  # Connect right prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮'
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤'
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯'
-
-  # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
-  # '─'. The last two make it easier to see the alignment between left and right prompt and to
-  # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
-  # for more compact prompt if using this option.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
-  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
-    # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
-    # ornaments defined above.
-    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242
-    # Start filler from the edge of the screen if there are no left segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
-    # End filler on the edge of the screen if there are no right segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
-  fi
-
-  # Separator between same-color segments on the left.
-  typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1'
-  # Separator between same-color segments on the right.
-  typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3'
-  # Separator between different-color segments on the left.
-  typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
-  # Separator between different-color segments on the right.
-  typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
-  # To remove a separator between two segments, add "_joined" to the second segment name.
-  # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined)
-
-  # The right end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
-  # The left end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
-  # The left end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=''
-  # The right end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
-  # Left prompt terminator for lines without any segments.
-  typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
-  #################################[ os_icon: os identifier ]##################################
-  # OS identifier color.
-  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=232
-  typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=7
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
-
-  ################################[ prompt_char: prompt symbol ]################################
-  # Transparent background.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=
-  # Green prompt symbol if the last command succeeded.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
-  # Red prompt symbol if the last command failed.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
-  # Default prompt symbol.
-  # jiml 2021-03-26 change prompt char
-  # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜'
-  # Prompt symbol in command vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
-  # Prompt symbol in visual vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
-  # Prompt symbol in overwrite vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
-  # No line terminator if prompt_char is the last segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-  # No line introducer if prompt_char is the first segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
-  # No surrounding whitespace.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE=
-
-  ##################################[ dir: current directory ]##################################
-  # Current directory background color.
-  typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
-  # Default current directory foreground color.
-  typeset -g POWERLEVEL9K_DIR_FOREGROUND=254
-  # If directory is too long, shorten some of its segments to the shortest possible unique
-  # prefix. The shortened directory can be tab-completed to the original.
-  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
-  # Replace removed segment suffixes with this symbol.
-  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
-  # Color of the shortened directory segments.
-  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250
-  # Color of the anchor directory segments. Anchor segments are never shortened. The first
-  # segment is always an anchor.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255
-  # Display anchor directory segments in bold.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
-  # Don't shorten directories that contain any of these files. They are anchors.
-  local anchor_files=(
-    .bzr
-    .citc
-    .git
-    .hg
-    .node-version
-    .python-version
-    .go-version
-    .ruby-version
-    .lua-version
-    .java-version
-    .perl-version
-    .php-version
-    .tool-versions
-    .mise.toml
-    .shorten_folder_marker
-    .svn
-    .terraform
-    CVS
-    Cargo.toml
-    composer.json
-    go.mod
-    package.json
-    stack.yaml
-  )
-  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
-  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
-  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
-  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
-  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
-  # and other directories don't.
-  #
-  # Optionally, "first" and "last" can be followed by ":" where  is an integer.
-  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
-  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
-  # respectively.
-  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
-  # Don't shorten this many last directory segments. They are anchors.
-  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
-  # Shorten directory if it's longer than this even if there is space for it. The value can
-  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
-  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
-  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
-  # If set to `0`, directory will always be shortened to its minimum length.
-  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
-  # many columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
-  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
-  # If set to true, embed a hyperlink into the directory. Useful for quickly
-  # opening a directory in the file manager simply by clicking the link.
-  # Can also be handy when the directory is shortened, as it allows you to see
-  # the full directory that was used in previous commands.
-  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
-  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
-  # and POWERLEVEL9K_DIR_CLASSES below.
-  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
-
-  # The default icon shown next to non-writable and non-existent directories when
-  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
-  typeset -g POWERLEVEL9K_LOCK_ICON='∅'
-
-  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
-  # directories. It must be an array with 3 * N elements. Each triplet consists of:
-  #
-  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
-  #      extended_glob option enabled.
-  #   2. Directory class for the purpose of styling.
-  #   3. An empty string.
-  #
-  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
-  #
-  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
-  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
-  #     '~/work(|/*)'  WORK     ''
-  #     '~(|/*)'       HOME     ''
-  #     '*'            DEFAULT  '')
-  #
-  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
-  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
-  # WORK_NON_EXISTENT.
-  #
-  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
-  # option to define custom colors and icons for different directory classes.
-  #
-  #   # Styling for WORK.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255
-  #
-  #   # Styling for WORK_NOT_WRITABLE.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255
-  #
-  #   # Styling for WORK_NON_EXISTENT.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255
-  #
-  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
-  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
-  # back to POWERLEVEL9K_DIR_FOREGROUND.
-  #
-  typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_DIR_PREFIX='in '
-
-  #####################################[ vcs: git status ]######################################
-  # Version control background colors.
-  typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2
-  typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2
-  typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3
-  typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8
-
-  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
-  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
-
-  # Untracked files icon. It's really a question mark, your font isn't broken.
-  # Change the value of this parameter to show a different icon.
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
-
-  # Formatter for Git status.
-  #
-  # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
-  #
-  # You can edit the function to customize how Git status looks.
-  #
-  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
-  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
-  function my_git_formatter() {
-    emulate -L zsh
-
-    if [[ -n $P9K_CONTENT ]]; then
-      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
-      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
-      typeset -g my_git_format=$P9K_CONTENT
-      return
-    fi
-
-    # Styling for different parts of Git status.
-    local       meta='%7F' # white foreground
-    local      clean='%0F' # black foreground
-    local   modified='%0F' # black foreground
-    local  untracked='%0F' # black foreground
-    local conflicted='%1F' # red foreground
-
-    local res
-
-    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
-      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
-      # If local branch name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show local branch name in full without truncation, delete the next line.
-      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
-      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
-    fi
-
-    if [[ -n $VCS_STATUS_TAG
-          # Show tag only if not on a branch.
-          # Tip: To always show tag, delete the next line.
-          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
-        ]]; then
-      local tag=${(V)VCS_STATUS_TAG}
-      # If tag name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show tag name in full without truncation, delete the next line.
-      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
-      res+="${meta}#${clean}${tag//\%/%%}"
-    fi
-
-    # Display the current Git commit if there is no branch and no tag.
-    # Tip: To always display the current Git commit, delete the next line.
-    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
-      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
-
-    # Show tracking branch name if it differs from local branch.
-    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
-      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
-    fi
-
-    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
-    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
-      res+=" ${modified}wip"
-    fi
-
-    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
-      # ⇣42 if behind the remote.
-      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
-      # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
-      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
-      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
-    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
-      # Tip: Uncomment the next line to display '=' if up to date with the remote.
-      # res+=" ${clean}="
-    fi
-
-    # ⇠42 if behind the push remote.
-    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
-    # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
-    # *42 if have stashes.
-    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
-    # 'merge' if the repo is in an unusual state.
-    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
-    # ~42 if have merge conflicts.
-    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
-    # +42 if have staged changes.
-    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
-    # !42 if have unstaged changes.
-    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
-    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
-    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
-    # Remove the next line if you don't want to see untracked files at all.
-    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
-    # "─" if the number of unstaged files is unknown. This can happen due to
-    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
-    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
-    # in the repository config. The number of staged and untracked files may also be unknown
-    # in this case.
-    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
-
-    typeset -g my_git_format=$res
-  }
-  functions -M my_git_formatter 2>/dev/null
-
-  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
-  # more than this many files in the index. Negative value means infinity.
-  #
-  # If you are working in Git repositories with tens of millions of files and seeing performance
-  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
-  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
-  # config: `git config bash.showDirtyState false`.
-  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
-
-  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
-  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
-  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
-  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
-
-  # Disable the default Git status formatting.
-  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
-  # Install our own Git status formatter.
-  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}'
-  # Enable counters for staged, unstaged, etc.
-  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
-
-  # Custom icon.
-  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_VCS_PREFIX='on '
-
-  # Show status of repositories of these types. You can add svn and/or hg if you are
-  # using them. If you do, your prompt may become slow even when your current directory
-  # isn't in an svn or hg repository.
-  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
-
-  ##########################[ status: exit code of the last command ]###########################
-  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
-  # style them independently from the regular OK and ERROR state.
-  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
-
-  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
-  # it will signify success by turning green.
-  typeset -g POWERLEVEL9K_STATUS_OK=true
-  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
-  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2
-  typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0
-
-  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
-  # like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0
-
-  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
-  # it will signify error by turning red.
-  typeset -g POWERLEVEL9K_STATUS_ERROR=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1
-
-  # Status when the last command was terminated by a signal.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
-  # Use terse signal names: "INT" instead of "SIGINT(2)".
-  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1
-
-  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
-  # It may look like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1
-
-  ###################[ command_execution_time: duration of the last command ]###################
-  # Execution time color.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3
-  # Show duration of the last command if takes at least this many seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
-  # Show this many fractional digits. Zero means round to seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
-  # Duration format: 1d 2h 3m 4s.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
-  # Custom icon.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took '
-
-  #######################[ background_jobs: presence of background jobs ]#######################
-  # Background jobs color.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0
-  # Don't show the number of background jobs.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
-  # Custom icon.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡'
-
-  #######################[ direnv: direnv status (https://direnv.net/) ]########################
-  # Direnv color.
-  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=3
-  typeset -g POWERLEVEL9K_DIRENV_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
-  # Default asdf color. Only used to display tools for which there is no color override (see below).
-  # Tip:  Override these parameters for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND and
-  # POWERLEVEL9K_ASDF_${TOOL}_BACKGROUND.
-  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_BACKGROUND=7
-
-  # There are four parameters that can be used to hide asdf tools. Each parameter describes
-  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
-  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
-  # hide a tool, it gets shown.
-  #
-  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
-  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
-  #
-  #   asdf local  python 3.8.1
-  #   asdf global python 3.8.1
-  #
-  # After running both commands the current python version is 3.8.1 and its source is "local" as
-  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
-  # it'll hide python version in this case because 3.8.1 is the same as the global version.
-  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
-  # contain "local".
-
-  # Hide tool versions that don't come from one of these sources.
-  #
-  # Available sources:
-  #
-  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
-  # - local   `asdf current` says "set by /some/not/home/directory/file"
-  # - global  `asdf current` says "set by /home/username/file"
-  #
-  # Note: If this parameter is set to (shell local global), it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
-  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
-
-  # If set to false, hide tool versions that are the same as global.
-  #
-  # Note: The name of this parameter doesn't reflect its meaning at all.
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
-  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
-
-  # If set to false, hide tool versions that are equal to "system".
-  #
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
-  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
-
-  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
-  # in the current directory, or its parent directory, or its grandparent directory, and so on.
-  #
-  # Note: If this parameter is set to empty value, it won't hide tools.
-  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
-  #
-  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
-  # directory, in `..`, in `../..` and so on.
-  #
-  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
-  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
-
-  # Ruby version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_RUBY_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Python version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PYTHON_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Go version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_GOLANG_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Node.js version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_NODEJS_BACKGROUND=2
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Rust version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_RUST_BACKGROUND=208
-  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # .NET Core version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Flutter version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_FLUTTER_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Lua version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_LUA_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Java version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=1
-  typeset -g POWERLEVEL9K_ASDF_JAVA_BACKGROUND=7
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Perl version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PERL_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Erlang version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_ERLANG_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Elixir version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_ELIXIR_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Postgres version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_POSTGRES_BACKGROUND=6
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # PHP version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PHP_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Haskell version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_HASKELL_BACKGROUND=3
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Julia version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_JULIA_BACKGROUND=2
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
-  # NordVPN connection indicator color.
-  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7
-  typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4
-  # Hide NordVPN connection indicator when not connected.
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom icon.
-  typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord'
-
-  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
-  # Ranger shell color.
-  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3
-  typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0
-  # Custom icon.
-  typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲'
-  
-  ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
-  # Yazi shell color.
-  typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3
-  typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0
-  # Custom icon.
-  typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='▲'
-  
-  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
-  # Nnn shell color.
-  typeset -g POWERLEVEL9K_NNN_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NNN_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
-  # lf shell color.
-  typeset -g POWERLEVEL9K_LF_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LF_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
-  # xplr shell color.
-  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_XPLR_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
-  # Vim shell indicator color.
-  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VIM_SHELL_BACKGROUND=2
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
-  # Midnight Commander shell color.
-  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=3
-  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
-  # Nix shell color.
-  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4
-
-  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
-
-  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
-  # chezmoi shell color.
-  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ disk_usage: disk usage ]##################################
-  # Colors for different levels of disk usage.
-  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3
-  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=0
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=0
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=3
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=7
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=1
-  # Thresholds for different levels of disk usage (percentage points).
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
-  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
-  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]###########
-  # Foreground color.
-  typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0
-  # Text and color for normal (a.k.a. command) vi mode.
-  typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL
-  typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2
-  # Text and color for visual vi mode.
-  typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL
-  typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=4
-  # Text and color for overtype (a.k.a. overwrite and replace) vi mode.
-  typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE
-  typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=3
-  # Text and color for insert vi mode.
-  typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=
-  typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ ram: free RAM ]#######################################
-  # RAM color.
-  typeset -g POWERLEVEL9K_RAM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RAM_BACKGROUND=3
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################################[ swap: used swap ]######################################
-  # Swap color.
-  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_SWAP_BACKGROUND=3
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ load: CPU load ]######################################
-  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
-  typeset -g POWERLEVEL9K_LOAD_WHICH=5
-  # Load color when load is under 50%.
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2
-  # Load color when load is between 50% and 70%.
-  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3
-  # Load color when load is over 70%.
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
-  # Todo color.
-  typeset -g POWERLEVEL9K_TODO_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TODO_BACKGROUND=8
-  # Hide todo when the total number of tasks is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
-  # Hide todo when the number of tasks after filtering is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
-
-  # Todo format. The following parameters are available within the expansion.
-  #
-  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
-  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
-  #
-  # These variables correspond to the last line of the output of `todo.sh -p ls`:
-  #
-  #   TODO: 24 of 42 tasks shown
-  #
-  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
-  #
-  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
-  # Timewarrior color.
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8
-
-  # If the tracked task is longer than 24 characters, truncate and append "…".
-  # Tip: To always display tasks without truncation, delete the following parameter.
-  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
-  # value of the following parameter to "".
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
-  # Taskwarrior color.
-  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TASKWARRIOR_BACKGROUND=6
-
-  # Taskwarrior segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
-  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
-  #
-  # Zero values are represented as empty parameters.
-  #
-  # The default format:
-  #
-  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
-  #
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
-  # Color when using local/global history.
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_BACKGROUND=5
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_BACKGROUND=3
-
-  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ cpu_arch: CPU architecture ]################################
-  # CPU architecture color.
-  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=0
-  typeset -g POWERLEVEL9K_CPU_ARCH_BACKGROUND=3
-
-  # Hide the segment when on a specific CPU architecture.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ context: user@hostname ]##################################
-  # Context color when running with privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0
-  # Context color in SSH without privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0
-  # Default context color (no privileges, no SSH).
-  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3
-  typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0
-
-  # Context format when running with privileges: user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m'
-  # Context format when in SSH without privileges: user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
-  # Default context format (no privileges, no SSH): user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
-
-  # Don't show context unless running with privileges or in SSH.
-  # Tip: Remove the next line to always show context.
-  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='with '
-
-  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
-  # Python virtual environment color.
-  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4
-  # Don't show Python version next to the virtual environment name.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
-  # If set to "false", won't show virtualenv if pyenv is already shown.
-  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
-  # Separate environment name from Python version only with a space.
-  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ anaconda: conda environment (https://conda.io/) ]######################
-  # Anaconda environment color.
-  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4
-
-  # Anaconda segment format. The following parameters are available within the expansion.
-  #
-  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
-  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
-  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
-  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
-  #
-  # CONDA_PROMPT_MODIFIER can be configured with the following command:
-  #
-  #   conda config --set env_prompt '({default_env}) '
-  #
-  # The last argument is a Python format string that can use the following variables:
-  #
-  # - prefix       The same as CONDA_PREFIX.
-  # - default_env  The same as CONDA_DEFAULT_ENV.
-  # - name         The last segment of CONDA_PREFIX.
-  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
-  #                always the same as default_env.
-  #
-  # Note: '({default_env}) ' is the default value of env_prompt.
-  #
-  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
-  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
-  # is empty.
-  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
-  # Pyenv color.
-  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4
-  # Hide python version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
-  # If set to false, hide python version if it's the same as global:
-  # $(pyenv version-name) == $(pyenv global).
-  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide python version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
-
-  # Pyenv segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
-  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
-  #
-  # The default format has the following logic:
-  #
-  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
-  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
-  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
-  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
-  # Goenv color.
-  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_GOENV_BACKGROUND=4
-  # Hide go version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
-  # If set to false, hide go version if it's the same as global:
-  # $(goenv version-name) == $(goenv global).
-  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide go version if it's equal to "system".
-  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
-  # Nodenv color.
-  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0
-  # Hide node version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
-  # If set to false, hide node version if it's the same as global:
-  # $(nodenv version-name) == $(nodenv global).
-  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
-  # Nvm color.
-  typeset -g POWERLEVEL9K_NVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NVM_BACKGROUND=5
-  # If set to false, hide node version if it's the same as default:
-  # $(nvm version current) == $(nvm version default).
-  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
-  # Nodeenv color.
-  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0
-  # Don't show Node version next to the environment name.
-  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
-  # Separate environment name from Node version only with a space.
-  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############################[ node_version: node.js version ]###############################
-  # Node version color.
-  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=7
-  typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2
-  # Show node version only when in a directory tree containing package.json.
-  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ go_version: go version (https://golang.org) ]########################
-  # Go version color.
-  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=255
-  typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2
-  # Show go version only when in a go project subdirectory.
-  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
-  # Rust version color.
-  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208
-  # Show rust version only when in a rust project subdirectory.
-  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
-  # .NET version color.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=7
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5
-  # Show .NET version only when in a .NET project subdirectory.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ php_version: php version (https://www.php.net/) ]######################
-  # PHP version color.
-  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PHP_VERSION_BACKGROUND=5
-  # Show PHP version only when in a PHP project subdirectory.
-  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
-  # Laravel version color.
-  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=1
-  typeset -g POWERLEVEL9K_LARAVEL_VERSION_BACKGROUND=7
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
-  # Rbenv color.
-  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1
-  # Hide ruby version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
-  # If set to false, hide ruby version if it's the same as global:
-  # $(rbenv version-name) == $(rbenv global).
-  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide ruby version if it's equal to "system".
-  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ####################[ java_version: java version (https://www.java.com/) ]####################
-  # Java version color.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=1
-  typeset -g POWERLEVEL9K_JAVA_VERSION_BACKGROUND=7
-  # Show java version only when in a java project subdirectory.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
-  # Show brief version.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
-  # Package color.
-  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PACKAGE_BACKGROUND=6
-
-  # Package format. The following parameters are available within the expansion.
-  #
-  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
-  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
-  #
-  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
-  # Rvm color.
-  typeset -g POWERLEVEL9K_RVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RVM_BACKGROUND=240
-  # Don't show @gemset at the end.
-  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
-  # Don't show ruby- at the front.
-  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
-  # Fvm color.
-  typeset -g POWERLEVEL9K_FVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_FVM_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
-  # Lua color.
-  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LUAENV_BACKGROUND=4
-  # Hide lua version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
-  # If set to false, hide lua version if it's the same as global:
-  # $(luaenv version-name) == $(luaenv global).
-  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide lua version if it's equal to "system".
-  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
-  # Java color.
-  typeset -g POWERLEVEL9K_JENV_FOREGROUND=1
-  typeset -g POWERLEVEL9K_JENV_BACKGROUND=7
-  # Hide java version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
-  # If set to false, hide java version if it's the same as global:
-  # $(jenv version-name) == $(jenv global).
-  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide java version if it's equal to "system".
-  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
-  # Perl color.
-  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PLENV_BACKGROUND=4
-  # Hide perl version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
-  # If set to false, hide perl version if it's the same as global:
-  # $(plenv version-name) == $(plenv global).
-  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide perl version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
-  # Perlbrew color.
-  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
-  # Show perlbrew version only when in a perl project subdirectory.
-  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
-  # Don't show "perl-" at the front.
-  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
-  # PHP color.
-  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PHPENV_BACKGROUND=5
-  # Hide php version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
-  # If set to false, hide php version if it's the same as global:
-  # $(phpenv version-name) == $(phpenv global).
-  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide PHP version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
-  # Scala color.
-  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_SCALAENV_BACKGROUND=1
-  # Hide scala version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
-  # If set to false, hide scala version if it's the same as global:
-  # $(scalaenv version-name) == $(scalaenv global).
-  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide scala version if it's equal to "system".
-  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
-  # Haskell color.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=0
-  typeset -g POWERLEVEL9K_HASKELL_STACK_BACKGROUND=3
-
-  # Hide haskell version if it doesn't come from one of these sources.
-  #
-  #   shell:  version is set by STACK_YAML
-  #   local:  version is set by stack.yaml up the directory tree
-  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
-  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
-  # If set to false, hide haskell version if it's the same as in the implicit global project.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
-  # Don't show terraform workspace if it's literally "default".
-  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
-  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current terraform workspace gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=2
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_BACKGROUND=0
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4
-  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0
-  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
-  # Terraform version color.
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]#################
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf'
-
-  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
-  # Show kubecontext only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show kubecontext.
-  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
-
-  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
-  # different contexts.
-  #
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current kubernetes context gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current kubernetes context is "deathray-testing/default", its class is TEST
-  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=0
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○'
-
-  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
-  # segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # Within the expansion the following parameters are always available:
-  #
-  # - P9K_CONTENT                The content that would've been displayed if there was no content
-  #                              expansion defined.
-  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
-  #                              in the output of `kubectl config get-contexts`. If there is no
-  #                              namespace, the parameter is set to "default".
-  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
-  #                              output of `kubectl config get-contexts`.
-  #
-  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
-  # the following extra parameters are available:
-  #
-  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
-  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
-  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
-  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
-  #
-  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
-  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  #
-  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
-  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
-  # Append the current context's namespace if it's not "default".
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at '
-
-  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
-  # Show aws only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show aws.
-  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current AWS profile gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current AWS profile is "company_test", its class is TEST
-  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AWS_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # AWS segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_AWS_PROFILE  The name of the current AWS profile.
-  # - P9K_AWS_REGION   The region associated with the current AWS profile.
-  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
-
-  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
-  # AWS Elastic Beanstalk environment color.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0
-  # Custom icon.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb'
-
-  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
-  # Show azure only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show azure.
-  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current azure account name gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current azure account is "company_test", its class is TEST because "company_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_BACKGROUND=0
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-
-  # Azure account name color.
-  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=7
-  typeset -g POWERLEVEL9K_AZURE_OTHER_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
-  # Show gcloud only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show gcloud.
-  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
-  # Google cloud color.
-  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7
-  typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4
-
-  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
-  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
-  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
-  # output of `gcloud` tool.
-  #
-  #   Parameter                | Source
-  #   -------------------------|--------------------------------------------------------------------
-  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
-  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
-  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
-  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
-  #
-  # Obtaining project name requires sending a request to Google servers. This can take a long time
-  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
-  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
-  # set and gcloud prompt segment transitions to state COMPLETE.
-  #
-  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
-  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
-  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
-  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
-  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
-  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
-
-  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
-  # this often. Negative value disables periodic polling. In this mode project name is retrieved
-  # only when the current configuration, account or project id changes.
-  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
-  # Show google_app_cred only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show google_app_cred.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
-
-  # Google application credentials classes for the purpose of using different colors, icons and
-  # expansions with different credentials.
-  #
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
-  # element in each pair defines a pattern against which the current kubernetes context gets
-  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
-  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
-  # parameters, you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
-  # The first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-  #     '*:*prod*:*'  PROD
-  #     '*:*test*:*'  TEST
-  #     '*'           DEFAULT)
-  #
-  # If your current Google application credentials is "service_account deathray-testing x@y.com",
-  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
-      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
-      '*'             DEFAULT)
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
-  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # You can use the following parameters in the expansion. Each of them corresponds to one of the
-  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
-  #
-  #   Parameter                        | JSON key file field
-  #   ---------------------------------+---------------
-  #   P9K_GOOGLE_APP_CRED_TYPE         | type
-  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
-  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
-
-  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
-  # Toolbox color.
-  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3
-  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
-  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in '
-
-  ###############################[ public_ip: public IP address ]###############################
-  # Public IP color.
-  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7
-  typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ########################[ vpn_ip: virtual private network indicator ]#########################
-  # VPN IP color.
-  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6
-  # When on VPN, show just an icon without the IP address.
-  # Tip: To display the private IP address when on VPN, remove the next line.
-  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
-  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
-  # to see the name of the interface.
-  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
-  # If set to true, show one segment per matching network interface. If set to false, show only
-  # one segment corresponding to the first matching network interface.
-  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
-  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
-  # IP color.
-  typeset -g POWERLEVEL9K_IP_BACKGROUND=4
-  typeset -g POWERLEVEL9K_IP_FOREGROUND=0
-  # The following parameters are accessible within the expansion:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+-------------------------------------------
-  #   P9K_IP_IP             | IP address
-  #   P9K_IP_INTERFACE      | network interface
-  #   P9K_IP_RX_BYTES       | total number of bytes received
-  #   P9K_IP_TX_BYTES       | total number of bytes sent
-  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
-  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
-  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
-  #   P9K_IP_TX_RATE        | send rate (since last prompt)
-  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP'
-  # Show information for the first network interface whose name matches this regular expression.
-  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
-  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
-  # Proxy color.
-  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4
-  typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ battery: internal battery ]#################################
-  # Show battery in red when it's below this level and not connected to power supply.
-  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
-  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=1
-  # Show battery in green when it's charging or fully charged.
-  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2
-  # Show battery in yellow when it's discharging.
-  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3
-  # Battery pictograms going from low to high level of charge.
-  typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█')
-  # Don't show the remaining time to charge/discharge.
-  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
-  typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0
-
-  #####################################[ wifi: wifi speed ]#####################################
-  # WiFi color.
-  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=0
-  typeset -g POWERLEVEL9K_WIFI_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
-  #
-  #   # Wifi colors and icons for different signal strength levels (low to high).
-  #   typeset -g my_wifi_fg=(0 0 0 0 0)                                # <-- change these values
-  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
-  #
-  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
-  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
-  #
-  # The following parameters are accessible within the expansions:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+---------------
-  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
-  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
-  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
-  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
-  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
-  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
-
-  ####################################[ time: current time ]####################################
-  # Current time color.
-  typeset -g POWERLEVEL9K_TIME_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TIME_BACKGROUND=7
-  # Format for the current time: 09:51:02. See `man 3 strftime`.
-  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
-  # If set to true, time will update when you hit enter. This way prompts for the past
-  # commands will contain the start times of their commands as opposed to the default
-  # behavior where they contain the end times of their preceding commands.
-  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
-  # Custom icon.
-  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TIME_PREFIX='at '
-
-  # Example of a user-defined prompt segment. Function prompt_example will be called on every
-  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
-  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and yellow text on red background
-  # greeting the user.
-  #
-  # Type `p10k help segment` for documentation and a more sophisticated example.
-  function prompt_example() {
-    p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n'
-  }
-
-  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
-  # is to generate the prompt segment for display in instant prompt. See
-  # https://github.com/romkatv/powerlevel10k#instant-prompt.
-  #
-  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
-  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
-  # will replay these calls without actually calling instant_prompt_*. It is imperative that
-  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
-  # rule is not observed, the content of instant prompt will be incorrect.
-  #
-  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
-  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
-  function instant_prompt_example() {
-    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
-    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
-    # and regular prompts.
-    prompt_example
-  }
-
-  # User-defined prompt segments can be customized the same way as built-in segments.
-  typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=3
-  typeset -g POWERLEVEL9K_EXAMPLE_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
-  # when accepting a command line. Supported values:
-  #
-  #   - off:      Don't change prompt when accepting a command line.
-  #   - always:   Trim down prompt when accepting a command line.
-  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
-  #               typed after changing current working directory.
-  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
-
-  # Instant prompt mode.
-  #
-  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
-  #              it incompatible with your zsh configuration files.
-  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
-  #              during zsh initialization. Choose this if you've read and understood
-  #              https://github.com/romkatv/powerlevel10k#instant-prompt.
-  #   - verbose: Enable instant prompt and print a warning when detecting console output during
-  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
-  #              seen the warning, or if you are unsure what this all means.
-  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
-
-  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
-  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
-  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
-  # really need it.
-  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
-
-  # If p10k is already loaded, reload configuration.
-  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
-  (( ! $+functions[p10k] )) || p10k reload
-}
-
-# Tell `p10k configure` which file it should overwrite.
-typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
-
-(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
-'builtin' 'unset' 'p10k_config_opts'
diff --git a/profile b/profile
deleted file mode 100644
index c1eac83e..00000000
--- a/profile
+++ /dev/null
@@ -1,27 +0,0 @@
-#############################################################
-# Generic configuration that applies to all shells
-#############################################################
-
-# Load user-specific personalisation.
-source ~/dotfiles/personalisation
-
-# Load paths and environment variables
-source ~/dotfiles/shellvars
-source ~/dotfiles/shellfunctions
-source ~/dotfiles/shellpaths
-source ~/dotfiles/shellaliases
-source ~/dotfiles/shellactivities
-
-export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-eval "$(pyenv init --path)"
-if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
-
-# goenv setup
-eval "$(goenv init -)"
-
-export PATH="$GOROOT/bin:$PATH"
-export PATH="$PATH:$GOPATH/bin"
-
-. "$HOME/.cargo/env"
-
diff --git a/pythonrc b/pythonrc
deleted file mode 100644
index b3fd2b2e..00000000
--- a/pythonrc
+++ /dev/null
@@ -1,44 +0,0 @@
-# vim: set ft=python :
-# Add auto-completion and a stored history file of commands to your Python
-# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
-# bound to the Esc key by default (you can change it - see readline docs).
-#
-# Store the file in ~/.pystartup, and set an environment variable to point
-# to it:  "export PYTHONSTARTUP=/home/gsf/.pystartup" in bash.
-#
-# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
-# full path to your home directory.
-
-
-from __future__ import print_function
-
-try:
-    import readline
-    import atexit
-    import os
-    import sys
-    import platform
-    import gnureadline as readline
-except ImportError as exception:
-    print('Python shell enhancement module problem: {0}'.format(exception))
-else:
-    # Enable Tab Completion
-    # OSX's bind should only be applied with legacy readline.
-    if sys.platform == 'darwin' and 'libedit' in readline.__doc__:
-        readline.parse_and_bind("bind ^I rl_complete")
-    else:
-        readline.parse_and_bind("tab: complete")
-
-    # Enable History File
-    history_file = os.environ.get("PYTHON_HISTORY_FILE",
-                                  os.path.join(os.environ['HOME'],
-                                               '.pyhistory'))
-    if os.path.isfile(history_file):
-        readline.read_history_file(history_file)
-    else:
-        open(history_file, 'a').close()
-    atexit.register(readline.write_history_file, history_file)
-    print('Completed ~/pythonstartup.py')
-
-    # anything not deleted (sys and os) will remain in the interpreter session
-    del atexit, readline, history_file
diff --git a/shellactivities b/shellactivities
deleted file mode 100644
index 0f6d3cfa..00000000
--- a/shellactivities
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-# TODO
diff --git a/shellaliases b/shellaliases
deleted file mode 100644
index 51759284..00000000
--- a/shellaliases
+++ /dev/null
@@ -1,277 +0,0 @@
-#!/bin/sh
-
-#########################################
-# Connectivity
-
-
-#########################################
-# Commands to run apps
-alias run.clojure.repl='java -cp ${CLOJURE_HOME}/clojure.jar clojure.lang.Repl'
-alias run.jlineclojure.repl='java -cp ${CLOJURE_HOME}/jline-0.9.91.jar:${CLOJURE_HOME}/clojure.jar jline.ConsoleRunner clojure.lang.Repl'
-alias run.clojure.script='java -cp ${CLOJURE_HOME}/clojure.jar clojure.main'
-
-
-#########################################
-# Commands to change dirs
-
-
-#################################
-# Simple Program Name Shortening
-# alias aq=aquamacs
-# alias g=git
-
-
-#############################
-# Utilities
-alias zipall='for D in *; do zip -r "$D" "$D"; done'
-
-alias pram.reset='sudo nvram boot-args=”-p -r”'
-
-alias macports.cleansource='sudo port -f uninstall inactive'
-# alias macports.cleanold='sudo port clean --all installed'
-
-alias rubygems.update='sudo gem update --system'
-# alias macports.update='sudo port selfupdate && sudo port upgrade outdated'
-alias brew.update='brew update && brew upgrade'
-
-alias timemachine.enablelocalversions='sudo tmutil enablelocal'
-alias timemachine.disablelocalversions='sudo tmutil disablelocal'
-
-alias hexdumpfile='od -h'
-
-# Flush the DNS on Mac
-alias network.dnsflush='dscacheutil -flushcache'
-
-# Copy and paste and prune the usless newline
-alias pbcopynn='tr -d "\n" | pbcopy'
-
-# Set the extended MacOS attributes on a file such that Quicklook will open it as text
-alias finder.astext='xattr -wx com.apple.FinderInfo "54 45 58 54 21 52 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" $1'
-#alias finder.qltext2='osascript -e tell application "Finder" to set file type of ((POSIX file "$1") as alias) to "TEXT"'
-
-# Git shortcuts
-alias gpl='git pull'
-alias gps='git push'
-
-# Show network connections
-# Often useful to prefix with SUDO to see more system level network usage
-alias network.connections='lsof -l -i +L -R -V'
-alias network.established='lsof -l -i +L -R -V | grep ESTABLISHED'
-alias network.internalip="ifconfig en0 | egrep -o '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'"
-alias network.externalip='curl -s http://checkip.dyndns.org/ | sed "s/[a-zA-Z<>/ :]//g"'
-
-# Files used, anywhere on the filesystem
-alias files.usage='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep'
-# Files being opened
-alias files.open='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep open'
-# Files in use in the Users directory
-alias files.usage.user='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep Users'
-
-# Directory listings
-# LS_COLORS='no=01;37:fi=01;37:di=07;96:ln=01;36:pi=01;32:so=01;35:do=01;35:bd=01;33:cd=01;33:ex=01;31:mi=00;05;37:or=00;05;37:'
-# -G Add colors to ls
-# -l Long format
-# -h Short size suffixes (B, K, M, G, P)
-# -p Postpend slash to folders
-alias ls='ls -G -h -p '
-alias ll='ls -l -G -h -p '
-
-if isLinux; then
-    alias ls='ls --color=auto'
-fi
-
-alias latest='ls -alt | head -20'
-
-#########################################
-# Utility Functions
-
-# Restart Apache on Mac
-alias apacherestart="sudo /usr/sbin/apachectl restart"
-
-# Do a Matrix movie effect of falling characters
-function matrix1() {
-echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) ;sleep 0.05; done|gawk '{ letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-function matrix2() {
-echo -e "\e[1;40m" ; clear ; characters=$( jot -c 94 33 | tr -d '\n' ) ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) $characters ;sleep 0.05; done|gawk '{ letters=$5; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-function matrix3() {
-echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $( printf "\U$(( $RANDOM % 500 ))" ) ;sleep 0.05; done|gawk '{c=$4; letter=$4;a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-# Use Mac OSX Preview to open a man page in a more handsome format
-function manp() {
-    man -t $1 | open -f -a /Applications/Preview.app
-}
-
-# Show normally hidden system and dotfile types of files
-# in Mac OSX Finder
-function finder.showhiddenfiles() {
-    defaults write com.apple.Finder AppleShowAllFiles YES
-    osascript -e 'tell application "Finder" to quit'
-    sleep 0.25
-    osascript -e 'tell application "Finder" to activate'
-}
-
-# Hide (back to defaults) normally hidden system and dotfile types of files
-# in Mac OSX Finder
-function finder.hidehiddenfiles() {
-    defaults write com.apple.Finder AppleShowAllFiles NO
-    osascript -e 'tell application "Finder" to quit'
-    sleep 0.25
-    osascript -e 'tell application "Finder" to activate'
-}
-
-# Get (cache) all Cheat sheets
-function cheat.getall() {
-	cheat sheets | grep '^  ' | xargs -n 1 -I {} bash -c 'cheat {} | :'
-}
-
-function find.name() {
-    wild=\'\*$1\*\'
-    sh -c "find . -iname $wild"
-}
-
-alias lessc='less -R' # Lets color escape sequences carry through to less
-alias morec='more -R'
-alias lesscolor='less -R'
-alias morecolor='more -R'
-
-function screenshot.setjpg() {
-    defaults write com.apple.screencapture type jpg
-    killall SystemUIServer
-}
-
-function screenshot.setpng() {
-    defaults write com.apple.screencapture type png
-	killall SystemUIServer
-}
-
-## Show third party kernel extensions
-alias thirdpartykernelextensions='kextstat | grep -v apple'
-
-## DHCP renew
-alias ipreleaserenew="sudo ipconfig set en0 BOOTP && sudo ipconfig set en0 DHCP"
-
-alias nasquota='ssh svn /home/nasadmin/nasquota/cur/bin/nasquota'
-alias prettyprint='enscript --pretty-print --color -2 -r'
-if [ -f /usr/bin/colordiff ]; then
-    alias diff='colordiff'
-fi
-alias grep='grep --color=auto --exclude=.svn'
-alias egrep='egrep --color=auto --exclude=.svn'
-alias fgrep='fgrep --color=auto --exclude=.svn'
-#alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n'
-alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n >sortedlog.log; dos2unix -q sortedlog.log'
-alias prunelog='cat sortedlog.log | grep WLM | grep -v SERVER_HTTP_IsValidKeyword | grep -v SERVER_HTTP_SetValue | grep -v SERVER_HTTP_ExtractValue | grep -v ClearReceiveMessageBuffer | grep -v ClearTransmitMessageBuffer | grep -v CopyToTransmitBuffer | grep -v CopyFromReceiveBuffer | grep -v SERVER_ReadConfigFile | grep -v SERVER_HTTP_SetKeywordTable | grep -v SERVER_HTTP_ClearBuffer > prunedlog.log'
-#alias vilastlog='vi logs/`ls -t logs/ | head -1`'
-alias vilastlog='vi `ls -t *.log | head -1`'
-alias catlastlog='cat logs/`ls -t logs/ | head -1`'
-alias brokenlinks='find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)'
-
-alias rm='rm -i'
-alias cp='cp -i'
-alias mv='mv -i'
-#alias cd='cd \!*; pwd'
-#alias cd='pushd !*'
-#alias more=less
-
-#alias du='du --exclude=.svn'
-
-alias now='date +"%Y%m%d-%H%M%S"'
-alias minicom='minicom -C minicom-`now`.log'
-
-#alias svnst='svn st --ignore-externals'
-#alias svnup='svn up --ignore-externals'
-
-alias svnrepos='export REPOS=$(~/utils/svnrepos -r) ; echo $REPOS'
-alias svnurl='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
-alias svndot='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
-alias svndotdot='svn info .. | awk '\''/^URL:/ {print}'\'' | sed '\''s/^URL: //'\'''
-
-alias svndiff='svn diff --diff-cmd=xx-diff-proxy'
-
-# shortcuts for doing process stuff
-alias pgrep='ps auxww | grep \!* | grep -v grep'
-#alias pfind='pgrep \!* | awk "{print \${2}}"'
-
-#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2 --toc'
-#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2'
-alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
-
-_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \) \( -name .venv -prune \)'
-_mfiles='\( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \)'
-_sfiles='\( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \)'
-_shfiles='\( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \)'
-_cfiles='\( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \)'
-_hfiles='\( -name "*\.[hH]" -o -name "*\.hpp" \)'
-_jfiles='\( -name "*\.java" \)'
-_pyfiles='\( -name "*\.py" \)'
-_dfiles='\( -name "*\.[dD]" \)'
-_rstfiles='\( -name "*\.rst" \)'
-_gofiles='\( -name "*\.go" \)'
-_grepargs='xargs egrep --color=auto -n'
-
-alias mfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs"
-alias mnotfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs -v"
-alias sfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs"
-alias snotfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs -v"
-alias shfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs"
-alias shnotfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs -v"
-alias cfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs"
-alias cnotfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs -v"
-alias hfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs"
-alias hnotfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs -v"
-alias jfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs"
-alias jnotfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs -v"
-alias pyfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs"
-alias pynotfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs -v"
-alias dfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs"
-alias dnotfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs -v"
-alias rstfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs"
-alias rstnotfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs -v"
-alias gofind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs"
-alias gonotfind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs -v"
-
-if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then
-    alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe"
-    alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe"
-    alias powerpnt="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app powerpnt.exe"
-    alias visio="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Visio\ 2010 --cx-app visio.exe"
-fi
-
-# History search.
-alias hgrep='history | grep --color'
-alias phgrep='cat ~/.persistent_history | grep -v phgrep | grep --color'
-
-# Kill ssh or sshpass sessions (e.g. if VPN hangs).
-alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9"
-
-# http://randsinrepose.com/links/2016/10/16/nesting-and-networking/
-alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8'
-
-# OSX gatekeeper disable...
-alias gatekeeper='sudo xattr -d com.apple.quarantine'
-
-if isMac; then
-    alias readlink='greadlink'
-    alias get_iplayer='PATH=/usr/bin:/usr/local/bin get_iplayer'
-    # On Mac OSX, uuidgen produces uppercase.
-    alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"'
-fi
-
-# Alias for parsing structure JSON logs...
-alias plog="jq -r -s 'map(select(.) | .log_level |=  ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'"
-
-# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli)
-alias jfullboard="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
-alias jtodo="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\""
-alias jbacklog="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\""
-alias jreview="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\""
-alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\""
-alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\""
-alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
-
-alias afping='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
diff --git a/shellpaths b/shellpaths
deleted file mode 100644
index a78da022..00000000
--- a/shellpaths
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-########################################################################
-# Shell agnostic path setup
-########################################################################
-
-# Jim's Scripts
-export PATH=$PATH:.
-export PATH=$PATH:~/bin
-export PATH=$PATH:~/dotfiles/scripts
-export PATH=$PATH:~/utils
-export PATH=$PATH:~/dotfiles/git/git-identify/bin
-export PATH=$PATH:~/.cargo/bin
-export PATH=$PATH:$GOPATH/bin
-export PATH=$PATH:$GOROOT/bin
-#export PATH=~/pebble-dev/sdk/bin:$PATH
-export PATH=$PATH:~/adr-tools/src
-
-# Path setup.
-#export PATH=
-#pathmunge ${HOME}/bin
-#pathmunge ${HOME}/utils
-#pathmunge /usr/bin
-#pathmunge /bin
-#pathmunge /usr/sbin
-#pathmunge /sbin
-
-# Brew
-export PATH="/usr/local/sbin:$PATH"
-export PATH="/opt/homebrew/sbin:$PATH"
-export PATH="/opt/homebrew/bin:$PATH"
-# Path setup for Brew Python.
-#export PATH="/usr/local/opt/python/libexec/bin:$PATH"
-
-# Dev frameworks
-#export PATH=$PATH:$ANT_HOME/bin
-#export PATH=$PATH:$M2_HOME/bin
-#export PATH=$PATH:$GROOVY_HOME/bin
-#export PATH=$PATH:$GRAILS_HOME/bin
-#export PATH=$PATH:$NEXUS_HOME/bin/jsw/macosx-universal-64
-#export PATH=$PATH:$JMETER_HOME/bin
-#export PATH=$PATH:$JRUBY_HOME/bin
-#export PATH=$PATH:$SOAPUI_HOME/bin
-#export PATH=$PATH:$APPENGINE_HOME/bin
-
-# Dev
-#export PATH=$PATH:/Applications/Dev/apache-tomcat/bin
-#export PATH=$PATH:/Applications/Dev/apache-maven/bin
-#export PATH=$PATH:/Applications/Dev/sonar/bin/macosx-universal-64
-#export PATH=$PATH:/Library/PostgreSQL/8.4/bin
-#export PATH=$PATH:/Applications/Dev/gradle/bin
-#export PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands:$PATH
-#export PATH=~/.gem/ruby/1.8/bin:$PATH             #For showoff
-#export PATH=$PATH:~/.cljr/bin
-# export PATH=~/.rbenv/bin:$PATH
-
-# Haskell
-# export PATH=$PATH:~/.cabal/bin
-
-# Node JS Packages (from Brew Install of Node and NPM)
-# PATH=$PATH:/usr/local/share/npm/bin
-
-export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
-
-# Put goenv on path.
-export PATH="$GOENV_ROOT/bin:$PATH"
-
-export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
-
diff --git a/shellvars b/shellvars
deleted file mode 100644
index 088c35c4..00000000
--- a/shellvars
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-export OS=$(uname -s)
-
-#########################################################################
-# Tool settings
-#########################################################################
-
-# Set the default pager to less
-export PAGER="less"
-# Set less to have a default flag of -R (RAW) so color passes through
-export LESS="-R"
-
-# GPG_TTY=$(tty)
-# export GPG_TTY
-
-#########################################################################
-# Shell settings
-#########################################################################
-
-export HISTCONTROL=ignoredups:erasedups
-export HISTSIZE=2000
-export HISTFILESIZE=2000
-export HISTTIMEFORMAT="%F %T "
-
-export HOSTNAME=`hostname -s`
-
-COMP_WORDBREAKS="${COMP_WORDBREAKS}:"
-export EDITOR=vi
-export PAGER=less
-export PSSH_HOSTS=~/.hosts_file
-
-if [ -d /local/$USER ]; then
-    export CCACHE_DIR=/local/$USER/.ccache
-fi
-export TMOUT=0
-
-#########################################################################
-# Go
-#########################################################################
-export GOPATH=~/go
-
-#########################################################################
-# Manpages colour schemes.
-#########################################################################
-# Mostly magenta...
-#export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode - red
-#export LESS_TERMCAP_md=$(printf '\e[01;35m') # enter double-bright mode - bold, magenta
-#export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-#export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-#export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode - yellow
-#export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-#export LESS_TERMCAP_us=$(printf '\e[04;36m') # enter underline mode - cyan
-# Bolder...
-export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
-export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
-export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
-export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
-
-#export SERVER=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}'`
-umask 002
-
-# Set vim as default command line editor
-export EDITOR='vim'
-
-export XXDIFF_EDITOR="xterm -e 'vi %s'"
-export PYTHONSTARTUP=~/.pythonrc
-#export PRINTER=xxx
-
-#########################################################################
-# Python Virtualenv stuff.
-#########################################################################
-# virtualenvwrapper
-export WORKON_HOME=$HOME/.virtualenvs
-# All new environments isolated from the site-packages directory.
-#export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
-# Specify Python to use with virtualenvwrapper.
-# export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
-# Use the same directory for virtualenvs as virtualenvwrapper.
-export PIP_VIRTUALENV_BASE=$WORKON_HOME
-# Make pip detect an active virtualenv and install to it
-export PIP_RESPECT_VIRTUALENV=true
-# Make pip only install into a virtualenv.
-export PIP_REQUIRE_VIRTUALENV=true
-
-export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-
-export GOENV_ROOT="$HOME/.goenv"
-
-export TSRC_PARALLEL_JOBS=8
-
-if [ -f ~/dotfiles/shellvars-personal ]; then
-    source ~/dotfiles/shellvars-personal
-fi
-if [ -f ~/dotfiles/shellvars-work ]; then
-    source ~/dotfiles/shellvars-work
-fi
-
diff --git a/terraformrc b/terraformrc
deleted file mode 100644
index d8e09193..00000000
--- a/terraformrc
+++ /dev/null
@@ -1 +0,0 @@
-plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
diff --git a/tmux.conf b/tmux.conf
deleted file mode 100644
index 09cf1be0..00000000
--- a/tmux.conf
+++ /dev/null
@@ -1,232 +0,0 @@
-# ~/.tmux.conf
-
-###########################################################################
-# General options
-
-# Set profix to C-a.
-set -g prefix C-b
-unbind C-a
-
-# Default termtype. If the rcfile sets $TERM, that overrides this value.
-set -g default-terminal screen-256color
-
-# Ring the bell if any background window rang a bell
-set -g bell-action any
-
-# Watch for activity in background windows
-setw -g monitor-activity on
-set -g visual-activity on
-
-# scrollback size
-set -g history-limit 10000
-
-# set first window to index 1 (not 0) to map more to the keyboard layout
-set -g base-index 1
-setw -g pane-base-index 1
-
-# pass through xterm keys
-set -g xterm-keys on
-
-###########################################################################
-# General keymap
-
-# Keep your finger on ctrl, or don't, same result
-bind-key C-d detach-client
-bind-key C-c new-window
-bind-key C-p paste-buffer
-
-# Redraw the client (if interrupted by wall, etc)
-bind R refresh-client
-
-# reload tmux config
-unbind r
-bind r \
-    source-file ~/.tmux.conf \;\
-    display 'Reloaded tmux config.'
-
-# Use emacs keybindings for tmux commandline input.
-#set -g status-keys emacs
-
-# Use vi keybindings in copy and choice modes
-#setw -g mode-keys vi
-
-###########################################################################
-# Window management / navigation
-
-# move between windows
-#bind-key C-h previous-window
-#bind-key C-l next-window
-
-# C-\ (no prefix) to skip to last window we were in before this one
-bind -n "C-\\" last-window
-
-# C-Space (no prefix) to tab to next window
-bind -n C-Space next-window
-
-# C-Shift-Left swaps current window with window to the left.
-bind-key -n C-S-Left swap-window -t -1
-
-# C-Shift-Right swaps current window with window to the right.
-bind-key -n C-S-Right swap-window -t +1
-
-###########################################################################
-# Pane management / navigation
-
-# Horizontal splits with s or C-s
-#unbind s
-#unbind C-s
-#bind-key s split-window
-#bind-key C-s split-window
-bind | split-window -h
-
-# Vertical split with v or C-v
-#unbind v
-#unbind C-v
-#bind-key v split-window -h
-#bind-key C-v split-window -h
-bind - split-window -v
-
-# navigation with C-{h,j,k,l} -- NO PREFIX
-# https://gist.github.com/mislav/5189704
-
-#bind -n C-k run-shell 'tmux-vim-select-pane -U'
-#bind -n C-j run-shell 'tmux-vim-select-pane -D'
-#bind -n C-h run-shell 'tmux-vim-select-pane -L'
-#bind -n C-l run-shell 'tmux-vim-select-pane -R'
-
-# C-b C-k to passthrough a C-k
-# C-k is consumed for pane navigation but we want it for kill-to-eol
-unbind C-k
-bind C-k send-key C-k
-
-# Pane resize in all four directions using vi bindings.
-# Can use these raw but I map them to Cmd-Opt- in iTerm2.
-# http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
-# Note on a few prefix options: C-a = 0x01, C-b = 0x02, C-g = 0x06
-#bind-key J resize-pane -D
-#bind-key K resize-pane -U
-#bind-key H resize-pane -L
-#bind-key L resize-pane -R
-
-# easily toggle synchronization (mnemonic: e is for echo)
-# sends input to all panes in a given window.
-#bind e setw synchronize-panes on
-#bind E setw synchronize-panes off
-
-###########################################################################
-# Scrollback / pastebuffer
-
-# Vim-style copy/paste
-#unbind [
-#bind y copy-mode
-#unbind p
-#bind p paste-buffer
-#bind -t vi-copy v begin-selection
-#bind -t vi-copy y copy-selection
-#bind -t vi-copy Escape cancel
-
-###########################################################################
-# Mouse mode
-
-#set -g mode-mouse on
-#set -g mouse-resize-pane on
-#set -g mouse-select-pane on
-#set -g mouse-select-window on
-
-# Toggle mouse on
-bind m \
-    set -g mode-mouse on \;\
-    set -g mouse-resize-pane on \;\
-    set -g mouse-select-pane on \;\
-    set -g mouse-select-window on \;\
-    display 'Mouse: ON'
-
-# Toggle mouse off
-bind M \
-    set -g mode-mouse off \;\
-    set -g mouse-resize-pane off \;\
-    set -g mouse-select-pane off \;\
-    set -g mouse-select-window off \;\
-    display 'Mouse: OFF'
-
-###########################################################################
-# Color scheme (Solarized light)
-
-### default statusbar colors
-##set-option -g status-bg colour231 #base2
-##set-option -g status-fg colour130 #yellow
-##set-option -g status-attr default
-##
-### default window title colors
-##set-window-option -g window-status-fg colour180 #base00
-##set-window-option -g window-status-bg default
-##
-### active window title colors
-##set-window-option -g window-status-current-fg colour196 #orange
-##set-window-option -g window-status-current-bg default
-##
-### pane border
-##set-option -g pane-active-border-fg black
-##set-option -g pane-active-border-bg white
-##set-option -g pane-border-fg brightcyan
-##set-option -g pane-border-bg default
-##
-### message text
-##set-option -g message-bg colour231 #base2
-##set-option -g message-fg colour196 #orange
-##
-### pane number display
-##set-option -g display-panes-active-colour colour20 #blue
-##set-option -g display-panes-colour colour196 #orange
-##
-### clock
-##set-window-option -g clock-mode-colour colour40 #green
-
-###########################################################################
-# Color scheme (Solarized Dark)
-
-# default statusbar colors
-set-option -g status-bg brightgreen
-set-option -g status-fg white
-set-option -g status-attr default
-
-# default window title colors
-set-window-option -g window-status-fg brightcyan
-set-window-option -g window-status-bg default
-#set-window-option -g window-status-attr dim
-
-# active window title colors
-set-window-option -g window-status-current-fg white
-set-window-option -g window-status-current-bg blue
-#set-window-option -g window-status-current-attr bright
-
-# pane border
-set-option -g pane-border-fg brightgreen
-set-option -g pane-active-border-fg red
-
-# message text
-set-option -g message-bg black
-set-option -g message-fg red
-
-# pane number display
-set-option -g display-panes-active-colour red
-set-option -g display-panes-colour white
-
-# clock
-set-window-option -g clock-mode-colour cyan
-
-###########################################################################
-
-# List of plugins
-set -g @plugin 'tmux-plugins/tpm'
-set -g @plugin 'tmux-plugins/tmux-sensible'
-set -g @plugin 'tmux-plugins/tmux-resurrect'
-set -g @plugin 'tmux-plugins/tmux-continuum'
-
-# Other examples:
-# set -g @plugin 'github_username/plugin_name'
-# set -g @plugin 'git@github.com/user/plugin'
-# set -g @plugin 'git@bitbucket.com/user/plugin'
-
-# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
-run '~/.tmux/plugins/tpm/tpm'
diff --git a/vimrc b/vimrc
deleted file mode 100644
index 98b85c16..00000000
--- a/vimrc
+++ /dev/null
@@ -1,224 +0,0 @@
-" ########################################################################
-" # VI text editor setup
-" ########################################################################
-
-" NOTE: make sure vim is actually installed, and that you're not trying 
-" to run this in vi!
-
-set shell=/bin/bash 
-set term=linux
-
-" set paste
-" set number
-
-" set our tabs to four spaces
-set ts=4
-" set smartindent
-set tabstop=4
-set shiftwidth=4
-set expandtab
-
-" turn syntax highlighting on by default
-syntax on
-filetype plugin indent on
-
-" set auto-indenting on for programming
-set ai
-
-" turn off compatibility with the old vi
-set nocompatible
-
-" turn on the "visual bell" - which is much quieter than the "audio blink"
-set visualbell 
-set t_vb=
-
-" disable screen restoring
-set t_ti= t_te=
-
-" automatically show matching brackets. works like it does in bbedit.
-set showmatch
-
-" make that backspace key work the way it should
-" set backspace=indent,eol,start
-set backspace=indent,eol
-
-set expandtab shiftwidth=4 tabstop=4
-
-filetype off                   " required!
-
-" use `:W` to sudo save a file if you forget to `sudo vim` the file
-command W w !sudo tee % > /dev/null
-
-filetype plugin indent on     " required!
-
-"let g:syntastic_enable_signs=1
-"let g:syntastic_auto_jump=1
-"let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'
-
-"set statusline+=%#warningmsg#
-"set statusline+=%{SyntasticStatuslineFlag()}
-"set statusline+=%*
-
-" Syntax highlighting only when vim-common is there
-if has("mouse_gpm") && filereadable("/usr/share/vim/syntax/syntax.vim")
-  syntax on filetype on
-endif
-
-set background=dark
-colorscheme solarized
-
-"Display a status-line
-set statusline=~
-
-"I know it's horrible for a vi master but useful for newbies.
-imap  I
-imap  A
-map  w
-imap  w
-cmap  
-
-"Some macros to manage the buffer of vim
-map  :bp
-map  :bn
-map  :bd
-
-" set our tabs to four spaces
-set ts=4
-
-"Default backspace like normal
-set bs=2
-
-"Terminal for 80 char ? so vim can play till 79 char.
-set textwidth=79
-
-"Some option desactivate by default (remove the no).
-set nobackup
-set nohlsearch
-set noincsearch
-
-" Tell vim to remember certain things when we exit
-"  '50  :  marks will be remembered for up to 50 previously edited files
-"  "100 :  will save up to 100 lines for each register
-"  :50 :  up to 50 lines of command-line history will be remembered
-"  %    :  saves and restores the buffer list
-"  n... :  where to save the viminfo files
-set viminfo='50,\"100,:50,%,n~/.viminfo
-
-"Show the position of the cursor.
-set ruler
-
-"" Gzip and Bzip2 files support
-" Take from the Debian package and the exemple on $VIM/vim_exemples
-if has("autocmd")
-
-autocmd FileType agc setlocal shiftwidth=8 tabstop=8
-"autocmd FileType agc setlocal tabstop=8
-
-function! ResCur()
-  if line("'\"") <= line("$")
-    normal! g`"
-    return 1
-  endif
-endfunction
-
-augroup resCur
-  autocmd!
-  autocmd BufWinEnter * call ResCur()
-augroup END
-
-au BufNewFile,BufRead *.log setf logs
-
-" Set some sensible defaults for editing C-files
-augroup cprog
-  " Remove all cprog autocommands
-  au!
-
-  " When starting to edit a file:
-  "   For *.c and *.h files set formatting of comments and set C-indenting on.
-  "   For other files switch it off.
-  "   Don't change the order, it's important that the line with * comes first.
-  autocmd BufRead *       set formatoptions=tcql nocindent comments&
-  autocmd BufRead *.c,*.h set expandtab shiftwidth=4 tabstop=4 formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,://
-augroup END
-
-" Set some sensible defaults for editing Python files
-augroup pyprog
-  " Remove all pyprog autocommands
-  au!
-
-  " When starting to edit a file:
-  "   For *.py set formatting of comments and set indenting on.
-  "   Don't change the order, it's important that the line with * comes first.
-  autocmd BufRead *.py set expandtab shiftwidth=4 tabstop=4
-augroup END
-
-" Also, support editing of gzip-compressed files. DO NOT REMOVE THIS!
-" This is also used when loading the compressed helpfiles.
-augroup gzip
-  " Remove all gzip autocommands
-  au!
-
-  " Enable editing of gzipped files
-  "	  read:	set binary mode before reading the file
-  "		uncompress text in buffer after reading
-  "	 write:	compress file after writing
-  "	append:	uncompress file, append, compress file
-  autocmd BufReadPre,FileReadPre	*.gz set bin
-  autocmd BufReadPre,FileReadPre	*.gz let ch_save = &ch|set ch=2
-  autocmd BufReadPost,FileReadPost	*.gz '[,']!gunzip
-  autocmd BufReadPost,FileReadPost	*.gz set nobin
-  autocmd BufReadPost,FileReadPost	*.gz let &ch = ch_save|unlet ch_save
-  autocmd BufReadPost,FileReadPost	*.gz execute ":doautocmd BufReadPost " . %:r
-
-  autocmd BufWritePost,FileWritePost	*.gz !mv  :r
-  autocmd BufWritePost,FileWritePost	*.gz !gzip :r
-
-  autocmd FileAppendPre			*.gz !gunzip 
-  autocmd FileAppendPre			*.gz !mv :r 
-  autocmd FileAppendPost		*.gz !mv  :r
-  autocmd FileAppendPost		*.gz !gzip :r
-augroup END
-
-augroup bzip2
-  " Remove all bzip2 autocommands
-  au!
-
-  " Enable editing of bzipped files
-  "       read: set binary mode before reading the file
-  "             uncompress text in buffer after reading
-  "      write: compress file after writing
-  "     append: uncompress file, append, compress file
-  autocmd BufReadPre,FileReadPre        *.bz2 set bin
-  autocmd BufReadPre,FileReadPre        *.bz2 let ch_save = &ch|set ch=2
-  autocmd BufReadPost,FileReadPost      *.bz2 set cmdheight=2|'[,']!bunzip2
-  autocmd BufReadPost,FileReadPost      *.bz2 set cmdheight=1 nobin|execute ":doautocmd BufReadPost " . %:r
-  autocmd BufReadPost,FileReadPost      *.bz2 let &ch = ch_save|unlet ch_save
-
-  autocmd BufWritePost,FileWritePost    *.bz2 !mv  :r
-  autocmd BufWritePost,FileWritePost    *.bz2 !bzip2 :r
-
-  autocmd FileAppendPre                 *.bz2 !bunzip2 
-  autocmd FileAppendPre                 *.bz2 !mv :r 
-  autocmd FileAppendPost                *.bz2 !mv  :r
-  autocmd FileAppendPost                *.bz2 !bzip2 -9 --repetitive-best :r
-
-  autocmd FileType make setlocal noexpandtab
-augroup END
-
-autocmd FileType python set complete+=k/usr/local/pydiction isk+=.,(
-
-endif " has ("autocmd")
-
-" Use terminals bracketed paste mode to set/unset Vims paste mode when you paste.
-" https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
-let &t_SI .= "\[?2004h"
-let &t_EI .= "\[?2004l"
-
-inoremap   [200~ XTermPasteBegin()
-
-function! XTermPasteBegin()
-  set pastetoggle=[201~
-  set paste
-  return ""
-endfunction
-
diff --git a/xxdiffrc b/xxdiffrc
deleted file mode 100644
index c8bd699c..00000000
--- a/xxdiffrc
+++ /dev/null
@@ -1,10 +0,0 @@
-FontText: "Lucida Console,7,-1,5,50,0,0,0,0,0"
-Color.Same.Back: "#e2e2e2"
-AutoSelectMerge: True
-DirDiffRecursive: True
-Show.Toolbar: True
-TabWidth: 4
-Command.DiffDirectories: "diff -q -s -x .svn"
-Command.DiffDirectoriesRec: "diff -q -s -r -x .svn"
-Command.DiffFiles2: "diff -d"
-Geometry: Maximize
diff --git a/zprofile b/zprofile
deleted file mode 100644
index 4fc9027f..00000000
--- a/zprofile
+++ /dev/null
@@ -1,10 +0,0 @@
-##############################################################################
-# Import the shell-agnostic (Bash or Zsh) environment config
-##############################################################################
-source ~/.profile
-
-##############################################################################
-# rupa/z setup (path frecency with tab completion)
-##############################################################################
-source ~/dotfiles/z/z.sh
-
diff --git a/zshenv b/zshenv
deleted file mode 100644
index 3880e03a..00000000
--- a/zshenv
+++ /dev/null
@@ -1,5 +0,0 @@
-fpath=($fpath $HOME/.zsh/func)
-typeset -U fpath
-alias assume="source assume"
-
-. "$HOME/.cargo/env"
diff --git a/zshrc b/zshrc
deleted file mode 100644
index fafc11ed..00000000
--- a/zshrc
+++ /dev/null
@@ -1,223 +0,0 @@
-# Interactive shell configuration.
-
-##############################################################################
-# ZShell History Configuration
-##############################################################################
-export HISTFILE=~/.zsh_history   # Where to save history to disk
-export HISTFILESIZE=1000000000
-export HISTSIZE=1000000000       # How many lines of history to keep in memory
-export SAVEHIST=1000000000       # Number of history entries to save to disk
-export HISTTIMEFORMAT="[%F %T] "
-export HIST_STAMPS="+%Y-%m-%d %H:%M:%S"
-export HISTDUP=erase             # Erase duplicates in the history file
-#export DISABLE_VENV_CD=1         # virtualenvwrapper
-
-setopt APPEND_HISTORY            # Append history to the history file (no overwriting)
-#setopt SHARE_HISTORY             # Share history between all sessions.
-setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
-setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
-setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
-setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
-setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
-setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
-setopt BANG_HIST                 # Treat the '!' character specially during expansion.
-
-#setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
-setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
-#setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
-#setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
-#setopt HIST_BEEP                 # Beep when accessing nonexistent history.
-
-setopt AUTO_CD                   # Automatically cd to a path if specified as a command.
-
-setopt CORRECT                   # Correction.
-#setopt CORRECT_ALL               # Correction.
-setopt NO_CASE_GLOB              # Case-insensitive globbing.
-
-# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
-# Initialization code that may require console input (password prompts, [y/n]
-# confirmations, etc.) must go above this block; everything else may go below.
-if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
-  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
-fi
-
-##############################################################################
-# Input key bindings.
-##############################################################################
-#set bell-style none
-#set match-hidden-files off
-bindkey '\e[A' history-search-backward
-bindkey '\e[B' history-search-forward
-bindkey '\e[C' forward-char
-bindkey '\e[D' backward-char
-bindkey '\e[3;5~' backward-kill-word
-bindkey '^?' backward-kill-word
-bindkey '\e(' kill-word
-bindkey '\e[1;5D' backward-word
-bindkey '\e[1;5C' forward-word
-
-##############################################################################
-# oh-my-zsh setup
-##############################################################################
-
-# Path to your oh-my-zsh configuration.
-export ZSH=$HOME/dotfiles/oh-my-zsh
-
-# Set name of the theme to load.
-# Look in $ZSH/themes/
-# Optionally, if you set this to "random", it'll load a random theme each
-# time that oh-my-zsh is loaded.
-
-#export ZSH_THEME="gozilla"
-#export ZSH_THEME="fino"
-#export ZSH_THEME="takashiyoshida"
-#export ZSH_THEME="random"
-#export ZSH_THEME="jnrowe"
-#export ZSH_THEME="agnoster"
-
-# powerlevel10k has to be set separately. See:
-# https://github.com/romkatv/powerlevel10k/blob/master/README.md#cannot-make-powerlevel10k-work-with-my-plugin-manager
-#export ZSH_THEME="powerline10k"
-
-# Set to this to use case-sensitive completion
-export CASE_SENSITIVE="true"
-
-# Comment this out to disable weekly auto-update checks
-# export DISABLE_AUTO_UPDATE="true"
-
-# Uncomment following line if you want to disable colors in ls
-# export DISABLE_LS_COLORS="true"
-
-# Uncomment following line if you want to disable autosetting terminal title.
-# export DISABLE_AUTO_TITLE="true"
-
-# Which plugins would you like to load? (plugins can be found in ~/.dotfiles/oh-my-zsh/plugins/*)
-plugins=(
-  aws
-  battery
-  brew
-  colorize
-  dirpersist
-  docker
-  fast-syntax-highlighting
-  git
-  gitignore
-  golang
-  iterm2
-  macos
-  pip
-  # pipenv
-  pyenv
-  pylint
-  python
-  # ripgrep
-  rust
-  # ssh-agent
-  sublime
-  sublime-merge
-  # sudo
-  terraform
-  textmate
-  virtualenv
-  # virtualenvwrapper
-)
-
-source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme
-source $HOME/dotfiles/zsh-autosuggestions/zsh-autosuggestions.zsh
-source $ZSH/oh-my-zsh.sh
-
-# Load rbenv ruby version selector
-# https://github.com/rbenv/rbenv#homebrew-on-macos
-#eval "$(rbenv init -)"
-
-##############################################################################
-# pyenv setup.
-##############################################################################
-if [ -d "$HOME/.pyenv" ]; then
-    # See if there is a user-install...
-    if ! command -v pyenv 1>/dev/null 2>&1; then
-        export PYENV_ROOT="$HOME/.pyenv"
-        export PATH="$PYENV_ROOT/bin:$PATH"
-    fi
-    if command -v pyenv 1>/dev/null 2>&1; then
-        eval "$(pyenv init --path)"
-        eval "$(pyenv virtualenv-init -)"
-    fi
-fi
-eval "$(pyenv init - --no-rehash zsh)"
-
-test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
-# For proper imgcat use, comment out the following line:
-# unalias imgcat
-# see https://github.com/eddieantonio/imgcat
-
-# To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh.
-[[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh
-
-# Quieten startup errors.
-#typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
-
-##############################################################################
-# zsh completion setup.
-##############################################################################
-
-GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh
-[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS
-
-# Make target completion.
-zstyle ':completion:*:*:make:*' tag-order 'targets'
-
-# Partial completion suggestions.
-# https://scriptingosx.com/2019/07/moving-to-zsh-part-5-completions/
-zstyle ':completion:*' list-suffixes
zstyle ':completion:*' expand prefix suffix

-
-# The following lines were added by compinstall
-
-zstyle ':completion:*' completer _expand _complete _ignored _approximate
-zstyle :compinstall filename $HOME/.zshrc
-
-autoload -Uz compinit
-compinit
-# End of lines added by compinstall
-
-# >>> conda initialize >>>
-# !! Contents within this block are managed by 'conda init' !!
-__conda_setup="$(\"${HOME}/opt/miniconda3/bin/conda\" \"shell.zsh\" \"hook\" 2> /dev/null)"
-if [ $? -eq 0 ]; then
-    eval "$__conda_setup"
-else
-    if [ -f "${HOME}/opt/miniconda3/etc/profile.d/conda.sh" ]; then
-        . "${HOME}/opt/miniconda3/etc/profile.d/conda.sh"
-    else
-        export PATH="${HOME}/opt/miniconda3/bin:$PATH"
-    fi
-fi
-unset __conda_setup
-# <<< conda initialize <<<
-
-# Created by `pipx` on 2024-02-23 11:28:21
-export PATH="$PATH:/Users/james.lawton/.local/bin"
-
-# Add rustup to path.
-export PATH="/opt/homebrew/opt/rustup/bin:$PATH"
-
-# git-spice shell completion.
-# eval "$(gs shell completion zsh)"
-
-# bun completions
-[ -s "/Users/james.lawton/.bun/_bun" ] && source "/Users/james.lawton/.bun/_bun"
-
-# bun
-export BUN_INSTALL="$HOME/.bun"
-export PATH="$BUN_INSTALL/bin:$PATH"
-
-# GitHub Copilot CLI.
-eval "$(gh copilot alias -- zsh)"
-
-# To customize prompt, run `p10k configure` or edit ~/Personal/git/dotfiles/p10k.zsh.
-[[ ! -f ~/Personal/git/dotfiles/p10k.zsh ]] || source ~/Personal/git/dotfiles/p10k.zsh
-# The following lines have been added by Docker Desktop to enable Docker CLI completions.
-fpath=(/Users/james.lawton/.docker/completions $fpath)
-autoload -Uz compinit
-compinit
-# End of Docker CLI completions

From 6996dee2b6034a9f86d94a51d505b81f1a7d993a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 15:41:44 +0000
Subject: [PATCH 681/973] Remove dup .gitignore.

---
 vim/.gitignore | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 vim/.gitignore

diff --git a/vim/.gitignore b/vim/.gitignore
deleted file mode 100644
index a0e76af9..00000000
--- a/vim/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.netrwhist

From 14b2b0a5376b67d7fc0100e7265e42b4291daa0f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 15:45:01 +0000
Subject: [PATCH 682/973] Add .vim directory to chezmoi.

---
 chezmoi/dot_vim/colors/solarized.vim | 964 +++++++++++++++++++++++++++
 chezmoi/dot_vim/ftdetect/agc.vim     |   1 +
 chezmoi/dot_vim/ftdetect/log.vim     |   1 +
 chezmoi/dot_vim/syntax/ldsl.vim      |  64 ++
 chezmoi/dot_vim/syntax/log.vim       |  31 +
 chezmoi/dot_vim/syntax/vcscommit.vim |  31 +
 6 files changed, 1092 insertions(+)
 create mode 100644 chezmoi/dot_vim/colors/solarized.vim
 create mode 100644 chezmoi/dot_vim/ftdetect/agc.vim
 create mode 100644 chezmoi/dot_vim/ftdetect/log.vim
 create mode 100644 chezmoi/dot_vim/syntax/ldsl.vim
 create mode 100644 chezmoi/dot_vim/syntax/log.vim
 create mode 100644 chezmoi/dot_vim/syntax/vcscommit.vim

diff --git a/chezmoi/dot_vim/colors/solarized.vim b/chezmoi/dot_vim/colors/solarized.vim
new file mode 100644
index 00000000..81c2c991
--- /dev/null
+++ b/chezmoi/dot_vim/colors/solarized.vim
@@ -0,0 +1,964 @@
+" Name:     Solarized vim colorscheme
+" Author:   Ethan Schoonover 
+" URL:      http://ethanschoonover.com/solarized
+"           (see this url for latest release & screenshots)
+" License:  OSI approved MIT license (see end of this file)
+"
+" Usage "{{{
+"
+" ---------------------------------------------------------------------
+" ABOUT:
+" ---------------------------------------------------------------------
+" Solarized is a carefully designed selective contrast colorscheme with dual 
+" light and dark modes that runs in both GUI, 256 and 16 color modes.
+"
+" See the homepage above for screenshots and details.
+"
+" ---------------------------------------------------------------------
+" INSTALLATION:
+" ---------------------------------------------------------------------
+"
+" Two options for installation: manual or pathogen
+" 
+" MANUAL INSTALLATION OPTION:
+" ---------------------------------------------------------------------
+" 
+" 1.  Put the files in the right place!
+" 2.  Move `solarized.vim` to your `.vim/colors` directory.
+" 
+" RECOMMENDED PATHOGEN INSTALLATION OPTION:
+" ---------------------------------------------------------------------
+" 
+" 1.  Download and install Tim Pope's Pathogen from:
+"     https://github.com/tpope/vim-pathogen
+"
+" 2.  Next, move or clone the `vim-colors-solarized` directory so that it is
+"     a subdirectory of the `.vim/bundle` directory.
+"
+"     a. **clone with git:**
+"
+"       $ cd ~/.vim/bundle
+"       $ git clone git://github.com/altercation/vim-colors-solarized.git
+"
+"     b. **or move manually into the pathogen bundle directory:**
+"         In the parent directory of vim-colors-solarized:
+"         
+"         $ mv vim-colors-solarized ~/.vim/bundle/
+" 
+" MODIFY VIMRC:
+" 
+" After either Option 1 or Option 2 above, put the following two lines in your 
+" .vimrc:
+" 
+"     set background=dark
+"     colorscheme solarized
+" 
+" or, for the light background mode of Solarized:
+" 
+"     set background=light
+"     colorscheme solarized
+" 
+" I like to have a different background in GUI and terminal modes, so I can use 
+" the following if-then. However, I find vim's background autodetection to be 
+" pretty good and, at least with MacVim, I can leave this background value 
+" assignment out entirely and get the same results.
+"
+"     if has('gui_running')
+"       set background=light
+"     else
+"       set background=dark
+"     endif
+" 
+" See the Solarized homepage at http://ethanschoonover.com/solarized for 
+" screenshots which will help you select either the light or dark background.
+"
+" Other options are detailed below.
+"
+" IMPORTANT NOTE FOR TERMINAL USERS:
+"
+" If you are going to use Solarized in Terminal mode (i.e. not in a GUI 
+" version like gvim or macvim), **please please please** consider setting your 
+" terminal emulator's colorscheme to used the Solarized palette. I've included 
+" palettes for some popular terminal emulator as well as Xdefaults in the 
+" official Solarized download available from:
+" 
+" http://ethanschoonover.com/solarized
+" 
+" If you use Solarized without these colors, Solarized will by default use an 
+" approximate set of 256 colors.  It isn't bad looking and has been extensively 
+" tweaked, but it's still not quite the real thing.
+" 
+" If you do use the custom terminal colors, simply add the following line 
+" *before* the `colorschem solarized` line:
+" 
+"     let g:solarized_termcolors=16
+" 
+" ---------------------------------------------------------------------
+" TOGGLE BACKGROUND FUNCTION
+" ---------------------------------------------------------------------
+" Here's a quick script that toggles the background color, using F5 in this 
+" example. You can drop this into .vimrc:
+"
+" function! ToggleBackground()
+"     if (g:solarized_style=="dark")
+"     let g:solarized_style="light"
+"     colorscheme solarized
+" else
+"     let g:solarized_style="dark"
+"     colorscheme solarized
+" endif
+" endfunction
+" command! Togbg call ToggleBackground()
+" nnoremap  :call ToggleBackground()
+" inoremap  :call ToggleBackground()a
+" vnoremap  :call ToggleBackground()
+"
+" ---------------------------------------------------------------------
+" OPTIONS
+" ---------------------------------------------------------------------
+" 
+" Set these in your vimrc file prior to calling the colorscheme.
+"
+" option name               default     optional
+" ------------------------------------------------
+" g:solarized_termcolors=   256     |   16
+" g:solarized_termtrans =   0       |   1
+" g:solarized_degrade   =   0       |   1
+" g:solarized_bold      =   1       |   0
+" g:solarized_underline =   1       |   0
+" g:solarized_italic    =   1       |   0
+" g:solarized_style     =   "dark"  |   "light"
+" g:solarized_contrast  =   "normal"|   "high" or "low"
+" ------------------------------------------------
+"
+" OPTION DETAILS
+"
+" ------------------------------------------------
+" g:solarized_termcolors=   256     |   16
+" ------------------------------------------------
+" The most important option if you are using vim in terminal (non gui) mode!
+" This tells Solarized to use the 256 degraded color mode if running in a 256 
+" color capable terminal.  Otherwise, if set to `16` it will use the terminal 
+" emulators colorscheme (best option as long as you've set the emulators colors 
+" to the Solarized palette).
+"
+" If you are going to use Solarized in Terminal mode (i.e. not in a GUI 
+" version like gvim or macvim), **please please please** consider setting your 
+" terminal emulator's colorscheme to used the Solarized palette. I've included 
+" palettes for some popular terminal emulator as well as Xdefaults in the 
+" official Solarized download available from: 
+" http://ethanschoonover.com/solarized . If you use Solarized without these 
+" colors, Solarized will by default use an approximate set of 256 colors.  It 
+" isn't bad looking and has been extensively tweaked, but it's still not quite 
+" the real thing.
+"
+" ------------------------------------------------
+" g:solarized_termtrans =   0       |   1
+" ------------------------------------------------
+" If you use a terminal emulator with a transparent background and Solarized 
+" isn't displaying the background color transparently, set this to 1 and 
+" Solarized will use the default (transparent) background of the terminal 
+" emulator. *urxvt* required this in my testing; Terminal.app/iTerm2 did not.
+"
+" ------------------------------------------------
+" g:solarized_degrade   =   0       |   1
+" ------------------------------------------------
+" For test purposes only; forces Solarized to use the 256 degraded color mode 
+" to test the approximate color values for accuracy.
+"
+" ------------------------------------------------
+" g:solarized_bold      =   1       |   0
+" ------------------------------------------------
+" ------------------------------------------------
+" g:solarized_underline =   1       |   0
+" ------------------------------------------------
+" ------------------------------------------------
+" g:solarized_italic    =   1       |   0
+" ------------------------------------------------
+" If you wish to stop Solarized from displaying bold, underlined or 
+" italicized typefaces, simply assign a zero value to the appropriate 
+" variable, for example: `let g:solarized_italic=0`
+"
+" ------------------------------------------------
+" g:solarized_style     =   "dark"  |   "light"
+" ------------------------------------------------
+" Simply another way to force Solarized to use a dark or light background.  
+" It's better to use `set background=dark` or `set background=light` in your 
+" .vimrc file. This option is mostly used in scripts (quick background color 
+" change) or for testing. Note that, if set, g:solarized_style overrides the 
+" setting for "background".
+"
+" ------------------------------------------------
+" g:solarized_contrast  =   "normal"|   "high" or "low"
+" ------------------------------------------------
+" Stick with normal! It's been carefully tested. Setting this option to high 
+" or low does use the same Solarized palette but simply shifts some values up 
+" or down in order to expand or compress the tonal range displayed.
+"
+" ---------------------------------------------------------------------
+" COLOR VALUES
+" ---------------------------------------------------------------------
+" Download palettes and files from: http://ethanschoonover.com/solarized
+"
+" L\*a\*b values are canonical (White D65, Reference D50), other values are 
+" matched in sRGB space.
+"
+" SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB
+" --------- ------- ---- -------  ----------- ---------- ----------- -----------
+" base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
+" base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
+" base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46
+" base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51
+" base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
+" base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
+" base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93
+" base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
+" yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
+" orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
+" red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
+" magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
+" violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
+" blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
+" cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
+" green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60
+"
+" ---------------------------------------------------------------------
+" COLORSCHEME HACKING
+" ---------------------------------------------------------------------
+"
+" Useful commands for testing colorschemes:
+" :source $VIMRUNTIME/syntax/hitest.vim
+" :help highlight-groups
+" :help cterm-colors
+" :help group-name
+"
+" Useful links for developing colorschemes:
+" http://www.vim.org/scripts/script.php?script_id=2937
+" http://vimcasts.org/episodes/creating-colorschemes-for-vim/
+" http://www.frexx.de/xterm-256-notes/"
+"
+"
+" }}}
+" Default option values"{{{
+" ---------------------------------------------------------------------
+if !exists("g:solarized_termtrans")
+    let g:solarized_termtrans = 0
+endif
+if !exists("g:solarized_degrade")
+    let g:solarized_degrade = 0
+endif
+if !exists("g:solarized_bold")
+    let g:solarized_bold = 1
+endif
+if !exists("g:solarized_underline")
+    let g:solarized_underline = 1
+endif
+if !exists("g:solarized_italic")
+    let g:solarized_italic = 1
+endif
+if !exists("g:solarized_termcolors")
+    let g:solarized_termcolors = 256
+endif
+if !exists("g:solarized_style") && !exists("g:solarized_style")
+    let g:solarized_style = &background
+endif
+if !exists("g:solarized_contrast")
+    let g:solarized_contrast = "normal"
+endif
+"}}}
+" Colorscheme basic settings"{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "dark"
+    set background=dark
+elseif g:solarized_style == "light"
+    set background=light
+else
+    let g:solarized_style = &background
+endif
+
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+
+let colors_name = "solarized"
+"let colors_name = &background
+"if background == "light"
+"    let colors_name = &background
+"else
+"    let colors_name = &background
+"endif
+"}}}
+" GUI & CSApprox hexadecimal palettes"{{{
+" ---------------------------------------------------------------------
+"
+" Set both gui and terminal color values in separate conditional statements
+" Due to possibility that CSApprox is running (though I suppose we could just
+" leave the hex values out entirely in that case and include only cterm colors)
+" We also check to see if user has set solarized (force use of the
+" neutral gray monotone palette component)
+if has("gui_running") && g:solarized_degrade == 0
+    let s:g_back        = "#002b36"
+    let s:g_base03      = "#002b36"
+    let s:g_base02      = "#073642"
+    let s:g_base01      = "#586e75"
+    let s:g_base00      = "#657b83"
+    let s:g_base0       = "#839496"
+    let s:g_base1       = "#93a1a1"
+    let s:g_base2       = "#eee8d5"
+    let s:g_base3       = "#fdf6e3"
+    let s:g_yellow      = "#b58900"
+    let s:g_orange      = "#cb4b16"
+    let s:g_red         = "#dc322f"
+    let s:g_magenta     = "#d33682"
+    let s:g_violet      = "#6c71c4"
+    let s:g_blue        = "#268bd2"
+    let s:g_cyan        = "#2aa198"
+    let s:g_green       = "#859900"
+else
+    " these colors are for non-gui vim when CSApprox is installed. CSApprox 
+    " degrades the base colors poorly (bright blues instead of muted gray 
+    " blues) so we set all hex values here to ones which CSApprox will not
+    " change and which we approve of. Perhaps I should just can the hex values
+    " and use just the color table values, leaving these blank. Not much
+    " difference either way and I'd rather be thorough about it.
+    " They can also be used by setting g:solarized_degrade to 1 in vimrc
+    let s:g_back        = "#1c1c1c"
+    let s:g_base03      = "#1c1c1c"
+    let s:g_base02      = "#262626"
+    let s:g_base01      = "#4e4e4e"
+    let s:g_base00      = "#585858"
+    let s:g_base0       = "#808080"
+    let s:g_base1       = "#8a8a8a"
+    let s:g_base2       = "#d7d7af"
+    let s:g_base3       = "#ffffd7"
+    let s:g_yellow      = "#af8700"
+    let s:g_orange      = "#d75f00"
+    let s:g_red         = "#af0000"
+    let s:g_magenta     = "#af005f"
+    let s:g_violet      = "#5f5faf"
+    let s:g_blue        = "#0087ff"
+    let s:g_cyan        = "#00afaf"
+    let s:g_green       = "#5f8700"
+endif
+"}}}
+" 256 Terminal (no CSApprox) and 16 color fallback palettes"{{{
+" ---------------------------------------------------------------------
+" We also set this if gui is running as we use the optional formatting
+" values that get set here (ou==optional underline, ob==opt bold).
+if (has("gui_running") || &t_Co == 256) && g:solarized_termcolors != 16
+    let s:c_back        = "234"
+    let s:c_base03      = "234"
+    let s:c_base02      = "235"
+    let s:c_base01      = "239"
+    let s:c_base00      = "240"
+    let s:c_base0       = "244"
+    let s:c_base1       = "245"
+    let s:c_base2       = "187"
+    let s:c_base3       = "230"
+    let s:c_yellow      = "136"
+    let s:c_orange      = "166"
+    let s:c_red         = "124"
+    let s:c_magenta     = "125"
+    let s:c_violet      = "61"
+    let s:c_blue        = "33"
+    let s:c_cyan        = "37"
+    let s:c_green       = "64"
+    let s:ou            = ""
+    let s:ob            = ""
+elseif &t_Co > 8 || g:solarized_termcolors == 16
+    " NOTE: this requires terminal colors to be set to solarized standard
+    " 16 colors (see top of this file for details)
+    let s:c_back        = "NONE"
+    let s:c_base03      = "8"
+    let s:c_base02      = "0"
+    let s:c_base01      = "10"
+    let s:c_base00      = "11"
+    let s:c_base0       = "12"
+    let s:c_base1       = "14"
+    let s:c_base2       = "7"
+    let s:c_base3       = "15"
+    let s:c_green       = "2"
+    let s:c_yellow      = "3"
+    let s:c_orange      = "9"
+    let s:c_red         = "1"
+    let s:c_magenta     = "5"
+    let s:c_violet      = "13"
+    let s:c_blue        = "4"
+    let s:c_cyan        = "6"
+    let s:ou            = ""
+    let s:ob            = ""
+else " must be in an 8 color or less terminal
+    let s:c_back        = "NONE"
+    let s:c_base03      = "4"
+    let s:c_base02      = "darkgrey"
+    let s:c_base01      = "grey"
+    let s:c_base00      = "darkgrey"
+    let s:c_base0       = "6"
+    let s:c_base1       = "4"
+    let s:c_base2       = "7"
+    let s:c_base3       = "7"
+    let s:c_green       = "2"
+    let s:c_yellow      = "3"
+    let s:c_orange      = "3"
+    let s:c_red         = "1"
+    let s:c_magenta     = "5"
+    let s:c_violet      = "5"
+    let s:c_blue        = "4"
+    let s:c_cyan        = "6"
+    let s:ou            = ",underline"
+    let s:ob            = ",bold"
+endif
+"}}}
+" Formatting options and null values for passthrough effect"{{{
+" ---------------------------------------------------------------------
+let s:g_none            = "NONE"
+let s:c_none            = "NONE"
+let s:t_none            = "NONE"
+let s:n                 = "NONE"
+let s:c                 = ",undercurl"
+let s:r                 = ",reverse"
+let s:s                 = ",standout"
+"}}}
+" Alternate light scheme "{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "light"
+    let s:c_temp03      = s:c_base03
+    let s:c_temp02      = s:c_base02
+    let s:c_temp01      = s:c_base01
+    let s:c_temp00      = s:c_base00
+    let s:c_base03      = s:c_base3
+    let s:c_base02      = s:c_base2
+    let s:c_base01      = s:c_base1
+    let s:c_base00      = s:c_base0
+    let s:c_base0       = s:c_temp00
+    let s:c_base1       = s:c_temp01
+    let s:c_base2       = s:c_temp02
+    let s:c_base3       = s:c_temp03
+    let s:c_back        = s:c_base03
+    let s:g_temp03      = s:g_base03
+    let s:g_temp02      = s:g_base02
+    let s:g_temp01      = s:g_base01
+    let s:g_temp00      = s:g_base00
+    let s:g_base03      = s:g_base3
+    let s:g_base02      = s:g_base2
+    let s:g_base01      = s:g_base1
+    let s:g_base00      = s:g_base0
+    let s:g_base0       = s:g_temp00
+    let s:g_base1       = s:g_temp01
+    let s:g_base2       = s:g_temp02
+    let s:g_base3       = s:g_temp03
+    let s:g_back        = s:g_base03
+endif
+"}}}
+" Alternate inverted background scheme "{{{
+" ---------------------------------------------------------------------
+if g:solarized_style == "inverted"
+    let s:c_temp03      = s:c_base03
+    let s:c_temp02      = s:c_base02
+    let s:c_base03      = s:c_temp02
+    let s:c_base02      = s:c_temp03
+    let s:c_back        = s:c_base03
+    let s:g_temp03      = s:g_base03
+    let s:g_temp02      = s:g_base02
+    let s:g_base03      = s:g_temp02
+    let s:g_base02      = s:g_temp03
+    let s:g_back        = s:g_base03
+endif
+"}}}
+" Optional contrast schemes "{{{
+" ---------------------------------------------------------------------
+if g:solarized_contrast == "high"
+    let s:g_base03      = s:g_base03
+    let s:g_base02      = s:g_base02
+    let s:g_base01      = s:g_base00
+    let s:g_base00      = s:g_base0
+    let s:g_base0       = s:g_base1
+    let s:g_base1       = s:g_base2
+    let s:g_base2       = s:g_base3
+    let s:g_base3       = s:g_base3
+    let s:g_back        = s:g_back
+endif
+if g:solarized_contrast == "low"
+    let s:g_back        = s:g_base02
+    let s:ou            = ",underline"
+endif
+"}}}
+" Overrides dependent on user specified values"{{{
+" ---------------------------------------------------------------------
+if g:solarized_termtrans == 1
+    let s:c_back        = "NONE"   
+endif
+
+if g:solarized_bold == 1
+    let s:b             = ",bold"
+else
+    let s:b             = ""
+endif
+
+if g:solarized_underline == 1
+    let s:u             = ",underline"
+else
+    let s:u             = ""
+endif
+
+if g:solarized_italic == 1
+    let s:i             = ",italic"
+else
+    let s:i             = ""
+endif
+"}}}
+" Highlighting primitives"{{{
+" ---------------------------------------------------------------------
+
+exe "let s:bg_none      = ' ctermbg=".s:c_none   ." guibg=".s:g_none   ."'" 
+exe "let s:bg_back      = ' ctermbg=".s:c_back   ." guibg=".s:g_back   ."'" 
+exe "let s:bg_base03    = ' ctermbg=".s:c_base03 ." guibg=".s:g_base03 ."'" 
+exe "let s:bg_base02    = ' ctermbg=".s:c_base02 ." guibg=".s:g_base02 ."'" 
+exe "let s:bg_base01    = ' ctermbg=".s:c_base01 ." guibg=".s:g_base01 ."'" 
+exe "let s:bg_base00    = ' ctermbg=".s:c_base00 ." guibg=".s:g_base00 ."'" 
+exe "let s:bg_base0     = ' ctermbg=".s:c_base0  ." guibg=".s:g_base0  ."'" 
+exe "let s:bg_base1     = ' ctermbg=".s:c_base1  ." guibg=".s:g_base1  ."'" 
+exe "let s:bg_base2     = ' ctermbg=".s:c_base2  ." guibg=".s:g_base2  ."'" 
+exe "let s:bg_base3     = ' ctermbg=".s:c_base3  ." guibg=".s:g_base3  ."'" 
+exe "let s:bg_green     = ' ctermbg=".s:c_green  ." guibg=".s:g_green  ."'" 
+exe "let s:bg_yellow    = ' ctermbg=".s:c_yellow ." guibg=".s:g_yellow ."'" 
+exe "let s:bg_orange    = ' ctermbg=".s:c_orange ." guibg=".s:g_orange ."'" 
+exe "let s:bg_red       = ' ctermbg=".s:c_red    ." guibg=".s:g_red    ."'" 
+exe "let s:bg_magenta   = ' ctermbg=".s:c_magenta." guibg=".s:g_magenta."'" 
+exe "let s:bg_violet    = ' ctermbg=".s:c_violet ." guibg=".s:g_violet ."'" 
+exe "let s:bg_blue      = ' ctermbg=".s:c_blue   ." guibg=".s:g_blue   ."'" 
+exe "let s:bg_cyan      = ' ctermbg=".s:c_cyan   ." guibg=".s:g_cyan   ."'" 
+
+exe "let s:fg_none      = ' ctermfg=".s:c_none   ." guifg=".s:g_none   ."'" 
+exe "let s:fg_back      = ' ctermfg=".s:c_back   ." guifg=".s:g_back   ."'" 
+exe "let s:fg_base03    = ' ctermfg=".s:c_base03 ." guifg=".s:g_base03 ."'" 
+exe "let s:fg_base02    = ' ctermfg=".s:c_base02 ." guifg=".s:g_base02 ."'" 
+exe "let s:fg_base01    = ' ctermfg=".s:c_base01 ." guifg=".s:g_base01 ."'" 
+exe "let s:fg_base00    = ' ctermfg=".s:c_base00 ." guifg=".s:g_base00 ."'" 
+exe "let s:fg_base0     = ' ctermfg=".s:c_base0  ." guifg=".s:g_base0  ."'" 
+exe "let s:fg_base1     = ' ctermfg=".s:c_base1  ." guifg=".s:g_base1  ."'" 
+exe "let s:fg_base2     = ' ctermfg=".s:c_base2  ." guifg=".s:g_base2  ."'" 
+exe "let s:fg_base3     = ' ctermfg=".s:c_base3  ." guifg=".s:g_base3  ."'" 
+exe "let s:fg_green     = ' ctermfg=".s:c_green  ." guifg=".s:g_green  ."'" 
+exe "let s:fg_yellow    = ' ctermfg=".s:c_yellow ." guifg=".s:g_yellow ."'" 
+exe "let s:fg_orange    = ' ctermfg=".s:c_orange ." guifg=".s:g_orange ."'" 
+exe "let s:fg_red       = ' ctermfg=".s:c_red    ." guifg=".s:g_red    ."'" 
+exe "let s:fg_magenta   = ' ctermfg=".s:c_magenta." guifg=".s:g_magenta."'" 
+exe "let s:fg_violet    = ' ctermfg=".s:c_violet ." guifg=".s:g_violet ."'" 
+exe "let s:fg_blue      = ' ctermfg=".s:c_blue   ." guifg=".s:g_blue   ."'" 
+exe "let s:fg_cyan      = ' ctermfg=".s:c_cyan   ." guifg=".s:g_cyan   ."'" 
+
+exe "let s:sp_none      = ' guisp=".s:g_none   ."'" 
+exe "let s:sp_back      = ' guisp=".s:g_back   ."'" 
+exe "let s:sp_base03    = ' guisp=".s:g_base03 ."'" 
+exe "let s:sp_base02    = ' guisp=".s:g_base02 ."'" 
+exe "let s:sp_base01    = ' guisp=".s:g_base01 ."'" 
+exe "let s:sp_base00    = ' guisp=".s:g_base00 ."'" 
+exe "let s:sp_base0     = ' guisp=".s:g_base0  ."'" 
+exe "let s:sp_base1     = ' guisp=".s:g_base1  ."'" 
+exe "let s:sp_base2     = ' guisp=".s:g_base2  ."'" 
+exe "let s:sp_base3     = ' guisp=".s:g_base3  ."'" 
+exe "let s:sp_green     = ' guisp=".s:g_green  ."'" 
+exe "let s:sp_yellow    = ' guisp=".s:g_yellow ."'" 
+exe "let s:sp_orange    = ' guisp=".s:g_orange ."'" 
+exe "let s:sp_red       = ' guisp=".s:g_red    ."'" 
+exe "let s:sp_magenta   = ' guisp=".s:g_magenta."'" 
+exe "let s:sp_violet    = ' guisp=".s:g_violet ."'" 
+exe "let s:sp_blue      = ' guisp=".s:g_blue   ."'" 
+exe "let s:sp_cyan      = ' guisp=".s:g_cyan   ."'" 
+
+exe "let s:fmt_none     = ' cterm=NONE".    " gui=NONE".    " term=NONE".    "'"
+exe "let s:fmt_bold     = ' cterm=NONE".s:b." gui=NONE".s:b." term=NONE".s:b."'"
+exe "let s:fmt_bldi     = ' cterm=NONE".s:b." gui=NONE".s:b.s:i." term=NONE".s:b."'"
+exe "let s:fmt_undr     = ' cterm=NONE".s:u." gui=NONE".s:u." term=NONE".s:u."'"
+exe "let s:fmt_undb     = ' cterm=NONE".s:u.s:b." gui=NONE".s:u.s:b.
+            \" term=NONE".s:u.s:b."'"
+exe "let s:fmt_undi     = ' cterm=NONE".s:u." gui=NONE".s:u.s:i.
+            \" term=NONE".s:u."'"
+exe "let s:fmt_uopt     = ' cterm=NONE".s:ou." gui=NONE".s:ou.
+            \" term=NONE".s:ou."'"
+exe "let s:fmt_bopt     = ' cterm=NONE".s:ob." gui=NONE".s:ob.
+            \" term=NONE".s:ob."'"
+exe "let s:fmt_curl     = ' cterm=NONE".s:c." gui=NONE".s:c." term=NONE".s:c."'"
+exe "let s:fmt_ital     = ' cterm=NONE".    " gui=NONE".s:i." term=NONE".    "'"
+exe "let s:fmt_revr     = ' cterm=NONE".s:r." gui=NONE".s:r." term=NONE".s:r."'"
+exe "let s:fmt_stnd     = ' cterm=NONE".s:s." gui=NONE".s:s." term=NONE".s:s."'"
+"}}}
+" Basic highlighting"{{{
+" ---------------------------------------------------------------------
+" note that link syntax to avoid duplicate configuration doesn't work with the
+" exe compiled formats
+
+exe "hi Normal"         . s:fg_base0  .s:bg_back   .s:fmt_none
+
+exe "hi Comment"        . s:fg_base01 .s:bg_none   .s:fmt_ital
+"      *Comment         any comment
+
+exe "hi Constant"       . s:fg_cyan   .s:bg_none   .s:fmt_none
+"exe "hi String"         . s:fg_yellow .s:bg_none   .s:fmt_none
+"      *Constant        any constant
+"       String          a string constant: "this is a string"
+"       Character       a character constant: 'c', '\n'
+"       Number          a number constant: 234, 0xff
+"       Boolean         a boolean constant: TRUE, false
+"       Float           a floating point constant: 2.3e10
+
+exe "hi Identifier"     . s:fg_blue   .s:bg_none   .s:fmt_none
+"      *Identifier      any variable name
+"       Function        function name (also: methods for classes)
+"
+exe "hi Statement"      . s:fg_green  .s:bg_none   .s:fmt_none
+"      *Statement       any statement
+"       Conditional     if, then, else, endif, switch, etc.
+"       Repeat          for, do, while, etc.
+"       Label           case, default, etc.
+"       Operator        "sizeof", "+", "*", etc.
+"       Keyword         any other keyword
+"       Exception       try, catch, throw
+
+exe "hi PreProc"        . s:fg_orange .s:bg_none   .s:fmt_none
+"      *PreProc         generic Preprocessor
+"       Include         preprocessor #include
+"       Define          preprocessor #define
+"       Macro           same as Define
+"       PreCondit       preprocessor #if, #else, #endif, etc.
+
+exe "hi Type"           . s:fg_yellow .s:bg_none   .s:fmt_none
+"      *Type            int, long, char, etc.
+"       StorageClass    static, register, volatile, etc.
+"       Structure       struct, union, enum, etc.
+"       Typedef         A typedef
+
+exe "hi Special"        . s:fg_red    .s:bg_none   .s:fmt_none
+"       *Special        any special symbol
+"        SpecialChar    special character in a constant
+"        Tag            you can use CTRL-] on this
+"        Delimiter      character that needs attention
+"        SpecialComment special things inside a comment
+"        Debug          debugging statements
+
+exe "hi Underlined"     . s:fg_violet .s:bg_none   .s:fmt_none
+"      *Underlined      text that stands out, HTML links
+
+exe "hi Ignore"         . s:fg_none   .s:bg_none   .s:fmt_none
+"      *Ignore          left blank, hidden  |hl-Ignore|
+
+exe "hi Error"          . s:fg_red    .s:bg_none   .s:fmt_bold
+"      *Error           any erroneous construct
+
+exe "hi Todo"           . s:fg_magenta.s:bg_none   .s:fmt_bold
+"      *Todo            anything that needs extra attention; mostly the
+"                       keywords TODO FIXME and XXX
+"
+"Highlighting groups for various occasions
+"-----------------------------------------
+exe "hi SpecialKey"     . s:fg_base02 .s:bg_none   .s:fmt_none
+exe "hi NonText"        . s:fg_base02 .s:bg_none   .s:fmt_bold
+exe "hi Directory"      . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi ErrorMsg"       . s:fg_red    .s:bg_none   .s:fmt_revr
+exe "hi IncSearch"      . s:fg_yellow .s:bg_none   .s:fmt_revr
+exe "hi Search"         . s:fg_yellow .s:bg_none   .s:fmt_stnd
+exe "hi MoreMsg"        . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi ModeMsg"        . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi LineNr"         . s:fg_base01 .s:bg_base02 .s:fmt_none
+exe "hi Question"       . s:fg_cyan   .s:bg_none   .s:fmt_bold
+exe "hi StatusLine"     . s:fg_base0  .s:bg_base02 .s:fmt_none
+exe "hi StatusLineNC"   . s:fg_base1  .s:bg_base02 .s:fmt_none
+exe "hi VertSplit"      . s:fg_base0  .s:bg_base02 .s:fmt_none
+exe "hi Title"          . s:fg_orange .s:bg_none   .s:fmt_bold
+exe "hi Visual"         . s:fg_none   .s:bg_base02 .s:fmt_stnd
+exe "hi VisualNOS"      . s:fg_none   .s:bg_base02 .s:fmt_stnd
+exe "hi WarningMsg"     . s:fg_red    .s:bg_none   .s:fmt_bold
+exe "hi WildMenu"       . s:fg_base1  .s:bg_base02 .s:fmt_none
+exe "hi Folded"         . s:fg_base0  .s:bg_base02 .s:fmt_undr   .s:sp_base03
+exe "hi FoldColumn"     . s:fg_base0  .s:bg_base02 .s:fmt_bold
+exe "hi DiffAdd"        . s:fg_green  .s:bg_none   .s:fmt_revr
+exe "hi DiffChange"     . s:fg_yellow .s:bg_none   .s:fmt_revr
+exe "hi DiffDelete"     . s:fg_red    .s:bg_none   .s:fmt_revr
+exe "hi DiffText"       . s:fg_blue   .s:bg_none   .s:fmt_revr
+exe "hi SignColumn"     . s:fg_base0  .s:bg_base02 .s:fmt_none
+exe "hi Conceal"        . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi SpellBad"       . s:fg_none   .s:bg_none   .s:fmt_curl   .s:sp_red
+exe "hi SpellCap"       . s:fg_none   .s:bg_none   .s:fmt_curl   .s:sp_violet
+exe "hi SpellRare"      . s:fg_none   .s:bg_none   .s:fmt_curl   .s:sp_cyan
+exe "hi SpellLocal"     . s:fg_none   .s:bg_none   .s:fmt_curl   .s:sp_yellow
+exe "hi Pmenu"          . s:fg_base0  .s:bg_base02 .s:fmt_none
+exe "hi PmenuSel"       . s:fg_base2  .s:bg_base01 .s:fmt_none
+exe "hi PmenuSbar"      . s:fg_base0  .s:bg_base2  .s:fmt_none
+exe "hi PmenuThumb"     . s:fg_base03 .s:bg_base0  .s:fmt_none
+exe "hi TabLine"        . s:fg_base0  .s:bg_base02 .s:fmt_undr   .s:sp_base0
+exe "hi TabLineSel"     . s:fg_base2  .s:bg_base01 .s:fmt_undr   .s:sp_base0
+exe "hi TabLineFill"    . s:fg_base0  .s:bg_base02 .s:fmt_undr   .s:sp_base0
+exe "hi CursorColumn"   . s:fg_none   .s:bg_base02 .s:fmt_none
+exe "hi CursorLine"     . s:fg_none   .s:bg_base02 .s:fmt_uopt   .s:sp_base1
+exe "hi ColorColumn"    . s:fg_none   .s:bg_base02 .s:fmt_none
+exe "hi Cursor"         . s:fg_none   .s:bg_none   .s:fmt_revr
+exe "hi lCursor"        . s:fg_none   .s:bg_none   .s:fmt_stnd
+exe "hi MatchParen"     . s:fg_red    .s:bg_base01 .s:fmt_bold
+
+"}}}
+" Extended highlighting "{{{
+" ---------------------------------------------------------------------
+"}}}
+" vim syntax highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi vimLineComment" . s:fg_base01 .s:bg_none   .s:fmt_ital
+exe "hi vimCommentString".s:fg_violet .s:bg_none   .s:fmt_none
+hi link vimVar Identifier
+hi link vimFunc Function
+hi link vimUserFunc Function
+exe "hi vimCommand"     . s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi vimCmdSep"      . s:fg_blue   .s:bg_none   .s:fmt_bold
+exe "hi helpExample"    . s:fg_base1  .s:bg_none   .s:fmt_none
+hi link helpSpecial Special
+"exe "hi helpSpecial"    . s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi helpOption"     . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi helpNote"       . s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi helpVim"       . s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi helpHyperTextJump".s:fg_blue  .s:bg_none   .s:fmt_undr
+exe "hi helpHyperTextEntry".s:fg_green .s:bg_none   .s:fmt_none
+exe "hi vimIsCommand"   . s:fg_base00 .s:bg_none   .s:fmt_none
+exe "hi vimSynMtchOpt". s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi vimSynType"     . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi vimHiLink"      . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi vimHiGroup"     . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi vimGroup"       . s:fg_blue   .s:bg_none   .s:fmt_undb
+"}}}
+" html highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi htmlTag"        . s:fg_base01 .s:bg_none   .s:fmt_none
+exe "hi htmlEndTag"     . s:fg_base01 .s:bg_none   .s:fmt_none
+exe "hi htmlTagN"       . s:fg_base1  .s:bg_none   .s:fmt_bold
+exe "hi htmlTagName"    . s:fg_blue   .s:bg_none   .s:fmt_bold
+exe "hi htmlSpecialTagName". s:fg_blue  .s:bg_none .s:fmt_ital
+exe "hi htmlArg"        . s:fg_base00 .s:bg_none   .s:fmt_none
+exe "hi javaScript"     . s:fg_yellow .s:bg_none   .s:fmt_none
+"}}}
+" perl highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi perlHereDoc"    . s:fg_base1  .s:bg_back   .s:fmt_none
+exe "hi perlVarPlain" . s:fg_yellow .s:bg_back   .s:fmt_none
+exe "hi perlStatementFileDesc"    . s:fg_cyan   .s:bg_back   .s:fmt_none
+
+"}}}
+" tex highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi texStatement"   . s:fg_cyan   .s:bg_back   .s:fmt_none
+exe "hi texMathZoneX"   . s:fg_yellow .s:bg_back   .s:fmt_none
+exe "hi texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none
+exe "hi texMathMatcher" . s:fg_yellow .s:bg_back   .s:fmt_none
+exe "hi texRefLabel"    . s:fg_yellow .s:bg_back   .s:fmt_none
+"}}}
+" ruby highlighting "{{{
+" ---------------------------------------------------------------------
+exe "hi rubyDefine"     . s:fg_base1  .s:bg_back   .s:fmt_bold
+"rubyInclude
+"rubySharpBang
+"rubyAccess
+"rubyPredefinedVariable
+"rubyBoolean
+"rubyClassVariable
+"rubyBeginEnd
+"rubyRepeatModifier
+"hi link rubyArrayDelimiter    Special  " [ , , ]
+"rubyCurlyBlock  { , , }
+
+"hi link rubyClass             Keyword 
+"hi link rubyModule            Keyword 
+"hi link rubyKeyword           Keyword 
+"hi link rubyOperator          Operator
+"hi link rubyIdentifier        Identifier
+"hi link rubyInstanceVariable  Identifier
+"hi link rubyGlobalVariable    Identifier
+"hi link rubyClassVariable     Identifier
+"hi link rubyConstant          Type  
+"}}}
+" haskell syntax highlighting"{{{
+" ---------------------------------------------------------------------
+" For use with syntax/haskell.vim : Haskell Syntax File 
+" http://www.vim.org/scripts/script.php?script_id=3034
+" See also Steffen Siering's github repository:
+" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim
+" ---------------------------------------------------------------------
+"
+" Treat True and False specially, see the plugin referenced above
+let hs_highlight_boolean=1
+" highlight delims, see the plugin referenced above
+let hs_highlight_delimiters=1
+
+exe "hi cPreCondit". s:fg_orange.s:bg_none   .s:fmt_none
+
+exe "hi VarId"    . s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi ConId"    . s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi hsImport" . s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi hsString" . s:fg_base00 .s:bg_none   .s:fmt_none
+
+exe "hi hsStructure"        . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hs_hlFunctionName"  . s:fg_blue   .s:bg_none
+exe "hi hsStatement"        . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hsImportLabel"      . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hs_OpFunctionName"  . s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi hs_DeclareFunction" . s:fg_orange .s:bg_none   .s:fmt_none
+exe "hi hsVarSym"           . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hsType"             . s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi hsTypedef"          . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hsModuleName"       . s:fg_green  .s:bg_none   .s:fmt_undr
+exe "hi hsModuleStartLabel" . s:fg_magenta.s:bg_none   .s:fmt_none
+hi link hsImportParams      Delimiter
+hi link hsDelimTypeExport   Delimiter
+hi link hsModuleStartLabel  hsStructure
+hi link hsModuleWhereLabel  hsModuleStartLabel
+
+" following is for the haskell-conceal plugin
+" the first two items don't have an impact, but better safe
+exe "hi hsNiceOperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi hsniceoperator"     . s:fg_cyan   .s:bg_none   .s:fmt_none
+
+"}}}
+" pandoc markdown syntax highlighting "{{{
+" ---------------------------------------------------------------------
+
+"PandocHiLink pandocNormalBlock
+exe "hi pandocTitleBlock"               .s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi pandocTitleBlockTitle"          .s:fg_blue   .s:bg_none   .s:fmt_bold
+exe "hi pandocTitleComment"             .s:fg_blue   .s:bg_none   .s:fmt_bold
+exe "hi pandocComment"                  .s:fg_base01 .s:bg_none   .s:fmt_ital
+exe "hi pandocVerbatimBlock"            .s:fg_yellow .s:bg_none   .s:fmt_none
+hi link pandocVerbatimBlockDeep         pandocVerbatimBlock
+hi link pandocCodeBlock                 pandocVerbatimBlock
+hi link pandocCodeBlockDelim            pandocVerbatimBlock
+exe "hi pandocBlockQuote"               .s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader1"        .s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader2"        .s:fg_cyan   .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader3"        .s:fg_yellow .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader4"        .s:fg_red    .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader5"        .s:fg_base0  .s:bg_none   .s:fmt_none
+exe "hi pandocBlockQuoteLeader6"        .s:fg_base01 .s:bg_none   .s:fmt_none
+exe "hi pandocListMarker"               .s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi pandocListReference"            .s:fg_magenta.s:bg_none   .s:fmt_undr
+
+" Definitions
+" ---------------------------------------------------------------------
+let s:fg_pdef = s:fg_violet
+exe "hi pandocDefinitionBlock"              .s:fg_pdef  .s:bg_none  .s:fmt_none
+exe "hi pandocDefinitionTerm"               .s:fg_pdef  .s:bg_none  .s:fmt_stnd
+exe "hi pandocDefinitionIndctr"             .s:fg_pdef  .s:bg_none  .s:fmt_bold
+exe "hi pandocEmphasisDefinition"           .s:fg_pdef  .s:bg_none  .s:fmt_ital
+exe "hi pandocEmphasisNestedDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bldi
+exe "hi pandocStrongEmphasisDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_bold
+exe "hi pandocStrongEmphasisNestedDefinition"   .s:fg_pdef.s:bg_none.s:fmt_bldi
+exe "hi pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi
+exe "hi pandocStrikeoutDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_revr
+exe "hi pandocVerbatimInlineDefinition"     .s:fg_pdef  .s:bg_none  .s:fmt_none
+exe "hi pandocSuperscriptDefinition"        .s:fg_pdef  .s:bg_none  .s:fmt_none
+exe "hi pandocSubscriptDefinition"          .s:fg_pdef  .s:bg_none  .s:fmt_none
+
+" Tables
+" ---------------------------------------------------------------------
+let s:fg_ptable = s:fg_blue
+exe "hi pandocTable"                        .s:fg_ptable.s:bg_none  .s:fmt_none
+exe "hi pandocTableStructure"               .s:fg_ptable.s:bg_none  .s:fmt_none
+hi link pandocTableStructureTop             pandocTableStructre
+hi link pandocTableStructureEnd             pandocTableStructre
+exe "hi pandocTableZebraLight"              .s:fg_ptable.s:bg_base03.s:fmt_none
+exe "hi pandocTableZebraDark"               .s:fg_ptable.s:bg_base02.s:fmt_none
+exe "hi pandocEmphasisTable"                .s:fg_ptable.s:bg_none  .s:fmt_ital
+exe "hi pandocEmphasisNestedTable"          .s:fg_ptable.s:bg_none  .s:fmt_bldi
+exe "hi pandocStrongEmphasisTable"          .s:fg_ptable.s:bg_none  .s:fmt_bold
+exe "hi pandocStrongEmphasisNestedTable"    .s:fg_ptable.s:bg_none  .s:fmt_bldi
+exe "hi pandocStrongEmphasisEmphasisTable"  .s:fg_ptable.s:bg_none  .s:fmt_bldi
+exe "hi pandocStrikeoutTable"               .s:fg_ptable.s:bg_none  .s:fmt_revr
+exe "hi pandocVerbatimInlineTable"          .s:fg_ptable.s:bg_none  .s:fmt_none
+exe "hi pandocSuperscriptTable"             .s:fg_ptable.s:bg_none  .s:fmt_none
+exe "hi pandocSubscriptTable"               .s:fg_ptable.s:bg_none  .s:fmt_none
+
+" Headings
+" ---------------------------------------------------------------------
+let s:fg_phead = s:fg_orange
+exe "hi pandocHeading"                      .s:fg_phead .s:bg_none.s:fmt_bold
+exe "hi pandocHeadingMarker"                .s:fg_yellow.s:bg_none.s:fmt_bold
+exe "hi pandocEmphasisHeading"              .s:fg_phead .s:bg_none.s:fmt_bldi
+exe "hi pandocEmphasisNestedHeading"        .s:fg_phead .s:bg_none.s:fmt_bldi
+exe "hi pandocStrongEmphasisHeading"        .s:fg_phead .s:bg_none.s:fmt_bold
+exe "hi pandocStrongEmphasisNestedHeading"  .s:fg_phead .s:bg_none.s:fmt_bldi
+exe "hi pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi
+exe "hi pandocStrikeoutHeading"             .s:fg_phead .s:bg_none.s:fmt_revr
+exe "hi pandocVerbatimInlineHeading"        .s:fg_phead .s:bg_none.s:fmt_bold
+exe "hi pandocSuperscriptHeading"           .s:fg_phead .s:bg_none.s:fmt_bold
+exe "hi pandocSubscriptHeading"             .s:fg_phead .s:bg_none.s:fmt_bold
+
+" Links
+" ---------------------------------------------------------------------
+exe "hi pandocLinkDelim"                .s:fg_base01 .s:bg_none   .s:fmt_none
+exe "hi pandocLinkLabel"                .s:fg_blue   .s:bg_none   .s:fmt_undr
+exe "hi pandocLinkText"                 .s:fg_blue   .s:bg_none   .s:fmt_undb
+exe "hi pandocLinkURL"                  .s:fg_base00 .s:bg_none   .s:fmt_undr
+exe "hi pandocLinkTitle"                .s:fg_base00 .s:bg_none   .s:fmt_undi
+exe "hi pandocLinkTitleDelim"           .s:fg_base01 .s:bg_none   .s:fmt_undi   .s:sp_base00
+exe "hi pandocLinkDefinition"           .s:fg_cyan   .s:bg_none   .s:fmt_undr   .s:sp_base00
+exe "hi pandocLinkDefinitionID"         .s:fg_blue   .s:bg_none   .s:fmt_bold
+exe "hi pandocImageCaption"             .s:fg_violet .s:bg_none   .s:fmt_undb
+exe "hi pandocFootnoteLink"             .s:fg_green  .s:bg_none   .s:fmt_undr
+exe "hi pandocFootnoteDefLink"          .s:fg_green  .s:bg_none   .s:fmt_bold
+exe "hi pandocFootnoteInline"           .s:fg_green  .s:bg_none   .s:fmt_undb
+exe "hi pandocFootnote"                 .s:fg_green  .s:bg_none   .s:fmt_none
+exe "hi pandocCitationDelim"            .s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi pandocCitation"                 .s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi pandocCitationID"               .s:fg_magenta.s:bg_none   .s:fmt_undr
+exe "hi pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none
+
+" Main Styles
+" ---------------------------------------------------------------------
+exe "hi pandocStyleDelim"               .s:fg_base01 .s:bg_none  .s:fmt_none
+exe "hi pandocEmphasis"                 .s:fg_base0  .s:bg_none  .s:fmt_ital
+exe "hi pandocEmphasisNested"           .s:fg_base0  .s:bg_none  .s:fmt_bldi
+exe "hi pandocStrongEmphasis"           .s:fg_base0  .s:bg_none  .s:fmt_bold
+exe "hi pandocStrongEmphasisNested"     .s:fg_base0  .s:bg_none  .s:fmt_bldi
+exe "hi pandocStrongEmphasisEmphasis"   .s:fg_base0  .s:bg_none  .s:fmt_bldi
+exe "hi pandocStrikeout"                .s:fg_base01 .s:bg_none  .s:fmt_revr
+exe "hi pandocVerbatimInline"           .s:fg_yellow .s:bg_none  .s:fmt_none
+exe "hi pandocSuperscript"              .s:fg_violet .s:bg_none  .s:fmt_none
+exe "hi pandocSubscript"                .s:fg_violet .s:bg_none  .s:fmt_none
+
+exe "hi pandocRule"                     .s:fg_blue   .s:bg_none  .s:fmt_bold
+exe "hi pandocRuleLine"                 .s:fg_blue   .s:bg_none  .s:fmt_bold
+exe "hi pandocEscapePair"               .s:fg_red    .s:bg_none  .s:fmt_bold
+exe "hi pandocCitationRef"              .s:fg_magenta.s:bg_none   .s:fmt_none
+exe "hi pandocNonBreakingSpace"         . s:fg_red   .s:bg_none  .s:fmt_revr
+hi link pandocEscapedCharacter          pandocEscapePair
+hi link pandocLineBreak                 pandocEscapePair
+
+" Embedded Code 
+" ---------------------------------------------------------------------
+exe "hi pandocMetadataDelim"            .s:fg_base01 .s:bg_none   .s:fmt_none
+exe "hi pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi pandocMetadataKey"              .s:fg_blue   .s:bg_none   .s:fmt_none
+exe "hi pandocMetadata"                 .s:fg_blue   .s:bg_none   .s:fmt_bold
+hi link pandocMetadataTitle             pandocMetadata
+
+"}}}
+" License "{{{
+" ---------------------------------------------------------------------
+"
+" Copyright (c) 2011 Ethan Schoonover
+" 
+" Permission is hereby granted, free of charge, to any person obtaining a copy
+" of this software and associated documentation files (the "Software"), to deal
+" in the Software without restriction, including without limitation the rights
+" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+" copies of the Software, and to permit persons to whom the Software is
+" furnished to do so, subject to the following conditions:
+" 
+" The above copyright notice and this permission notice shall be included in
+" all copies or substantial portions of the Software.
+" 
+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+" THE SOFTWARE.
+" 
+"}}}
diff --git a/chezmoi/dot_vim/ftdetect/agc.vim b/chezmoi/dot_vim/ftdetect/agc.vim
new file mode 100644
index 00000000..04b4595d
--- /dev/null
+++ b/chezmoi/dot_vim/ftdetect/agc.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.agc set filetype=agc
diff --git a/chezmoi/dot_vim/ftdetect/log.vim b/chezmoi/dot_vim/ftdetect/log.vim
new file mode 100644
index 00000000..13f295f7
--- /dev/null
+++ b/chezmoi/dot_vim/ftdetect/log.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.log set filetype=log
diff --git a/chezmoi/dot_vim/syntax/ldsl.vim b/chezmoi/dot_vim/syntax/ldsl.vim
new file mode 100644
index 00000000..6871ebc9
--- /dev/null
+++ b/chezmoi/dot_vim/syntax/ldsl.vim
@@ -0,0 +1,64 @@
+" Vim syntax file
+" Language:         LDSL files
+" Maintainer:       David O'Shea 
+" Latest Revision:  2009-02-05
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn region  string      contained display start=+"+ end=+"+ skip=+\\"+
+syn match   comment     display '//.*$'
+
+syn match   keyword     display '\(^\|\s\+\)\zs\(global\|reference\|version\|prefix\|sync\|retvar\|include\|trace\|entry\|error\|warn\|info\|exit\|class\|description\|device\|instances\|type\|states\|events\|function\|ioctl\|deprecated\|state\|parameter\|goto\|adaptation\)\(\s\+\|$\)[^;{]*' contains=device,fn,ioctl,description,instances,reference,version,prefix,retvar,include,trace,sync,deprecated,devtype,class,state,parameter,goto,adaptation,events
+syn match   adaptation  contained display 'adaptation\s\+\zs\(yes\|no\)\ze;'
+syn match   goto        contained display 'goto\s\+\zs[^ ;}]*\ze;' contains=identifier
+syn match   parameter   contained display 'parameter\s\+\zs.*' contains=string,comment
+syn match   state       contained display 'state\s\+\zs[^ ;{]*\(\s\+->\s\+[^ ;{]*\)\?\ze;' contains=statename
+syn match   statename   contained display '[^ ;~>-]*'
+syn match   device      contained display 'device\s\+[^ ;{]* *' contains=identifier
+syn match   class       contained display 'class\s\+[^ ;{]* *' contains=identifier
+syn match   fn          contained display 'function\s\+\zs[^ ;{]*' contains=fnname,error
+syn match   ioctl       contained display 'ioctl\s\+[^ ;]*' contains=identifier
+syn match   description contained display 'description\s\+\zs.*' contains=string,comment
+syn match   reference   contained display 'reference\s\+\zs.*' contains=string,comment
+syn match   version     contained display 'version\s\+\zs.*' contains=string,comment
+syn match   prefix      contained display 'prefix\s\+\zs.*' contains=string,comment
+syn match   retvar      contained display 'retvar\s\+\zs.*' contains=string,comment
+syn match   devtype     contained display 'type\s\+\zs.*\ze;' contains=devtypet
+syn match   devtypet    contained display 'multiple\|singleton\|unnumbered'
+syn match   include     contained display 'include\s\+\zs\([<"][^>"]*[>"]\|none\)\ze;' contains=string,comment
+syn match   trace       contained display '\(entry\|error\|warn\|info\|exit\)\s\+\zs.*' contains=string,comment
+syn match   instances   contained display 'instances\s\+\zs[0-9]*'
+syn match   fnname      contained display '\(init\(iali[sz]e\)\?\|term\(inate\)\?\|open\|close\|read\|write\|poll\|select\|lseek\|mmap\|munmap\|msync\)\ze[ ;]'
+syn match   sync        contained display 'sync\s\+\zs[^;]*' contains=synctype,comment
+syn match   synctype    contained display '\(none\|sema\|mutex\)\ze;'
+syn match   deprecated  contained display 'deprecated\s\+\zs[^;{]*' contains=ioctl,fn,device,class
+syn match   identifier  contained display '\s\+\zs[^ ;]*'
+syn match   error       contained display '\s\+\zs[^ ;]*'
+
+hi     link device    Statement
+hi     link adaptation Identifier
+hi     link goto      Identifier
+hi     link state     Statement
+hi     link statename Identifier
+hi     link class     Statement
+hi     link fn        Error
+hi     link function  Statement
+hi def link fnname    Identifier
+hi     link ioctl     Statement
+hi def link instances Number
+hi def link sync      Error
+hi def link devtype   Error
+hi def link devtypet  Identifier
+hi def link synctype  Identifier
+hi def link deprecated Error
+hi def link error     Error
+
+let b:current_syntax = "ldsl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/chezmoi/dot_vim/syntax/log.vim b/chezmoi/dot_vim/syntax/log.vim
new file mode 100644
index 00000000..183de2b3
--- /dev/null
+++ b/chezmoi/dot_vim/syntax/log.vim
@@ -0,0 +1,31 @@
+" Vim syntax file
+" Language:         Log files
+" Maintainer:       Jim Lawton 
+" Latest Revision:  2008-08-13
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax region  msgFatal      start="[ ]*FATAL" end="$"
+syntax region  msgError      start="[ ]*ERROR" end="$"
+syntax region  msgError2     start=".*_ERR_.*" end="$"
+syntax region  msgWarn       start="[ ]*WARN"  end="$"
+syntax region  msgEntry      start='[ ]*==>'   end="$"
+syntax region  msgExit       start='[ ]*<=='   end="$"
+
+hi def link msgFatal    ErrorMsg
+hi def link msgError    ErrorMsg
+hi def link msgWarn     Special
+hi def link msgEntry    Identifier
+hi def link msgExit     Identifier
+hi def link msgError2   ErrorMsg
+
+let b:current_syntax = "messages"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/chezmoi/dot_vim/syntax/vcscommit.vim b/chezmoi/dot_vim/syntax/vcscommit.vim
new file mode 100644
index 00000000..0cd4c5ea
--- /dev/null
+++ b/chezmoi/dot_vim/syntax/vcscommit.vim
@@ -0,0 +1,31 @@
+" Vim syntax file
+" Language:	VCS commit file
+" Maintainer:	Bob Hiestand (bob.hiestand@gmail.com)
+" License:
+" Copyright (c) 2007 Bob Hiestand
+"
+" Permission is hereby granted, free of charge, to any person obtaining a copy
+" of this software and associated documentation files (the "Software"), to
+" deal in the Software without restriction, including without limitation the
+" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+" sell copies of the Software, and to permit persons to whom the Software is
+" furnished to do so, subject to the following conditions:
+"
+" The above copyright notice and this permission notice shall be included in
+" all copies or substantial portions of the Software.
+"
+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+" IN THE SOFTWARE.
+
+if exists("b:current_syntax")
+	finish
+endif
+
+syntax region vcsComment start="^VCS: " end="$"
+highlight link vcsComment Comment
+let b:current_syntax = "vcscommit"

From 41b2c8e10ef3ca1e8f05b3d56c1ea01614fb68fc Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 16:20:31 +0000
Subject: [PATCH 683/973] Make standalone common Git config.

---
 gitconfig-common | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/gitconfig-common b/gitconfig-common
index bea3dbb6..1b7a0494 100644
--- a/gitconfig-common
+++ b/gitconfig-common
@@ -1,8 +1,16 @@
+# Personal/work Git identity.
 [includeIf "gitdir:~/Work/"]
     path = ~/dotfiles/git-identity-work
 [includeIf "gitdir:~/Personal/"]
     path = ~/dotfiles/git-identity-personal
 
+# Mac/Linux specifics.
+[includeIf "gitdir:/Users"]
+    path = ~/dotfiles/gitconfig-macos
+[includeIf "gitdir:/home"]
+    path = ~/dotfiles/gitconfig-linux
+
+# Git aliases.
 [include]
     path = ~/dotfiles/git-aliases
 
@@ -179,4 +187,3 @@
 [spice "forge.github"]
     url = https://github.cicd.cloud.fpdev.io
     apiUrl = https://github.cicd.cloud.fpdev.io/api
-

From 6ab36b57b4f7a6f29fdb3346ef7be22c53f139b1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 16:21:43 +0000
Subject: [PATCH 684/973] Rename main Git config.

---
 gitconfig-common => gitconfig | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename gitconfig-common => gitconfig (100%)

diff --git a/gitconfig-common b/gitconfig
similarity index 100%
rename from gitconfig-common
rename to gitconfig

From e5f923b89242e44dd74018c6a4d9b74db24d975f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 17:01:00 +0000
Subject: [PATCH 685/973] Clean up platform Git config files.

---
 gitconfig       | 2 ++
 gitconfig-linux | 4 ----
 gitconfig-macos | 3 ---
 3 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/gitconfig b/gitconfig
index 1b7a0494..cafc2688 100644
--- a/gitconfig
+++ b/gitconfig
@@ -3,6 +3,8 @@
     path = ~/dotfiles/git-identity-work
 [includeIf "gitdir:~/Personal/"]
     path = ~/dotfiles/git-identity-personal
+[includeIf "gitdir:~/.local/share/chezmoi/"]
+    path = ~/dotfiles/git-identity-personal
 
 # Mac/Linux specifics.
 [includeIf "gitdir:/Users"]
diff --git a/gitconfig-linux b/gitconfig-linux
index a0786df2..edc933f1 100644
--- a/gitconfig-linux
+++ b/gitconfig-linux
@@ -1,6 +1,2 @@
-[include]
-	path = dotfiles/gitconfig-common
-
 [credential]
 	helper = cache --timeout=300
-
diff --git a/gitconfig-macos b/gitconfig-macos
index 450fdcf1..07ce385e 100644
--- a/gitconfig-macos
+++ b/gitconfig-macos
@@ -1,8 +1,5 @@
-[include]
-	path = ~/dotfiles/gitconfig-common
 [credential]
 	helper = osxkeychain
-	helper = 
 	helper = /usr/local/share/gcm-core/git-credential-manager
 [safe]
 	directory = "*"

From 0d2efdcb68cef8d13078f9569df1d36f793afe9e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 17:08:04 +0000
Subject: [PATCH 686/973] Disable macos cred helper.

---
 gitconfig-macos | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gitconfig-macos b/gitconfig-macos
index 07ce385e..22050349 100644
--- a/gitconfig-macos
+++ b/gitconfig-macos
@@ -1,10 +1,8 @@
-[credential]
-	helper = osxkeychain
-	helper = /usr/local/share/gcm-core/git-credential-manager
+# [credential]
+# 	helper = osxkeychain
+# 	helper = /usr/local/share/gcm-core/git-credential-manager
 [safe]
 	directory = "*"
 
 [push]
 	default = current
-[credential "https://dev.azure.com"]
-	useHttpPath = true

From b780713220676a48075b1658ee81d67138db0a94 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 16:26:53 +0000
Subject: [PATCH 687/973] Add gitconfig to chezmoi.

---
 chezmoi/dot_gitconfig | 189 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 189 insertions(+)
 create mode 100644 chezmoi/dot_gitconfig

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
new file mode 100644
index 00000000..1b7a0494
--- /dev/null
+++ b/chezmoi/dot_gitconfig
@@ -0,0 +1,189 @@
+# Personal/work Git identity.
+[includeIf "gitdir:~/Work/"]
+    path = ~/dotfiles/git-identity-work
+[includeIf "gitdir:~/Personal/"]
+    path = ~/dotfiles/git-identity-personal
+
+# Mac/Linux specifics.
+[includeIf "gitdir:/Users"]
+    path = ~/dotfiles/gitconfig-macos
+[includeIf "gitdir:/home"]
+    path = ~/dotfiles/gitconfig-linux
+
+# Git aliases.
+[include]
+    path = ~/dotfiles/git-aliases
+
+[push]
+	default = simple
+[branch]
+	# Automatically set up pull to be --rebase
+	autosetuprebase = always
+[branch "master"]
+	rebase = true
+	autosetuprebase = true
+[status]
+	displaycommentprefix = false
+[rebase]
+	stat = true
+
+[pager]
+    diff = false
+    branch = false
+
+[color]
+# ui = true is a superset of all the more specific color options
+#  as documented at http://book.git-scm.com/5_customizing_git.html
+# When set to always, always use colors in all git commands which are capable of colored output.
+# When false, never. When set to true or auto, use colors only when the output is to the terminal.
+# When more specific variables of color.* are set, they always take precedence over this setting.
+# Defaults to false.
+	ui = auto
+	# diff = auto
+	# status = auto
+	# branch = auto
+
+[color "branch"]
+	#current = yellow reverse
+	#local = yellow
+	#remote = green
+[color "diff"]
+	#meta = yellow bold
+	#frag = magenta bold
+	#old = red bold
+	#new = green bold
+[color "status"]
+	#added = yellow
+	#changed = green
+	#untracked = cyan
+
+[gui]
+#	recentrepo = ~/Documents/Temp/Scratch/hello/hgw1
+
+[core]
+	safecrlf = warn
+	deltaBaseCacheLimit = 1G
+	excludesfile = ~/.gitignore
+	quotepath = false
+#	autocrlf = input
+#	editor = vim
+
+[apply]
+	whitespace = nowarn
+[rerere]
+	enabled = true
+
+[diff]
+	algorithm = patience
+#	renames = true
+#	tool = araxis
+#	tool = Kaleidoscope
+	tool = bcomp
+
+# This is for skipping diffing files, that you don't want to add to .gitignore.
+# https://stackoverflow.com/questions/52623898/how-can-i-skip-some-files-while-taking-git-diff
+[diff "nodiff"]
+	command = /bin/true
+
+[difftool]
+	prompt = false
+
+[difftool "myaraxis"]
+	cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE
+
+[difftool "bcomp"]
+    trustExitCode = true
+    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"
+
+[merge]
+#	tool = araxis
+#	tool = Kaleidoscope
+	tool = bcomp
+
+[mergetool]
+	prompt = false
+	keepBackup = false
+
+[mergetool "myaraxis"]
+    cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED
+
+[mergetool "bcomp"]
+    trustExitCode = true
+    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
+
+
+[branch]
+    # Automatically set up pull to be --rebase
+    #autosetuprebase = always
+
+[url "git://github.com/"]
+	insteadOf = "ghg://"
+	pushInsteadOf = "ghg://"
+	# Example: git clone ghg://ntschutta/emacs
+[url "git://github.com/jimlawton/"]
+	insteadOf = "ghgj://"
+	pushInsteadOf = "ghgj://"
+	# Example: git clone ghgj://hellogitworld
+[url "git@github.com:"]
+	insteadOf = "ghs://"
+	pushInsteadOf = "ghs://"
+[url "git@github.com:jimlawton/"]
+	insteadOf = "ghsj://"
+	pushInsteadOf = "ghsj://"
+[url "https://github.com/"]
+	insteadOf = "ghh://"
+	pushInsteadOf = "ghh://"
+[url "https://github.com/jimlawton/"]
+	insteadOf = "ghhj://"
+	pushInsteadOf = "ghhj://"
+
+[mergetool "sourcetree"]
+	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
+	trustExitCode = true
+
+[difftool "p4merge"]
+	cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\"
+[http]
+	# proxy=http://something
+
+[hub]
+	protocol = https
+[gist]
+	private = yes
+	browse = yes
+
+[push]
+	default = matching
+[difftool "Kaleidoscope"]
+	cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
+[mergetool "Kaleidoscope"]
+	cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
+	trustExitCode = true
+[filter "media"]
+	required = true
+	clean = git media clean %f
+	smudge = git media smudge %f
+
+[gh]
+	protocol = https
+
+[github]
+	user = jimlawton
+	#token = PLACEHOLDER
+
+[http]
+	sslVerify = false
+	postBuffer = 524288000
+
+[filter "lfs"]
+	required = true
+	clean = git-lfs clean -- %f
+	smudge = git-lfs smudge -- %f
+	process = git-lfs filter-process
+
+[spice "branchCreate"]
+	commit = false
+
+[spice "forge.github"]
+    url = https://github.cicd.cloud.fpdev.io
+    apiUrl = https://github.cicd.cloud.fpdev.io/api

From e11ff638879891b770af9aa4fae1e13e7a827a4c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 17:04:27 +0000
Subject: [PATCH 688/973] Update chezmoi Git config copy.

---
 chezmoi/dot_gitconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
index 1b7a0494..cafc2688 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig
@@ -3,6 +3,8 @@
     path = ~/dotfiles/git-identity-work
 [includeIf "gitdir:~/Personal/"]
     path = ~/dotfiles/git-identity-personal
+[includeIf "gitdir:~/.local/share/chezmoi/"]
+    path = ~/dotfiles/git-identity-personal
 
 # Mac/Linux specifics.
 [includeIf "gitdir:/Users"]

From 6521e652b5c8259482c060610f42a120365fca67 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 18:49:24 +0000
Subject: [PATCH 689/973] Restore macos cred helper.

---
 gitconfig-macos | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gitconfig-macos b/gitconfig-macos
index 22050349..4c244c14 100644
--- a/gitconfig-macos
+++ b/gitconfig-macos
@@ -1,6 +1,6 @@
-# [credential]
-# 	helper = osxkeychain
-# 	helper = /usr/local/share/gcm-core/git-credential-manager
+[credential]
+	helper = osxkeychain
+	helper = /usr/local/share/gcm-core/git-credential-manager
 [safe]
 	directory = "*"
 

From 6fca48b1eff7f54f7883986fbc36381d0f992ede Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 19:53:33 +0000
Subject: [PATCH 690/973] Move platform includes to top, comment out Linux one,
 it also matches on Mac.

---
 gitconfig | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gitconfig b/gitconfig
index cafc2688..a99016c0 100644
--- a/gitconfig
+++ b/gitconfig
@@ -1,3 +1,10 @@
+# Mac/Linux specifics.
+[includeIf "gitdir:/Users"]
+    path = ~/dotfiles/gitconfig-macos
+# FIXME: this also matches on Mac.
+#[includeIf "gitdir:/home"]
+#    path = ~/dotfiles/gitconfig-linux
+
 # Personal/work Git identity.
 [includeIf "gitdir:~/Work/"]
     path = ~/dotfiles/git-identity-work
@@ -6,12 +13,6 @@
 [includeIf "gitdir:~/.local/share/chezmoi/"]
     path = ~/dotfiles/git-identity-personal
 
-# Mac/Linux specifics.
-[includeIf "gitdir:/Users"]
-    path = ~/dotfiles/gitconfig-macos
-[includeIf "gitdir:/home"]
-    path = ~/dotfiles/gitconfig-linux
-
 # Git aliases.
 [include]
     path = ~/dotfiles/git-aliases

From b7e3c0fb2553f238d9bffcefc2fc3afba1dc6bc0 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 19:53:49 +0000
Subject: [PATCH 691/973] Git config cleanup.

---
 gitconfig | 147 ++++++++++++++++++------------------------------------
 1 file changed, 49 insertions(+), 98 deletions(-)

diff --git a/gitconfig b/gitconfig
index a99016c0..dadb4e9d 100644
--- a/gitconfig
+++ b/gitconfig
@@ -17,30 +17,24 @@
 [include]
     path = ~/dotfiles/git-aliases
 
-[push]
-	default = simple
+[apply]
+	whitespace = nowarn
+
 [branch]
 	# Automatically set up pull to be --rebase
 	autosetuprebase = always
+
 [branch "master"]
 	rebase = true
 	autosetuprebase = true
-[status]
-	displaycommentprefix = false
-[rebase]
-	stat = true
-
-[pager]
-    diff = false
-    branch = false
 
 [color]
-# ui = true is a superset of all the more specific color options
-#  as documented at http://book.git-scm.com/5_customizing_git.html
-# When set to always, always use colors in all git commands which are capable of colored output.
-# When false, never. When set to true or auto, use colors only when the output is to the terminal.
-# When more specific variables of color.* are set, they always take precedence over this setting.
-# Defaults to false.
+    # ui = true is a superset of all the more specific color options
+    #  as documented at http://book.git-scm.com/5_customizing_git.html
+    # When set to always, always use colors in all git commands which are capable of colored output.
+    # When false, never. When set to true or auto, use colors only when the output is to the terminal.
+    # When more specific variables of color.* are set, they always take precedence over this setting.
+    # Defaults to false.
 	ui = auto
 	# diff = auto
 	# status = auto
@@ -60,9 +54,6 @@
 	#changed = green
 	#untracked = cyan
 
-[gui]
-#	recentrepo = ~/Documents/Temp/Scratch/hello/hgw1
-
 [core]
 	safecrlf = warn
 	deltaBaseCacheLimit = 1G
@@ -71,16 +62,8 @@
 #	autocrlf = input
 #	editor = vim
 
-[apply]
-	whitespace = nowarn
-[rerere]
-	enabled = true
-
 [diff]
 	algorithm = patience
-#	renames = true
-#	tool = araxis
-#	tool = Kaleidoscope
 	tool = bcomp
 
 # This is for skipping diffing files, that you don't want to add to .gitignore.
@@ -91,77 +74,16 @@
 [difftool]
 	prompt = false
 
-[difftool "myaraxis"]
-	cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE
-
 [difftool "bcomp"]
     trustExitCode = true
     cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"
 
-[merge]
-#	tool = araxis
-#	tool = Kaleidoscope
-	tool = bcomp
-
-[mergetool]
-	prompt = false
-	keepBackup = false
-
-[mergetool "myaraxis"]
-    cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED
-
-[mergetool "bcomp"]
-    trustExitCode = true
-    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
-
-
-[branch]
-    # Automatically set up pull to be --rebase
-    #autosetuprebase = always
-
-[url "git://github.com/"]
-	insteadOf = "ghg://"
-	pushInsteadOf = "ghg://"
-	# Example: git clone ghg://ntschutta/emacs
-[url "git://github.com/jimlawton/"]
-	insteadOf = "ghgj://"
-	pushInsteadOf = "ghgj://"
-	# Example: git clone ghgj://hellogitworld
-[url "git@github.com:"]
-	insteadOf = "ghs://"
-	pushInsteadOf = "ghs://"
-[url "git@github.com:jimlawton/"]
-	insteadOf = "ghsj://"
-	pushInsteadOf = "ghsj://"
-[url "https://github.com/"]
-	insteadOf = "ghh://"
-	pushInsteadOf = "ghh://"
-[url "https://github.com/jimlawton/"]
-	insteadOf = "ghhj://"
-	pushInsteadOf = "ghhj://"
-
-[mergetool "sourcetree"]
-	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
-	trustExitCode = true
-
-[difftool "p4merge"]
-	cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\"
-[http]
-	# proxy=http://something
-
-[hub]
-	protocol = https
-[gist]
-	private = yes
-	browse = yes
+[filter "lfs"]
+	required = true
+	clean = git-lfs clean -- %f
+	smudge = git-lfs smudge -- %f
+	process = git-lfs filter-process
 
-[push]
-	default = matching
-[difftool "Kaleidoscope"]
-	cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
-[mergetool "Kaleidoscope"]
-	cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
-	trustExitCode = true
 [filter "media"]
 	required = true
 	clean = git media clean %f
@@ -170,6 +92,10 @@
 [gh]
 	protocol = https
 
+[gist]
+	private = yes
+	browse = yes
+
 [github]
 	user = jimlawton
 	#token = PLACEHOLDER
@@ -178,11 +104,36 @@
 	sslVerify = false
 	postBuffer = 524288000
 
-[filter "lfs"]
-	required = true
-	clean = git-lfs clean -- %f
-	smudge = git-lfs smudge -- %f
-	process = git-lfs filter-process
+[hub]
+    protocol = https
+
+[merge]
+	tool = bcomp
+
+[mergetool]
+	prompt = false
+	keepBackup = false
+
+[mergetool "bcomp"]
+    trustExitCode = true
+    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
+
+[pager]
+    diff = false
+    branch = false
+
+[push]
+	# default = simple
+    default = matching
+
+[rebase]
+	stat = true
+
+[rerere]
+	enabled = true
+
+[status]
+	displaycommentprefix = false
 
 [spice "branchCreate"]
 	commit = false

From 7ee537f1c48eeabd6fd2be1e9b5732c885dd6fb4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 20:03:42 +0000
Subject: [PATCH 692/973] Update chezmoi git config.

---
 chezmoi/dot_gitconfig | 160 +++++++++++++++---------------------------
 1 file changed, 56 insertions(+), 104 deletions(-)

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
index cafc2688..dadb4e9d 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig
@@ -1,3 +1,10 @@
+# Mac/Linux specifics.
+[includeIf "gitdir:/Users"]
+    path = ~/dotfiles/gitconfig-macos
+# FIXME: this also matches on Mac.
+#[includeIf "gitdir:/home"]
+#    path = ~/dotfiles/gitconfig-linux
+
 # Personal/work Git identity.
 [includeIf "gitdir:~/Work/"]
     path = ~/dotfiles/git-identity-work
@@ -6,40 +13,28 @@
 [includeIf "gitdir:~/.local/share/chezmoi/"]
     path = ~/dotfiles/git-identity-personal
 
-# Mac/Linux specifics.
-[includeIf "gitdir:/Users"]
-    path = ~/dotfiles/gitconfig-macos
-[includeIf "gitdir:/home"]
-    path = ~/dotfiles/gitconfig-linux
-
 # Git aliases.
 [include]
     path = ~/dotfiles/git-aliases
 
-[push]
-	default = simple
+[apply]
+	whitespace = nowarn
+
 [branch]
 	# Automatically set up pull to be --rebase
 	autosetuprebase = always
+
 [branch "master"]
 	rebase = true
 	autosetuprebase = true
-[status]
-	displaycommentprefix = false
-[rebase]
-	stat = true
-
-[pager]
-    diff = false
-    branch = false
 
 [color]
-# ui = true is a superset of all the more specific color options
-#  as documented at http://book.git-scm.com/5_customizing_git.html
-# When set to always, always use colors in all git commands which are capable of colored output.
-# When false, never. When set to true or auto, use colors only when the output is to the terminal.
-# When more specific variables of color.* are set, they always take precedence over this setting.
-# Defaults to false.
+    # ui = true is a superset of all the more specific color options
+    #  as documented at http://book.git-scm.com/5_customizing_git.html
+    # When set to always, always use colors in all git commands which are capable of colored output.
+    # When false, never. When set to true or auto, use colors only when the output is to the terminal.
+    # When more specific variables of color.* are set, they always take precedence over this setting.
+    # Defaults to false.
 	ui = auto
 	# diff = auto
 	# status = auto
@@ -59,9 +54,6 @@
 	#changed = green
 	#untracked = cyan
 
-[gui]
-#	recentrepo = ~/Documents/Temp/Scratch/hello/hgw1
-
 [core]
 	safecrlf = warn
 	deltaBaseCacheLimit = 1G
@@ -70,16 +62,8 @@
 #	autocrlf = input
 #	editor = vim
 
-[apply]
-	whitespace = nowarn
-[rerere]
-	enabled = true
-
 [diff]
 	algorithm = patience
-#	renames = true
-#	tool = araxis
-#	tool = Kaleidoscope
 	tool = bcomp
 
 # This is for skipping diffing files, that you don't want to add to .gitignore.
@@ -90,77 +74,16 @@
 [difftool]
 	prompt = false
 
-[difftool "myaraxis"]
-	cmd = araxisgitdiff ONE $LOCAL THREE FOUR $REMOTE
-
 [difftool "bcomp"]
     trustExitCode = true
     cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"
 
-[merge]
-#	tool = araxis
-#	tool = Kaleidoscope
-	tool = bcomp
-
-[mergetool]
-	prompt = false
-	keepBackup = false
-
-[mergetool "myaraxis"]
-    cmd = araxisgitmerge $PWD/$REMOTE $PWD/$BASE $PWD/$LOCAL $PWD/$MERGED
-
-[mergetool "bcomp"]
-    trustExitCode = true
-    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
-
-
-[branch]
-    # Automatically set up pull to be --rebase
-    #autosetuprebase = always
-
-[url "git://github.com/"]
-	insteadOf = "ghg://"
-	pushInsteadOf = "ghg://"
-	# Example: git clone ghg://ntschutta/emacs
-[url "git://github.com/jimlawton/"]
-	insteadOf = "ghgj://"
-	pushInsteadOf = "ghgj://"
-	# Example: git clone ghgj://hellogitworld
-[url "git@github.com:"]
-	insteadOf = "ghs://"
-	pushInsteadOf = "ghs://"
-[url "git@github.com:jimlawton/"]
-	insteadOf = "ghsj://"
-	pushInsteadOf = "ghsj://"
-[url "https://github.com/"]
-	insteadOf = "ghh://"
-	pushInsteadOf = "ghh://"
-[url "https://github.com/jimlawton/"]
-	insteadOf = "ghhj://"
-	pushInsteadOf = "ghhj://"
-
-[mergetool "sourcetree"]
-	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
-	trustExitCode = true
-
-[difftool "p4merge"]
-	cmd = \"/Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTE\"
-[http]
-	# proxy=http://something
-
-[hub]
-	protocol = https
-[gist]
-	private = yes
-	browse = yes
+[filter "lfs"]
+	required = true
+	clean = git-lfs clean -- %f
+	smudge = git-lfs smudge -- %f
+	process = git-lfs filter-process
 
-[push]
-	default = matching
-[difftool "Kaleidoscope"]
-	cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
-[mergetool "Kaleidoscope"]
-	cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
-	trustExitCode = true
 [filter "media"]
 	required = true
 	clean = git media clean %f
@@ -169,6 +92,10 @@
 [gh]
 	protocol = https
 
+[gist]
+	private = yes
+	browse = yes
+
 [github]
 	user = jimlawton
 	#token = PLACEHOLDER
@@ -177,11 +104,36 @@
 	sslVerify = false
 	postBuffer = 524288000
 
-[filter "lfs"]
-	required = true
-	clean = git-lfs clean -- %f
-	smudge = git-lfs smudge -- %f
-	process = git-lfs filter-process
+[hub]
+    protocol = https
+
+[merge]
+	tool = bcomp
+
+[mergetool]
+	prompt = false
+	keepBackup = false
+
+[mergetool "bcomp"]
+    trustExitCode = true
+    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
+
+[pager]
+    diff = false
+    branch = false
+
+[push]
+	# default = simple
+    default = matching
+
+[rebase]
+	stat = true
+
+[rerere]
+	enabled = true
+
+[status]
+	displaycommentprefix = false
 
 [spice "branchCreate"]
 	commit = false

From 8bb55517c2cf01ce49c33fb947a746092cd1f797 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 20:05:35 +0000
Subject: [PATCH 693/973] Remove now obsolete copy of gitconfig.

---
 gitconfig | 143 ------------------------------------------------------
 1 file changed, 143 deletions(-)
 delete mode 100644 gitconfig

diff --git a/gitconfig b/gitconfig
deleted file mode 100644
index dadb4e9d..00000000
--- a/gitconfig
+++ /dev/null
@@ -1,143 +0,0 @@
-# Mac/Linux specifics.
-[includeIf "gitdir:/Users"]
-    path = ~/dotfiles/gitconfig-macos
-# FIXME: this also matches on Mac.
-#[includeIf "gitdir:/home"]
-#    path = ~/dotfiles/gitconfig-linux
-
-# Personal/work Git identity.
-[includeIf "gitdir:~/Work/"]
-    path = ~/dotfiles/git-identity-work
-[includeIf "gitdir:~/Personal/"]
-    path = ~/dotfiles/git-identity-personal
-[includeIf "gitdir:~/.local/share/chezmoi/"]
-    path = ~/dotfiles/git-identity-personal
-
-# Git aliases.
-[include]
-    path = ~/dotfiles/git-aliases
-
-[apply]
-	whitespace = nowarn
-
-[branch]
-	# Automatically set up pull to be --rebase
-	autosetuprebase = always
-
-[branch "master"]
-	rebase = true
-	autosetuprebase = true
-
-[color]
-    # ui = true is a superset of all the more specific color options
-    #  as documented at http://book.git-scm.com/5_customizing_git.html
-    # When set to always, always use colors in all git commands which are capable of colored output.
-    # When false, never. When set to true or auto, use colors only when the output is to the terminal.
-    # When more specific variables of color.* are set, they always take precedence over this setting.
-    # Defaults to false.
-	ui = auto
-	# diff = auto
-	# status = auto
-	# branch = auto
-
-[color "branch"]
-	#current = yellow reverse
-	#local = yellow
-	#remote = green
-[color "diff"]
-	#meta = yellow bold
-	#frag = magenta bold
-	#old = red bold
-	#new = green bold
-[color "status"]
-	#added = yellow
-	#changed = green
-	#untracked = cyan
-
-[core]
-	safecrlf = warn
-	deltaBaseCacheLimit = 1G
-	excludesfile = ~/.gitignore
-	quotepath = false
-#	autocrlf = input
-#	editor = vim
-
-[diff]
-	algorithm = patience
-	tool = bcomp
-
-# This is for skipping diffing files, that you don't want to add to .gitignore.
-# https://stackoverflow.com/questions/52623898/how-can-i-skip-some-files-while-taking-git-diff
-[diff "nodiff"]
-	command = /bin/true
-
-[difftool]
-	prompt = false
-
-[difftool "bcomp"]
-    trustExitCode = true
-    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE"
-
-[filter "lfs"]
-	required = true
-	clean = git-lfs clean -- %f
-	smudge = git-lfs smudge -- %f
-	process = git-lfs filter-process
-
-[filter "media"]
-	required = true
-	clean = git media clean %f
-	smudge = git media smudge %f
-
-[gh]
-	protocol = https
-
-[gist]
-	private = yes
-	browse = yes
-
-[github]
-	user = jimlawton
-	#token = PLACEHOLDER
-
-[http]
-	sslVerify = false
-	postBuffer = 524288000
-
-[hub]
-    protocol = https
-
-[merge]
-	tool = bcomp
-
-[mergetool]
-	prompt = false
-	keepBackup = false
-
-[mergetool "bcomp"]
-    trustExitCode = true
-    cmd = "/usr/local/bin/bcomp" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
-
-[pager]
-    diff = false
-    branch = false
-
-[push]
-	# default = simple
-    default = matching
-
-[rebase]
-	stat = true
-
-[rerere]
-	enabled = true
-
-[status]
-	displaycommentprefix = false
-
-[spice "branchCreate"]
-	commit = false
-
-[spice "forge.github"]
-    url = https://github.cicd.cloud.fpdev.io
-    apiUrl = https://github.cicd.cloud.fpdev.io/api

From 531c4920077b77ad861eb6d236a11d7341003934 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 20:18:01 +0000
Subject: [PATCH 694/973] Move some files back out of chezmoi.

---
 chezmoi/dot_shellactivities => shellactivities | 0
 chezmoi/dot_shellaliases => shellaliases       | 0
 chezmoi/dot_shellpaths => shellpaths           | 0
 chezmoi/dot_shellvars => shellvars-personal    | 0
 4 files changed, 0 insertions(+), 0 deletions(-)
 rename chezmoi/dot_shellactivities => shellactivities (100%)
 rename chezmoi/dot_shellaliases => shellaliases (100%)
 rename chezmoi/dot_shellpaths => shellpaths (100%)
 rename chezmoi/dot_shellvars => shellvars-personal (100%)

diff --git a/chezmoi/dot_shellactivities b/shellactivities
similarity index 100%
rename from chezmoi/dot_shellactivities
rename to shellactivities
diff --git a/chezmoi/dot_shellaliases b/shellaliases
similarity index 100%
rename from chezmoi/dot_shellaliases
rename to shellaliases
diff --git a/chezmoi/dot_shellpaths b/shellpaths
similarity index 100%
rename from chezmoi/dot_shellpaths
rename to shellpaths
diff --git a/chezmoi/dot_shellvars b/shellvars-personal
similarity index 100%
rename from chezmoi/dot_shellvars
rename to shellvars-personal

From 37d538caa778ae757a7a1c49006a460de93e2c7a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 20:18:17 +0000
Subject: [PATCH 695/973] Remove old files.

---
 .Rhistory | 0
 zlogout   | 1 -
 2 files changed, 1 deletion(-)
 delete mode 100644 .Rhistory
 delete mode 100644 zlogout

diff --git a/.Rhistory b/.Rhistory
deleted file mode 100644
index e69de29b..00000000
diff --git a/zlogout b/zlogout
deleted file mode 100644
index 8b137891..00000000
--- a/zlogout
+++ /dev/null
@@ -1 +0,0 @@
-

From 028c0f5b4285e515e26bd562a2c31ccec6638e5c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 29 Oct 2025 20:27:22 +0000
Subject: [PATCH 696/973] Update dotfiles setup script, remove bits now managed
 by chezmoi.

---
 _setupdotfiles.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index 8e6b41e9..6df25600 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
 
 DOTFILESDIR=~/dotfiles
-DOTFILES=".Brewfile .colordiffrc .colorgccrc .gitconfig .gitignore .hammerspoon .inputrc .iterm2_shell_integration.zsh .p10k.zsh .pythonrc .shellactivities .shellaliases .shellpaths .shellvars .terraformrc .tmux.conf .vimrc .xxdiffrc .zlogout .zprofile .zshenv .zshrc"
-DOTDIRS=".vim"
+DOTFILES=".iterm2_shell_integration.zsh"
+DOTDIRS=".hammerspoon"
 DROPFILES="persistent_history"
 DROPDIRS="bin .pip"
 SAVEDIR=~/.old/_setupdotfiles

From dcf37b099caa65cf1cc2d1cae589d1ee9ddf0817 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 14:57:21 +0000
Subject: [PATCH 697/973] Add identity definitions.

---
 chezmoi/.chezmoidata/identity.yaml | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 chezmoi/.chezmoidata/identity.yaml

diff --git a/chezmoi/.chezmoidata/identity.yaml b/chezmoi/.chezmoidata/identity.yaml
new file mode 100644
index 00000000..a48293fa
--- /dev/null
+++ b/chezmoi/.chezmoidata/identity.yaml
@@ -0,0 +1,5 @@
+git:
+    work_name: Jim Lawton
+    work_email: james.lawton@forcepoint.com
+    personal_name: Jim Lawton
+    personal_email: jimlawton@gmail.com

From 6bce3f411969ff111237e88780b72c53826e8e90 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 14:57:53 +0000
Subject: [PATCH 698/973] Add Brew package definitions.

---
 chezmoi/.chezmoidata/packages.yaml | 285 +++++++++++++++++++++++++++++
 1 file changed, 285 insertions(+)
 create mode 100644 chezmoi/.chezmoidata/packages.yaml

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
new file mode 100644
index 00000000..51184867
--- /dev/null
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -0,0 +1,285 @@
+packages:
+  darwin:
+    brews:
+      - "a2ps"
+      - "adr-tools"
+      - "asciidoc"
+      - "asciinema"
+      - "atuin"
+      - "autojump"
+      - "awk"
+      - "aws-shell"
+      - "awscli"
+      - "bandwhich"
+      - "base64"
+      - "bat"
+      - "bitwarden-cli"
+      - "black"
+      - "brew-cask-completion"
+      - "buf"
+      - "bzip2"
+      - "cargo-binstall"
+      - "cargo-llvm-cov"
+      - "checkov"
+      - "chezmoi"
+      - "clang-format"
+      - "cloc"
+      - "cloudman"
+      - "cmake"
+      - "coreutils"
+      - "curl"
+      - "d2"
+      - "dateutils"
+      - "delve"
+      - "difftastic"
+      - "diffutils"
+      - "dive"
+      - "docker"
+      - "docker-completion"
+      - "docker-compose"
+      - "docker-credential-helper"
+      - "docker-credential-helper-ecr"
+      - "docutils"
+      - "dos2unix"
+      - "dotter"
+      - "doxygen"
+      - "fac"
+      - "fd"
+      - "ffmpeg"
+      - "figlet"
+      - "fish"
+      - "flake8"
+      - "freetype"
+      - "fribidi"
+      - "fzf"
+      - "gcc"
+      - "get_iplayer"
+      - "gettext"
+      - "gh"
+      - "giflib"
+      - "gimme-aws-creds"
+      - "gist"
+      - "git"
+      - "git-delta"
+      - "git-extras"
+      - "git-filter-repo"
+      - "git-quick-stats"
+      - "git-spice"
+      - "git-who"
+      - "gitleaks"
+      - "glow"
+      - "gnu-indent"
+      - "gnu-sed"
+      - "gnu-tar"
+      - "gnu-time"
+      - "gnupg"
+      - "gnutls"
+      - "go"
+      - "gobject-introspection"
+      - "goenv"
+      - "golangci-lint"
+      - "gopls"
+      - "granted"
+      - "graphviz"
+      - "grep"
+      - "grpcurl"
+      - "gtk+3"
+      - "gts"
+      - "hadolint"
+      - "harfbuzz"
+      - "htop"
+      - "httpie"
+      - "hub"
+      - "ical-buddy"
+      - "id3lib"
+      - "id3v2"
+      - "infracost"
+      - "iproute2mac"
+      - "ipython"
+      - "isort"
+      - "jfrog-cli"
+      - "jira-cli"
+      - "jj"
+      - "jless"
+      - "jq"
+      - "jsonlint"
+      - "jsonnet"
+      - "jupyterlab"
+      - "leptonica"
+      - "lftp"
+      - "libcaca"
+      - "libffi"
+      - "libgcrypt"
+      - "libidn2"
+      - "libksba"
+      - "libressl"
+      - "librsvg"
+      - "libssh2"
+      - "libtiff"
+      - "libusb"
+      - "libusb-compat"
+      - "llvm"
+      - "make"
+      - "markdownlint-cli"
+      - "mas"
+      - "md5sha1sum"
+      - "mdbook"
+      - "micro"
+      - "microsocks"
+      - "minicom"
+      - "mmark"
+      - "mplayer"
+      - "mtr"
+      - "mypy"
+      - "ncftp"
+      - "neovim"
+      - "netpbm"
+      - "node"
+      - "nushell"
+      - "ocrad"
+      - "okta-aws-cli"
+      - "oniguruma"
+      - "openconnect"
+      - "openjdk"
+      - "openjdk@11"
+      - "openssl@3"
+      - "ossp-uuid"
+      - "osv-scanner"
+      - "p11-kit"
+      - "p7zip"
+      - "packer-completion"
+      - "pandoc"
+      - "parallel"
+      - "patchutils"
+      - "peco"
+      - "percol"
+      - "pinentry"
+      - "pip-completion"
+      - "pipenv"
+      - "pipx"
+      - "pkgconf"
+      - "plantuml"
+      - "pre-commit"
+      - "progress"
+      - "protobuf"
+      - "protobuf-c"
+      - "protoc-gen-go"
+      - "protoc-gen-go-grpc"
+      - "pth"
+      - "pulseaudio"
+      - "pulumi"
+      - "pycodestyle"
+      - "pyenv"
+      - "pyenv-virtualenv"
+      - "pyenv-virtualenvwrapper"
+      - "pygments"
+      - "python-packaging"
+      - "qemu"
+      - "qt"
+      - "rake-completion"
+      - "rbenv"
+      - "rbw"
+      - "rclone"
+      - "readline"
+      - "repo"
+      - "ripgrep"
+      - "rlwrap"
+      - "robot-framework"
+      - "rtmpdump"
+      - "ruff"
+      - "rustup"
+      - "scc"
+      - "sccache"
+      - "sdl2"
+      - "semgrep"
+      - "shellcheck"
+      - "skate"
+      - "socat"
+      - "sonar-scanner"
+      - "sphinx-doc"
+      - "ssh-copy-id"
+      - "sshuttle"
+      - "starship"
+      - "staticcheck"
+      - "telnet"
+      - "terminal-notifier"
+      - "terrafile"
+      - "terraform-docs"
+      - "tesseract"
+      - "tfenv"
+      - "tflint"
+      - "tfsec"
+      - "tig"
+      - "tldr"
+      - "todo-txt"
+      - "todoist"
+      - "tokei"
+      - "tree"
+      - "unbound"
+      - "uv"
+      - "vim"
+      - "wget"
+      - "x265"
+      - "x86_64-unknown-linux-gnu"
+      - "xpdf"
+      - "xvid"
+      - "xz"
+      - "yaegi"
+      - "yamlfmt"
+      - "yamllint"
+      - "yt-dlp"
+      - "zeromq"
+      - "zig"
+      - "zlib"
+      - "zoxide"
+      - "zsh"
+
+    casks:
+      - "alt-tab"
+      - "aws-vault"
+      - "aws-vault-binary"
+      - "bartender"
+      - "beardedspice"
+      - "bitwarden"
+      - "doll"
+      - "drawio"
+      - "firefox"
+      - "font-anonymice-powerline"
+      - "font-consolas-for-powerline"
+      - "font-dejavu-sans-mono-for-powerline"
+      - "font-droid-sans-mono-for-powerline"
+      - "font-fira-code-nerd-font"
+      - "font-fira-mono-for-powerline"
+      - "font-inconsolata-dz-for-powerline"
+      - "font-inconsolata-for-powerline"
+      - "font-inconsolata-for-powerline-bold"
+      - "font-inconsolata-g-for-powerline"
+      - "font-juliamono"
+      - "font-liberation-mono-for-powerline"
+      - "font-menlo-for-powerline"
+      - "font-meslo-for-powerline"
+      - "font-monofur-for-powerline"
+      - "font-noto-mono-for-powerline"
+      - "font-powerline-symbols"
+      - "font-roboto-mono-for-powerline"
+      - "font-sf-mono-for-powerline"
+      - "font-source-code-pro-for-powerline"
+      - "font-ubuntu-mono-derivative-powerline"
+      - "funter"
+      - "ghostty"
+      - "git-credential-manager"
+      - "hammerspoon"
+      - "iterm2"
+      - "karabiner-elements"
+      - "maccy"
+      - "meetingbar"
+      - "mitmproxy"
+      - "monitorcontrol"
+      - "notunes"
+      - "obsidian"
+      - "rectangle"
+      - "temurin"
+      - "visual-studio-code"
+      - "vlc"
+      - "yt-music"
+      - "zed"

From 2d779dada51d248ee80cb5d43d90b42ed0556d4d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 15:03:51 +0000
Subject: [PATCH 699/973] Update packages.

---
 chezmoi/.chezmoidata/packages.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 51184867..a8ca02d1 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -48,7 +48,6 @@ packages:
       - "ffmpeg"
       - "figlet"
       - "fish"
-      - "flake8"
       - "freetype"
       - "fribidi"
       - "fzf"
@@ -127,6 +126,7 @@ packages:
       - "micro"
       - "microsocks"
       - "minicom"
+      - "mise"
       - "mmark"
       - "mplayer"
       - "mtr"

From 44bc10a2fe9ff8a625b88fc8950e70bd37f165e5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 15:04:20 +0000
Subject: [PATCH 700/973] Add chezmoi template to run brew install.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 chezmoi/run_onchange_darwin-install-packages.sh.tmpl

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
new file mode 100644
index 00000000..c64718b4
--- /dev/null
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -0,0 +1,12 @@
+{{ if eq .chezmoi.os "darwin" -}}
+#!/bin/bash
+
+brew bundle --file=/dev/stdin <
Date: Thu, 30 Oct 2025 15:15:36 +0000
Subject: [PATCH 701/973] Remove aws-vault casks.

---
 chezmoi/.chezmoidata/packages.yaml | 2 --
 1 file changed, 2 deletions(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index a8ca02d1..816244d7 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -236,8 +236,6 @@ packages:
 
     casks:
       - "alt-tab"
-      - "aws-vault"
-      - "aws-vault-binary"
       - "bartender"
       - "beardedspice"
       - "bitwarden"

From 13df45cb3b3e6854775fd194d8f1840fd46202d1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 15:17:48 +0000
Subject: [PATCH 702/973] Remove casks and bres, now in package data.

---
 chezmoi/dot_Brewfile | 291 -------------------------------------------
 1 file changed, 291 deletions(-)

diff --git a/chezmoi/dot_Brewfile b/chezmoi/dot_Brewfile
index 4712281c..54f9d7e5 100644
--- a/chezmoi/dot_Brewfile
+++ b/chezmoi/dot_Brewfile
@@ -18,297 +18,6 @@ tap "romkatv/powerlevel10k"
 tap "sachaos/todoist"
 tap "taiki-e/tap"
 tap "terrastruct/d2"
-brew "a2ps"
-brew "adr-tools"
-brew "openssl@3"
-brew "readline"
-brew "xz"
-brew "ansible@9"
-brew "giflib"
-brew "libtiff"
-brew "apr"
-brew "apr-util"
-brew "boost"
-brew "asciidoc"
-brew "asciinema"
-brew "gettext"
-brew "atomicparsley"
-brew "atuin"
-brew "autojump"
-brew "awk"
-brew "node"
-brew "aws-cdk"
-brew "aws-shell"
-brew "awscli"
-brew "bandwhich"
-brew "base64"
-brew "bash"
-brew "bash-completion"
-brew "libssh2"
-brew "oniguruma"
-brew "bat"
-brew "freetype"
-brew "cairo"
-brew "harfbuzz"
-brew "bazel"
-brew "bit-git"
-brew "bitwarden-cli"
-brew "black"
-brew "brew-cask-completion"
-brew "bzip2"
-brew "cargo-binstall"
-brew "gcc"
-brew "checkov"
-brew "chezmoi"
-brew "clang-format"
-brew "cloc"
-brew "cmake"
-brew "consul-template"
-brew "coreutils"
-brew "rtmpdump"
-brew "curl"
-brew "d2"
-brew "dateutils"
-brew "delve"
-brew "difftastic"
-brew "diffutils"
-brew "dive"
-brew "docker-completion"
-brew "docker-credential-helper"
-brew "docker-credential-helper-ecr"
-brew "docutils"
-brew "dos2unix"
-brew "doxygen"
-brew "fd"
-brew "fribidi"
-brew "libidn2"
-brew "p11-kit"
-brew "unbound"
-brew "gnutls"
-brew "leptonica"
-brew "sdl2"
-brew "tesseract"
-brew "x265"
-brew "xvid"
-brew "zeromq"
-brew "ffmpeg"
-brew "figlet"
-brew "fish"
-brew "flake8"
-brew "fzf"
-brew "get_iplayer"
-brew "gh"
-brew "gimme-aws-creds"
-brew "gist"
-brew "git"
-brew "git-delta"
-brew "git-extras"
-brew "git-filter-repo"
-brew "git-quick-stats"
-brew "git-who"
-brew "gitleaks"
-brew "glow"
-brew "gnu-indent"
-brew "gnu-sed"
-brew "gnu-tar"
-brew "gnu-time"
-brew "libgcrypt"
-brew "libksba"
-brew "libusb"
-brew "pinentry"
-brew "gnupg"
-brew "go"
-brew "pkgconf"
-brew "gobject-introspection"
-brew "goenv"
-brew "golangci-lint"
-brew "gopls"
-brew "netpbm"
-brew "gts"
-brew "librsvg"
-brew "graphviz"
-brew "grep"
-brew "grpcurl"
-brew "grunt-completion"
-brew "gtk+3"
-brew "hadolint"
-brew "htop"
-brew "httpie"
-brew "hub"
-brew "ical-buddy"
-brew "id3lib"
-brew "id3v2"
-brew "infracost"
-brew "iproute2mac"
-brew "ipython"
-brew "isort"
-brew "jfrog-cli"
-brew "jj"
-brew "jless"
-brew "jq"
-brew "jsonlint"
-brew "jsonnet"
-brew "pandoc"
-brew "jupyterlab"
-brew "lastpass-cli"
-brew "lftp"
-brew "libcaca"
-brew "libffi"
-brew "libressl"
-brew "libusb-compat"
-brew "llvm"
-brew "make"
-brew "markdownlint-cli"
-brew "mas"
-brew "md5sha1sum"
-brew "mdbook"
-brew "micro"
-brew "microsocks"
-brew "mmark"
-brew "mplayer"
-brew "mtr"
-brew "mypy"
-brew "ncftp"
-brew "neovim"
-brew "nushell"
-brew "ocrad"
-brew "okta-aws-cli"
-brew "openconnect"
-brew "openjdk"
-brew "openjdk@11"
-brew "ossp-uuid"
-brew "osv-scanner"
-brew "p7zip"
-brew "packer-completion"
-brew "parallel"
-brew "patchutils"
-brew "peco"
-brew "percol"
-brew "pip-completion"
-brew "pipenv"
-brew "pipx"
-brew "plantuml"
-brew "pre-commit"
-brew "progress"
-brew "protobuf"
-brew "protobuf-c"
-brew "protoc-gen-go"
-brew "protoc-gen-go-grpc"
-brew "pth"
-brew "pulseaudio"
-brew "pulumi"
-brew "pycodestyle"
-brew "pyenv"
-brew "pyenv-virtualenv"
-brew "pyenv-virtualenvwrapper"
-brew "pygments"
-brew "python-packaging"
-brew "qemu"
-brew "qt"
-brew "rake-completion"
-brew "rbenv"
-brew "rclone"
-brew "repo"
-brew "ripgrep"
-brew "rlwrap"
-brew "robot-framework"
-brew "ruff"
-brew "rustup"
-brew "scc"
-brew "sccache"
-brew "semgrep"
-brew "shellcheck"
-brew "socat"
-brew "sonar-scanner"
-brew "sphinx-doc"
-brew "ssh-copy-id", link: true
-brew "sshuttle"
-brew "starship"
-brew "staticcheck"
-brew "subversion"
-brew "telnet"
-brew "terminal-notifier"
-brew "terraform-docs"
-brew "tfenv"
-brew "tflint"
-brew "tfsec"
-brew "tig"
-brew "tldr"
-brew "todo-txt"
-brew "tokei"
-brew "tree"
-brew "uv"
-brew "vim"
-brew "wget"
-brew "xpdf"
-brew "yaegi"
-brew "yamlfmt"
-brew "yamllint"
-brew "yt-dlp"
-brew "zig"
-brew "zlib"
-brew "zoxide"
-brew "zsh"
-brew "abhinav/tap/git-spice"
-brew "ankitpokhrel/jira-cli/jira-cli"
-brew "bufbuild/buf/buf"
-brew "charmbracelet/tap/skate"
-brew "common-fate/granted/granted"
-brew "coretech/terrafile/terrafile"
-brew "dutchcoders/cloudman/cloudman"
-brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu"
-brew "mkchoi212/fac/fac"
-brew "sachaos/todoist/todoist"
-brew "taiki-e/tap/cargo-llvm-cov"
-cask "alt-tab"
-cask "aws-vault-binary"
-cask "bartender"
-cask "beardedspice"
-cask "bitwarden"
-cask "doll"
-cask "drawio"
-cask "firefox"
-cask "font-anonymice-powerline"
-cask "font-consolas-for-powerline"
-cask "font-dejavu-sans-mono-for-powerline"
-cask "font-droid-sans-mono-for-powerline"
-cask "font-fira-mono-for-powerline"
-cask "font-inconsolata-dz-for-powerline"
-cask "font-inconsolata-for-powerline"
-cask "font-inconsolata-for-powerline-bold"
-cask "font-inconsolata-g-for-powerline"
-cask "font-juliamono"
-cask "font-liberation-mono-for-powerline"
-cask "font-menlo-for-powerline"
-cask "font-meslo-for-powerline"
-cask "font-monofur-for-powerline"
-cask "font-noto-mono-for-powerline"
-cask "font-powerline-symbols"
-cask "font-roboto-mono-for-powerline"
-cask "font-sf-mono-for-powerline"
-cask "font-source-code-pro-for-powerline"
-cask "font-ubuntu-mono-derivative-powerline"
-cask "funter"
-cask "ghostty"
-cask "git-credential-manager"
-cask "hammerspoon"
-cask "jupyter-notebook-ql"
-cask "karabiner-elements"
-cask "maccy"
-cask "meetingbar"
-cask "mitmproxy"
-cask "monitorcontrol"
-cask "notunes"
-cask "obsidian"
-cask "rectangle"
-cask "sublime-merge@dev"
-cask "sublime-text@dev"
-cask "temurin"
-cask "visual-studio-code"
-cask "vlc"
-cask "xquartz"
-cask "yt-music"
-cask "zed"
 mas "Battery Monitor", id: 836505650
 mas "Bitwarden", id: 1352778147
 mas "Elisi", id: 1406239881

From 792dea5cb944b97dd954b9c94be9bf9f49b23859 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 15:18:30 +0000
Subject: [PATCH 703/973] Removed Brewfile from chezmoi.

---
 chezmoi/dot_Brewfile => Brewfile | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename chezmoi/dot_Brewfile => Brewfile (100%)

diff --git a/chezmoi/dot_Brewfile b/Brewfile
similarity index 100%
rename from chezmoi/dot_Brewfile
rename to Brewfile

From 225e2b75c3d0844d1c877667d8c78b06179c843f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 15:51:41 +0000
Subject: [PATCH 704/973] Add MAS packages to chezmoi.

---
 chezmoi/.chezmoidata/packages.yaml | 52 +++++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 816244d7..1baea168 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -233,7 +233,6 @@ packages:
       - "zlib"
       - "zoxide"
       - "zsh"
-
     casks:
       - "alt-tab"
       - "bartender"
@@ -281,3 +280,54 @@ packages:
       - "vlc"
       - "yt-music"
       - "zed"
+    mas:
+      - name: "Battery Monitor"
+        id: 836505650
+      - name: "Bitwarden"
+        id: 1352778147
+      - name: "Elisi"
+        id: 1406239881
+      - name: "GoPro Player"
+        id: 1460836908
+      - name: "GoPro Quik"
+        id: 561350520
+      - name: "Keynote"
+        id: 409183694
+      - name: "Kindle"
+        id: 302584613
+      - name: "Magnet"
+        id: 441258766
+      - name: "Mattermost"
+        id: 1614666244
+      - name: "Microsoft Excel"
+        id: 462058435
+      - name: "Microsoft OneNote"
+        id: 784801555
+      - name: "Microsoft Outlook"
+        id: 985367838
+      - name: "Microsoft PowerPoint"
+        id: 462062816
+      - name: "Microsoft Word"
+        id: 462054704
+      - name: "Notability"
+        id: 360593530
+      - name: "Okta Extension App"
+        id: 1439967473
+      - name: "Okta Verify"
+        id: 490179405
+      - name: "Speedtest"
+        id: 1153157709
+      - name: "Tailscale"
+        id: 1475387142
+      - name: "TestFlight"
+        id: 899247664
+      - name: "The Unarchiver"
+        id: 425424353
+      - name: "Windows App"
+        id: 1295203466
+      - name: "Xcode"
+        id: 497799835
+      - name: "Xmind"
+        id: 1327661892
+      - name: "Yubico Authenticator"
+        id: 1497506650

From 2a0b76e540d9b429ceea6d43a60e2802f0aaa01e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:09:32 +0000
Subject: [PATCH 705/973] chezmoi: clean up brew formulae.

---
 chezmoi/.chezmoidata/packages.yaml | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 1baea168..742f8ffc 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -106,17 +106,6 @@ packages:
       - "jupyterlab"
       - "leptonica"
       - "lftp"
-      - "libcaca"
-      - "libffi"
-      - "libgcrypt"
-      - "libidn2"
-      - "libksba"
-      - "libressl"
-      - "librsvg"
-      - "libssh2"
-      - "libtiff"
-      - "libusb"
-      - "libusb-compat"
       - "llvm"
       - "make"
       - "markdownlint-cli"
@@ -212,7 +201,6 @@ packages:
       - "tig"
       - "tldr"
       - "todo-txt"
-      - "todoist"
       - "tokei"
       - "tree"
       - "unbound"

From 93752e7faf07e9be0bf75d4f072fc12dc5855981 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:09:52 +0000
Subject: [PATCH 706/973] chezmoi: add brew taps.

---
 chezmoi/.chezmoidata/packages.yaml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 742f8ffc..399dc117 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -268,6 +268,18 @@ packages:
       - "vlc"
       - "yt-music"
       - "zed"
+    taps:
+      - "abhinav/tap"
+      - "ankitpokhrel/jira-cli"
+      - "bufbuild/buf"
+      - "charmbracelet/tap"
+      - "common-fate/granted"
+      - "coretech/terrafile"
+      - "dutchcoders/cloudman"
+      - "github/gh"
+      - "messense/macos-cross-toolchains"
+      - "romkatv/powerlevel10k"
+      - "taiki-e/tap"
     mas:
       - name: "Battery Monitor"
         id: 836505650

From 7c3f123a0e902f55db2736d66c2c12471ec6e79a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:11:01 +0000
Subject: [PATCH 707/973] chezmoi: Move taps ahead of brews.

---
 chezmoi/.chezmoidata/packages.yaml | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 399dc117..42212793 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -1,5 +1,17 @@
 packages:
   darwin:
+    taps:
+      - "abhinav/tap"
+      - "ankitpokhrel/jira-cli"
+      - "bufbuild/buf"
+      - "charmbracelet/tap"
+      - "common-fate/granted"
+      - "coretech/terrafile"
+      - "dutchcoders/cloudman"
+      - "github/gh"
+      - "messense/macos-cross-toolchains"
+      - "romkatv/powerlevel10k"
+      - "taiki-e/tap"
     brews:
       - "a2ps"
       - "adr-tools"
@@ -268,18 +280,6 @@ packages:
       - "vlc"
       - "yt-music"
       - "zed"
-    taps:
-      - "abhinav/tap"
-      - "ankitpokhrel/jira-cli"
-      - "bufbuild/buf"
-      - "charmbracelet/tap"
-      - "common-fate/granted"
-      - "coretech/terrafile"
-      - "dutchcoders/cloudman"
-      - "github/gh"
-      - "messense/macos-cross-toolchains"
-      - "romkatv/powerlevel10k"
-      - "taiki-e/tap"
     mas:
       - name: "Battery Monitor"
         id: 836505650

From 29b51b6ca1b76c6fb5b6893a19057523d0016149 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:12:22 +0000
Subject: [PATCH 708/973] chezmoi: remove fac brew.

---
 chezmoi/.chezmoidata/packages.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 42212793..aa20a477 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -55,7 +55,6 @@ packages:
       - "dos2unix"
       - "dotter"
       - "doxygen"
-      - "fac"
       - "fd"
       - "ffmpeg"
       - "figlet"

From 9e7ae449d8c053638c139af4753f663f2ff28bd0 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:16:19 +0000
Subject: [PATCH 709/973] chezmoi: handle brew taps and MAS.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index c64718b4..d614f759 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -2,11 +2,17 @@
 #!/bin/bash
 
 brew bundle --file=/dev/stdin <
Date: Thu, 30 Oct 2025 16:43:15 +0000
Subject: [PATCH 710/973] chezmoi: remove obsolete tap.

---
 chezmoi/.chezmoidata/packages.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index aa20a477..a0b70527 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -4,7 +4,6 @@ packages:
       - "abhinav/tap"
       - "ankitpokhrel/jira-cli"
       - "bufbuild/buf"
-      - "charmbracelet/tap"
       - "common-fate/granted"
       - "coretech/terrafile"
       - "dutchcoders/cloudman"

From 54b038fad65b474d909ff66de6a53352d176549c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:44:05 +0000
Subject: [PATCH 711/973] Remove taps and MAS from Brewfile, now managed by
 chezmoi.

---
 Brewfile | 46 ----------------------------------------------
 1 file changed, 46 deletions(-)

diff --git a/Brewfile b/Brewfile
index 54f9d7e5..29fb0268 100644
--- a/Brewfile
+++ b/Brewfile
@@ -1,49 +1,3 @@
-tap "abhinav/tap"
-tap "ankitpokhrel/jira-cli"
-tap "bufbuild/buf"
-tap "charmbracelet/tap"
-tap "chef/chef"
-tap "common-fate/granted"
-tap "coretech/terrafile"
-tap "d12frosted/emacs-plus"
-tap "domt4/autoupdate"
-tap "dutchcoders/cloudman"
-tap "eddieantonio/eddieantonio"
-tap "github/bootstrap"
-tap "github/gh"
-tap "messense/macos-cross-toolchains"
-tap "mkchoi212/fac", "https://github.com/mkchoi212/fac.git"
-tap "nvie/tap"
-tap "romkatv/powerlevel10k"
-tap "sachaos/todoist"
-tap "taiki-e/tap"
-tap "terrastruct/d2"
-mas "Battery Monitor", id: 836505650
-mas "Bitwarden", id: 1352778147
-mas "Elisi", id: 1406239881
-mas "GoPro Player", id: 1460836908
-mas "GoPro Quik", id: 561350520
-mas "Keynote", id: 409183694
-mas "Kindle", id: 302584613
-mas "Magnet", id: 441258766
-mas "Mattermost", id: 1614666244
-mas "Microsoft Excel", id: 462058435
-mas "Microsoft OneNote", id: 784801555
-mas "Microsoft Outlook", id: 985367838
-mas "Microsoft PowerPoint", id: 462062816
-mas "Microsoft Word", id: 462054704
-mas "Notability", id: 360593530
-mas "Okta Extension App", id: 1439967473
-mas "Okta Verify", id: 490179405
-mas "Proxy", id: 0
-mas "Speedtest", id: 1153157709
-mas "Tailscale", id: 1475387142
-mas "TestFlight", id: 899247664
-mas "The Unarchiver", id: 425424353
-mas "Windows App", id: 1295203466
-mas "Xcode", id: 497799835
-mas "Xmind", id: 1327661892
-mas "Yubico Authenticator", id: 1497506650
 vscode "aryanahire.sublime-monokai"
 vscode "atlassian.atlascode"
 vscode "charliermarsh.ruff"

From d809eca8af773be1bdf1ede1672be49976e36cb4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:44:21 +0000
Subject: [PATCH 712/973] Remove Brewfile, not needed any more.

---
 Brewfile | 71 --------------------------------------------------------
 1 file changed, 71 deletions(-)
 delete mode 100644 Brewfile

diff --git a/Brewfile b/Brewfile
deleted file mode 100644
index 29fb0268..00000000
--- a/Brewfile
+++ /dev/null
@@ -1,71 +0,0 @@
-vscode "aryanahire.sublime-monokai"
-vscode "atlassian.atlascode"
-vscode "charliermarsh.ruff"
-vscode "codezombiech.gitignore"
-vscode "cschlosser.doxdocgen"
-vscode "davidanson.vscode-markdownlint"
-vscode "davidbwaters.macos-modern-theme"
-vscode "docker.docker"
-vscode "donjayamanne.githistory"
-vscode "editorconfig.editorconfig"
-vscode "fabiospampinato.vscode-diff"
-vscode "giovdk21.vscode-sublime-merge"
-vscode "github.copilot"
-vscode "github.copilot-chat"
-vscode "github.github-vscode-theme"
-vscode "github.vscode-pull-request-github"
-vscode "golang.go"
-vscode "grafana.vscode-jsonnet"
-vscode "grapecity.gc-excelviewer"
-vscode "gruntfuggly.todo-tree"
-vscode "hashicorp.hcl"
-vscode "hashicorp.terraform"
-vscode "hediet.vscode-drawio"
-vscode "humao.rest-client"
-vscode "janjoerke.jenkins-pipeline-linter-connector"
-vscode "jebbs.plantuml"
-vscode "jeff-hykin.better-cpp-syntax"
-vscode "joffreykern.markdown-toc"
-vscode "llvm-vs-code-extensions.lldb-dap"
-vscode "mechatroner.rainbow-csv"
-vscode "meezilla.json"
-vscode "mellowmarshmallow.groovy"
-vscode "mermaidchart.vscode-mermaid-chart"
-vscode "mrmlnc.vscode-duplicate"
-vscode "ms-azuretools.vscode-containers"
-vscode "ms-azuretools.vscode-docker"
-vscode "ms-python.debugpy"
-vscode "ms-python.isort"
-vscode "ms-python.mypy-type-checker"
-vscode "ms-python.python"
-vscode "ms-python.vscode-pylance"
-vscode "ms-python.vscode-python-envs"
-vscode "ms-toolsai.jupyter"
-vscode "ms-toolsai.jupyter-keymap"
-vscode "ms-toolsai.jupyter-renderers"
-vscode "ms-toolsai.vscode-jupyter-cell-tags"
-vscode "ms-toolsai.vscode-jupyter-slideshow"
-vscode "ms-vscode-remote.remote-containers"
-vscode "ms-vscode.cmake-tools"
-vscode "ms-vscode.cpptools"
-vscode "ms-vscode.cpptools-extension-pack"
-vscode "ms-vscode.cpptools-themes"
-vscode "ms-vscode.live-server"
-vscode "ms-vscode.makefile-tools"
-vscode "pdconsec.vscode-print"
-vscode "peterj.proto"
-vscode "redhat.vscode-yaml"
-vscode "ritwickdey.liveserver"
-vscode "rust-lang.rust-analyzer"
-vscode "ryanluker.vscode-coverage-gutters"
-vscode "solomonkinard.git-blame"
-vscode "streetsidesoftware.code-spell-checker"
-vscode "swiftlang.swift-vscode"
-vscode "tadayosi.vscode-makefile-outliner"
-vscode "takumii.markdowntable"
-vscode "tamasfe.even-better-toml"
-vscode "timonwong.shellcheck"
-vscode "tomoki1207.pdf"
-vscode "visualjj.visualjj"
-vscode "vscode-icons-team.vscode-icons"
-vscode "ziglang.vscode-zig"

From b5c81d85d1f0ce14ee03d42f47b516beefbb747a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:48:51 +0000
Subject: [PATCH 713/973] Add mise config.

---
 chezmoi/private_dot_config/mise/config.toml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 chezmoi/private_dot_config/mise/config.toml

diff --git a/chezmoi/private_dot_config/mise/config.toml b/chezmoi/private_dot_config/mise/config.toml
new file mode 100644
index 00000000..d6b51f82
--- /dev/null
+++ b/chezmoi/private_dot_config/mise/config.toml
@@ -0,0 +1,19 @@
+[tools]
+rust = {version = "latest", components = "rustfmt,clippy,llvm-tools-preview"}
+cargo = "latest"
+"cargo:cargo-audit" = "latest"
+"cargo:cargo-workspaces" = "latest"
+"cargo:cargo-license" = "latest"
+"cargo:cargo-fuzz" = "latest"
+"cargo:cargo-semver" = "latest"
+"cargo:cargo-llvm-cov" = "latest"
+python = "3.13"
+pipx = "latest"
+uv = "latest"
+"pipx:pre-commit" = "latest"
+"pipx:pipenv" = "latest"
+"pipx:black" = "latest"
+"pipx:tsrc" = "latest"
+
+[settings]
+idiomatic_version_file_enable_tools = ["python"]

From bdfa4d6aadec14432edb39f2e56280fadeb7ddad Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 16:50:22 +0000
Subject: [PATCH 714/973] Add mise setup template.

---
 chezmoi/run_onchange_mise-install.sh.tmpl | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 chezmoi/run_onchange_mise-install.sh.tmpl

diff --git a/chezmoi/run_onchange_mise-install.sh.tmpl b/chezmoi/run_onchange_mise-install.sh.tmpl
new file mode 100644
index 00000000..cb62976a
--- /dev/null
+++ b/chezmoi/run_onchange_mise-install.sh.tmpl
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -ex
+
+# hash of the mise config file, used to determine if we need to rerun this script
+# mise/config.toml hash: {{ include "private_dot_config/mise/config.toml" | sha256sum }}
+
+mise install -y

From 2c69113e7481a7f6eef67a424284487d02c07437 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 17:15:54 +0000
Subject: [PATCH 715/973] mise: skip uv and pipx, they are already installed
 via brew, and this throws mise errors.

---
 chezmoi/private_dot_config/mise/config.toml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chezmoi/private_dot_config/mise/config.toml b/chezmoi/private_dot_config/mise/config.toml
index d6b51f82..1b033c42 100644
--- a/chezmoi/private_dot_config/mise/config.toml
+++ b/chezmoi/private_dot_config/mise/config.toml
@@ -8,8 +8,8 @@ cargo = "latest"
 "cargo:cargo-semver" = "latest"
 "cargo:cargo-llvm-cov" = "latest"
 python = "3.13"
-pipx = "latest"
-uv = "latest"
+# pipx = "latest"
+# uv = "latest"
 "pipx:pre-commit" = "latest"
 "pipx:pipenv" = "latest"
 "pipx:black" = "latest"

From 2373c825cafd8770c33f44adb906f21af767018f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 23:10:03 +0000
Subject: [PATCH 716/973] Update submodule.

---
 scripts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts b/scripts
index 15b44478..b2924746 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 15b444789593a01174a99a4cdc10e0a28dbaeede
+Subproject commit b2924746bdec31e5a8d49025512bffc4df0f11cb

From 90b9d9aa9f21ea625566a355e454a153bce22958 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 23:12:56 +0000
Subject: [PATCH 717/973] Rename history script.

---
 ...{zsh_to_persistent_history.py => zsh-to-persistent-history.py} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename history/{zsh_to_persistent_history.py => zsh-to-persistent-history.py} (100%)

diff --git a/history/zsh_to_persistent_history.py b/history/zsh-to-persistent-history.py
similarity index 100%
rename from history/zsh_to_persistent_history.py
rename to history/zsh-to-persistent-history.py

From 8ea5f6e7c9afd09900d980d961183cf504cc20a3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 23:13:45 +0000
Subject: [PATCH 718/973] Update crontab.

---
 crontab.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/crontab.txt b/crontab.txt
index 60e70baa..e1a977a4 100644
--- a/crontab.txt
+++ b/crontab.txt
@@ -1,3 +1,3 @@
-0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1
+0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1

From 831613d2ec4a03eb5b9b8eeef111c02df0a02f80 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 30 Oct 2025 23:25:52 +0000
Subject: [PATCH 719/973] Minor updates and reformat.

---
 history/zsh-to-persistent-history.py | 62 +++++++++++++---------------
 1 file changed, 29 insertions(+), 33 deletions(-)

diff --git a/history/zsh-to-persistent-history.py b/history/zsh-to-persistent-history.py
index 3465f2f8..7c48314e 100755
--- a/history/zsh-to-persistent-history.py
+++ b/history/zsh-to-persistent-history.py
@@ -18,17 +18,17 @@
 # is the command line.
 #
 # This script is then run from cron:
-# 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh_to_persistent_history.py -w >/dev/null 2>&1 || true
+# 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >/dev/null 2>&1 || true
 
 import argparse
-import sys
-import os
-import socket
 import datetime
-import shutil
-import re
 import filecmp
 import glob
+import os
+import re
+import shutil
+import socket
+import sys
 
 
 # Skip any potential credentials.
@@ -114,15 +114,13 @@ def main():
     if args.extra_file:
         extra_file = os.path.expanduser(args.extra_file)
         if not os.path.exists(extra_file):
-            sys.exit(
-                f"Error: extra history file {extra_file} does not exist!"
-            )
+            sys.exit(f"Error: extra history file {extra_file} does not exist!")
         extra_file = os.path.abspath(extra_file)
         print(f"Extra ZSH input history file: {extra_file}")
 
     iterm_files = []
     if args.iterm_files:
-        if '*' in args.iterm_files:
+        if "*" in args.iterm_files:
             print(args.iterm_files)
             iterm_file_list = glob.glob(os.path.expanduser(args.iterm_files))
             print(iterm_file_list)
@@ -133,22 +131,16 @@ def main():
 
     for iterm_file in iterm_files:
         if not os.path.exists(iterm_file):
-            sys.exit(
-                f"Error: extra history file {iterm_file} does not exist!"
-            )
+            sys.exit(f"Error: extra history file {iterm_file} does not exist!")
         print(f"Extra iTerm2 input history file: {iterm_file}")
 
     for filename in (infile, zfile):
         if not os.path.exists(filename):
-            sys.exit(
-                f"Error: input history file {filename} does not exist!"
-            )
+            sys.exit(f"Error: input history file {filename} does not exist!")
 
     if outfile != infile:
         if os.path.exists(outfile) and not args.write:
-            sys.exit(
-                f"Error: output persistent history file {outfile} already exists!"
-            )
+            sys.exit(f"Error: output persistent history file {outfile} already exists!")
 
     real_infile = os.path.realpath(infile)
     if not os.path.exists(real_infile):
@@ -161,7 +153,7 @@ def main():
     print(f"Real output file: {real_outfile}")
 
     # Read input ZSH history file.
-    with open(zfile, 'r', errors="ignore") as f:
+    with open(zfile, "r", errors="ignore") as f:
         zdata = f.readlines()
 
     hostname = socket.gethostname().lower()
@@ -181,24 +173,24 @@ def main():
     combined_regex = "(" + ")|(".join(user_regexes) + ")"
 
     # Read input ZSH history file.
-    with open(infile, 'r', errors="ignore") as f:
+    with open(infile, "r", errors="ignore") as f:
         histdata = f.readlines()
 
     # Add the ZSH history to persistent history.
     for line in zdata:
-        if not line.startswith(':') or ';' not in line:
+        if not line.startswith(":") or ";" not in line:
             continue
-        timestamp = int(line.split(':')[1].strip())
+        timestamp = int(line.split(":")[1].strip())
         time = datetime.datetime.fromtimestamp(timestamp)
         # duration = line.split(':')[2].strip().split(';')[0]
-        cmd = line.split(';')[1].strip()
+        cmd = line.split(";")[1].strip()
         if _skip_line(combined_regex, cmd):
             continue
         histdata.append(f"{hostname} | {time} | {cmd}\n")
 
     extra_data = []
     if extra_file:
-        with open(extra_file, 'r', errors="ignore") as f:
+        with open(extra_file, "r", errors="ignore") as f:
             extra_data = f.readlines()
         histdata.extend(extra_data)
 
@@ -206,15 +198,17 @@ def main():
     if iterm_files:
         for iterm_file in iterm_files:
             print(f"Reading {iterm_file}")
-            with open(iterm_file, 'r', errors="ignore") as f:
+            with open(iterm_file, "r", errors="ignore") as f:
                 iterm_data = f.readlines()
             if len(iterm_data) % 2 != 0:
-                sys.exit(f"Error: input file {iterm_file} does not have an even number of lines!")
+                sys.exit(
+                    f"Error: input file {iterm_file} does not have an even number of lines!"
+                )
             it = iter(iterm_data)
             for line in it:
-                if not line.startswith('#'):
+                if not line.startswith("#"):
                     continue
-                timestamp = int(line.split('#')[1].strip())
+                timestamp = int(line.split("#")[1].strip())
                 time = datetime.datetime.fromtimestamp(timestamp)
                 cmd = next(it).strip()
                 if _skip_line(combined_regex, cmd):
@@ -226,10 +220,12 @@ def main():
 
     # Sort by the date field, ascending.
     # Keep the order of records at the same time unchanged.
-    histdata = sorted(histdata, key=lambda x: "".join([x.split('|')[1], x.split('|')[0], x.split('|')[2]]))
+    histdata = sorted(
+        histdata,
+        key=lambda x: "".join([x.split("|")[1], x.split("|")[0], x.split("|")[2]]),
+    )
 
     if args.write:
-
         if real_outfile == real_infile:
             # Save data to a temporary file.
             savefilename = f"{real_infile}.new"
@@ -238,8 +234,8 @@ def main():
             savefilename = f"{real_outfile}"
 
         print(f"Writing {savefilename} ...")
-        with open(f"{savefilename}", 'w') as f:
-            f.write(''.join(histdata))
+        with open(f"{savefilename}", "w") as f:
+            f.write("".join(histdata))
 
         if real_outfile == real_infile:
             if filecmp.cmp(real_infile, savefilename, shallow=True):

From ee5b202640f34781533b556ff371566551436543 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 31 Oct 2025 14:03:17 +0000
Subject: [PATCH 720/973] Fix file name.

---
 shellvars-personal => shellvars | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename shellvars-personal => shellvars (100%)

diff --git a/shellvars-personal b/shellvars
similarity index 100%
rename from shellvars-personal
rename to shellvars

From 619e2979271d85adf78d25bc5088ce4a6362fd99 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 31 Oct 2025 14:42:54 +0000
Subject: [PATCH 721/973] Fix p10k config.

---
 chezmoi/dot_p10k.zsh | 43 ++++++++++++++++++++++---------------------
 chezmoi/dot_zshrc    |  8 +++-----
 2 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/chezmoi/dot_p10k.zsh b/chezmoi/dot_p10k.zsh
index d41ac916..f53cd45d 100644
--- a/chezmoi/dot_p10k.zsh
+++ b/chezmoi/dot_p10k.zsh
@@ -1,7 +1,8 @@
-# Generated by Powerlevel10k configuration wizard on 2025-04-13 at 22:12 IST.
+# Generated by Powerlevel10k configuration wizard on 2025-10-31 at 14:15 GMT.
 # Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619.
-# Wizard options: powerline, rainbow, unicode, angled separators, sharp heads,
-# flat tails, 1 line, compact, concise, transient_prompt, instant_prompt=verbose.
+# Wizard options: nerdfont-v3 + powerline, small icons, rainbow, unicode,
+# angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise,
+# transient_prompt, instant_prompt=verbose.
 # Type `p10k configure` to generate another config.
 #
 # Config for Powerlevel10k with powerline prompt style with colorful background.
@@ -30,7 +31,7 @@
 
   # The list of segments shown on the left. Fill it with the most important segments.
   typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-    # os_icon               # os identifier
+    os_icon                 # os identifier
     dir                     # current directory
     vcs                     # git status
     # prompt_char           # prompt symbol
@@ -112,7 +113,7 @@
   )
 
   # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
-  typeset -g POWERLEVEL9K_MODE=powerline
+  typeset -g POWERLEVEL9K_MODE=nerdfont-v3
   # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
   # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
   typeset -g POWERLEVEL9K_ICON_PADDING=none
@@ -197,8 +198,8 @@
   # Red prompt symbol if the last command failed.
   typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
   # Default prompt symbol.
-  # jiml 2021-03-26 change prompt char
   # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
+  # jiml 2021-03-26 change prompt char
   typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜'
   # Prompt symbol in command vi mode.
   typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
@@ -295,7 +296,7 @@
 
   # The default icon shown next to non-writable and non-existent directories when
   # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
-  typeset -g POWERLEVEL9K_LOCK_ICON='∅'
+  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
 
   # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
   # directories. It must be an array with 3 * N elements. Each triplet consists of:
@@ -349,7 +350,7 @@
   # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
   # back to POWERLEVEL9K_DIR_FOREGROUND.
   #
-  typeset -g POWERLEVEL9K_DIR_CLASSES=()
+  # typeset -g POWERLEVEL9K_DIR_CLASSES=()
 
   # Custom prefix.
   # typeset -g POWERLEVEL9K_DIR_PREFIX='in '
@@ -363,7 +364,7 @@
   typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8
 
   # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
-  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
+  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
 
   # Untracked files icon. It's really a question mark, your font isn't broken.
   # Change the value of this parameter to show a different icon.
@@ -496,7 +497,7 @@
   typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
 
   # Custom icon.
-  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
+  # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐'
   # Custom prefix.
   # typeset -g POWERLEVEL9K_VCS_PREFIX='on '
 
@@ -557,7 +558,7 @@
   # Duration format: 1d 2h 3m 4s.
   typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
   # Custom icon.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
+  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
   # Custom prefix.
   # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took '
 
@@ -568,7 +569,7 @@
   # Don't show the number of background jobs.
   typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
   # Custom icon.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='≡'
+  # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
 
   #######################[ direnv: direnv status (https://direnv.net/) ]########################
   # Direnv color.
@@ -743,22 +744,22 @@
   typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
   typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
   # Custom icon.
-  typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord'
+  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
 
   #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
   # Ranger shell color.
   typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3
   typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0
   # Custom icon.
-  typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='▲'
-  
+  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
   ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
   # Yazi shell color.
   typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3
   typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0
   # Custom icon.
-  typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='▲'
-  
+  # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
   ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
   # Nnn shell color.
   typeset -g POWERLEVEL9K_NNN_FOREGROUND=0
@@ -1407,7 +1408,7 @@
       '*'       DEFAULT)
   typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7
   typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='○'
+  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
 
   # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
   # segment. Parameter expansions are very flexible and fast, too. See reference:
@@ -1505,7 +1506,7 @@
   typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2
   typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0
   # Custom icon.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb'
+  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
 
   ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
   # Show azure only when the command you are typing invokes one of these tools.
@@ -1718,7 +1719,7 @@
   # Show battery in yellow when it's discharging.
   typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3
   # Battery pictograms going from low to high level of charge.
-  typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█')
+  typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079'
   # Don't show the remaining time to charge/discharge.
   typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
   typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0
@@ -1761,7 +1762,7 @@
   # behavior where they contain the end times of their preceding commands.
   typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
   # Custom icon.
-  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=
+  # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
   # Custom prefix.
   # typeset -g POWERLEVEL9K_TIME_PREFIX='at '
 
diff --git a/chezmoi/dot_zshrc b/chezmoi/dot_zshrc
index fafc11ed..8c354856 100644
--- a/chezmoi/dot_zshrc
+++ b/chezmoi/dot_zshrc
@@ -151,9 +151,6 @@ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell
 # unalias imgcat
 # see https://github.com/eddieantonio/imgcat
 
-# To customize prompt, run `p10k configure` or edit ~/dotfiles/p10k.zsh.
-[[ ! -f ~/dotfiles/p10k.zsh ]] || source ~/dotfiles/p10k.zsh
-
 # Quieten startup errors.
 #typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
 
@@ -214,10 +211,11 @@ export PATH="$BUN_INSTALL/bin:$PATH"
 # GitHub Copilot CLI.
 eval "$(gh copilot alias -- zsh)"
 
-# To customize prompt, run `p10k configure` or edit ~/Personal/git/dotfiles/p10k.zsh.
-[[ ! -f ~/Personal/git/dotfiles/p10k.zsh ]] || source ~/Personal/git/dotfiles/p10k.zsh
 # The following lines have been added by Docker Desktop to enable Docker CLI completions.
 fpath=(/Users/james.lawton/.docker/completions $fpath)
 autoload -Uz compinit
 compinit
 # End of Docker CLI completions
+
+# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
+[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

From e0b099a9ea4aac5b6ea5e3036d5a1499fde8f4f5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 31 Oct 2025 14:44:29 +0000
Subject: [PATCH 722/973] p10k: remove OS icon.

---
 chezmoi/dot_p10k.zsh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/dot_p10k.zsh b/chezmoi/dot_p10k.zsh
index f53cd45d..2c3ae39f 100644
--- a/chezmoi/dot_p10k.zsh
+++ b/chezmoi/dot_p10k.zsh
@@ -31,7 +31,7 @@
 
   # The list of segments shown on the left. Fill it with the most important segments.
   typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-    os_icon                 # os identifier
+    # os_icon                 # os identifier
     dir                     # current directory
     vcs                     # git status
     # prompt_char           # prompt symbol

From e0847f99a9132c92aefa9421ba1556278875d6f1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 31 Oct 2025 14:52:36 +0000
Subject: [PATCH 723/973] Remove old Mac apps lists.

---
 mac_apps.txt     |  89 ------------------
 mac_apps_old.txt | 233 -----------------------------------------------
 2 files changed, 322 deletions(-)
 delete mode 100644 mac_apps.txt
 delete mode 100644 mac_apps_old.txt

diff --git a/mac_apps.txt b/mac_apps.txt
deleted file mode 100644
index 0d5fde41..00000000
--- a/mac_apps.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-Adobe Acrobat Reader DC.app
-Alfred 4.app
-Atom.app
-BBC iPlayer Downloads.app
-Backup and Sync.app
-Beyond Compare.app
-Brave Browser.app
-Cakebrew.app
-Canon Utilities
-Capto.app
-Contexts.app
-CopyClip 2.app
-Dash.app
-DeltaWalker.app
-Discord.app
-DisplayLink Information.app
-DisplayLink Manager.app
-Docker
-Docker.app
-Dozer.app
-Dropbox.app
-Evernote.app
-ExpressVPN.app
-Fantastical 2.app
-GEDitCOM II.app
-Garmin Express.app
-GitHub Desktop.app
-Gitify.app
-GoPro Quik.app
-Gramps.app
-HP-82240B.app
-Hammerspoon.app
-Inkscape.app
-Insync.app
-Karabiner-Elements.app
-Karabiner-EventViewer.app
-KextViewr.app
-Keybase.app
-LastPass.app
-Lumen.app
-Mattermost.app
-MeetingBar.app
-Microsoft Teams.app
-NTFS for Mac.app
-Obsidian.app
-OmniGraffle.app
-Open in iTerm2.app
-OpenConnect-GUI.app
-Pock.app
-Pocket Casts.app
-Rectangle.app
-SD Card Formatter.app
-Safari.app
-SamsungPortableSSD.app
-Self Service.app
-Signal.app
-Sketch.app
-SmartScope.app
-SmartScopeServerUI.app
-Spotify.app
-Stack.app
-StarUML.app
-Sublime Merge.app
-Sublime Text 4.app
-TeX
-TextMate.app
-Turbo Boost Switcher Pro.app
-Ukelele.app
-VLC.app
-VirtualBox.app
-Visual Studio Code.app
-WP-34s.app
-Wireshark.app
-YubiKey Manager.app
-aText.app
-balenaEtcher.app
-calibre.app
-coconutBattery.app
-draw.io.app
-get_iplayer
-glogg.app
-iMovie.app
-iTerm.app
-jEdit.app
-kdiff3.app
-mmhmm.app
-nonpareil-16c.app
-xbar.app
-zoom.us.app
diff --git a/mac_apps_old.txt b/mac_apps_old.txt
deleted file mode 100644
index 5d8dab72..00000000
--- a/mac_apps_old.txt
+++ /dev/null
@@ -1,233 +0,0 @@
-/Applications/Alfred 3.app
-/Applications/Amazon Drive.app
-/Applications/Amazon Music.app
-/Applications/Anaconda-Navigator.app
-/Applications/Android File Transfer.app
-/Applications/App Store.app
-/Applications/Atom.app
-/Applications/Audacity.app
-/Applications/Automator.app
-/Applications/Backup and Sync.app
-/Applications/Battery Monitor.app
-/Applications/Bear.app
-/Applications/BeardedSpice.app
-/Applications/Beyond Compare.app
-/Applications/Boostnote.app
-/Applications/Bricksmith.app
-/Applications/Cakebrew.app
-/Applications/Calculator.app
-/Applications/Calendar.app
-/Applications/Chess.app
-/Applications/Commander One.app
-/Applications/Contacts.app
-/Applications/Contexts.app
-/Applications/CopyClip 2 Helper.app
-/Applications/CopyClip 2.app
-/Applications/CopyClip.app
-/Applications/CrossOver.app
-/Applications/DVD Player.app
-/Applications/Dash.app
-/Applications/Dashboard.app
-/Applications/Delicious Library 3.app
-/Applications/DeskCover.app
-/Applications/Dictionary.app
-/Applications/Discord.app
-/Applications/Disk Space.app
-/Applications/Display Menu.app
-/Applications/Docker.app
-/Applications/Docker/Docker Quickstart Terminal.app
-/Applications/Docker/Kitematic (Beta).app
-/Applications/Dropbox.app
-/Applications/EasyMP Network Projection/EasyMP Network Projection.app
-/Applications/EasyMP Network Projection/Tools/EasyMP Network Projection Uninstaller.app
-/Applications/Enterprise Connect.app
-/Applications/Etcher.app
-/Applications/Evernote.app
-/Applications/FaceTime.app
-/Applications/Firefox.app
-/Applications/Flux.app
-/Applications/Flycut.app
-/Applications/Font Book.app
-/Applications/FreeMind.app
-/Applications/Freeplane.app
-/Applications/Funter.app
-/Applications/GPG Keychain.app
-/Applications/GTask for Desktop.app
-/Applications/GarageBand.app
-/Applications/Garmin BaseCamp.app
-/Applications/Garmin Express.app
-/Applications/Garmin MapInstall.app
-/Applications/Garmin MapManager.app
-/Applications/GitHub Desktop.app
-/Applications/GitKraken.app
-/Applications/GitUp.app
-/Applications/Go2Shell.app
-/Applications/GoPro Quik.app
-/Applications/GoPro Studio.app
-/Applications/Google Chrome.app
-/Applications/Google Photos Backup.app
-/Applications/Hammerspoon.app
-/Applications/Image Capture.app
-/Applications/Insync.app
-/Applications/Itsycal.app
-/Applications/Joplin.app
-/Applications/Junos Pulse.app
-/Applications/Karabiner-Elements.app
-/Applications/Karabiner-EventViewer.app
-/Applications/Keybase.app
-/Applications/Keynote.app
-/Applications/Kindle.app
-/Applications/LEGO Digital Designer.app
-/Applications/LastPass.app
-/Applications/Launchpad.app
-/Applications/LeoCAD.app
-/Applications/Lumen.app
-/Applications/Magnet.app
-/Applications/Mail.app
-/Applications/Maps.app
-/Applications/Marked 2.app
-/Applications/Messages.app
-/Applications/Microsoft Excel.app
-/Applications/Microsoft Messenger.app
-/Applications/Microsoft OneNote.app
-/Applications/Microsoft Outlook.app
-/Applications/Microsoft PowerPoint.app
-/Applications/Microsoft Word.app
-/Applications/Mission Control.app
-/Applications/MusicManager.app
-/Applications/MyWorkspace.app
-/Applications/Notes.app
-/Applications/Numbers.app
-/Applications/OLM Extractor Pro.app
-/Applications/OneDrive.app
-/Applications/OpenVPN/OpenVPN Connect.app
-/Applications/OpenVPN/Uninstall OpenVPN Connect.app
-/Applications/Opera Developer.app
-/Applications/Pages.app
-/Applications/Paragon NTFS for Mac 15.app
-/Applications/Pastebot.app
-/Applications/Photo Booth.app
-/Applications/Photos.app
-/Applications/Pineapple.app
-/Applications/Plantronics Hub.app
-/Applications/Preview.app
-/Applications/Processing.app
-/Applications/Pulse Secure.app
-/Applications/PyCharm CE.app
-/Applications/QuickTime Player.app
-/Applications/Quicksilver.app
-/Applications/Radiant Player.app
-/Applications/Reminders.app
-/Applications/Remote Desktop Connection.app
-/Applications/Report Phishing.app
-/Applications/Rocket.app
-/Applications/Safari.app
-/Applications/SamsungPortableSSD.app
-/Applications/Scrivener.app
-/Applications/Siri.app
-/Applications/Skype for Business.app
-/Applications/Skype.app
-/Applications/Slack.app
-/Applications/Slate.app
-/Applications/SoftU2F.app
-/Applications/SourceTree.app
-/Applications/Speedtest.app
-/Applications/Spotify.app
-/Applications/Stickies.app
-/Applications/Sublime Text.app
-/Applications/Symantec Solutions/SyLinkDrop.app
-/Applications/Symantec Solutions/Symantec Endpoint Protection.app
-/Applications/System Preferences.app
-/Applications/TLA+ Toolbox.app
-/Applications/TaskPaper.app
-/Applications/TermHere.app
-/Applications/TextEdit.app
-/Applications/The Archive Browser.app
-/Applications/The Unarchiver.app
-/Applications/Thunderbird.app
-/Applications/Time Machine.app
-/Applications/TodoTxtMac.app
-/Applications/Toolkit.app
-/Applications/Tower.app
-/Applications/TreeSheets.app
-/Applications/Twitter.app
-/Applications/Typist.app
-/Applications/Unsplash Wallpapers.app
-/Applications/Utilities/Activity Monitor.app
-/Applications/Utilities/Adobe AIR Application Installer.app
-/Applications/Utilities/Adobe AIR Uninstaller.app
-/Applications/Utilities/Adobe Flash Player Install Manager.app
-/Applications/Utilities/AirPort Utility.app
-/Applications/Utilities/Audio MIDI Setup.app
-/Applications/Utilities/Bluetooth File Exchange.app
-/Applications/Utilities/Boot Camp Assistant.app
-/Applications/Utilities/ColorSync Utility.app
-/Applications/Utilities/Console.app
-/Applications/Utilities/Digital Color Meter.app
-/Applications/Utilities/Disk Utility.app
-/Applications/Utilities/Grab.app
-/Applications/Utilities/Grapher.app
-/Applications/Utilities/Keychain Access.app
-/Applications/Utilities/Migration Assistant.app
-/Applications/Utilities/Script Editor.app
-/Applications/Utilities/System Information.app
-/Applications/Utilities/Terminal.app
-/Applications/Utilities/VoiceOver Utility.app
-/Applications/Übersicht.app
-/Applications/VIP Access.app
-/Applications/VIP Access/VIP Access Proximity.app
-/Applications/VIP Access/VIP Access Uninstaller.app
-/Applications/VIP Access/VIP Access.app
-/Applications/VirtualBox.app
-/Applications/Wally.app
-/Applications/WhatsApp.app
-/Applications/Wire.app
-/Applications/Wireshark.app
-/Applications/Wolfram CDF Player.app
-/Applications/XMind ZEN.app
-/Applications/XMind.app
-/Applications/Yammer.app
-/Applications/aText.app
-/Applications/calibre.app
-/Applications/cool-retro-term.app
-/Applications/iBooks.app
-/Applications/iMovie.app
-/Applications/iStat Mini.app
-/Applications/iTerm.app
-/Applications/iTunes.app
-/Applications/jEdit.app
-/Applications/kdiff3.app
-/Applications/my Accenture Mac.app
-/Applications/my41cx.app
-/Applications/nteract.app
-/Applications/nvALT.app
-/Applications/zoom.us.app
-/Users/jim.lawton/Downloads/SamsungPortableSSD.app
-/Users/jim.lawton/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app
-/Users/jim.lawton/Library/Application Support/Java/Java 1.8.91.14/Java 8 Update 91.app
-/Users/jim.lawton/Library/Application Support/Juniper Networks/HostChecker.app
-/Users/jim.lawton/Library/Application Support/PortableSSD/Samsung Portable SSD.app
-/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app
-/Users/jim.lawton/Library/Application Support/PortableSSD/SamsungPortableSSD.app/Contents/Resources/T3 Log In Activator for Mac.app
-/Users/jim.lawton/Library/Application Support/PortableSSD/T3 Log In Activator for Mac.app
-/Users/jim.lawton/Library/Application Support/Pulse Secure/SetupClient/PulseSetupClient.app
-/Users/jim.lawton/Library/Application Support/Skype.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/Cisco WebEx Start.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/Add-ons/CiscoWebExUpdate.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/Meeting Center.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/as.bundle/Contents/Resources/aswatcher.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/asannotation2.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/atmsupload.app
-/Users/jim.lawton/Library/Application Support/WebEx Folder/T32_UMC_32.8.4.6/convertpdf.app
-/Users/jim.lawton/Library/Application Support/de.gtfd.application.App
-/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app
-/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/finish_installation.app
-/Users/jim.lawton/Library/Containers/com.fiplab.copyclip2/Data/Library/Application Support/CopyClip/CopyClip 28/CopyClip 2.app/Contents/Library/LoginItems/CopyClipHelper.app
-/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPass.app
-/Users/jim.lawton/Library/Containers/com.lastpass.LastPass/Data/Library/Application Support/LastPass/LastPassHelper.app
-/Users/jim.lawton/Library/Dropbox/DropboxMacUpdate.app
-/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app
-/Users/jim.lawton/Library/PreferencePanes/MusicManager.prefPane/Contents/Helpers/MusicManagerHelper.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app
-/Users/jim.lawton/Library/Printers/ACN Cork.app
-/Users/jim.lawton/Library/Printers/Canon MP630 series.app
-/Users/jim.lawton/Library/XMind/configuration-cathy_macosx-R3.7.6.201711210129/org.eclipse.equinox.app

From 48e8a0dcafb95fb84dc932be3ed1b910cb11a8ef Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 31 Oct 2025 19:32:29 +0000
Subject: [PATCH 724/973] Add script to convert persistent history to CSV.

---
 history/persistent-history-to-csv.py | 148 +++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)
 create mode 100755 history/persistent-history-to-csv.py

diff --git a/history/persistent-history-to-csv.py b/history/persistent-history-to-csv.py
new file mode 100755
index 00000000..d2848b36
--- /dev/null
+++ b/history/persistent-history-to-csv.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python3
+
+"""Script to convert my Persistent History format to CSV for use with Atuin."""
+
+# The Persistent History file is in the format:
+#   hostname | date-time | command
+# example:
+#  `mbp-70wql7 | 2025-10-31 14:36:30 | crontab -l`
+#
+# The CSV file is in the format:
+#   timestamp,hostname,command
+# example:
+# `,mbp-70wql7,crontab -l`
+
+import argparse
+import csv
+import os
+import sys
+from datetime import datetime
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        "-w",
+        "--write",
+        action="store_true",
+        dest="write",
+        help="Write/overwrite the output file.",
+    )
+    parser.add_argument(
+        "-s",
+        "--sort",
+        action="store_true",
+        dest="sort",
+        help="Sort the output, in ascending time order.",
+    )
+    parser.add_argument(
+        "-i",
+        "--infile",
+        type=str,
+        metavar="FILE",
+        default="~/.persistent_history",
+        help="Input persistent history file",
+    )
+    parser.add_argument(
+        "-o",
+        "--outfile",
+        type=str,
+        metavar="FILE",
+        help="Output CSV file",
+    )
+    args = parser.parse_args()
+
+    infile = os.path.expanduser(args.infile)
+    print(f"Input persistent history: {infile}")
+
+    if not args.outfile:
+        sys.exit("Error: output CSV file must be specified with -o/--outfile")
+
+    outfile = os.path.expanduser(args.outfile)
+    print(f"Output CSV history: {outfile}")
+
+    if not os.path.exists(infile):
+        sys.exit(f"Error: input history file {infile} does not exist!")
+
+    if os.path.exists(outfile) and not args.write:
+        sys.exit(f"Error: output persistent history file {outfile} already exists!")
+
+    real_infile = os.path.realpath(infile)
+    if not os.path.exists(real_infile):
+        sys.exit(
+            f"Error: input history file {infile} is a symlink to {real_infile} which does not exist!"
+        )
+    print(f"Real input file: {real_infile}")
+
+    real_outfile = os.path.realpath(outfile)
+    print(f"Real output file: {real_outfile}")
+
+    # Read input persistent history file.
+    with open(infile, "r", errors="ignore") as f:
+        histdata = f.readlines()
+
+    outrows = []
+    bad_count = 0
+    bad_hostname_count = 0
+    bad_time_count = 0
+    for i, inline in enumerate(range(len(histdata))):
+        parts = histdata[inline].strip().split("|")
+        if len(parts) < 3:
+            print(f"Warning: skipping malformed line: {histdata[inline].strip()}")
+            continue
+        # Split only on the first 2 pipes, since the command may contain pipes
+        parts = histdata[inline].strip().split("|", 2)
+        hostname = parts[0].strip()
+        if (
+            hostname == "unknown"
+            or hostname.endswith(".local")
+            or hostname.endswith(".station")
+        ):
+            print(
+                f"Warning: skipping line {i} with invalid hostname: {histdata[inline].strip()}"
+            )
+            bad_count += 1
+            bad_hostname_count += 1
+            # continue
+        date_time = parts[1].strip()
+        # Convert datetime string to seconds since epoch
+        try:
+            dt_obj = datetime.strptime(date_time, "%Y-%m-%d %H:%M:%S")
+            timestamp = int(dt_obj.timestamp())
+        except ValueError:
+            print(
+                f"Warning: skipping line {i} with invalid datetime format: {histdata[inline].strip()}"
+            )
+            bad_count += 1
+            bad_time_count += 1
+            continue
+        # Command is everything after the second pipe to the end of the line.
+        command = parts[2].strip()
+        # Set the duration to zero always, as we don't have that info.
+        outrows.append((timestamp, 0, hostname, command))
+
+    # TODO uniq the records?
+    # TODO Sort by the date field, ascending?
+
+    if args.write:
+        savefilename = f"{real_outfile}"
+        print(f"Writing {savefilename} ...")
+        with open(f"{savefilename}", "w") as f:
+            writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
+            # Write header row.
+            writer.writerow(["timestamp", "duration", "hostname", "command"])
+            # Write outrows to CSV file.
+            for row in outrows:
+                writer.writerow(row)
+
+    print(f"Processed {len(outrows)} valid history lines.")
+    if bad_count > 0:
+        print(f"Skipped {bad_count} bad lines:")
+        if bad_hostname_count > 0:
+            print(f"  {bad_hostname_count} lines with bad hostnames.")
+        if bad_time_count > 0:
+            print(f"  {bad_time_count} lines with bad date/time formats.")
+
+
+if __name__ == "__main__":
+    main()

From f0d169f64b12597999ec3cff30fb5dd234354860 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 10:50:14 +0000
Subject: [PATCH 725/973] Add atuin eval to zshrc.

---
 chezmoi/dot_zshrc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/dot_zshrc b/chezmoi/dot_zshrc
index 8c354856..37c66310 100644
--- a/chezmoi/dot_zshrc
+++ b/chezmoi/dot_zshrc
@@ -219,3 +219,4 @@ compinit
 
 # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
 [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+eval "$(atuin init zsh)"

From f3fe508c09702aa47bad97262b59149d45f0d6b1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 12:55:20 +0000
Subject: [PATCH 726/973] Update crontab: disable PH.

---
 crontab.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/crontab.txt b/crontab.txt
index e1a977a4..0b82218f 100644
--- a/crontab.txt
+++ b/crontab.txt
@@ -1,3 +1,3 @@
-0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >/dev/null 2>&1 || true # >> ~/ph.log 2>&1
+#0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >> ~/ph.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1

From 6ba9b0681c3e66aa5fd62c6a812ce772df0eb10a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:13:51 +0000
Subject: [PATCH 727/973] Add atuin config.

---
 .../private_atuin/private_config.toml         | 289 ++++++++++++++++++
 1 file changed, 289 insertions(+)
 create mode 100644 chezmoi/private_dot_config/private_atuin/private_config.toml

diff --git a/chezmoi/private_dot_config/private_atuin/private_config.toml b/chezmoi/private_dot_config/private_atuin/private_config.toml
new file mode 100644
index 00000000..c40461ab
--- /dev/null
+++ b/chezmoi/private_dot_config/private_atuin/private_config.toml
@@ -0,0 +1,289 @@
+## where to store your database, default is your system data directory
+## linux/mac: ~/.local/share/atuin/history.db
+## windows: %USERPROFILE%/.local/share/atuin/history.db
+# db_path = "~/.history.db"
+
+## where to store your encryption key, default is your system data directory
+## linux/mac: ~/.local/share/atuin/key
+## windows: %USERPROFILE%/.local/share/atuin/key
+# key_path = "~/.key"
+
+## where to store your auth session token, default is your system data directory
+## linux/mac: ~/.local/share/atuin/session
+## windows: %USERPROFILE%/.local/share/atuin/session
+# session_path = "~/.session"
+
+## date format used, either "us" or "uk"
+# dialect = "us"
+
+## default timezone to use when displaying time
+## either "l", "local" to use the system's current local timezone, or an offset
+## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
+## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
+# timezone = "local"
+
+## enable or disable automatic sync
+# auto_sync = true
+
+## enable or disable automatic update checks
+# update_check = true
+
+## address of the sync server
+# sync_address = "https://api.atuin.sh"
+
+## how often to sync history. note that this is only triggered when a command
+## is ran, so sync intervals may well be longer
+## set it to 0 to sync after every command
+# sync_frequency = "10m"
+
+## which search mode to use
+## possible values: prefix, fulltext, fuzzy, skim
+# search_mode = "fuzzy"
+
+## which filter mode to use by default
+## possible values: "global", "host", "session", "session-preload", "directory", "workspace"
+## consider using search.filters to customize the enablement and order of filter modes
+# filter_mode = "global"
+
+## With workspace filtering enabled, Atuin will filter for commands executed
+## in any directory within a git repository tree (default: false).
+##
+## To use workspace mode by default when available, set this to true and
+## set filter_mode to "workspace" or leave it unspecified and 
+## set search.filters to include "workspace" before other filter modes.
+# workspaces = false
+
+## which filter mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "filter_mode"
+## leave unspecified to use same mode set in "filter_mode"
+# filter_mode_shell_up_key_binding = "global"
+
+## which search mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "search_mode"
+## leave unspecified to use same mode set in "search_mode"
+# search_mode_shell_up_key_binding = "fuzzy"
+
+## which style to use
+## possible values: auto, full, compact
+# style = "auto"
+
+## the maximum number of lines the interface should take up
+## set it to 0 to always go full screen
+# inline_height = 0
+
+## the maximum number of lines the interface should take up
+## when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "inline_height"
+# inline_height_shell_up_key_binding = 0
+
+## Invert the UI - put the search bar at the top , Default to `false`
+# invert = false
+
+## enable or disable showing a preview of the selected command
+## useful when the command is longer than the terminal width and is cut off
+# show_preview = true
+
+## what to do when the escape key is pressed when searching
+## possible values: return-original, return-query
+# exit_mode = "return-original"
+
+## possible values: emacs, subl
+# word_jump_mode = "emacs"
+
+## characters that count as a part of a word
+# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+
+## number of context lines to show when scrolling by pages
+# scroll_context_lines = 1
+
+## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
+## alt-0 .. alt-9
+# ctrl_n_shortcuts = false
+
+## Show numeric shortcuts (1..9) beside list items in the TUI
+## set to false to hide the moving numbers if you find them distracting
+# show_numeric_shortcuts = true
+
+## default history list format - can also be specified with the --format arg
+# history_format = "{time}\t{command}\t{duration}"
+
+## prevent commands matching any of these regexes from being written to history.
+## Note that these regular expressions are unanchored, i.e. if they don't start
+## with ^ or end with $, they'll match anywhere in the command.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# history_filter = [
+#   "^secret-cmd",
+#   "^innocuous-cmd .*--secret=.+",
+# ]
+
+## prevent commands run with cwd matching any of these regexes from being written
+## to history. Note that these regular expressions are unanchored, i.e. if they don't
+## start with ^ or end with $, they'll match anywhere in CWD.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# cwd_filter = [
+#   "^/very/secret/area",
+# ]
+
+## Configure the maximum height of the preview to show.
+## Useful when you have long scripts in your history that you want to distinguish
+## by more than the first few lines.
+# max_preview_height = 4
+
+## Configure whether or not to show the help row, which includes the current Atuin
+## version (and whether an update is available), a keymap hint, and the total
+## amount of commands in your history.
+# show_help = true
+
+## Configure whether or not to show tabs for search and inspect
+# show_tabs = true
+
+## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
+## tab, such as Search or Inspector, and other tabs you may wish to see. This will
+## only be hidden if there are fewer than this count of lines available, and does not affect the use
+## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
+## This is ignored except in `compact` mode.
+# auto_hide_height = 8
+
+## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
+## 1. AWS key id
+## 2. Github pat (old and new)
+## 3. Slack oauth tokens (bot, user)
+## 4. Slack webhooks
+## 5. Stripe live/test keys
+# secrets_filter = true
+
+## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
+# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
+enter_accept = true
+
+## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line.
+# command_chaining = false
+
+## Defaults to "emacs".  This specifies the keymap on the startup of `atuin
+## search`.  If this is set to "auto", the startup keymap mode in the Atuin
+## search is automatically selected based on the shell's keymap where the
+## keybinding is defined.  If this is set to "emacs", "vim-insert", or
+## "vim-normal", the startup keymap mode in the Atuin search is forced to be
+## the specified one.
+# keymap_mode = "auto"
+
+## Cursor style in each keymap mode.  If specified, the cursor style is changed
+## in entering the cursor shape.  Available values are "default" and
+## "{blink,steady}-{block,underline,bar}".
+# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
+
+# network_connect_timeout = 5
+# network_timeout = 5
+
+## Timeout (in seconds) for acquiring a local database connection (sqlite)
+# local_timeout = 5
+
+## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
+## Alternatively, set env NO_MOTION=true
+# prefers_reduced_motion = false
+
+[stats]
+## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
+# common_subcommands = [
+#   "apt",
+#   "cargo",
+#   "composer",
+#   "dnf",
+#   "docker",
+#   "dotnet",
+#   "git",
+#   "go",
+#   "ip",
+#   "jj",
+#   "kubectl",
+#   "nix",
+#   "nmcli",
+#   "npm",
+#   "pecl",
+#   "pnpm",
+#   "podman",
+#   "port",
+#   "systemctl",
+#   "tmux",
+#   "yarn",
+# ]
+
+## Set commands that should be totally stripped and ignored from stats
+# common_prefix = ["sudo"]
+
+## Set commands that will be completely ignored from stats
+# ignored_commands = [
+#   "cd",
+#   "ls",
+#   "vi"
+# ]
+
+[keys]
+# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
+# scroll_exits = true
+# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character
+# exit_past_line_start = true
+# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
+# accept_past_line_end = true
+# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
+# accept_past_line_start = false
+# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line.
+# accept_with_backspace = false
+
+[sync]
+# Enable sync v2 by default
+# This ensures that sync v2 is enabled for new installs only
+# In a later release it will become the default across the board
+records = true
+
+[preview]
+## which preview strategy to use to calculate the preview height (respects max_preview_height).
+## possible values: auto, static
+## auto: length of the selected command.
+## static: length of the longest command stored in the history.
+## fixed: use max_preview_height as fixed height.
+# strategy = "auto"
+
+[daemon]
+## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
+# enabled = false
+
+## How often the daemon should sync in seconds
+# sync_frequency = 300
+
+## The path to the unix socket used by the daemon (on unix systems)
+## linux/mac: ~/.local/share/atuin/atuin.sock
+## windows: Not Supported
+# socket_path = "~/.local/share/atuin/atuin.sock"
+
+## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
+## linux: false
+## mac/windows: Not Supported
+# systemd_socket = false
+
+## The port that should be used for TCP on non unix systems
+# tcp_port = 8889
+
+# [theme]
+## Color theme to use for rendering in the terminal.
+## There are some built-in themes, including the base theme ("default"),
+## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
+## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
+## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
+## the string values as lowercase entries from this list:
+##    https://ogeon.github.io/docs/palette/master/palette/named/index.html
+## If you provide a custom theme file, it should be  called "NAME.toml" and the theme below
+## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
+# name = "autumn"
+
+## Whether the theme manager should output normal or extra information to help fix themes.
+## Boolean, true or false. If unset, left up to the theme manager.
+# debug = true
+
+[search]
+## The list of enabled filter modes, in order of priority.
+## The "workspace" mode is skipped when not in a workspace or workspaces = false.
+## Default filter mode can be overridden with the filter_mode setting.
+# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]

From 2edde8647513f6ff14f82e417a0864811cae57e1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:18:35 +0000
Subject: [PATCH 728/973] Update atuin config.

---
 chezmoi/private_dot_config/private_atuin/private_config.toml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_atuin/private_config.toml b/chezmoi/private_dot_config/private_atuin/private_config.toml
index c40461ab..bcc6761a 100644
--- a/chezmoi/private_dot_config/private_atuin/private_config.toml
+++ b/chezmoi/private_dot_config/private_atuin/private_config.toml
@@ -15,6 +15,7 @@
 
 ## date format used, either "us" or "uk"
 # dialect = "us"
+dialect = "uk"
 
 ## default timezone to use when displaying time
 ## either "l", "local" to use the system's current local timezone, or an offset
@@ -23,7 +24,7 @@
 # timezone = "local"
 
 ## enable or disable automatic sync
-# auto_sync = true
+auto_sync = true
 
 ## enable or disable automatic update checks
 # update_check = true
@@ -57,6 +58,7 @@
 ## the accepted values are identical to those of "filter_mode"
 ## leave unspecified to use same mode set in "filter_mode"
 # filter_mode_shell_up_key_binding = "global"
+filter_mode_shell_up_key_binding = "directory"
 
 ## which search mode to use when atuin is invoked from a shell up-key binding
 ## the accepted values are identical to those of "search_mode"
@@ -106,6 +108,7 @@
 
 ## default history list format - can also be specified with the --format arg
 # history_format = "{time}\t{command}\t{duration}"
+history_format = "{directory}\t{time}\t{command}\t{duration}"
 
 ## prevent commands matching any of these regexes from being written to history.
 ## Note that these regular expressions are unanchored, i.e. if they don't start

From e30af17e9493d237ceb47e87996e4a6a98cf0fa3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:22:04 +0000
Subject: [PATCH 729/973] Add template to set fish as default shell.

---
 ...e_after_configure-set-fish-as-default-shell.sh.tmpl | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl

diff --git a/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl b/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl
new file mode 100644
index 00000000..7c0a2ab8
--- /dev/null
+++ b/chezmoi/run_once_after_configure-set-fish-as-default-shell.sh.tmpl
@@ -0,0 +1,10 @@
+#!{{ lookPath "sh" }}
+
+{{ if eq .chezmoi.os "darwin" -}}
+
+grep "fish" /etc/shells >/dev/null || echo /opt/homebrew/bin/fish | cat - /etc/shells | sudo tee /etc/shells > /dev/null
+
+sudo chsh -s /opt/homebrew/bin/fish
+chsh -s /opt/homebrew/bin/fish
+
+{{ end -}}

From 0064d9510b3f57c4a98b0a0bb6d2948c4913608e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:26:02 +0000
Subject: [PATCH 730/973] Add base fish config.

---
 .../private_fish/completions/.keep            |  0
 .../private_fish/conf.d/.keep                 |  0
 .../private_fish/config.fish                  | 17 ++++++++
 .../private_fish/functions/.keep              |  0
 .../private_fish/private_fish_variables       | 40 +++++++++++++++++++
 5 files changed, 57 insertions(+)
 create mode 100644 chezmoi/private_dot_config/private_fish/completions/.keep
 create mode 100644 chezmoi/private_dot_config/private_fish/conf.d/.keep
 create mode 100644 chezmoi/private_dot_config/private_fish/config.fish
 create mode 100644 chezmoi/private_dot_config/private_fish/functions/.keep
 create mode 100644 chezmoi/private_dot_config/private_fish/private_fish_variables

diff --git a/chezmoi/private_dot_config/private_fish/completions/.keep b/chezmoi/private_dot_config/private_fish/completions/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/private_dot_config/private_fish/conf.d/.keep b/chezmoi/private_dot_config/private_fish/conf.d/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
new file mode 100644
index 00000000..62c4c189
--- /dev/null
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -0,0 +1,17 @@
+if status is-interactive
+    # Commands to run in interactive sessions can go here
+    starship init fish | source
+    set -x ATUIN_NOBIND true
+    atuin init fish | source
+    # Atuin keybindings to suppress -k warning
+    bind ctrl-r _atuin_search
+    bind up _atuin_bind_up
+    bind \eOA _atuin_bind_up
+    bind \e\[A _atuin_bind_up
+    bind -M insert ctrl-r _atuin_search
+    bind -M insert up _atuin_bind_up
+    bind -M insert \eOA _atuin_bind_up
+    bind -M insert \e\[A _atuin_bind_up
+    source ~/.sensitive
+    eval (zellij setup --generate-auto-start fish | string collect)
+end
diff --git a/chezmoi/private_dot_config/private_fish/functions/.keep b/chezmoi/private_dot_config/private_fish/functions/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
new file mode 100644
index 00000000..99c2bd89
--- /dev/null
+++ b/chezmoi/private_dot_config/private_fish/private_fish_variables
@@ -0,0 +1,40 @@
+# This file contains fish universal variable definitions.
+# VERSION: 3.0
+SETUVAR __fish_initialized:3800
+SETUVAR fish_color_autosuggestion:brblack
+SETUVAR fish_color_cancel:\x2dr
+SETUVAR fish_color_command:normal
+SETUVAR fish_color_comment:red
+SETUVAR fish_color_cwd:green
+SETUVAR fish_color_cwd_root:red
+SETUVAR fish_color_end:green
+SETUVAR fish_color_error:brred
+SETUVAR fish_color_escape:brcyan
+SETUVAR fish_color_history_current:\x2d\x2dbold
+SETUVAR fish_color_host:normal
+SETUVAR fish_color_host_remote:yellow
+SETUVAR fish_color_normal:normal
+SETUVAR fish_color_operator:brcyan
+SETUVAR fish_color_param:cyan
+SETUVAR fish_color_quote:yellow
+SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
+SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
+SETUVAR fish_color_selection:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
+SETUVAR fish_color_status:red
+SETUVAR fish_color_user:brgreen
+SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_key_bindings:fish_default_key_bindings
+SETUVAR fish_pager_color_background:\x1d
+SETUVAR fish_pager_color_completion:normal
+SETUVAR fish_pager_color_description:yellow\x1e\x2di
+SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
+SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan\x1e\x2d\x2dbold
+SETUVAR fish_pager_color_secondary_background:\x1d
+SETUVAR fish_pager_color_secondary_completion:\x1d
+SETUVAR fish_pager_color_secondary_description:\x1d
+SETUVAR fish_pager_color_secondary_prefix:\x1d
+SETUVAR fish_pager_color_selected_background:\x2dr
+SETUVAR fish_pager_color_selected_completion:\x1d
+SETUVAR fish_pager_color_selected_description:\x1d
+SETUVAR fish_pager_color_selected_prefix:\x1d
+SETUVAR fish_user_paths:/Applications/Ghostty\x2eapp/Contents/MacOS

From 0a5d192795ae9016c3d5642d4157e30f2b349602 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:27:20 +0000
Subject: [PATCH 731/973] fish: Remove zellij, comment out .sensitive.

---
 chezmoi/private_dot_config/private_fish/config.fish | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 62c4c189..d5851b5b 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -12,6 +12,5 @@ if status is-interactive
     bind -M insert up _atuin_bind_up
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
-    source ~/.sensitive
-    eval (zellij setup --generate-auto-start fish | string collect)
+    # source ~/.sensitive
 end

From 8e95476f98fa8517e3eb311dd6055d79a6e3c250 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:38:51 +0000
Subject: [PATCH 732/973] fish: add Homebrew setup.

---
 chezmoi/private_dot_config/private_fish/config.fish | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index d5851b5b..afb343dd 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -1,3 +1,7 @@
+/opt/homebrew/bin/brew shellenv | source
+
+fish_add_path $HOME/bin
+
 if status is-interactive
     # Commands to run in interactive sessions can go here
     starship init fish | source

From ad3aa29aa61e76c65fce0bac70adce5130cf083f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:50:22 +0000
Subject: [PATCH 733/973] Add Cargo bin to paths.

---
 chezmoi/private_dot_config/private_fish/config.fish | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index afb343dd..4ffa09a9 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -1,6 +1,7 @@
 /opt/homebrew/bin/brew shellenv | source
 
 fish_add_path $HOME/bin
+fish_add_path $CARGO_HOME/bin
 
 if status is-interactive
     # Commands to run in interactive sessions can go here

From 4d1b91222680315da493bf8ba27f64eb461311e7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:51:03 +0000
Subject: [PATCH 734/973] Remove Ghostty var.

---
 chezmoi/private_dot_config/private_fish/private_fish_variables | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
index 99c2bd89..ac3b6add 100644
--- a/chezmoi/private_dot_config/private_fish/private_fish_variables
+++ b/chezmoi/private_dot_config/private_fish/private_fish_variables
@@ -37,4 +37,3 @@ SETUVAR fish_pager_color_selected_background:\x2dr
 SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/Applications/Ghostty\x2eapp/Contents/MacOS

From 1acd4fbef7a89d6c6779957adb7dbb64b08d0136 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 13:56:31 +0000
Subject: [PATCH 735/973] Prune shellpaths. This is semi-obsolete now.

---
 shellpaths | 50 --------------------------------------------------
 1 file changed, 50 deletions(-)

diff --git a/shellpaths b/shellpaths
index a78da022..929ffc12 100644
--- a/shellpaths
+++ b/shellpaths
@@ -4,66 +4,16 @@
 # Shell agnostic path setup
 ########################################################################
 
-# Jim's Scripts
 export PATH=$PATH:.
 export PATH=$PATH:~/bin
 export PATH=$PATH:~/dotfiles/scripts
-export PATH=$PATH:~/utils
-export PATH=$PATH:~/dotfiles/git/git-identify/bin
 export PATH=$PATH:~/.cargo/bin
 export PATH=$PATH:$GOPATH/bin
 export PATH=$PATH:$GOROOT/bin
-#export PATH=~/pebble-dev/sdk/bin:$PATH
 export PATH=$PATH:~/adr-tools/src
-
-# Path setup.
-#export PATH=
-#pathmunge ${HOME}/bin
-#pathmunge ${HOME}/utils
-#pathmunge /usr/bin
-#pathmunge /bin
-#pathmunge /usr/sbin
-#pathmunge /sbin
-
-# Brew
 export PATH="/usr/local/sbin:$PATH"
 export PATH="/opt/homebrew/sbin:$PATH"
 export PATH="/opt/homebrew/bin:$PATH"
-# Path setup for Brew Python.
-#export PATH="/usr/local/opt/python/libexec/bin:$PATH"
-
-# Dev frameworks
-#export PATH=$PATH:$ANT_HOME/bin
-#export PATH=$PATH:$M2_HOME/bin
-#export PATH=$PATH:$GROOVY_HOME/bin
-#export PATH=$PATH:$GRAILS_HOME/bin
-#export PATH=$PATH:$NEXUS_HOME/bin/jsw/macosx-universal-64
-#export PATH=$PATH:$JMETER_HOME/bin
-#export PATH=$PATH:$JRUBY_HOME/bin
-#export PATH=$PATH:$SOAPUI_HOME/bin
-#export PATH=$PATH:$APPENGINE_HOME/bin
-
-# Dev
-#export PATH=$PATH:/Applications/Dev/apache-tomcat/bin
-#export PATH=$PATH:/Applications/Dev/apache-maven/bin
-#export PATH=$PATH:/Applications/Dev/sonar/bin/macosx-universal-64
-#export PATH=$PATH:/Library/PostgreSQL/8.4/bin
-#export PATH=$PATH:/Applications/Dev/gradle/bin
-#export PATH=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands:$PATH
-#export PATH=~/.gem/ruby/1.8/bin:$PATH             #For showoff
-#export PATH=$PATH:~/.cljr/bin
-# export PATH=~/.rbenv/bin:$PATH
-
-# Haskell
-# export PATH=$PATH:~/.cabal/bin
-
-# Node JS Packages (from Brew Install of Node and NPM)
-# PATH=$PATH:/usr/local/share/npm/bin
-
 export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
-
-# Put goenv on path.
 export PATH="$GOENV_ROOT/bin:$PATH"
-
 export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
-

From 395d2606e2ca6ba02c3263e2788d5a2d969d54ed Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:23:13 +0000
Subject: [PATCH 736/973] Add Tide config.

---
 .../private_fish/private_fish_variables       | 168 ++++++++++++++++++
 1 file changed, 168 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
index ac3b6add..baa9c784 100644
--- a/chezmoi/private_dot_config/private_fish/private_fish_variables
+++ b/chezmoi/private_dot_config/private_fish/private_fish_variables
@@ -1,6 +1,14 @@
 # This file contains fish universal variable definitions.
 # VERSION: 3.0
+SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true
 SETUVAR __fish_initialized:3800
+SETUVAR _fisher_ilancosman_2F_tide_40_v6_files:\x7e/\x2econfig/fish/functions/_tide_1_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_2_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_cache_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_detect_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_find_and_remove\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_fish_colorize\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_aws\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_bun\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_character\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_cmd_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_crystal\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_direnv\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_distrobox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_docker\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_elixir\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_gcloud\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_go\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_java\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_kubectl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_nix_shell\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_node\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_php\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_private_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_pulumi\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_python\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_ruby\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_rustc\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_shlvl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_terraform\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_toolbox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_vi_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_zig\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_parent_dirs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_print_item\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_remove_unusable_items\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_bug\x2dreport\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_configure\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_reload\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/tide\x1e\x7e/\x2econfig/fish/functions/tide\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_tide_init\x2efish\x1e\x7e/\x2econfig/fish/completions/tide\x2efish
+SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
+SETUVAR _fisher_plugins:jorgebucaran/fisher\x1eilancosman/tide\x40v6
+SETUVAR _fisher_upgraded_to_4_4:\x1d
+SETUVAR _tide_left_items:vi_mode\x1eos\x1epwd\x1egit
+SETUVAR _tide_prompt_28185:\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b49m\x1b\x5b38\x3b2\x3b214\x3b214\x3b214m\x1b\x5b48\x3b2\x3b51\x3b51\x3b51m\x20\uf179\x20\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\ue0b0\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b52\x3b101\x3b164m\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\ue0b0\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\x20\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\uf1d3\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0mmaster\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\u21e36\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\x3f1\x20\x1b\x5b38\x3b2\x3b196\x3b160\x3b0m\x1b\x5b49m\ue0b0\x1e\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m\ue0b2\x1b\x5b38\x3b2\x3b78\x3b154\x3b6m\x1b\x5b48\x3b2\x3b46\x3b52\x3b54m\x20\u2714\x20\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m
+SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1erustc\x1ejava\x1epulumi\x1eruby\x1ego\x1ekubectl\x1eterraform\x1eaws\x1ezig
 SETUVAR fish_color_autosuggestion:brblack
 SETUVAR fish_color_cancel:\x2dr
 SETUVAR fish_color_command:normal
@@ -37,3 +45,163 @@ SETUVAR fish_pager_color_selected_background:\x2dr
 SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
+SETUVAR fish_user_paths:/Users/james\x2elawton/\x2ecargo/bin\x1e/Users/james\x2elawton/bin
+SETUVAR tide_aws_bg_color:FF9900
+SETUVAR tide_aws_color:232F3E
+SETUVAR tide_aws_icon:\uf270
+SETUVAR tide_bun_bg_color:FBF0DF
+SETUVAR tide_bun_color:14151A
+SETUVAR tide_bun_icon:\U000f0cd3
+SETUVAR tide_character_color:5FD700
+SETUVAR tide_character_color_failure:FF0000
+SETUVAR tide_character_icon:\u276f
+SETUVAR tide_character_vi_icon_default:\u276e
+SETUVAR tide_character_vi_icon_replace:\u25b6
+SETUVAR tide_character_vi_icon_visual:V
+SETUVAR tide_cmd_duration_bg_color:C4A000
+SETUVAR tide_cmd_duration_color:000000
+SETUVAR tide_cmd_duration_decimals:0
+SETUVAR tide_cmd_duration_icon:\uf252
+SETUVAR tide_cmd_duration_threshold:3000
+SETUVAR tide_context_always_display:false
+SETUVAR tide_context_bg_color:444444
+SETUVAR tide_context_color_default:D7AF87
+SETUVAR tide_context_color_root:D7AF00
+SETUVAR tide_context_color_ssh:D7AF87
+SETUVAR tide_context_hostname_parts:1
+SETUVAR tide_crystal_bg_color:FFFFFF
+SETUVAR tide_crystal_color:000000
+SETUVAR tide_crystal_icon:\ue62f
+SETUVAR tide_direnv_bg_color:D7AF00
+SETUVAR tide_direnv_bg_color_denied:FF0000
+SETUVAR tide_direnv_color:000000
+SETUVAR tide_direnv_color_denied:000000
+SETUVAR tide_direnv_icon:\u25bc
+SETUVAR tide_distrobox_bg_color:FF00FF
+SETUVAR tide_distrobox_color:000000
+SETUVAR tide_distrobox_icon:\U000f01a7
+SETUVAR tide_docker_bg_color:2496ED
+SETUVAR tide_docker_color:000000
+SETUVAR tide_docker_default_contexts:default\x1ecolima
+SETUVAR tide_docker_icon:\uf308
+SETUVAR tide_elixir_bg_color:4E2A8E
+SETUVAR tide_elixir_color:000000
+SETUVAR tide_elixir_icon:\ue62d
+SETUVAR tide_gcloud_bg_color:4285F4
+SETUVAR tide_gcloud_color:000000
+SETUVAR tide_gcloud_icon:\U000f02ad
+SETUVAR tide_git_bg_color:4E9A06
+SETUVAR tide_git_bg_color_unstable:C4A000
+SETUVAR tide_git_bg_color_urgent:CC0000
+SETUVAR tide_git_color_branch:000000
+SETUVAR tide_git_color_conflicted:000000
+SETUVAR tide_git_color_dirty:000000
+SETUVAR tide_git_color_operation:000000
+SETUVAR tide_git_color_staged:000000
+SETUVAR tide_git_color_stash:000000
+SETUVAR tide_git_color_untracked:000000
+SETUVAR tide_git_color_upstream:000000
+SETUVAR tide_git_icon:\uf1d3
+SETUVAR tide_git_truncation_length:24
+SETUVAR tide_git_truncation_strategy:\x1d
+SETUVAR tide_go_bg_color:00ACD7
+SETUVAR tide_go_color:000000
+SETUVAR tide_go_icon:\ue627
+SETUVAR tide_java_bg_color:ED8B00
+SETUVAR tide_java_color:000000
+SETUVAR tide_java_icon:\ue256
+SETUVAR tide_jobs_bg_color:444444
+SETUVAR tide_jobs_color:4E9A06
+SETUVAR tide_jobs_icon:\uf013
+SETUVAR tide_jobs_number_threshold:1000
+SETUVAR tide_kubectl_bg_color:326CE5
+SETUVAR tide_kubectl_color:000000
+SETUVAR tide_kubectl_icon:\U000f10fe
+SETUVAR tide_left_prompt_frame_enabled:false
+SETUVAR tide_left_prompt_items:vi_mode\x1eos\x1epwd\x1egit
+SETUVAR tide_left_prompt_prefix:
+SETUVAR tide_left_prompt_separator_diff_color:\ue0b0
+SETUVAR tide_left_prompt_separator_same_color:\ue0b1
+SETUVAR tide_left_prompt_suffix:\ue0b0
+SETUVAR tide_nix_shell_bg_color:7EBAE4
+SETUVAR tide_nix_shell_color:000000
+SETUVAR tide_nix_shell_icon:\uf313
+SETUVAR tide_node_bg_color:44883E
+SETUVAR tide_node_color:000000
+SETUVAR tide_node_icon:\ue24f
+SETUVAR tide_os_bg_color:333333
+SETUVAR tide_os_color:D6D6D6
+SETUVAR tide_os_icon:\uf179
+SETUVAR tide_php_bg_color:617CBE
+SETUVAR tide_php_color:000000
+SETUVAR tide_php_icon:\ue608
+SETUVAR tide_private_mode_bg_color:F1F3F4
+SETUVAR tide_private_mode_color:000000
+SETUVAR tide_private_mode_icon:\U000f05f9
+SETUVAR tide_prompt_add_newline_before:false
+SETUVAR tide_prompt_color_frame_and_connection:6C6C6C
+SETUVAR tide_prompt_color_separator_same_color:949494
+SETUVAR tide_prompt_icon_connection:\x20
+SETUVAR tide_prompt_min_cols:34
+SETUVAR tide_prompt_pad_items:true
+SETUVAR tide_prompt_transient_enabled:true
+SETUVAR tide_pulumi_bg_color:F7BF2A
+SETUVAR tide_pulumi_color:000000
+SETUVAR tide_pulumi_icon:\uf1b2
+SETUVAR tide_pwd_bg_color:3465A4
+SETUVAR tide_pwd_color_anchors:E4E4E4
+SETUVAR tide_pwd_color_dirs:E4E4E4
+SETUVAR tide_pwd_color_truncated_dirs:BCBCBC
+SETUVAR tide_pwd_icon:\uf07c
+SETUVAR tide_pwd_icon_home:\uf015
+SETUVAR tide_pwd_icon_unwritable:\uf023
+SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1ebun\x2elockb\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig
+SETUVAR tide_python_bg_color:444444
+SETUVAR tide_python_color:00AFAF
+SETUVAR tide_python_icon:\U000f0320
+SETUVAR tide_right_prompt_frame_enabled:false
+SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1ebun\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig
+SETUVAR tide_right_prompt_prefix:\ue0b2
+SETUVAR tide_right_prompt_separator_diff_color:\ue0b2
+SETUVAR tide_right_prompt_separator_same_color:\ue0b3
+SETUVAR tide_right_prompt_suffix:
+SETUVAR tide_ruby_bg_color:B31209
+SETUVAR tide_ruby_color:000000
+SETUVAR tide_ruby_icon:\ue23e
+SETUVAR tide_rustc_bg_color:F74C00
+SETUVAR tide_rustc_color:000000
+SETUVAR tide_rustc_icon:\ue7a8
+SETUVAR tide_shlvl_bg_color:808000
+SETUVAR tide_shlvl_color:000000
+SETUVAR tide_shlvl_icon:\uf120
+SETUVAR tide_shlvl_threshold:1
+SETUVAR tide_status_bg_color:2E3436
+SETUVAR tide_status_bg_color_failure:CC0000
+SETUVAR tide_status_color:4E9A06
+SETUVAR tide_status_color_failure:FFFF00
+SETUVAR tide_status_icon:\u2714
+SETUVAR tide_status_icon_failure:\u2718
+SETUVAR tide_terraform_bg_color:800080
+SETUVAR tide_terraform_color:000000
+SETUVAR tide_terraform_icon:\U000f1062
+SETUVAR tide_time_bg_color:D3D7CF
+SETUVAR tide_time_color:000000
+SETUVAR tide_time_format:
+SETUVAR tide_toolbox_bg_color:613583
+SETUVAR tide_toolbox_color:000000
+SETUVAR tide_toolbox_icon:\ue24f
+SETUVAR tide_vi_mode_bg_color_default:949494
+SETUVAR tide_vi_mode_bg_color_insert:87AFAF
+SETUVAR tide_vi_mode_bg_color_replace:87AF87
+SETUVAR tide_vi_mode_bg_color_visual:FF8700
+SETUVAR tide_vi_mode_color_default:000000
+SETUVAR tide_vi_mode_color_insert:000000
+SETUVAR tide_vi_mode_color_replace:000000
+SETUVAR tide_vi_mode_color_visual:000000
+SETUVAR tide_vi_mode_icon_default:D
+SETUVAR tide_vi_mode_icon_insert:I
+SETUVAR tide_vi_mode_icon_replace:R
+SETUVAR tide_vi_mode_icon_visual:V
+SETUVAR tide_zig_bg_color:F7A41D
+SETUVAR tide_zig_color:000000
+SETUVAR tide_zig_icon:\ue6a9

From 8a2f3915e8de26f57782be790c36a6cd5692f263 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:25:04 +0000
Subject: [PATCH 737/973] Pull in work shellvars.

---
 chezmoi/private_dot_config/private_fish/config.fish | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 4ffa09a9..141fdbce 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -18,4 +18,5 @@ if status is-interactive
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
     # source ~/.sensitive
+    source ~/dotfiles/shellvars-work
 end

From 5a0a4da0d160b7fcbd2cdf17f14a75648d19b488 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:34:45 +0000
Subject: [PATCH 738/973] Update tide config.

---
 chezmoi/private_dot_config/private_fish/private_fish_variables | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
index baa9c784..c1a9b60d 100644
--- a/chezmoi/private_dot_config/private_fish/private_fish_variables
+++ b/chezmoi/private_dot_config/private_fish/private_fish_variables
@@ -7,7 +7,7 @@ SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fish
 SETUVAR _fisher_plugins:jorgebucaran/fisher\x1eilancosman/tide\x40v6
 SETUVAR _fisher_upgraded_to_4_4:\x1d
 SETUVAR _tide_left_items:vi_mode\x1eos\x1epwd\x1egit
-SETUVAR _tide_prompt_28185:\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b49m\x1b\x5b38\x3b2\x3b214\x3b214\x3b214m\x1b\x5b48\x3b2\x3b51\x3b51\x3b51m\x20\uf179\x20\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\ue0b0\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b52\x3b101\x3b164m\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\ue0b0\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\x20\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\uf1d3\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0mmaster\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\u21e36\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\x3f1\x20\x1b\x5b38\x3b2\x3b196\x3b160\x3b0m\x1b\x5b49m\ue0b0\x1e\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m\ue0b2\x1b\x5b38\x3b2\x3b78\x3b154\x3b6m\x1b\x5b48\x3b2\x3b46\x3b52\x3b54m\x20\u2714\x20\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m
+SETUVAR _tide_prompt_28185:\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b49m\x1b\x5b38\x3b2\x3b214\x3b214\x3b214m\x1b\x5b48\x3b2\x3b51\x3b51\x3b51m\x20\uf179\x20\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\ue0b0\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b52\x3b101\x3b164m\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\ue0b0\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\x20\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\uf1d3\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0mmaster\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\x3f1\x20\x1b\x5b38\x3b2\x3b196\x3b160\x3b0m\x1b\x5b49m\ue0b0\x1e\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m\ue0b2\x1b\x5b38\x3b2\x3b78\x3b154\x3b6m\x1b\x5b48\x3b2\x3b46\x3b52\x3b54m\x20\u2714\x20\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m
 SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1erustc\x1ejava\x1epulumi\x1eruby\x1ego\x1ekubectl\x1eterraform\x1eaws\x1ezig
 SETUVAR fish_color_autosuggestion:brblack
 SETUVAR fish_color_cancel:\x2dr

From d39f56fa031139dc5640e3256f313fac31c4f9ce Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:43:09 +0000
Subject: [PATCH 739/973] brew: install fisher.

---
 chezmoi/.chezmoidata/packages.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index a0b70527..87778c72 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -58,6 +58,7 @@ packages:
       - "ffmpeg"
       - "figlet"
       - "fish"
+      - "fisher"
       - "freetype"
       - "fribidi"
       - "fzf"

From a440861b8e4cbe984569de11b1533bbc9c101fa3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:43:34 +0000
Subject: [PATCH 740/973] Use fisher to install tide.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index d614f759..99cee3c9 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -16,3 +16,5 @@ mas {{ .name | quote }}, id: {{ .id }}
 {{ end -}}
 EOF
 {{ end -}}
+
+fisher install IlanCosman/tide@v6

From 442b95e76bfcc1ec20be759c880dde756fe5c0e1 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:46:47 +0000
Subject: [PATCH 741/973] Disable fisher for now, can't run it here.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index 99cee3c9..72f96f39 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -17,4 +17,4 @@ mas {{ .name | quote }}, id: {{ .id }}
 EOF
 {{ end -}}
 
-fisher install IlanCosman/tide@v6
+# command fisher install IlanCosman/tide@v6

From 7f2267bc88c3b9c1da13357bacbd83429d7bcec5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:58:21 +0000
Subject: [PATCH 742/973] Remove starship setup, make sure tide is installed.

---
 chezmoi/private_dot_config/private_fish/config.fish | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 141fdbce..f36da81e 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -4,8 +4,10 @@ fish_add_path $HOME/bin
 fish_add_path $CARGO_HOME/bin
 
 if status is-interactive
+    # Make sure Tide is installed.
+    fisher install IlanCosman/tide@v6
+
     # Commands to run in interactive sessions can go here
-    starship init fish | source
     set -x ATUIN_NOBIND true
     atuin init fish | source
     # Atuin keybindings to suppress -k warning
@@ -17,6 +19,5 @@ if status is-interactive
     bind -M insert up _atuin_bind_up
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
-    # source ~/.sensitive
     source ~/dotfiles/shellvars-work
 end

From 8325e8471ec9576a9f66ee0686ca5dfc19cc7198 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 15:58:41 +0000
Subject: [PATCH 743/973] Remove commented out line.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 2 --
 1 file changed, 2 deletions(-)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index 72f96f39..d614f759 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -16,5 +16,3 @@ mas {{ .name | quote }}, id: {{ .id }}
 {{ end -}}
 EOF
 {{ end -}}
-
-# command fisher install IlanCosman/tide@v6

From 6d4cd654929f125761deb0bbe842e0e01a6b3d2f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 16:32:28 +0000
Subject: [PATCH 744/973] Revert starship removal.

---
 chezmoi/private_dot_config/private_fish/config.fish | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index f36da81e..c572f1fc 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -4,10 +4,8 @@ fish_add_path $HOME/bin
 fish_add_path $CARGO_HOME/bin
 
 if status is-interactive
-    # Make sure Tide is installed.
-    fisher install IlanCosman/tide@v6
-
     # Commands to run in interactive sessions can go here
+    starship init fish | source
     set -x ATUIN_NOBIND true
     atuin init fish | source
     # Atuin keybindings to suppress -k warning

From 4b5609ab6adec9caf9b8e12d744356ce885d94e5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 16:35:23 +0000
Subject: [PATCH 745/973] Remove fisher.

---
 chezmoi/.chezmoidata/packages.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 87778c72..a0b70527 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -58,7 +58,6 @@ packages:
       - "ffmpeg"
       - "figlet"
       - "fish"
-      - "fisher"
       - "freetype"
       - "fribidi"
       - "fzf"

From 57f6d9b8696257ca3a08c0e8cb9d7ffb008de2a4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 16:37:51 +0000
Subject: [PATCH 746/973] Remove tide fish vars.

---
 .../private_fish/private_fish_variables       | 166 ------------------
 1 file changed, 166 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
index c1a9b60d..f67fd04b 100644
--- a/chezmoi/private_dot_config/private_fish/private_fish_variables
+++ b/chezmoi/private_dot_config/private_fish/private_fish_variables
@@ -2,13 +2,6 @@
 # VERSION: 3.0
 SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true
 SETUVAR __fish_initialized:3800
-SETUVAR _fisher_ilancosman_2F_tide_40_v6_files:\x7e/\x2econfig/fish/functions/_tide_1_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_2_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_cache_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_detect_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_find_and_remove\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_fish_colorize\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_aws\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_bun\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_character\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_cmd_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_crystal\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_direnv\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_distrobox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_docker\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_elixir\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_gcloud\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_go\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_java\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_kubectl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_nix_shell\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_node\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_php\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_private_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_pulumi\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_python\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_ruby\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_rustc\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_shlvl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_terraform\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_toolbox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_vi_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_zig\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_parent_dirs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_print_item\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_remove_unusable_items\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_bug\x2dreport\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_configure\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_reload\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/tide\x1e\x7e/\x2econfig/fish/functions/tide\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_tide_init\x2efish\x1e\x7e/\x2econfig/fish/completions/tide\x2efish
-SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
-SETUVAR _fisher_plugins:jorgebucaran/fisher\x1eilancosman/tide\x40v6
-SETUVAR _fisher_upgraded_to_4_4:\x1d
-SETUVAR _tide_left_items:vi_mode\x1eos\x1epwd\x1egit
-SETUVAR _tide_prompt_28185:\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b49m\x1b\x5b38\x3b2\x3b214\x3b214\x3b214m\x1b\x5b48\x3b2\x3b51\x3b51\x3b51m\x20\uf179\x20\x1b\x5b38\x3b2\x3b51\x3b51\x3b51m\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\ue0b0\x1b\x5b48\x3b2\x3b52\x3b101\x3b164m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b52\x3b101\x3b164m\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\ue0b0\x1b\x5b48\x3b2\x3b196\x3b160\x3b0m\x20\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\uf1d3\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0mmaster\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x1b\x5b38\x3b2\x3b0\x3b0\x3b0m\x20\x3f1\x20\x1b\x5b38\x3b2\x3b196\x3b160\x3b0m\x1b\x5b49m\ue0b0\x1e\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m\ue0b2\x1b\x5b38\x3b2\x3b78\x3b154\x3b6m\x1b\x5b48\x3b2\x3b46\x3b52\x3b54m\x20\u2714\x20\x1b\x5b38\x3b2\x3b46\x3b52\x3b54m\x1b\x5b49m
-SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1erustc\x1ejava\x1epulumi\x1eruby\x1ego\x1ekubectl\x1eterraform\x1eaws\x1ezig
 SETUVAR fish_color_autosuggestion:brblack
 SETUVAR fish_color_cancel:\x2dr
 SETUVAR fish_color_command:normal
@@ -46,162 +39,3 @@ SETUVAR fish_pager_color_selected_completion:\x1d
 SETUVAR fish_pager_color_selected_description:\x1d
 SETUVAR fish_pager_color_selected_prefix:\x1d
 SETUVAR fish_user_paths:/Users/james\x2elawton/\x2ecargo/bin\x1e/Users/james\x2elawton/bin
-SETUVAR tide_aws_bg_color:FF9900
-SETUVAR tide_aws_color:232F3E
-SETUVAR tide_aws_icon:\uf270
-SETUVAR tide_bun_bg_color:FBF0DF
-SETUVAR tide_bun_color:14151A
-SETUVAR tide_bun_icon:\U000f0cd3
-SETUVAR tide_character_color:5FD700
-SETUVAR tide_character_color_failure:FF0000
-SETUVAR tide_character_icon:\u276f
-SETUVAR tide_character_vi_icon_default:\u276e
-SETUVAR tide_character_vi_icon_replace:\u25b6
-SETUVAR tide_character_vi_icon_visual:V
-SETUVAR tide_cmd_duration_bg_color:C4A000
-SETUVAR tide_cmd_duration_color:000000
-SETUVAR tide_cmd_duration_decimals:0
-SETUVAR tide_cmd_duration_icon:\uf252
-SETUVAR tide_cmd_duration_threshold:3000
-SETUVAR tide_context_always_display:false
-SETUVAR tide_context_bg_color:444444
-SETUVAR tide_context_color_default:D7AF87
-SETUVAR tide_context_color_root:D7AF00
-SETUVAR tide_context_color_ssh:D7AF87
-SETUVAR tide_context_hostname_parts:1
-SETUVAR tide_crystal_bg_color:FFFFFF
-SETUVAR tide_crystal_color:000000
-SETUVAR tide_crystal_icon:\ue62f
-SETUVAR tide_direnv_bg_color:D7AF00
-SETUVAR tide_direnv_bg_color_denied:FF0000
-SETUVAR tide_direnv_color:000000
-SETUVAR tide_direnv_color_denied:000000
-SETUVAR tide_direnv_icon:\u25bc
-SETUVAR tide_distrobox_bg_color:FF00FF
-SETUVAR tide_distrobox_color:000000
-SETUVAR tide_distrobox_icon:\U000f01a7
-SETUVAR tide_docker_bg_color:2496ED
-SETUVAR tide_docker_color:000000
-SETUVAR tide_docker_default_contexts:default\x1ecolima
-SETUVAR tide_docker_icon:\uf308
-SETUVAR tide_elixir_bg_color:4E2A8E
-SETUVAR tide_elixir_color:000000
-SETUVAR tide_elixir_icon:\ue62d
-SETUVAR tide_gcloud_bg_color:4285F4
-SETUVAR tide_gcloud_color:000000
-SETUVAR tide_gcloud_icon:\U000f02ad
-SETUVAR tide_git_bg_color:4E9A06
-SETUVAR tide_git_bg_color_unstable:C4A000
-SETUVAR tide_git_bg_color_urgent:CC0000
-SETUVAR tide_git_color_branch:000000
-SETUVAR tide_git_color_conflicted:000000
-SETUVAR tide_git_color_dirty:000000
-SETUVAR tide_git_color_operation:000000
-SETUVAR tide_git_color_staged:000000
-SETUVAR tide_git_color_stash:000000
-SETUVAR tide_git_color_untracked:000000
-SETUVAR tide_git_color_upstream:000000
-SETUVAR tide_git_icon:\uf1d3
-SETUVAR tide_git_truncation_length:24
-SETUVAR tide_git_truncation_strategy:\x1d
-SETUVAR tide_go_bg_color:00ACD7
-SETUVAR tide_go_color:000000
-SETUVAR tide_go_icon:\ue627
-SETUVAR tide_java_bg_color:ED8B00
-SETUVAR tide_java_color:000000
-SETUVAR tide_java_icon:\ue256
-SETUVAR tide_jobs_bg_color:444444
-SETUVAR tide_jobs_color:4E9A06
-SETUVAR tide_jobs_icon:\uf013
-SETUVAR tide_jobs_number_threshold:1000
-SETUVAR tide_kubectl_bg_color:326CE5
-SETUVAR tide_kubectl_color:000000
-SETUVAR tide_kubectl_icon:\U000f10fe
-SETUVAR tide_left_prompt_frame_enabled:false
-SETUVAR tide_left_prompt_items:vi_mode\x1eos\x1epwd\x1egit
-SETUVAR tide_left_prompt_prefix:
-SETUVAR tide_left_prompt_separator_diff_color:\ue0b0
-SETUVAR tide_left_prompt_separator_same_color:\ue0b1
-SETUVAR tide_left_prompt_suffix:\ue0b0
-SETUVAR tide_nix_shell_bg_color:7EBAE4
-SETUVAR tide_nix_shell_color:000000
-SETUVAR tide_nix_shell_icon:\uf313
-SETUVAR tide_node_bg_color:44883E
-SETUVAR tide_node_color:000000
-SETUVAR tide_node_icon:\ue24f
-SETUVAR tide_os_bg_color:333333
-SETUVAR tide_os_color:D6D6D6
-SETUVAR tide_os_icon:\uf179
-SETUVAR tide_php_bg_color:617CBE
-SETUVAR tide_php_color:000000
-SETUVAR tide_php_icon:\ue608
-SETUVAR tide_private_mode_bg_color:F1F3F4
-SETUVAR tide_private_mode_color:000000
-SETUVAR tide_private_mode_icon:\U000f05f9
-SETUVAR tide_prompt_add_newline_before:false
-SETUVAR tide_prompt_color_frame_and_connection:6C6C6C
-SETUVAR tide_prompt_color_separator_same_color:949494
-SETUVAR tide_prompt_icon_connection:\x20
-SETUVAR tide_prompt_min_cols:34
-SETUVAR tide_prompt_pad_items:true
-SETUVAR tide_prompt_transient_enabled:true
-SETUVAR tide_pulumi_bg_color:F7BF2A
-SETUVAR tide_pulumi_color:000000
-SETUVAR tide_pulumi_icon:\uf1b2
-SETUVAR tide_pwd_bg_color:3465A4
-SETUVAR tide_pwd_color_anchors:E4E4E4
-SETUVAR tide_pwd_color_dirs:E4E4E4
-SETUVAR tide_pwd_color_truncated_dirs:BCBCBC
-SETUVAR tide_pwd_icon:\uf07c
-SETUVAR tide_pwd_icon_home:\uf015
-SETUVAR tide_pwd_icon_unwritable:\uf023
-SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1ebun\x2elockb\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig
-SETUVAR tide_python_bg_color:444444
-SETUVAR tide_python_color:00AFAF
-SETUVAR tide_python_icon:\U000f0320
-SETUVAR tide_right_prompt_frame_enabled:false
-SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1ebun\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig
-SETUVAR tide_right_prompt_prefix:\ue0b2
-SETUVAR tide_right_prompt_separator_diff_color:\ue0b2
-SETUVAR tide_right_prompt_separator_same_color:\ue0b3
-SETUVAR tide_right_prompt_suffix:
-SETUVAR tide_ruby_bg_color:B31209
-SETUVAR tide_ruby_color:000000
-SETUVAR tide_ruby_icon:\ue23e
-SETUVAR tide_rustc_bg_color:F74C00
-SETUVAR tide_rustc_color:000000
-SETUVAR tide_rustc_icon:\ue7a8
-SETUVAR tide_shlvl_bg_color:808000
-SETUVAR tide_shlvl_color:000000
-SETUVAR tide_shlvl_icon:\uf120
-SETUVAR tide_shlvl_threshold:1
-SETUVAR tide_status_bg_color:2E3436
-SETUVAR tide_status_bg_color_failure:CC0000
-SETUVAR tide_status_color:4E9A06
-SETUVAR tide_status_color_failure:FFFF00
-SETUVAR tide_status_icon:\u2714
-SETUVAR tide_status_icon_failure:\u2718
-SETUVAR tide_terraform_bg_color:800080
-SETUVAR tide_terraform_color:000000
-SETUVAR tide_terraform_icon:\U000f1062
-SETUVAR tide_time_bg_color:D3D7CF
-SETUVAR tide_time_color:000000
-SETUVAR tide_time_format:
-SETUVAR tide_toolbox_bg_color:613583
-SETUVAR tide_toolbox_color:000000
-SETUVAR tide_toolbox_icon:\ue24f
-SETUVAR tide_vi_mode_bg_color_default:949494
-SETUVAR tide_vi_mode_bg_color_insert:87AFAF
-SETUVAR tide_vi_mode_bg_color_replace:87AF87
-SETUVAR tide_vi_mode_bg_color_visual:FF8700
-SETUVAR tide_vi_mode_color_default:000000
-SETUVAR tide_vi_mode_color_insert:000000
-SETUVAR tide_vi_mode_color_replace:000000
-SETUVAR tide_vi_mode_color_visual:000000
-SETUVAR tide_vi_mode_icon_default:D
-SETUVAR tide_vi_mode_icon_insert:I
-SETUVAR tide_vi_mode_icon_replace:R
-SETUVAR tide_vi_mode_icon_visual:V
-SETUVAR tide_zig_bg_color:F7A41D
-SETUVAR tide_zig_color:000000
-SETUVAR tide_zig_icon:\ue6a9

From fa925687f8b31efa0d7267d303a1bc04855973e7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 16:40:48 +0000
Subject: [PATCH 747/973] Add starship config.

---
 chezmoi/private_dot_config/starship.toml | 74 ++++++++++++++++++++++++
 1 file changed, 74 insertions(+)
 create mode 100644 chezmoi/private_dot_config/starship.toml

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
new file mode 100644
index 00000000..d4afca01
--- /dev/null
+++ b/chezmoi/private_dot_config/starship.toml
@@ -0,0 +1,74 @@
+format = """
+[](#9A348E)\
+$os\
+$username\
+[](bg:#DA627D fg:#9A348E)\
+$directory\
+[](fg:#DA627D bg:#FCA17D)\
+$git_branch\
+$git_status\
+[](fg:#FCA17D bg:#86BBD8)\
+$rust\
+[](fg:#86BBD8 bg:#06969A)\
+$docker_context\
+[](fg:#06969A bg:#33658A)\
+[ ](fg:#33658A)\
+"""
+
+# Disable the blank line at the start of the prompt
+add_newline = false
+
+# You can also replace your username with a neat symbol like   or disable this
+# and use the os module below
+[username]
+show_always = true
+style_user = "bg:#9A348E"
+style_root = "bg:#9A348E"
+format = '[$user ]($style)'
+disabled = false
+
+# An alternative to the username module which displays a symbol that
+# represents the current operating system
+[os]
+style = "bg:#9A348E"
+disabled = true # Disabled by default
+
+[directory]
+style = "bg:#DA627D"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+# Here is how you can shorten some long paths by text replacement
+# similar to mapped_locations in Oh My Posh:
+[directory.substitutions]
+"Documents" = "󰈙 "
+"Downloads" = " "
+"Music" = " "
+"Pictures" = " "
+# Keep in mind that the order matters. For example:
+# "Important Documents" = " 󰈙 "
+# will not be replaced, because "Documents" was already substituted before.
+# So either put "Important Documents" before "Documents" or use the substituted version:
+# "Important 󰈙 " = " 󰈙 "
+
+[docker_context]
+symbol = " "
+style = "bg:#06969A"
+format = '[ $symbol $context ]($style)'
+
+[git_branch]
+symbol = ""
+style = "bg:#FCA17D"
+format = '[ $symbol $branch ]($style)'
+
+[git_status]
+style = "bg:#FCA17D"
+format = '[$all_status$ahead_behind ]($style)'
+
+[rust]
+disabled = true
+symbol = ""
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+

From 3dd9fc17d41d22cc7f4027d710f86b842b0957b9 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 17:00:00 +0000
Subject: [PATCH 748/973] Update starship config.

---
 chezmoi/private_dot_config/starship.toml | 96 +++++++++---------------
 1 file changed, 35 insertions(+), 61 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index d4afca01..f22a0bef 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -1,74 +1,48 @@
-format = """
-[](#9A348E)\
-$os\
-$username\
-[](bg:#DA627D fg:#9A348E)\
+format = """\
+[](bg:#030B16 fg:#7DF9AA)\
+[󰀵 ](bg:#7DF9AA fg:#090c0c)\
+[](fg:#7DF9AA bg:#1C3A5E)\
+[](fg:#1C3A5E bg:#3B76F0)\
 $directory\
-[](fg:#DA627D bg:#FCA17D)\
+[](fg:#3B76F0 bg:#FCF392)\
 $git_branch\
 $git_status\
-[](fg:#FCA17D bg:#86BBD8)\
-$rust\
-[](fg:#86BBD8 bg:#06969A)\
-$docker_context\
-[](fg:#06969A bg:#33658A)\
-[ ](fg:#33658A)\
+$git_metrics\
+[](fg:#FCF392 bg:#030B16)\
+$character\
 """
 
-# Disable the blank line at the start of the prompt
-add_newline = false
-
-# You can also replace your username with a neat symbol like   or disable this
-# and use the os module below
-[username]
-show_always = true
-style_user = "bg:#9A348E"
-style_root = "bg:#9A348E"
-format = '[$user ]($style)'
-disabled = false
-
-# An alternative to the username module which displays a symbol that
-# represents the current operating system
-[os]
-style = "bg:#9A348E"
-disabled = true # Disabled by default
+[line_break]
+disabled = true
 
 [directory]
-style = "bg:#DA627D"
-format = "[ $path ]($style)"
-truncation_length = 3
-truncation_symbol = "…/"
-
-# Here is how you can shorten some long paths by text replacement
-# similar to mapped_locations in Oh My Posh:
-[directory.substitutions]
-"Documents" = "󰈙 "
-"Downloads" = " "
-"Music" = " "
-"Pictures" = " "
-# Keep in mind that the order matters. For example:
-# "Important Documents" = " 󰈙 "
-# will not be replaced, because "Documents" was already substituted before.
-# So either put "Important Documents" before "Documents" or use the substituted version:
-# "Important 󰈙 " = " 󰈙 "
-
-[docker_context]
-symbol = " "
-style = "bg:#06969A"
-format = '[ $symbol $context ]($style)'
+format = "[$path ]($style)"
+style = "fg:#E4E4E4 bg:#3B76F0"
 
 [git_branch]
-symbol = ""
-style = "bg:#FCA17D"
-format = '[ $symbol $branch ]($style)'
+format = '[ $symbol$branch(:$remote_branch) ]($style)'
+symbol = "  "
+style = "fg:#1C3A5E bg:#FCF392"
 
 [git_status]
-style = "bg:#FCA17D"
-format = '[$all_status$ahead_behind ]($style)'
+format = '[$all_status]($style)'
+style = "fg:#1C3A5E bg:#FCF392"
 
-[rust]
-disabled = true
-symbol = ""
-style = "bg:#86BBD8"
-format = '[ $symbol ($version) ]($style)'
+[git_metrics]
+format = "([+$added]($added_style))[]($added_style)"
+added_style = "fg:#1C3A5E bg:#FCF392"
+deleted_style = "fg:bright-red bg:235"
+disabled = false
 
+[cmd_duration]
+format = "[  $duration ]($style)"
+style = "fg:bright-white bg:18"
+
+[character]
+disabled = false
+success_symbol = '[ ](bold fg:green)'
+error_symbol = '[ ](bold fg:red)'
+vimcmd_symbol = '[❮](bold fg:green)'
+vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
+vimcmd_replace_symbol = '[❮](bold fg:lavender)'
+vimcmd_visual_symbol = '[❮](bold fg:yellow)'

From caa5f57d61c9d6ba8532f4f1fedce141a176a771 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 18:15:51 +0000
Subject: [PATCH 749/973] Update starship config.

---
 chezmoi/private_dot_config/starship.toml | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index f22a0bef..4aa85fcd 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -1,15 +1,18 @@
+# Prompt format...
+# - Directory section with blue background and light text
+# - Git branch section with yellow background and dark text
+# - Git status and metrics in the same yellow background
+# - Clean separator between sections
+# - Final space for command input
+# - Disabled line break for compactness
 format = """\
-[](bg:#030B16 fg:#7DF9AA)\
-[󰀵 ](bg:#7DF9AA fg:#090c0c)\
-[](fg:#7DF9AA bg:#1C3A5E)\
-[](fg:#1C3A5E bg:#3B76F0)\
 $directory\
 [](fg:#3B76F0 bg:#FCF392)\
 $git_branch\
 $git_status\
 $git_metrics\
 [](fg:#FCF392 bg:#030B16)\
-$character\
+[ ]('')\
 """
 
 [line_break]
@@ -32,7 +35,6 @@ style = "fg:#1C3A5E bg:#FCF392"
 format = "([+$added]($added_style))[]($added_style)"
 added_style = "fg:#1C3A5E bg:#FCF392"
 deleted_style = "fg:bright-red bg:235"
-disabled = false
 
 [cmd_duration]
 format = "[  $duration ]($style)"
@@ -40,8 +42,8 @@ style = "fg:bright-white bg:18"
 
 [character]
 disabled = false
-success_symbol = '[ ](bold fg:green)'
-error_symbol = '[ ](bold fg:red)'
+success_symbol = '[➜](bold fg:green)'
+error_symbol = '[➜](bold fg:red)'
 vimcmd_symbol = '[❮](bold fg:green)'
 vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
 vimcmd_replace_symbol = '[❮](bold fg:lavender)'

From cf6fdbc8cdf360f40187f486cda8cc79b3e8f838 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 18:16:35 +0000
Subject: [PATCH 750/973] Update fish config.

---
 chezmoi/private_dot_config/private_fish/config.fish | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index c572f1fc..4bca8923 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -5,7 +5,18 @@ fish_add_path $CARGO_HOME/bin
 
 if status is-interactive
     # Commands to run in interactive sessions can go here
+
+    # Starship prompt setup.
+    function starship_transient_prompt_func
+        "➜"
+    end
+    # function starship_transient_rprompt_func
+    #    starship module time
+    # end
     starship init fish | source
+    enable_transience
+
+    # Atuin setup.
     set -x ATUIN_NOBIND true
     atuin init fish | source
     # Atuin keybindings to suppress -k warning
@@ -17,5 +28,7 @@ if status is-interactive
     bind -M insert up _atuin_bind_up
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
+
+    # Load sensitive variables.
     source ~/dotfiles/shellvars-work
 end

From 99e9acf38310b8ba0f6948f7a76beafe14ba09c7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 18:27:37 +0000
Subject: [PATCH 751/973] Update fish config.

---
 chezmoi/private_dot_config/private_fish/config.fish | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 4bca8923..0af3eab3 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -8,11 +8,11 @@ if status is-interactive
 
     # Starship prompt setup.
     function starship_transient_prompt_func
-        "➜"
+        starship module character
+    end
+    function starship_transient_rprompt_func
+        starship module time
     end
-    # function starship_transient_rprompt_func
-    #    starship module time
-    # end
     starship init fish | source
     enable_transience
 

From 406df30ddb15b1cb36e0b4bb863d29f1b6a475fd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 20:40:14 +0000
Subject: [PATCH 752/973] Prune shell aliases.

---
 shellaliases | 229 +--------------------------------------------------
 1 file changed, 2 insertions(+), 227 deletions(-)

diff --git a/shellaliases b/shellaliases
index 51759284..f2505630 100644
--- a/shellaliases
+++ b/shellaliases
@@ -1,74 +1,11 @@
 #!/bin/sh
 
-#########################################
-# Connectivity
-
-
-#########################################
-# Commands to run apps
-alias run.clojure.repl='java -cp ${CLOJURE_HOME}/clojure.jar clojure.lang.Repl'
-alias run.jlineclojure.repl='java -cp ${CLOJURE_HOME}/jline-0.9.91.jar:${CLOJURE_HOME}/clojure.jar jline.ConsoleRunner clojure.lang.Repl'
-alias run.clojure.script='java -cp ${CLOJURE_HOME}/clojure.jar clojure.main'
-
-
-#########################################
-# Commands to change dirs
-
-
-#################################
-# Simple Program Name Shortening
-# alias aq=aquamacs
-# alias g=git
-
-
-#############################
-# Utilities
-alias zipall='for D in *; do zip -r "$D" "$D"; done'
-
-alias pram.reset='sudo nvram boot-args=”-p -r”'
-
-alias macports.cleansource='sudo port -f uninstall inactive'
-# alias macports.cleanold='sudo port clean --all installed'
-
-alias rubygems.update='sudo gem update --system'
-# alias macports.update='sudo port selfupdate && sudo port upgrade outdated'
-alias brew.update='brew update && brew upgrade'
-
-alias timemachine.enablelocalversions='sudo tmutil enablelocal'
-alias timemachine.disablelocalversions='sudo tmutil disablelocal'
-
 alias hexdumpfile='od -h'
 
-# Flush the DNS on Mac
-alias network.dnsflush='dscacheutil -flushcache'
-
-# Copy and paste and prune the usless newline
-alias pbcopynn='tr -d "\n" | pbcopy'
-
-# Set the extended MacOS attributes on a file such that Quicklook will open it as text
-alias finder.astext='xattr -wx com.apple.FinderInfo "54 45 58 54 21 52 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" $1'
-#alias finder.qltext2='osascript -e tell application "Finder" to set file type of ((POSIX file "$1") as alias) to "TEXT"'
-
-# Git shortcuts
 alias gpl='git pull'
 alias gps='git push'
 
-# Show network connections
-# Often useful to prefix with SUDO to see more system level network usage
-alias network.connections='lsof -l -i +L -R -V'
-alias network.established='lsof -l -i +L -R -V | grep ESTABLISHED'
-alias network.internalip="ifconfig en0 | egrep -o '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'"
-alias network.externalip='curl -s http://checkip.dyndns.org/ | sed "s/[a-zA-Z<>/ :]//g"'
-
-# Files used, anywhere on the filesystem
-alias files.usage='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep'
-# Files being opened
-alias files.open='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep open'
-# Files in use in the Users directory
-alias files.usage.user='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v grep|grep Users'
-
 # Directory listings
-# LS_COLORS='no=01;37:fi=01;37:di=07;96:ln=01;36:pi=01;32:so=01;35:do=01;35:bd=01;33:cd=01;33:ex=01;31:mi=00;05;37:or=00;05;37:'
 # -G Add colors to ls
 # -l Long format
 # -h Short size suffixes (B, K, M, G, P)
@@ -76,165 +13,21 @@ alias files.usage.user='sudo fs_usage -e -f filesystem|grep -v CACHE_HIT|grep -v
 alias ls='ls -G -h -p '
 alias ll='ls -l -G -h -p '
 
-if isLinux; then
-    alias ls='ls --color=auto'
-fi
-
-alias latest='ls -alt | head -20'
-
-#########################################
-# Utility Functions
-
-# Restart Apache on Mac
-alias apacherestart="sudo /usr/sbin/apachectl restart"
-
-# Do a Matrix movie effect of falling characters
-function matrix1() {
-echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) ;sleep 0.05; done|gawk '{ letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-function matrix2() {
-echo -e "\e[1;40m" ; clear ; characters=$( jot -c 94 33 | tr -d '\n' ) ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) $characters ;sleep 0.05; done|gawk '{ letters=$5; c=$4; letter=substr(letters,c,1);a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-function matrix3() {
-echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $( printf "\U$(( $RANDOM % 500 ))" ) ;sleep 0.05; done|gawk '{c=$4; letter=$4;a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
-}
-
-# Use Mac OSX Preview to open a man page in a more handsome format
-function manp() {
-    man -t $1 | open -f -a /Applications/Preview.app
-}
-
-# Show normally hidden system and dotfile types of files
-# in Mac OSX Finder
-function finder.showhiddenfiles() {
-    defaults write com.apple.Finder AppleShowAllFiles YES
-    osascript -e 'tell application "Finder" to quit'
-    sleep 0.25
-    osascript -e 'tell application "Finder" to activate'
-}
-
-# Hide (back to defaults) normally hidden system and dotfile types of files
-# in Mac OSX Finder
-function finder.hidehiddenfiles() {
-    defaults write com.apple.Finder AppleShowAllFiles NO
-    osascript -e 'tell application "Finder" to quit'
-    sleep 0.25
-    osascript -e 'tell application "Finder" to activate'
-}
-
-# Get (cache) all Cheat sheets
-function cheat.getall() {
-	cheat sheets | grep '^  ' | xargs -n 1 -I {} bash -c 'cheat {} | :'
-}
-
-function find.name() {
-    wild=\'\*$1\*\'
-    sh -c "find . -iname $wild"
-}
-
-alias lessc='less -R' # Lets color escape sequences carry through to less
-alias morec='more -R'
-alias lesscolor='less -R'
-alias morecolor='more -R'
-
-function screenshot.setjpg() {
-    defaults write com.apple.screencapture type jpg
-    killall SystemUIServer
-}
-
-function screenshot.setpng() {
-    defaults write com.apple.screencapture type png
-	killall SystemUIServer
-}
-
-## Show third party kernel extensions
-alias thirdpartykernelextensions='kextstat | grep -v apple'
-
-## DHCP renew
-alias ipreleaserenew="sudo ipconfig set en0 BOOTP && sudo ipconfig set en0 DHCP"
-
-alias nasquota='ssh svn /home/nasadmin/nasquota/cur/bin/nasquota'
-alias prettyprint='enscript --pretty-print --color -2 -r'
-if [ -f /usr/bin/colordiff ]; then
-    alias diff='colordiff'
-fi
 alias grep='grep --color=auto --exclude=.svn'
 alias egrep='egrep --color=auto --exclude=.svn'
 alias fgrep='fgrep --color=auto --exclude=.svn'
-#alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n'
-alias sortlog='cat logs/`ls -t logs/ | head -1` | grep '^NDS' | sort -n >sortedlog.log; dos2unix -q sortedlog.log'
-alias prunelog='cat sortedlog.log | grep WLM | grep -v SERVER_HTTP_IsValidKeyword | grep -v SERVER_HTTP_SetValue | grep -v SERVER_HTTP_ExtractValue | grep -v ClearReceiveMessageBuffer | grep -v ClearTransmitMessageBuffer | grep -v CopyToTransmitBuffer | grep -v CopyFromReceiveBuffer | grep -v SERVER_ReadConfigFile | grep -v SERVER_HTTP_SetKeywordTable | grep -v SERVER_HTTP_ClearBuffer > prunedlog.log'
-#alias vilastlog='vi logs/`ls -t logs/ | head -1`'
-alias vilastlog='vi `ls -t *.log | head -1`'
-alias catlastlog='cat logs/`ls -t logs/ | head -1`'
-alias brokenlinks='find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)'
 
 alias rm='rm -i'
 alias cp='cp -i'
 alias mv='mv -i'
-#alias cd='cd \!*; pwd'
-#alias cd='pushd !*'
-#alias more=less
-
-#alias du='du --exclude=.svn'
 
 alias now='date +"%Y%m%d-%H%M%S"'
 alias minicom='minicom -C minicom-`now`.log'
 
-#alias svnst='svn st --ignore-externals'
-#alias svnup='svn up --ignore-externals'
-
-alias svnrepos='export REPOS=$(~/utils/svnrepos -r) ; echo $REPOS'
-alias svnurl='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
-alias svndot='svn info | awk "/^URL:/ {print}" | sed "s/^URL: //"'
-alias svndotdot='svn info .. | awk '\''/^URL:/ {print}'\'' | sed '\''s/^URL: //'\'''
-
-alias svndiff='svn diff --diff-cmd=xx-diff-proxy'
-
-# shortcuts for doing process stuff
 alias pgrep='ps auxww | grep \!* | grep -v grep'
-#alias pfind='pgrep \!* | awk "{print \${2}}"'
 
-#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2 --toc'
-#alias a2ps='a2ps -r -1 -C -E -g -l120 -s2'
 alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
 
-_filteredfind='find . \( -name .svn -prune \) \( -name .git -prune \) \( -name .repo -prune \) \( -name .venv -prune \)'
-_mfiles='\( -name "Makefile*" -o -name "*makefile*" -o -name "*\.mk" -o -name "*\.mak" -o -name build.xml \)'
-_sfiles='\( -name "*\.[dDhHcCsS]" -o -name "*\.cc" -o -name "*\.cpp" -o -name "*\.java" -o -name "*\.py" \)'
-_shfiles='\( -name "*\.sh" -o -name "*\.csh" -o -name "*\.zsh" -o -name "*\.tcsh" \)'
-_cfiles='\( -name "*\.[cCsS]" -o -name "*\.cc" -o -name "*\.cpp" \)'
-_hfiles='\( -name "*\.[hH]" -o -name "*\.hpp" \)'
-_jfiles='\( -name "*\.java" \)'
-_pyfiles='\( -name "*\.py" \)'
-_dfiles='\( -name "*\.[dD]" \)'
-_rstfiles='\( -name "*\.rst" \)'
-_gofiles='\( -name "*\.go" \)'
-_grepargs='xargs egrep --color=auto -n'
-
-alias mfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs"
-alias mnotfind="$_filteredfind -o \( -type f $_mfiles -print \) | $_grepargs -v"
-alias sfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs"
-alias snotfind="$_filteredfind -o \( -type f $_sfiles -print \) | $_grepargs -v"
-alias shfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs"
-alias shnotfind="$_filteredfind -o \( -type f $_shfiles -print \) | $_grepargs -v"
-alias cfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs"
-alias cnotfind="$_filteredfind -o \( -type f $_cfiles -print \) | $_grepargs -v"
-alias hfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs"
-alias hnotfind="$_filteredfind -o \( -type f $_hfiles -print \) | $_grepargs -v"
-alias jfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs"
-alias jnotfind="$_filteredfind -o \( -type f $_jfiles -print \) | $_grepargs -v"
-alias pyfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs"
-alias pynotfind="$_filteredfind -o \( -type f $_pyfiles -print \) | $_grepargs -v"
-alias dfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs"
-alias dnotfind="$_filteredfind -o \( -type f $_dfiles -print \) | $_grepargs -v"
-alias rstfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs"
-alias rstnotfind="$_filteredfind -o \( -type f $_rstfiles -print \) | $_grepargs -v"
-alias gofind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs"
-alias gonotfind="$_filteredfind -o \( -type f $_gofiles -print \) | $_grepargs -v"
-
 if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then
     alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe"
     alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe"
@@ -242,28 +35,10 @@ if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 20
     alias visio="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Visio\ 2010 --cx-app visio.exe"
 fi
 
-# History search.
-alias hgrep='history | grep --color'
-alias phgrep='cat ~/.persistent_history | grep -v phgrep | grep --color'
-
-# Kill ssh or sshpass sessions (e.g. if VPN hangs).
-alias sshkill="ps auxww | egrep 'sshpass|ssh ' | egrep -v egrep | awk '{print \$2}' | xargs kill -9"
-
-# http://randsinrepose.com/links/2016/10/16/nesting-and-networking/
-alias netwtf='sudo /usr/local/Cellar/mtr/0.87/sbin/mtr -n 8.8.8.8'
-
-# OSX gatekeeper disable...
 alias gatekeeper='sudo xattr -d com.apple.quarantine'
 
-if isMac; then
-    alias readlink='greadlink'
-    alias get_iplayer='PATH=/usr/bin:/usr/local/bin get_iplayer'
-    # On Mac OSX, uuidgen produces uppercase.
-    alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"'
-fi
-
-# Alias for parsing structure JSON logs...
-alias plog="jq -r -s 'map(select(.) | .log_level |=  ascii_upcase) | .[] | \"\(.event_timestamp) \(.log_level) \t \(.event_message)\" | @text'"
+# On Mac OSX, uuidgen produces uppercase.
+alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"'
 
 # Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli)
 alias jfullboard="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""

From a88ca09e3e044e13120786bd08b0f2395709774a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 20:40:43 +0000
Subject: [PATCH 753/973] fish: add abbreviations.

---
 .../private_fish/conf.d/abbreviations.fish    | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
new file mode 100644
index 00000000..62e56e37
--- /dev/null
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -0,0 +1,44 @@
+abbr --add hexdumpfile 'od -h'
+
+abbr --add gpl 'git pull'
+abbr --add gps 'git push'
+
+# Directory listings
+# -G Add colors to ls
+# -l Long format
+# -h Short size suffixes (B, K, M, G, P)
+# -p Postpend slash to folders
+abbr --add ls 'ls -G -h -p '
+abbr --add ll 'ls -l -G -h -p '
+
+abbr --add grep 'grep --color=auto --exclude=.git'
+abbr --add egrep 'egrep --color=auto --exclude=.git'
+abbr --add fgrep 'fgrep --color=auto --exclude=.git'
+
+abbr --add rm 'rm -i'
+abbr --add cp 'cp -i'
+abbr --add mv 'mv -i'
+
+abbr --add now 'date +"%Y%m%d-%H%M%S"'
+abbr --add minicom 'minicom -C minicom-`now`.log'
+
+abbr --add pgrep 'ps auxww | grep \!* | grep -v grep'
+
+abbr --add a2ps 'a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
+
+abbr --add gatekeeper 'sudo xattr -d com.apple.quarantine'
+
+# On Mac OSX, uuidgen produces uppercase.
+abbr --add uuidgen 'uuidgen | tr "[:upper:]" "[:lower:]"'
+
+# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli)
+abbr --add jfullboard "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
+abbr --add jtodo "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\""
+abbr --add jbacklog "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\""
+abbr --add jreview "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\""
+abbr --add jwip "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\""
+abbr --add jblocked "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\""
+abbr --add jkanban "jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
+
+# Ping Artifactory.
+abbr --add afping 'curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'

From 9fbd91cd7d872df2c61f5a0caf5de84b78c96a92 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 20:52:40 +0000
Subject: [PATCH 754/973] fish: add variables.

---
 .../private_fish/conf.d/variables.fish        | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 chezmoi/private_dot_config/private_fish/conf.d/variables.fish

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
new file mode 100644
index 00000000..cf9e81c5
--- /dev/null
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -0,0 +1,34 @@
+export OS=$(uname -s)
+
+#########################################################################
+# Tool settings
+#########################################################################
+
+# Set the default pager to less
+set -gx PAGER less
+# Set less to have a default flag of -R (RAW) so color passes through
+set pgx LESS "-R"
+
+set -gx HOSTNAME `hostname -s`
+set -gx EDITOR vim
+set -gx TMOUT 0
+
+set -gx PYTHONSTARTUP $HOME/.pythonrc
+set -gx WORKON_HOME $HOME/.virtualenvs
+set -gx PIP_VIRTUALENV_BASE $WORKON_HOME
+set -gx PIP_RESPECT_VIRTUALENV true
+set -gx PIP_REQUIRE_VIRTUALENV true
+
+set -gx PYENV_ROOT $HOME/.pyenv
+
+set -gx GOPATH $HOME/go
+set -gx GOENV_ROOT $HOME/.goenv
+
+set -gx TSRC_PARALLEL_JOBS 8
+
+if test -f $HOME/dotfiles/shellvars-personal
+    source $HOME/dotfiles/shellvars-personal
+fi
+if test -f $HOME/dotfiles/shellvars-work
+    source $HOME/dotfiles/shellvars-work
+fi

From 22469144945da096cf4d2141325331e43454d781 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 20:56:01 +0000
Subject: [PATCH 755/973] fish: fix variables file.

---
 chezmoi/private_dot_config/private_fish/conf.d/variables.fish | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
index cf9e81c5..0c717d87 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -28,7 +28,7 @@ set -gx TSRC_PARALLEL_JOBS 8
 
 if test -f $HOME/dotfiles/shellvars-personal
     source $HOME/dotfiles/shellvars-personal
-fi
+end
 if test -f $HOME/dotfiles/shellvars-work
     source $HOME/dotfiles/shellvars-work
-fi
+end

From 75d428938429559252b147645e6b2226948a7e1b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:13:17 +0000
Subject: [PATCH 756/973] starship: more tweaking, right prompt now works.

---
 chezmoi/private_dot_config/starship.toml | 45 +++++++++++++++++-------
 1 file changed, 32 insertions(+), 13 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 4aa85fcd..bbee6a7a 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -12,16 +12,39 @@ $git_branch\
 $git_status\
 $git_metrics\
 [](fg:#FCF392 bg:#030B16)\
-[ ]('')\
+$character\
+"""
+
+right_format = """\
+$cmd_duration\
+$time\
 """
 
 [line_break]
 disabled = true
 
+add_newline = true
+
+[cmd_duration]
+disabled = false
+min_time = 2000
+show_milliseconds = false
+format = "[  $duration ]($style)"
+style = "fg:bright-white bg:18"
+
 [directory]
 format = "[$path ]($style)"
+truncate_to_repo = true
+truncation_length = 3
+truncation_symbol = "…/"
 style = "fg:#E4E4E4 bg:#3B76F0"
 
+[time]
+disabled = false
+format = "[$time]($style) "
+style = "dimmed white"
+time_format = "%T" # %R no seconds, %T seconds
+
 [git_branch]
 format = '[ $symbol$branch(:$remote_branch) ]($style)'
 symbol = "  "
@@ -36,15 +59,11 @@ format = "([+$added]($added_style))[]($added_style)"
 added_style = "fg:#1C3A5E bg:#FCF392"
 deleted_style = "fg:bright-red bg:235"
 
-[cmd_duration]
-format = "[  $duration ]($style)"
-style = "fg:bright-white bg:18"
-
-[character]
-disabled = false
-success_symbol = '[➜](bold fg:green)'
-error_symbol = '[➜](bold fg:red)'
-vimcmd_symbol = '[❮](bold fg:green)'
-vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
-vimcmd_replace_symbol = '[❮](bold fg:lavender)'
-vimcmd_visual_symbol = '[❮](bold fg:yellow)'
+# [character]
+# disabled = false
+# success_symbol = '[➜](bold fg:green)'
+# error_symbol = '[➜](bold fg:red)'
+# vimcmd_symbol = '[❮](bold fg:green)'
+# vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
+# vimcmd_replace_symbol = '[❮](bold fg:lavender)'
+# vimcmd_visual_symbol = '[❮](bold fg:yellow)'

From 4198e552d69541cbabff19a7e648e3b4267d1004 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:15:53 +0000
Subject: [PATCH 757/973] starship: move status prompt char to RHS.

---
 chezmoi/private_dot_config/starship.toml | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index bbee6a7a..14d08a63 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -12,10 +12,10 @@ $git_branch\
 $git_status\
 $git_metrics\
 [](fg:#FCF392 bg:#030B16)\
-$character\
 """
 
 right_format = """\
+$character\
 $cmd_duration\
 $time\
 """
@@ -59,11 +59,11 @@ format = "([+$added]($added_style))[]($added_style)"
 added_style = "fg:#1C3A5E bg:#FCF392"
 deleted_style = "fg:bright-red bg:235"
 
-# [character]
-# disabled = false
-# success_symbol = '[➜](bold fg:green)'
-# error_symbol = '[➜](bold fg:red)'
-# vimcmd_symbol = '[❮](bold fg:green)'
-# vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
-# vimcmd_replace_symbol = '[❮](bold fg:lavender)'
-# vimcmd_visual_symbol = '[❮](bold fg:yellow)'
+[character]
+disabled = false
+success_symbol = '[➜](bold green) '
+error_symbol = '[✗](bold red) '
+vimcmd_symbol = '[❮](bold fg:green)'
+vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'
+vimcmd_replace_symbol = '[❮](bold fg:lavender)'
+vimcmd_visual_symbol = '[❮](bold fg:yellow)'

From 6a4be1c08262a10a1742f13f36a9d69df5c1c49d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:20:00 +0000
Subject: [PATCH 758/973] starship: RHS success prompt is now a green tick.

---
 chezmoi/private_dot_config/starship.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 14d08a63..38da6741 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -61,7 +61,7 @@ deleted_style = "fg:bright-red bg:235"
 
 [character]
 disabled = false
-success_symbol = '[➜](bold green) '
+success_symbol = '[](bold green) '
 error_symbol = '[✗](bold red) '
 vimcmd_symbol = '[❮](bold fg:green)'
 vimcmd_replace_one_symbol = '[❮](bold fg:lavender)'

From c64e6b4929bb2be9ffc6fc4a5942909f496e5f97 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:22:15 +0000
Subject: [PATCH 759/973] starship: add spacing after LHS prompt.

---
 chezmoi/private_dot_config/starship.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 38da6741..35e99a76 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -12,6 +12,7 @@ $git_branch\
 $git_status\
 $git_metrics\
 [](fg:#FCF392 bg:#030B16)\
+[ ]('')\
 """
 
 right_format = """\

From fdadbfb3c09183cda9df80cedbb5f85525b800f3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:29:19 +0000
Subject: [PATCH 760/973] starship: tweak colours.

---
 chezmoi/private_dot_config/starship.toml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 35e99a76..8c181bd0 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -7,11 +7,11 @@
 # - Disabled line break for compactness
 format = """\
 $directory\
-[](fg:#3B76F0 bg:#FCF392)\
+[](fg:#2a6bef bg:#fbef6a)\
 $git_branch\
 $git_status\
 $git_metrics\
-[](fg:#FCF392 bg:#030B16)\
+[](fg:#fbec51 bg:#030B16)\
 [ ]('')\
 """
 
@@ -49,15 +49,15 @@ time_format = "%T" # %R no seconds, %T seconds
 [git_branch]
 format = '[ $symbol$branch(:$remote_branch) ]($style)'
 symbol = "  "
-style = "fg:#1C3A5E bg:#FCF392"
+style = "fg:#1C3A5E bg:#f9e71f"
 
 [git_status]
 format = '[$all_status]($style)'
-style = "fg:#1C3A5E bg:#FCF392"
+style = "fg:#1C3A5E bg:#f9e71f"
 
 [git_metrics]
 format = "([+$added]($added_style))[]($added_style)"
-added_style = "fg:#1C3A5E bg:#FCF392"
+added_style = "fg:#1C3A5E bg:#f9e71f"
 deleted_style = "fg:bright-red bg:235"
 
 [character]

From a8ecaabd7d7dc1eea6f1240d98627538edabeeef Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:38:20 +0000
Subject: [PATCH 761/973] fish: add paths file.

---
 .../private_fish/conf.d/paths.fish                  | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 chezmoi/private_dot_config/private_fish/conf.d/paths.fish

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
new file mode 100644
index 00000000..f0b677a4
--- /dev/null
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -0,0 +1,13 @@
+fish_add_path .
+fish_add_path ~/bin
+fish_add_path ~/dotfiles/scripts
+fish_add_path ~/.cargo/bin
+fish_add_path $GOPATH/bin
+fish_add_path $GOROOT/bin
+fish_add_path ~/adr-tools/src
+fish_add_path /usr/local/sbin
+fish_add_path /opt/homebrew/sbin
+fish_add_path /opt/homebrew/bin
+fish_add_path /usr/local/opt/gnu-sed/libexec/gnubin
+fish_add_path $GOENV_ROOT/bin
+fish_add_path /opt/homebrew/opt/llvm/bin

From 598f275599b92cbc152236513ada5da62fe0ffd3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:44:07 +0000
Subject: [PATCH 762/973] fish: prune old zsh/bash config files.

---
 chezmoi/dot_profile  |  27 -----
 chezmoi/dot_zprofile |  10 --
 chezmoi/dot_zshenv   |   5 -
 chezmoi/dot_zshrc    | 222 ------------------------------------
 shellactivities      |   3 -
 shellaliases         |  52 ---------
 shellfunctions       | 263 -------------------------------------------
 shellpaths           |  19 ----
 shellvars            | 102 -----------------
 9 files changed, 703 deletions(-)
 delete mode 100644 chezmoi/dot_profile
 delete mode 100644 chezmoi/dot_zprofile
 delete mode 100644 chezmoi/dot_zshenv
 delete mode 100644 chezmoi/dot_zshrc
 delete mode 100644 shellactivities
 delete mode 100644 shellaliases
 delete mode 100644 shellfunctions
 delete mode 100644 shellpaths
 delete mode 100644 shellvars

diff --git a/chezmoi/dot_profile b/chezmoi/dot_profile
deleted file mode 100644
index c1eac83e..00000000
--- a/chezmoi/dot_profile
+++ /dev/null
@@ -1,27 +0,0 @@
-#############################################################
-# Generic configuration that applies to all shells
-#############################################################
-
-# Load user-specific personalisation.
-source ~/dotfiles/personalisation
-
-# Load paths and environment variables
-source ~/dotfiles/shellvars
-source ~/dotfiles/shellfunctions
-source ~/dotfiles/shellpaths
-source ~/dotfiles/shellaliases
-source ~/dotfiles/shellactivities
-
-export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-eval "$(pyenv init --path)"
-if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
-
-# goenv setup
-eval "$(goenv init -)"
-
-export PATH="$GOROOT/bin:$PATH"
-export PATH="$PATH:$GOPATH/bin"
-
-. "$HOME/.cargo/env"
-
diff --git a/chezmoi/dot_zprofile b/chezmoi/dot_zprofile
deleted file mode 100644
index 4fc9027f..00000000
--- a/chezmoi/dot_zprofile
+++ /dev/null
@@ -1,10 +0,0 @@
-##############################################################################
-# Import the shell-agnostic (Bash or Zsh) environment config
-##############################################################################
-source ~/.profile
-
-##############################################################################
-# rupa/z setup (path frecency with tab completion)
-##############################################################################
-source ~/dotfiles/z/z.sh
-
diff --git a/chezmoi/dot_zshenv b/chezmoi/dot_zshenv
deleted file mode 100644
index 3880e03a..00000000
--- a/chezmoi/dot_zshenv
+++ /dev/null
@@ -1,5 +0,0 @@
-fpath=($fpath $HOME/.zsh/func)
-typeset -U fpath
-alias assume="source assume"
-
-. "$HOME/.cargo/env"
diff --git a/chezmoi/dot_zshrc b/chezmoi/dot_zshrc
deleted file mode 100644
index 37c66310..00000000
--- a/chezmoi/dot_zshrc
+++ /dev/null
@@ -1,222 +0,0 @@
-# Interactive shell configuration.
-
-##############################################################################
-# ZShell History Configuration
-##############################################################################
-export HISTFILE=~/.zsh_history   # Where to save history to disk
-export HISTFILESIZE=1000000000
-export HISTSIZE=1000000000       # How many lines of history to keep in memory
-export SAVEHIST=1000000000       # Number of history entries to save to disk
-export HISTTIMEFORMAT="[%F %T] "
-export HIST_STAMPS="+%Y-%m-%d %H:%M:%S"
-export HISTDUP=erase             # Erase duplicates in the history file
-#export DISABLE_VENV_CD=1         # virtualenvwrapper
-
-setopt APPEND_HISTORY            # Append history to the history file (no overwriting)
-#setopt SHARE_HISTORY             # Share history between all sessions.
-setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
-setopt EXTENDED_HISTORY          # Write the history file in the ":start:elapsed;command" format.
-setopt HIST_EXPIRE_DUPS_FIRST    # Expire duplicate entries first when trimming history.
-setopt HIST_IGNORE_DUPS          # Don't record an entry that was just recorded again.
-setopt HIST_REDUCE_BLANKS        # Remove superfluous blanks before recording entry.
-setopt HIST_FIND_NO_DUPS         # Do not display a line previously found.
-setopt BANG_HIST                 # Treat the '!' character specially during expansion.
-
-#setopt HIST_IGNORE_ALL_DUPS      # Delete old recorded entry if new entry is a duplicate.
-setopt HIST_IGNORE_SPACE         # Don't record an entry starting with a space.
-#setopt HIST_SAVE_NO_DUPS         # Don't write duplicate entries in the history file.
-#setopt HIST_VERIFY               # Don't execute immediately upon history expansion.
-#setopt HIST_BEEP                 # Beep when accessing nonexistent history.
-
-setopt AUTO_CD                   # Automatically cd to a path if specified as a command.
-
-setopt CORRECT                   # Correction.
-#setopt CORRECT_ALL               # Correction.
-setopt NO_CASE_GLOB              # Case-insensitive globbing.
-
-# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
-# Initialization code that may require console input (password prompts, [y/n]
-# confirmations, etc.) must go above this block; everything else may go below.
-if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
-  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
-fi
-
-##############################################################################
-# Input key bindings.
-##############################################################################
-#set bell-style none
-#set match-hidden-files off
-bindkey '\e[A' history-search-backward
-bindkey '\e[B' history-search-forward
-bindkey '\e[C' forward-char
-bindkey '\e[D' backward-char
-bindkey '\e[3;5~' backward-kill-word
-bindkey '^?' backward-kill-word
-bindkey '\e(' kill-word
-bindkey '\e[1;5D' backward-word
-bindkey '\e[1;5C' forward-word
-
-##############################################################################
-# oh-my-zsh setup
-##############################################################################
-
-# Path to your oh-my-zsh configuration.
-export ZSH=$HOME/dotfiles/oh-my-zsh
-
-# Set name of the theme to load.
-# Look in $ZSH/themes/
-# Optionally, if you set this to "random", it'll load a random theme each
-# time that oh-my-zsh is loaded.
-
-#export ZSH_THEME="gozilla"
-#export ZSH_THEME="fino"
-#export ZSH_THEME="takashiyoshida"
-#export ZSH_THEME="random"
-#export ZSH_THEME="jnrowe"
-#export ZSH_THEME="agnoster"
-
-# powerlevel10k has to be set separately. See:
-# https://github.com/romkatv/powerlevel10k/blob/master/README.md#cannot-make-powerlevel10k-work-with-my-plugin-manager
-#export ZSH_THEME="powerline10k"
-
-# Set to this to use case-sensitive completion
-export CASE_SENSITIVE="true"
-
-# Comment this out to disable weekly auto-update checks
-# export DISABLE_AUTO_UPDATE="true"
-
-# Uncomment following line if you want to disable colors in ls
-# export DISABLE_LS_COLORS="true"
-
-# Uncomment following line if you want to disable autosetting terminal title.
-# export DISABLE_AUTO_TITLE="true"
-
-# Which plugins would you like to load? (plugins can be found in ~/.dotfiles/oh-my-zsh/plugins/*)
-plugins=(
-  aws
-  battery
-  brew
-  colorize
-  dirpersist
-  docker
-  fast-syntax-highlighting
-  git
-  gitignore
-  golang
-  iterm2
-  macos
-  pip
-  # pipenv
-  pyenv
-  pylint
-  python
-  # ripgrep
-  rust
-  # ssh-agent
-  sublime
-  sublime-merge
-  # sudo
-  terraform
-  textmate
-  virtualenv
-  # virtualenvwrapper
-)
-
-source $HOME/dotfiles/powerlevel10k/powerlevel10k.zsh-theme
-source $HOME/dotfiles/zsh-autosuggestions/zsh-autosuggestions.zsh
-source $ZSH/oh-my-zsh.sh
-
-# Load rbenv ruby version selector
-# https://github.com/rbenv/rbenv#homebrew-on-macos
-#eval "$(rbenv init -)"
-
-##############################################################################
-# pyenv setup.
-##############################################################################
-if [ -d "$HOME/.pyenv" ]; then
-    # See if there is a user-install...
-    if ! command -v pyenv 1>/dev/null 2>&1; then
-        export PYENV_ROOT="$HOME/.pyenv"
-        export PATH="$PYENV_ROOT/bin:$PATH"
-    fi
-    if command -v pyenv 1>/dev/null 2>&1; then
-        eval "$(pyenv init --path)"
-        eval "$(pyenv virtualenv-init -)"
-    fi
-fi
-eval "$(pyenv init - --no-rehash zsh)"
-
-test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
-# For proper imgcat use, comment out the following line:
-# unalias imgcat
-# see https://github.com/eddieantonio/imgcat
-
-# Quieten startup errors.
-#typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
-
-##############################################################################
-# zsh completion setup.
-##############################################################################
-
-GIT_EXTRAS=/usr/local/opt/git-extras/share/git-extras/git-extras-completion.zsh
-[[ ! -f $GIT_EXTRAS ]] || source $GIT_EXTRAS
-
-# Make target completion.
-zstyle ':completion:*:*:make:*' tag-order 'targets'
-
-# Partial completion suggestions.
-# https://scriptingosx.com/2019/07/moving-to-zsh-part-5-completions/
-zstyle ':completion:*' list-suffixes
zstyle ':completion:*' expand prefix suffix

-
-# The following lines were added by compinstall
-
-zstyle ':completion:*' completer _expand _complete _ignored _approximate
-zstyle :compinstall filename $HOME/.zshrc
-
-autoload -Uz compinit
-compinit
-# End of lines added by compinstall
-
-# >>> conda initialize >>>
-# !! Contents within this block are managed by 'conda init' !!
-__conda_setup="$(\"${HOME}/opt/miniconda3/bin/conda\" \"shell.zsh\" \"hook\" 2> /dev/null)"
-if [ $? -eq 0 ]; then
-    eval "$__conda_setup"
-else
-    if [ -f "${HOME}/opt/miniconda3/etc/profile.d/conda.sh" ]; then
-        . "${HOME}/opt/miniconda3/etc/profile.d/conda.sh"
-    else
-        export PATH="${HOME}/opt/miniconda3/bin:$PATH"
-    fi
-fi
-unset __conda_setup
-# <<< conda initialize <<<
-
-# Created by `pipx` on 2024-02-23 11:28:21
-export PATH="$PATH:/Users/james.lawton/.local/bin"
-
-# Add rustup to path.
-export PATH="/opt/homebrew/opt/rustup/bin:$PATH"
-
-# git-spice shell completion.
-# eval "$(gs shell completion zsh)"
-
-# bun completions
-[ -s "/Users/james.lawton/.bun/_bun" ] && source "/Users/james.lawton/.bun/_bun"
-
-# bun
-export BUN_INSTALL="$HOME/.bun"
-export PATH="$BUN_INSTALL/bin:$PATH"
-
-# GitHub Copilot CLI.
-eval "$(gh copilot alias -- zsh)"
-
-# The following lines have been added by Docker Desktop to enable Docker CLI completions.
-fpath=(/Users/james.lawton/.docker/completions $fpath)
-autoload -Uz compinit
-compinit
-# End of Docker CLI completions
-
-# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
-[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
-eval "$(atuin init zsh)"
diff --git a/shellactivities b/shellactivities
deleted file mode 100644
index 0f6d3cfa..00000000
--- a/shellactivities
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-# TODO
diff --git a/shellaliases b/shellaliases
deleted file mode 100644
index f2505630..00000000
--- a/shellaliases
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-alias hexdumpfile='od -h'
-
-alias gpl='git pull'
-alias gps='git push'
-
-# Directory listings
-# -G Add colors to ls
-# -l Long format
-# -h Short size suffixes (B, K, M, G, P)
-# -p Postpend slash to folders
-alias ls='ls -G -h -p '
-alias ll='ls -l -G -h -p '
-
-alias grep='grep --color=auto --exclude=.svn'
-alias egrep='egrep --color=auto --exclude=.svn'
-alias fgrep='fgrep --color=auto --exclude=.svn'
-
-alias rm='rm -i'
-alias cp='cp -i'
-alias mv='mv -i'
-
-alias now='date +"%Y%m%d-%H%M%S"'
-alias minicom='minicom -C minicom-`now`.log'
-
-alias pgrep='ps auxww | grep \!* | grep -v grep'
-
-alias a2ps='a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
-
-if [ -f /opt/cxoffice/bin/wine -a -d /home/$USER/.cxoffice/Microsoft\ Office\ 2010 ]; then
-    alias word="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app winword.exe"
-    alias excel="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app excel.exe"
-    alias powerpnt="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Office\ 2010 --cx-app powerpnt.exe"
-    alias visio="/opt/cxoffice/bin/wine --bottle /home/$USER/.cxoffice/Microsoft\ Visio\ 2010 --cx-app visio.exe"
-fi
-
-alias gatekeeper='sudo xattr -d com.apple.quarantine'
-
-# On Mac OSX, uuidgen produces uppercase.
-alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]"'
-
-# Jira CLI aliases (https://github.com/ankitpokhrel/jira-cli)
-alias jfullboard="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open, 'On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
-alias jtodo="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('To Do'))\""
-alias jbacklog="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in (Open))\""
-alias jreview="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Review'))\""
-alias jwip="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('In Progress'))\""
-alias jblocked="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold'))\""
-alias jkanban="jira issue list -q \"project in (FWAAS) AND issuetype not in (Initiative, Epic, Project, Theme, Program) AND (status in ('On Hold', 'In Progress', 'In Review', 'To Do') OR status = Closed AND resolutiondate >= startOfDay(-2d))\""
-
-alias afping='curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
diff --git a/shellfunctions b/shellfunctions
deleted file mode 100644
index d9a90132..00000000
--- a/shellfunctions
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/bin/sh
-
-# Shell Functions.
-
-# Set iTerm2 tab title
-#function tabTitle() {
-#    echo -ne "\033]0;"$*"\007"; 
-#}
-
-# Set iTerm2 window title
-#function winTitle() {
-#    echo -ne "\033]0;"$*"\007"; 
-#}
-
-# Always list directory contents and set title upon 'cd'
-#function cd() {
-#    builtin cd "$@"; tabTitle ${PWD##*/}; winTitle ${PWD/#"$HOME" /~};
-#}
-
-function killxscreensaver() {
-    pkill xscreensaver
-    echo ""
-    return
-}
-
-function col() {
-    awk '{print $'$(echo $* | sed -e 's/ /,$/g')'}';
-}
-
-# Awk calculator.
-function calc() {
-    awk "BEGIN { print $* }" ;
-}
-
-# Add a path to the global PATH.
-function pathmunge() {
-    if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
-       if [ "$2" = "after" ] ; then
-          PATH=$PATH:$1
-       else
-          PATH=$1:$PATH
-       fi
-    fi
-}
-
-# .. - Does a 'cd ..'
-# .. 3 - Does a 'cd ../../..'
-#
-# Usage .. [n]
-# Go up n-levels.
-# i.e.: .. 3 will go up 3 levels
-function .. {
-	local arg=${1:-1};
-	local dir=""
-	while [ $arg -gt 0 ]; do
-		dir="../$dir"
-		arg=$(($arg - 1));
-	done
-	cd $dir >&/dev/null
-}
-
-# Usage ... Thing/Some
-# Go up until you encounter Thing/Some, then go there
-# i.e.: I'm in /usr/share/X11
-# ... src will go up to /usr, then change to /usr/src
-function ... {
-	if [ -z "$1" ]; then
-		return
-	fi
-	local maxlvl=16
-	local dir=$1
-	while [ $maxlvl -gt 0 ]; do
-		dir="../$dir"
-		maxlvl=$(($maxlvl - 1));
-		if [ -d "$dir" ]; then
-			cd $dir >&/dev/null
-		fi
-	done
-}
-
-# Change extensions of specified files.
-function chext() {
-    local fname
-    local new_ext="$1"
-    shift
-    IFS=$'\n'
-    for fname in $@
-    do
-        mv "$fname" "${fname%.*}.$new_ext"
-    done
-}
-
-function tools() {
-    pushd . >/dev/null
-    brtop
-    if [ -d $(pwd)/tools ]; then
-        PATH=${PATH/$TOOLS:/}
-        TOOLS=$(pwd)/tools/cm
-        pathmunge ${TOOLS}
-        #PATH=${TOOLS}:${PATH}
-        echo $TOOLS
-    fi
-    popd >/dev/null
-}
-
-# Create a new git repo with one README commit and cd into it
-function git.nr() {
-	mkdir $1
-	cd $1
-	git init
-	touch README
-	git add README
-	git commit -m "First commit."
-}
-
-function find.name() {
-    wild=\'\*$1\*\'
-    sh -c "find . -iname $wild"
-}
-
-# Function that takes 2 args, a list and a string,
-# and returns 0 if the string is in the list, or
-# 1 otherwise.
-function contains() {
-    for item in $1; do
-        if [ "$item" = "$2" ]; then
-            return 0
-        fi
-    done
-    return 1
-}
-
-# From Eli Bendersky
-# http://eli.thegreenplace.net/2013/06/11/keeping-persistent-history-in-bash/
-# https://github.com/eliben/code-for-blog/blob/master/2016/persistent-history/add-persistent-history.sh
-function log_bash_persistent_history() {
-    local rc=$?
-    [[ $(history 1) =~ ^\ *[0-9]+\ +([^\ ]+\ [^\ ]+)\ +(.*)$ ]]
-    local date_part="${BASH_REMATCH[1]}"
-    local command_part="${BASH_REMATCH[2]}"
-    # Try to skip usernames/passwords.
-    if [[ $command_part == *"$USER"* ]]; then
-        return
-    fi
-    if [[ $command_part == *"API_KEY"* ]]; then
-        return
-    fi
-    if [[ $command_part == *"PASSWORD"* ]]; then
-        return
-    fi
-    for username in "$_USERNAMES"; do
-        if [[ $command_part == *"$username"* ]]; then
-            return
-        fi
-    done
-    if [ "$command_part" != "$PERSISTENT_HISTORY_LAST" ]; then
-        echo "$HOSTNAME | $date_part | $command_part" >> ~/.persistent_history
-        export PERSISTENT_HISTORY_LAST="$command_part"
-    fi
-}
-
-# gitignore.io
-# http://www.gitignore.io/cli
-function gi() {
-    curl http://www.gitignore.io/api/$@ ;
-}
-
-# Linux?
-function isLinux() {
-    if [ "$OS" = "Linux" ]; then
-        return 0
-    fi
-    return 1
-}
-
-# Mac?
-function isMac() {
-    if [ "$OS" = "Darwin" ]; then
-        return 0
-    fi
-    return 1
-}
-
-# iTerm2 tab titles
-function title() {
-    if [ ! -e "${HOME}/.iterm2_shell_integration.bash" ]; then
-        return
-    fi
-    if [ "$1" ]; then
-        # Manually specify the title.
-        echo -ne "\033]0;${*}\007"
-    else
-        # This shows the path from ~ in the title.
-        #echo -ne "\033]0;${PWD/#$HOME/~}\007"
-        # This shows the last part of the path in the title.
-        #echo -ne "\033]0;${PWD##*/}\007"
-
-        # This shows the current git repo, or directory, in the title.
-        if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
-            local directory
-            echo -ne "\033];${PWD##*/}\007"
-        else
-            local branch
-            local branchdir
-            branchdir=$(basename "$(git rev-parse --show-toplevel)")
-            branch=$(git branch 2>/dev/null | grep -e '\* ' | sed "s/^..\(.*\)/{\1}/")
-            echo -ne "\033];[$branchdir] ${PWD##*/} $branch\007"
-        fi
-    fi
-}
-
-function gpip2() {
-   PIP_REQUIRE_VIRTUALENV="0" pip2 "$@"
-}
-
-function gpip() {
-   PIP_REQUIRE_VIRTUALENV="0" pip3 "$@"
-}
-
-function upgrade_pyenvs() {
-    if command -v pyenv 1>/dev/null 2>&1; then
-        for env_ver in $(pyenv versions --bare); do 
-            pyenv shell $env_ver
-            pyenv version
-            PIP_REQUIRE_VIRTUALENV="0" pip3 install --quiet --upgrade pip gnureadline wheel virtualenv virtualenvwrapper
-            pyenv shell --unset
-        done
-        pyenv shell --unset
-        unset PYENV_VERSION
-        pyenv version
-    fi
-}
-
-# Clone a repo and install pre-commit hooks if configured.
-function git.clone() {
-    git clone $1
-    subdir="${1##*/}"
-    subdir="${subdir%.git}"
-    pushd "${subdir}" > /dev/null
-    if [ -e .pre-commit-config.yaml ]; then
-        if [ ! -e ./configure-hooks.sh ]; then
-            echo "Error: pre-commit hooks required, but install script is not present!"
-            popd > /dev/null
-            return 1
-        fi
-        which pre-commit >/dev/null || {
-            echo "Error: pre-commit hooks required, but 'pre-commit' is not installed!"
-            popd > /dev/null
-            return 1
-        }
-        ./configure-hooks.sh --install
-    fi
-    popd > /dev/null
-    return 0
-}
-
-if [ -f ~/dotfiles/shellfunctions-personal ]; then
-    source ~/dotfiles/shellfunctions-personal
-fi
-if [ -f ~/dotfiles/shellfunctions-work ]; then
-    source ~/dotfiles/shellfunctions-work
-fi
-
diff --git a/shellpaths b/shellpaths
deleted file mode 100644
index 929ffc12..00000000
--- a/shellpaths
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-########################################################################
-# Shell agnostic path setup
-########################################################################
-
-export PATH=$PATH:.
-export PATH=$PATH:~/bin
-export PATH=$PATH:~/dotfiles/scripts
-export PATH=$PATH:~/.cargo/bin
-export PATH=$PATH:$GOPATH/bin
-export PATH=$PATH:$GOROOT/bin
-export PATH=$PATH:~/adr-tools/src
-export PATH="/usr/local/sbin:$PATH"
-export PATH="/opt/homebrew/sbin:$PATH"
-export PATH="/opt/homebrew/bin:$PATH"
-export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
-export PATH="$GOENV_ROOT/bin:$PATH"
-export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
diff --git a/shellvars b/shellvars
deleted file mode 100644
index 088c35c4..00000000
--- a/shellvars
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-export OS=$(uname -s)
-
-#########################################################################
-# Tool settings
-#########################################################################
-
-# Set the default pager to less
-export PAGER="less"
-# Set less to have a default flag of -R (RAW) so color passes through
-export LESS="-R"
-
-# GPG_TTY=$(tty)
-# export GPG_TTY
-
-#########################################################################
-# Shell settings
-#########################################################################
-
-export HISTCONTROL=ignoredups:erasedups
-export HISTSIZE=2000
-export HISTFILESIZE=2000
-export HISTTIMEFORMAT="%F %T "
-
-export HOSTNAME=`hostname -s`
-
-COMP_WORDBREAKS="${COMP_WORDBREAKS}:"
-export EDITOR=vi
-export PAGER=less
-export PSSH_HOSTS=~/.hosts_file
-
-if [ -d /local/$USER ]; then
-    export CCACHE_DIR=/local/$USER/.ccache
-fi
-export TMOUT=0
-
-#########################################################################
-# Go
-#########################################################################
-export GOPATH=~/go
-
-#########################################################################
-# Manpages colour schemes.
-#########################################################################
-# Mostly magenta...
-#export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode - red
-#export LESS_TERMCAP_md=$(printf '\e[01;35m') # enter double-bright mode - bold, magenta
-#export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-#export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-#export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode - yellow
-#export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-#export LESS_TERMCAP_us=$(printf '\e[04;36m') # enter underline mode - cyan
-# Bolder...
-export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
-export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
-export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
-export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
-export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
-export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
-export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
-
-#export SERVER=`/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | awk -F: '{print $2}'`
-umask 002
-
-# Set vim as default command line editor
-export EDITOR='vim'
-
-export XXDIFF_EDITOR="xterm -e 'vi %s'"
-export PYTHONSTARTUP=~/.pythonrc
-#export PRINTER=xxx
-
-#########################################################################
-# Python Virtualenv stuff.
-#########################################################################
-# virtualenvwrapper
-export WORKON_HOME=$HOME/.virtualenvs
-# All new environments isolated from the site-packages directory.
-#export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
-# Specify Python to use with virtualenvwrapper.
-# export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
-# Use the same directory for virtualenvs as virtualenvwrapper.
-export PIP_VIRTUALENV_BASE=$WORKON_HOME
-# Make pip detect an active virtualenv and install to it
-export PIP_RESPECT_VIRTUALENV=true
-# Make pip only install into a virtualenv.
-export PIP_REQUIRE_VIRTUALENV=true
-
-export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-
-export GOENV_ROOT="$HOME/.goenv"
-
-export TSRC_PARALLEL_JOBS=8
-
-if [ -f ~/dotfiles/shellvars-personal ]; then
-    source ~/dotfiles/shellvars-personal
-fi
-if [ -f ~/dotfiles/shellvars-work ]; then
-    source ~/dotfiles/shellvars-work
-fi
-

From 58b5d9a54ee1da2d700c64b42531034d7365a6fc Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:45:35 +0000
Subject: [PATCH 763/973] fish: remove unused empty fish setup.

---
 fish/completions/.keep |  0
 fish/conf.d/.keep      |  0
 fish/config.fish       |  3 ---
 fish/fish_variables    | 31 -------------------------------
 fish/functions/.keep   |  0
 5 files changed, 34 deletions(-)
 delete mode 100644 fish/completions/.keep
 delete mode 100644 fish/conf.d/.keep
 delete mode 100644 fish/config.fish
 delete mode 100644 fish/fish_variables
 delete mode 100644 fish/functions/.keep

diff --git a/fish/completions/.keep b/fish/completions/.keep
deleted file mode 100644
index e69de29b..00000000
diff --git a/fish/conf.d/.keep b/fish/conf.d/.keep
deleted file mode 100644
index e69de29b..00000000
diff --git a/fish/config.fish b/fish/config.fish
deleted file mode 100644
index d714361f..00000000
--- a/fish/config.fish
+++ /dev/null
@@ -1,3 +0,0 @@
-if status is-interactive
-    # Commands to run in interactive sessions can go here
-end
diff --git a/fish/fish_variables b/fish/fish_variables
deleted file mode 100644
index 74b1ee1b..00000000
--- a/fish/fish_variables
+++ /dev/null
@@ -1,31 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR __fish_initialized:3800
-SETUVAR fish_color_autosuggestion:brblack
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:normal
-SETUVAR fish_color_comment:red
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:green
-SETUVAR fish_color_error:brred
-SETUVAR fish_color_escape:brcyan
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:brcyan
-SETUVAR fish_color_param:cyan
-SETUVAR fish_color_quote:yellow
-SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
-SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_status:red
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:yellow\x1e\x2di
-SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
-SETUVAR fish_pager_color_selected_background:\x2dr
diff --git a/fish/functions/.keep b/fish/functions/.keep
deleted file mode 100644
index e69de29b..00000000

From 102523e673fc3c4d60ebc3ec2d9ab98bef02f9b6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:46:41 +0000
Subject: [PATCH 764/973] fish: add paths file.

---
 chezmoi/private_dot_config/private_fish/conf.d/paths.fish | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
index f0b677a4..14772801 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -1,10 +1,10 @@
 fish_add_path .
-fish_add_path ~/bin
-fish_add_path ~/dotfiles/scripts
-fish_add_path ~/.cargo/bin
+fish_add_path $HOME/bin
+fish_add_path $HOME/dotfiles/scripts
+fish_add_path $HOME/.cargo/bin
 fish_add_path $GOPATH/bin
 fish_add_path $GOROOT/bin
-fish_add_path ~/adr-tools/src
+fish_add_path $HOME/adr-tools/src
 fish_add_path /usr/local/sbin
 fish_add_path /opt/homebrew/sbin
 fish_add_path /opt/homebrew/bin

From 60586f1db52b4385e4dd71c93330636c9e426a85 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:47:41 +0000
Subject: [PATCH 765/973] Remove oh-my-zsh.

---
 .gitmodules | 3 ---
 oh-my-zsh   | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 oh-my-zsh

diff --git a/.gitmodules b/.gitmodules
index 7bfe668d..761fc173 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,9 +4,6 @@
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
-[submodule "oh-my-zsh"]
-	path = oh-my-zsh
-	url = https://github.com/robbyrussell/oh-my-zsh.git
 [submodule "z-zsh"]
 	path = z-zsh
 	url = https://github.com/sjl/z-zsh.git
diff --git a/oh-my-zsh b/oh-my-zsh
deleted file mode 160000
index 6e7ac054..00000000
--- a/oh-my-zsh
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6e7ac0544e71c7b777746cb50f70de68c6495b86

From cb65767af9326275516bb2ae9813c3a252f28d61 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:48:34 +0000
Subject: [PATCH 766/973] Remove z submodule.

---
 .gitmodules | 3 ---
 z           | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 z

diff --git a/.gitmodules b/.gitmodules
index 761fc173..58d41c3c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,9 +7,6 @@
 [submodule "z-zsh"]
 	path = z-zsh
 	url = https://github.com/sjl/z-zsh.git
-[submodule "z"]
-	path = z
-	url = https://github.com/rupa/z
 [submodule "powerlevel10k"]
 	path = powerlevel10k
 	url = https://github.com/romkatv/powerlevel10k.git
diff --git a/z b/z
deleted file mode 160000
index d37a763a..00000000
--- a/z
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d37a763a6a30e1b32766fecc3b8ffd6127f8a0fd

From f847f735591337c4c9d24a80bcbdf803608873de Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:48:56 +0000
Subject: [PATCH 767/973] Remove z-zsh submodule.

---
 .gitmodules | 3 ---
 z-zsh       | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 z-zsh

diff --git a/.gitmodules b/.gitmodules
index 58d41c3c..c90d23a5 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,9 +4,6 @@
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
-[submodule "z-zsh"]
-	path = z-zsh
-	url = https://github.com/sjl/z-zsh.git
 [submodule "powerlevel10k"]
 	path = powerlevel10k
 	url = https://github.com/romkatv/powerlevel10k.git
diff --git a/z-zsh b/z-zsh
deleted file mode 160000
index 052a6cbb..00000000
--- a/z-zsh
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 052a6cbbcd83c1968a11c26d75950bf455b816fb

From 0b6442d0ef7c5ec1608e72fef6d5e2a2a4c359fa Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:49:37 +0000
Subject: [PATCH 768/973] Remove z-autosuggestions submodule.

---
 .gitmodules         | 3 ---
 zsh-autosuggestions | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 zsh-autosuggestions

diff --git a/.gitmodules b/.gitmodules
index c90d23a5..7f7cd8e8 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,6 +7,3 @@
 [submodule "powerlevel10k"]
 	path = powerlevel10k
 	url = https://github.com/romkatv/powerlevel10k.git
-[submodule "zsh-autosuggestions"]
-	path = zsh-autosuggestions
-	url = https://github.com/zsh-users/zsh-autosuggestions
diff --git a/zsh-autosuggestions b/zsh-autosuggestions
deleted file mode 160000
index 0e810e5a..00000000
--- a/zsh-autosuggestions
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0e810e5afa27acbd074398eefbe28d13005dbc15

From dbbe020ea5a16ffd7407a5d6ffad89d4a5e73a54 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 21:50:50 +0000
Subject: [PATCH 769/973] Remove powerlevel10k submodule.

---
 .gitmodules   | 3 ---
 powerlevel10k | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 powerlevel10k

diff --git a/.gitmodules b/.gitmodules
index 7f7cd8e8..07e2eca7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,3 @@
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
-[submodule "powerlevel10k"]
-	path = powerlevel10k
-	url = https://github.com/romkatv/powerlevel10k.git
diff --git a/powerlevel10k b/powerlevel10k
deleted file mode 160000
index 3e2053a9..00000000
--- a/powerlevel10k
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3e2053a9341fe4cf5ab69909d3f39d53b1dfe772

From d71266682dd9d58eed3b2b6b5e6f9659c6e30dbb Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:14:09 +0000
Subject: [PATCH 770/973] fish: update paths module.

---
 .../private_fish/conf.d/paths.fish                   | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
index 14772801..c12cd38d 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -1,13 +1,11 @@
-fish_add_path .
-fish_add_path $HOME/bin
-fish_add_path $HOME/dotfiles/scripts
-fish_add_path $HOME/.cargo/bin
+fish_add_path --global --move --path "/opt/homebrew/bin" "/opt/homebrew/sbin"
 fish_add_path $GOPATH/bin
 fish_add_path $GOROOT/bin
-fish_add_path $HOME/adr-tools/src
 fish_add_path /usr/local/sbin
-fish_add_path /opt/homebrew/sbin
-fish_add_path /opt/homebrew/bin
 fish_add_path /usr/local/opt/gnu-sed/libexec/gnubin
 fish_add_path $GOENV_ROOT/bin
 fish_add_path /opt/homebrew/opt/llvm/bin
+fish_add_path $HOME/bin
+fish_add_path $HOME/dotfiles/scripts
+fish_add_path $HOME/.cargo/bin
+fish_add_path .

From e6d467d5b5ab4175a52bd4282a614fff1cbb4c06 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:14:35 +0000
Subject: [PATCH 771/973] starship: tweak git status.

---
 chezmoi/private_dot_config/starship.toml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 8c181bd0..3cf1b50d 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -54,6 +54,9 @@ style = "fg:#1C3A5E bg:#f9e71f"
 [git_status]
 format = '[$all_status]($style)'
 style = "fg:#1C3A5E bg:#f9e71f"
+ahead = '⇡${count}'
+behind = '⇣${count}'
+diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#1C3A5E bg:#f9e71f)'
 
 [git_metrics]
 format = "([+$added]($added_style))[]($added_style)"

From 9cf1f37b026c8cdb8654c14741ec982052e3b23e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:17:45 +0000
Subject: [PATCH 772/973] fish: disable the greeting.

---
 chezmoi/private_dot_config/private_fish/config.fish | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 0af3eab3..654a6bd3 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -6,6 +6,9 @@ fish_add_path $CARGO_HOME/bin
 if status is-interactive
     # Commands to run in interactive sessions can go here
 
+    # Don't be so friendly.
+    set fish_greeting
+
     # Starship prompt setup.
     function starship_transient_prompt_func
         starship module character

From a8ae0dfedfa6b4b97cd0e19e3c220f3df5ec725b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:21:13 +0000
Subject: [PATCH 773/973] chezmoi: remove p10k config.

---
 chezmoi/dot_p10k.zsh | 1839 ------------------------------------------
 1 file changed, 1839 deletions(-)
 delete mode 100644 chezmoi/dot_p10k.zsh

diff --git a/chezmoi/dot_p10k.zsh b/chezmoi/dot_p10k.zsh
deleted file mode 100644
index 2c3ae39f..00000000
--- a/chezmoi/dot_p10k.zsh
+++ /dev/null
@@ -1,1839 +0,0 @@
-# Generated by Powerlevel10k configuration wizard on 2025-10-31 at 14:15 GMT.
-# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 49619.
-# Wizard options: nerdfont-v3 + powerline, small icons, rainbow, unicode,
-# angled separators, sharp heads, flat tails, 1 line, compact, many icons, concise,
-# transient_prompt, instant_prompt=verbose.
-# Type `p10k configure` to generate another config.
-#
-# Config for Powerlevel10k with powerline prompt style with colorful background.
-# Type `p10k configure` to generate your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
-
-# Temporarily change options.
-'builtin' 'local' '-a' 'p10k_config_opts'
-[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
-[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
-[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
-'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
-
-() {
-  emulate -L zsh -o extended_glob
-
-  # Unset all configuration options. This allows you to apply configuration changes without
-  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
-  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
-
-  # Zsh >= 5.1 is required.
-  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
-
-  # The list of segments shown on the left. Fill it with the most important segments.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-    # os_icon                 # os identifier
-    dir                     # current directory
-    vcs                     # git status
-    # prompt_char           # prompt symbol
-  )
-
-  # The list of segments shown on the right. Fill it with less important segments.
-  # Right prompt on the last prompt line (where you are typing your commands) gets
-  # automatically hidden when the input line reaches it. Right prompt above the
-  # last prompt line gets hidden if it would overlap with left prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
-    status                  # exit code of the last command
-    command_execution_time  # duration of the last command
-    background_jobs         # presence of background jobs
-    direnv                  # direnv status (https://direnv.net/)
-    asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
-    virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
-    anaconda                # conda environment (https://conda.io/)
-    pyenv                   # python environment (https://github.com/pyenv/pyenv)
-    goenv                   # go environment (https://github.com/syndbg/goenv)
-    nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
-    nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
-    nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
-    # node_version          # node.js version
-    # go_version            # go version (https://golang.org)
-    # rust_version          # rustc version (https://www.rust-lang.org)
-    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
-    # php_version           # php version (https://www.php.net/)
-    # laravel_version       # laravel php framework version (https://laravel.com/)
-    # java_version          # java version (https://www.java.com/)
-    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
-    rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
-    rvm                     # ruby version from rvm (https://rvm.io)
-    fvm                     # flutter version management (https://github.com/leoafarias/fvm)
-    luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
-    jenv                    # java version from jenv (https://github.com/jenv/jenv)
-    plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
-    perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
-    phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
-    scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
-    haskell_stack           # haskell version from stack (https://haskellstack.org/)
-    kubecontext             # current kubernetes context (https://kubernetes.io/)
-    terraform               # terraform workspace (https://www.terraform.io)
-    # terraform_version     # terraform version (https://www.terraform.io)
-    aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
-    aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
-    azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
-    gcloud                  # google cloud cli account and project (https://cloud.google.com/)
-    google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
-    toolbox                 # toolbox name (https://github.com/containers/toolbox)
-    context                 # user@hostname
-    nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
-    ranger                  # ranger shell (https://github.com/ranger/ranger)
-    yazi                    # yazi shell (https://github.com/sxyazi/yazi)
-    nnn                     # nnn shell (https://github.com/jarun/nnn)
-    lf                      # lf shell (https://github.com/gokcehan/lf)
-    xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
-    vim_shell               # vim shell indicator (:sh)
-    midnight_commander      # midnight commander shell (https://midnight-commander.org/)
-    nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
-    chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
-    vi_mode                 # vi mode (you don't need this if you've enabled prompt_char)
-    # vpn_ip                # virtual private network indicator
-    # load                  # CPU load
-    # disk_usage            # disk usage
-    # ram                   # free RAM
-    # swap                  # used swap
-    todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
-    timewarrior             # timewarrior tracking status (https://timewarrior.net/)
-    taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
-    per_directory_history   # Oh My Zsh per-directory-history local/global indicator
-    # cpu_arch              # CPU architecture
-    # time                  # current time
-    # ip                    # ip address and bandwidth usage for a specified network interface
-    # public_ip             # public IP address
-    # proxy                 # system-wide http/https/ftp proxy
-    # battery               # internal battery
-    # wifi                  # wifi speed
-    # example               # example user-defined segment (see prompt_example function below)
-  )
-
-  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
-  typeset -g POWERLEVEL9K_MODE=nerdfont-v3
-  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
-  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
-  typeset -g POWERLEVEL9K_ICON_PADDING=none
-
-  # When set to true, icons appear before content on both sides of the prompt. When set
-  # to false, icons go after content. If empty or not set, icons go before content in the left
-  # prompt and after content in the right prompt.
-  #
-  # You can also override it for a specific segment:
-  #
-  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
-  #
-  # Or for a specific segment in specific state:
-  #
-  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
-  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=
-
-  # Add an empty line before each prompt.
-  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
-
-  # Connect left prompt lines with these symbols. You'll probably want to use the same color
-  # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─'
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─'
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─'
-  # Connect right prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮'
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤'
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯'
-
-  # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
-  # '─'. The last two make it easier to see the alignment between left and right prompt and to
-  # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
-  # for more compact prompt if using this option.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
-  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
-    # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
-    # ornaments defined above.
-    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242
-    # Start filler from the edge of the screen if there are no left segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
-    # End filler on the edge of the screen if there are no right segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
-  fi
-
-  # Separator between same-color segments on the left.
-  typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1'
-  # Separator between same-color segments on the right.
-  typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3'
-  # Separator between different-color segments on the left.
-  typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
-  # Separator between different-color segments on the right.
-  typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
-  # To remove a separator between two segments, add "_joined" to the second segment name.
-  # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined)
-
-  # The right end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
-  # The left end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
-  # The left end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=''
-  # The right end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
-  # Left prompt terminator for lines without any segments.
-  typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
-  #################################[ os_icon: os identifier ]##################################
-  # OS identifier color.
-  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=232
-  typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=7
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
-
-  ################################[ prompt_char: prompt symbol ]################################
-  # Transparent background.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=
-  # Green prompt symbol if the last command succeeded.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
-  # Red prompt symbol if the last command failed.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
-  # Default prompt symbol.
-  # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
-  # jiml 2021-03-26 change prompt char
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='%B➜'
-  # Prompt symbol in command vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
-  # Prompt symbol in visual vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
-  # Prompt symbol in overwrite vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
-  # No line terminator if prompt_char is the last segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-  # No line introducer if prompt_char is the first segment.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
-  # No surrounding whitespace.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE=
-
-  ##################################[ dir: current directory ]##################################
-  # Current directory background color.
-  typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
-  # Default current directory foreground color.
-  typeset -g POWERLEVEL9K_DIR_FOREGROUND=254
-  # If directory is too long, shorten some of its segments to the shortest possible unique
-  # prefix. The shortened directory can be tab-completed to the original.
-  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
-  # Replace removed segment suffixes with this symbol.
-  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
-  # Color of the shortened directory segments.
-  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250
-  # Color of the anchor directory segments. Anchor segments are never shortened. The first
-  # segment is always an anchor.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255
-  # Display anchor directory segments in bold.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
-  # Don't shorten directories that contain any of these files. They are anchors.
-  local anchor_files=(
-    .bzr
-    .citc
-    .git
-    .hg
-    .node-version
-    .python-version
-    .go-version
-    .ruby-version
-    .lua-version
-    .java-version
-    .perl-version
-    .php-version
-    .tool-versions
-    .mise.toml
-    .shorten_folder_marker
-    .svn
-    .terraform
-    CVS
-    Cargo.toml
-    composer.json
-    go.mod
-    package.json
-    stack.yaml
-  )
-  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
-  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
-  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
-  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
-  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
-  # and other directories don't.
-  #
-  # Optionally, "first" and "last" can be followed by ":" where  is an integer.
-  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
-  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
-  # respectively.
-  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
-  # Don't shorten this many last directory segments. They are anchors.
-  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
-  # Shorten directory if it's longer than this even if there is space for it. The value can
-  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
-  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
-  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
-  # If set to `0`, directory will always be shortened to its minimum length.
-  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
-  # many columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
-  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
-  # If set to true, embed a hyperlink into the directory. Useful for quickly
-  # opening a directory in the file manager simply by clicking the link.
-  # Can also be handy when the directory is shortened, as it allows you to see
-  # the full directory that was used in previous commands.
-  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
-  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
-  # and POWERLEVEL9K_DIR_CLASSES below.
-  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
-
-  # The default icon shown next to non-writable and non-existent directories when
-  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
-  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
-
-  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
-  # directories. It must be an array with 3 * N elements. Each triplet consists of:
-  #
-  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
-  #      extended_glob option enabled.
-  #   2. Directory class for the purpose of styling.
-  #   3. An empty string.
-  #
-  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
-  #
-  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
-  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
-  #     '~/work(|/*)'  WORK     ''
-  #     '~(|/*)'       HOME     ''
-  #     '*'            DEFAULT  '')
-  #
-  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
-  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
-  # WORK_NON_EXISTENT.
-  #
-  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
-  # option to define custom colors and icons for different directory classes.
-  #
-  #   # Styling for WORK.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255
-  #
-  #   # Styling for WORK_NOT_WRITABLE.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255
-  #
-  #   # Styling for WORK_NON_EXISTENT.
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250
-  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255
-  #
-  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
-  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
-  # back to POWERLEVEL9K_DIR_FOREGROUND.
-  #
-  # typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_DIR_PREFIX='in '
-
-  #####################################[ vcs: git status ]######################################
-  # Version control background colors.
-  typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2
-  typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2
-  typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3
-  typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8
-
-  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
-  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
-
-  # Untracked files icon. It's really a question mark, your font isn't broken.
-  # Change the value of this parameter to show a different icon.
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
-
-  # Formatter for Git status.
-  #
-  # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
-  #
-  # You can edit the function to customize how Git status looks.
-  #
-  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
-  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
-  function my_git_formatter() {
-    emulate -L zsh
-
-    if [[ -n $P9K_CONTENT ]]; then
-      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
-      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
-      typeset -g my_git_format=$P9K_CONTENT
-      return
-    fi
-
-    # Styling for different parts of Git status.
-    local       meta='%7F' # white foreground
-    local      clean='%0F' # black foreground
-    local   modified='%0F' # black foreground
-    local  untracked='%0F' # black foreground
-    local conflicted='%1F' # red foreground
-
-    local res
-
-    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
-      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
-      # If local branch name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show local branch name in full without truncation, delete the next line.
-      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
-      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
-    fi
-
-    if [[ -n $VCS_STATUS_TAG
-          # Show tag only if not on a branch.
-          # Tip: To always show tag, delete the next line.
-          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
-        ]]; then
-      local tag=${(V)VCS_STATUS_TAG}
-      # If tag name is at most 32 characters long, show it in full.
-      # Otherwise show the first 12 … the last 12.
-      # Tip: To always show tag name in full without truncation, delete the next line.
-      (( $#tag > 32 )) && tag[13,-13]="…"  # <-- this line
-      res+="${meta}#${clean}${tag//\%/%%}"
-    fi
-
-    # Display the current Git commit if there is no branch and no tag.
-    # Tip: To always display the current Git commit, delete the next line.
-    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
-      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
-
-    # Show tracking branch name if it differs from local branch.
-    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
-      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
-    fi
-
-    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
-    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
-      res+=" ${modified}wip"
-    fi
-
-    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
-      # ⇣42 if behind the remote.
-      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
-      # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
-      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
-      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
-    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
-      # Tip: Uncomment the next line to display '=' if up to date with the remote.
-      # res+=" ${clean}="
-    fi
-
-    # ⇠42 if behind the push remote.
-    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
-    # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
-    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
-    # *42 if have stashes.
-    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
-    # 'merge' if the repo is in an unusual state.
-    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
-    # ~42 if have merge conflicts.
-    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
-    # +42 if have staged changes.
-    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
-    # !42 if have unstaged changes.
-    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
-    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
-    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
-    # Remove the next line if you don't want to see untracked files at all.
-    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
-    # "─" if the number of unstaged files is unknown. This can happen due to
-    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
-    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
-    # in the repository config. The number of staged and untracked files may also be unknown
-    # in this case.
-    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
-
-    typeset -g my_git_format=$res
-  }
-  functions -M my_git_formatter 2>/dev/null
-
-  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
-  # more than this many files in the index. Negative value means infinity.
-  #
-  # If you are working in Git repositories with tens of millions of files and seeing performance
-  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
-  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
-  # config: `git config bash.showDirtyState false`.
-  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
-
-  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
-  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
-  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
-  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
-
-  # Disable the default Git status formatting.
-  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
-  # Install our own Git status formatter.
-  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}'
-  # Enable counters for staged, unstaged, etc.
-  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_VCS_PREFIX='on '
-
-  # Show status of repositories of these types. You can add svn and/or hg if you are
-  # using them. If you do, your prompt may become slow even when your current directory
-  # isn't in an svn or hg repository.
-  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
-
-  ##########################[ status: exit code of the last command ]###########################
-  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
-  # style them independently from the regular OK and ERROR state.
-  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
-
-  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
-  # it will signify success by turning green.
-  typeset -g POWERLEVEL9K_STATUS_OK=true
-  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
-  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2
-  typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0
-
-  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
-  # like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0
-
-  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
-  # it will signify error by turning red.
-  typeset -g POWERLEVEL9K_STATUS_ERROR=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1
-
-  # Status when the last command was terminated by a signal.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
-  # Use terse signal names: "INT" instead of "SIGINT(2)".
-  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1
-
-  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
-  # It may look like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1
-
-  ###################[ command_execution_time: duration of the last command ]###################
-  # Execution time color.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3
-  # Show duration of the last command if takes at least this many seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
-  # Show this many fractional digits. Zero means round to seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
-  # Duration format: 1d 2h 3m 4s.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took '
-
-  #######################[ background_jobs: presence of background jobs ]#######################
-  # Background jobs color.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0
-  # Don't show the number of background jobs.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ direnv: direnv status (https://direnv.net/) ]########################
-  # Direnv color.
-  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=3
-  typeset -g POWERLEVEL9K_DIRENV_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
-  # Default asdf color. Only used to display tools for which there is no color override (see below).
-  # Tip:  Override these parameters for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND and
-  # POWERLEVEL9K_ASDF_${TOOL}_BACKGROUND.
-  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_BACKGROUND=7
-
-  # There are four parameters that can be used to hide asdf tools. Each parameter describes
-  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
-  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
-  # hide a tool, it gets shown.
-  #
-  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
-  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
-  #
-  #   asdf local  python 3.8.1
-  #   asdf global python 3.8.1
-  #
-  # After running both commands the current python version is 3.8.1 and its source is "local" as
-  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
-  # it'll hide python version in this case because 3.8.1 is the same as the global version.
-  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
-  # contain "local".
-
-  # Hide tool versions that don't come from one of these sources.
-  #
-  # Available sources:
-  #
-  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
-  # - local   `asdf current` says "set by /some/not/home/directory/file"
-  # - global  `asdf current` says "set by /home/username/file"
-  #
-  # Note: If this parameter is set to (shell local global), it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
-  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
-
-  # If set to false, hide tool versions that are the same as global.
-  #
-  # Note: The name of this parameter doesn't reflect its meaning at all.
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
-  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
-
-  # If set to false, hide tool versions that are equal to "system".
-  #
-  # Note: If this parameter is set to true, it won't hide tools.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
-  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
-
-  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
-  # in the current directory, or its parent directory, or its grandparent directory, and so on.
-  #
-  # Note: If this parameter is set to empty value, it won't hide tools.
-  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
-  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
-  #
-  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
-  # directory, in `..`, in `../..` and so on.
-  #
-  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
-  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
-
-  # Ruby version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_RUBY_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Python version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PYTHON_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Go version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_GOLANG_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Node.js version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_NODEJS_BACKGROUND=2
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Rust version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_RUST_BACKGROUND=208
-  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # .NET Core version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Flutter version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_FLUTTER_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Lua version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_LUA_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Java version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=1
-  typeset -g POWERLEVEL9K_ASDF_JAVA_BACKGROUND=7
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Perl version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PERL_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Erlang version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_ERLANG_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Elixir version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_ELIXIR_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Postgres version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_POSTGRES_BACKGROUND=6
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # PHP version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_PHP_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Haskell version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_HASKELL_BACKGROUND=3
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  # Julia version from asdf.
-  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ASDF_JULIA_BACKGROUND=2
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
-
-  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
-  # NordVPN connection indicator color.
-  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7
-  typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4
-  # Hide NordVPN connection indicator when not connected.
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
-  # Ranger shell color.
-  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3
-  typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
-  # Yazi shell color.
-  typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3
-  typeset -g POWERLEVEL9K_YAZI_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
-  # Nnn shell color.
-  typeset -g POWERLEVEL9K_NNN_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NNN_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
-  # lf shell color.
-  typeset -g POWERLEVEL9K_LF_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LF_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
-  # xplr shell color.
-  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_XPLR_BACKGROUND=6
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
-  # Vim shell indicator color.
-  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VIM_SHELL_BACKGROUND=2
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
-  # Midnight Commander shell color.
-  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=3
-  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
-  # Nix shell color.
-  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4
-
-  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
-
-  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
-  # chezmoi shell color.
-  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ disk_usage: disk usage ]##################################
-  # Colors for different levels of disk usage.
-  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3
-  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=0
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=0
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=3
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=7
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=1
-  # Thresholds for different levels of disk usage (percentage points).
-  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
-  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
-  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
-  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]###########
-  # Foreground color.
-  typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0
-  # Text and color for normal (a.k.a. command) vi mode.
-  typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL
-  typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2
-  # Text and color for visual vi mode.
-  typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL
-  typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=4
-  # Text and color for overtype (a.k.a. overwrite and replace) vi mode.
-  typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE
-  typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=3
-  # Text and color for insert vi mode.
-  typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=
-  typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ ram: free RAM ]#######################################
-  # RAM color.
-  typeset -g POWERLEVEL9K_RAM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RAM_BACKGROUND=3
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################################[ swap: used swap ]######################################
-  # Swap color.
-  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_SWAP_BACKGROUND=3
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ load: CPU load ]######################################
-  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
-  typeset -g POWERLEVEL9K_LOAD_WHICH=5
-  # Load color when load is under 50%.
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2
-  # Load color when load is between 50% and 70%.
-  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3
-  # Load color when load is over 70%.
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
-  # Todo color.
-  typeset -g POWERLEVEL9K_TODO_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TODO_BACKGROUND=8
-  # Hide todo when the total number of tasks is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
-  # Hide todo when the number of tasks after filtering is zero.
-  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
-
-  # Todo format. The following parameters are available within the expansion.
-  #
-  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
-  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
-  #
-  # These variables correspond to the last line of the output of `todo.sh -p ls`:
-  #
-  #   TODO: 24 of 42 tasks shown
-  #
-  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
-  #
-  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
-  # Timewarrior color.
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8
-
-  # If the tracked task is longer than 24 characters, truncate and append "…".
-  # Tip: To always display tasks without truncation, delete the following parameter.
-  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
-  # value of the following parameter to "".
-  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
-  # Taskwarrior color.
-  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TASKWARRIOR_BACKGROUND=6
-
-  # Taskwarrior segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
-  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
-  #
-  # Zero values are represented as empty parameters.
-  #
-  # The default format:
-  #
-  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
-  #
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
-  # Color when using local/global history.
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_BACKGROUND=5
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_BACKGROUND=3
-
-  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ cpu_arch: CPU architecture ]################################
-  # CPU architecture color.
-  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=0
-  typeset -g POWERLEVEL9K_CPU_ARCH_BACKGROUND=3
-
-  # Hide the segment when on a specific CPU architecture.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
-  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ context: user@hostname ]##################################
-  # Context color when running with privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0
-  # Context color in SSH without privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0
-  # Default context color (no privileges, no SSH).
-  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3
-  typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0
-
-  # Context format when running with privileges: user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m'
-  # Context format when in SSH without privileges: user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
-  # Default context format (no privileges, no SSH): user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
-
-  # Don't show context unless running with privileges or in SSH.
-  # Tip: Remove the next line to always show context.
-  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='with '
-
-  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
-  # Python virtual environment color.
-  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4
-  # Don't show Python version next to the virtual environment name.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
-  # If set to "false", won't show virtualenv if pyenv is already shown.
-  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
-  # Separate environment name from Python version only with a space.
-  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ anaconda: conda environment (https://conda.io/) ]######################
-  # Anaconda environment color.
-  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=0
-  typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4
-
-  # Anaconda segment format. The following parameters are available within the expansion.
-  #
-  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
-  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
-  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
-  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
-  #
-  # CONDA_PROMPT_MODIFIER can be configured with the following command:
-  #
-  #   conda config --set env_prompt '({default_env}) '
-  #
-  # The last argument is a Python format string that can use the following variables:
-  #
-  # - prefix       The same as CONDA_PREFIX.
-  # - default_env  The same as CONDA_DEFAULT_ENV.
-  # - name         The last segment of CONDA_PREFIX.
-  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
-  #                always the same as default_env.
-  #
-  # Note: '({default_env}) ' is the default value of env_prompt.
-  #
-  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
-  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
-  # is empty.
-  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
-  # Pyenv color.
-  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4
-  # Hide python version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
-  # If set to false, hide python version if it's the same as global:
-  # $(pyenv version-name) == $(pyenv global).
-  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide python version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
-
-  # Pyenv segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
-  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
-  #
-  # The default format has the following logic:
-  #
-  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
-  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
-  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
-  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
-  # Goenv color.
-  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_GOENV_BACKGROUND=4
-  # Hide go version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
-  # If set to false, hide go version if it's the same as global:
-  # $(goenv version-name) == $(goenv global).
-  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide go version if it's equal to "system".
-  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
-  # Nodenv color.
-  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0
-  # Hide node version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
-  # If set to false, hide node version if it's the same as global:
-  # $(nodenv version-name) == $(nodenv global).
-  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
-  # Nvm color.
-  typeset -g POWERLEVEL9K_NVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_NVM_BACKGROUND=5
-  # If set to false, hide node version if it's the same as default:
-  # $(nvm version current) == $(nvm version default).
-  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide node version if it's equal to "system".
-  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
-  # Nodeenv color.
-  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0
-  # Don't show Node version next to the environment name.
-  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
-  # Separate environment name from Node version only with a space.
-  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############################[ node_version: node.js version ]###############################
-  # Node version color.
-  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=7
-  typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2
-  # Show node version only when in a directory tree containing package.json.
-  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ go_version: go version (https://golang.org) ]########################
-  # Go version color.
-  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=255
-  typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2
-  # Show go version only when in a go project subdirectory.
-  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
-  # Rust version color.
-  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208
-  # Show rust version only when in a rust project subdirectory.
-  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
-  # .NET version color.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=7
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5
-  # Show .NET version only when in a .NET project subdirectory.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ php_version: php version (https://www.php.net/) ]######################
-  # PHP version color.
-  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PHP_VERSION_BACKGROUND=5
-  # Show PHP version only when in a PHP project subdirectory.
-  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
-  # Laravel version color.
-  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=1
-  typeset -g POWERLEVEL9K_LARAVEL_VERSION_BACKGROUND=7
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
-  # Rbenv color.
-  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1
-  # Hide ruby version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
-  # If set to false, hide ruby version if it's the same as global:
-  # $(rbenv version-name) == $(rbenv global).
-  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide ruby version if it's equal to "system".
-  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ####################[ java_version: java version (https://www.java.com/) ]####################
-  # Java version color.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=1
-  typeset -g POWERLEVEL9K_JAVA_VERSION_BACKGROUND=7
-  # Show java version only when in a java project subdirectory.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
-  # Show brief version.
-  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
-  # Package color.
-  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PACKAGE_BACKGROUND=6
-
-  # Package format. The following parameters are available within the expansion.
-  #
-  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
-  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
-  #
-  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
-  # Rvm color.
-  typeset -g POWERLEVEL9K_RVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_RVM_BACKGROUND=240
-  # Don't show @gemset at the end.
-  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
-  # Don't show ruby- at the front.
-  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
-  # Fvm color.
-  typeset -g POWERLEVEL9K_FVM_FOREGROUND=0
-  typeset -g POWERLEVEL9K_FVM_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
-  # Lua color.
-  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_LUAENV_BACKGROUND=4
-  # Hide lua version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
-  # If set to false, hide lua version if it's the same as global:
-  # $(luaenv version-name) == $(luaenv global).
-  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide lua version if it's equal to "system".
-  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
-  # Java color.
-  typeset -g POWERLEVEL9K_JENV_FOREGROUND=1
-  typeset -g POWERLEVEL9K_JENV_BACKGROUND=7
-  # Hide java version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
-  # If set to false, hide java version if it's the same as global:
-  # $(jenv version-name) == $(jenv global).
-  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide java version if it's equal to "system".
-  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
-  # Perl color.
-  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PLENV_BACKGROUND=4
-  # Hide perl version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
-  # If set to false, hide perl version if it's the same as global:
-  # $(plenv version-name) == $(plenv global).
-  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide perl version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
-  # Perlbrew color.
-  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
-  # Show perlbrew version only when in a perl project subdirectory.
-  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
-  # Don't show "perl-" at the front.
-  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
-  # PHP color.
-  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_PHPENV_BACKGROUND=5
-  # Hide php version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
-  # If set to false, hide php version if it's the same as global:
-  # $(phpenv version-name) == $(phpenv global).
-  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide PHP version if it's equal to "system".
-  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
-  # Scala color.
-  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=0
-  typeset -g POWERLEVEL9K_SCALAENV_BACKGROUND=1
-  # Hide scala version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
-  # If set to false, hide scala version if it's the same as global:
-  # $(scalaenv version-name) == $(scalaenv global).
-  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
-  # If set to false, hide scala version if it's equal to "system".
-  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
-  # Haskell color.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=0
-  typeset -g POWERLEVEL9K_HASKELL_STACK_BACKGROUND=3
-
-  # Hide haskell version if it doesn't come from one of these sources.
-  #
-  #   shell:  version is set by STACK_YAML
-  #   local:  version is set by stack.yaml up the directory tree
-  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
-  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
-  # If set to false, hide haskell version if it's the same as in the implicit global project.
-  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
-  # Don't show terraform workspace if it's literally "default".
-  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
-  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current terraform workspace gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=2
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_BACKGROUND=0
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4
-  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0
-  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
-  # Terraform version color.
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]#################
-  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf'
-
-  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
-  # Show kubecontext only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show kubecontext.
-  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
-
-  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
-  # different contexts.
-  #
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current kubernetes context gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current kubernetes context is "deathray-testing/default", its class is TEST
-  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=0
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
-  # segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # Within the expansion the following parameters are always available:
-  #
-  # - P9K_CONTENT                The content that would've been displayed if there was no content
-  #                              expansion defined.
-  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
-  #                              in the output of `kubectl config get-contexts`. If there is no
-  #                              namespace, the parameter is set to "default".
-  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
-  #                              output of `kubectl config get-contexts`.
-  #
-  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
-  # the following extra parameters are available:
-  #
-  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
-  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
-  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
-  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
-  #
-  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
-  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  #
-  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
-  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
-  # Append the current context's namespace if it's not "default".
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at '
-
-  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
-  # Show aws only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show aws.
-  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current AWS profile gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current AWS profile is "company_test", its class is TEST
-  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AWS_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # AWS segment format. The following parameters are available within the expansion.
-  #
-  # - P9K_AWS_PROFILE  The name of the current AWS profile.
-  # - P9K_AWS_REGION   The region associated with the current AWS profile.
-  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
-
-  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
-  # AWS Elastic Beanstalk environment color.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
-  # Show azure only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show azure.
-  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
-
-  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current azure account name gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       OTHER)
-  #
-  # If your current azure account is "company_test", its class is TEST because "company_test"
-  # doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_BACKGROUND=0
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'         OTHER)
-
-  # Azure account name color.
-  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=7
-  typeset -g POWERLEVEL9K_AZURE_OTHER_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
-  # Show gcloud only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show gcloud.
-  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
-  # Google cloud color.
-  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7
-  typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4
-
-  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
-  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
-  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
-  # output of `gcloud` tool.
-  #
-  #   Parameter                | Source
-  #   -------------------------|--------------------------------------------------------------------
-  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
-  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
-  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
-  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
-  #
-  # Obtaining project name requires sending a request to Google servers. This can take a long time
-  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
-  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
-  # set and gcloud prompt segment transitions to state COMPLETE.
-  #
-  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
-  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
-  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
-  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
-  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
-  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
-
-  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
-  # this often. Negative value disables periodic polling. In this mode project name is retrieved
-  # only when the current configuration, account or project id changes.
-  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
-  # Show google_app_cred only when the command you are typing invokes one of these tools.
-  # Tip: Remove the next line to always show google_app_cred.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
-
-  # Google application credentials classes for the purpose of using different colors, icons and
-  # expansions with different credentials.
-  #
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
-  # element in each pair defines a pattern against which the current kubernetes context gets
-  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
-  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
-  # parameters, you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
-  # The first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-  #     '*:*prod*:*'  PROD
-  #     '*:*test*:*'  TEST
-  #     '*'           DEFAULT)
-  #
-  # If your current Google application credentials is "service_account deathray-testing x@y.com",
-  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
-      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
-      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
-      '*'             DEFAULT)
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=7
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_BACKGROUND=4
-  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
-  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # You can use the following parameters in the expansion. Each of them corresponds to one of the
-  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
-  #
-  #   Parameter                        | JSON key file field
-  #   ---------------------------------+---------------
-  #   P9K_GOOGLE_APP_CRED_TYPE         | type
-  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
-  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
-  #
-  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
-  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
-
-  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
-  # Toolbox color.
-  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3
-  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
-  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in '
-
-  ###############################[ public_ip: public IP address ]###############################
-  # Public IP color.
-  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7
-  typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ########################[ vpn_ip: virtual private network indicator ]#########################
-  # VPN IP color.
-  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=0
-  typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6
-  # When on VPN, show just an icon without the IP address.
-  # Tip: To display the private IP address when on VPN, remove the next line.
-  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
-  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
-  # to see the name of the interface.
-  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
-  # If set to true, show one segment per matching network interface. If set to false, show only
-  # one segment corresponding to the first matching network interface.
-  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
-  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
-  # IP color.
-  typeset -g POWERLEVEL9K_IP_BACKGROUND=4
-  typeset -g POWERLEVEL9K_IP_FOREGROUND=0
-  # The following parameters are accessible within the expansion:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+-------------------------------------------
-  #   P9K_IP_IP             | IP address
-  #   P9K_IP_INTERFACE      | network interface
-  #   P9K_IP_RX_BYTES       | total number of bytes received
-  #   P9K_IP_TX_BYTES       | total number of bytes sent
-  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
-  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
-  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
-  #   P9K_IP_TX_RATE        | send rate (since last prompt)
-  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP'
-  # Show information for the first network interface whose name matches this regular expression.
-  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
-  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
-  # Proxy color.
-  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4
-  typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ battery: internal battery ]#################################
-  # Show battery in red when it's below this level and not connected to power supply.
-  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
-  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=1
-  # Show battery in green when it's charging or fully charged.
-  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2
-  # Show battery in yellow when it's discharging.
-  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3
-  # Battery pictograms going from low to high level of charge.
-  typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079'
-  # Don't show the remaining time to charge/discharge.
-  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
-  typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0
-
-  #####################################[ wifi: wifi speed ]#####################################
-  # WiFi color.
-  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=0
-  typeset -g POWERLEVEL9K_WIFI_BACKGROUND=4
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
-  #
-  #   # Wifi colors and icons for different signal strength levels (low to high).
-  #   typeset -g my_wifi_fg=(0 0 0 0 0)                                # <-- change these values
-  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
-  #
-  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
-  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
-  #
-  # The following parameters are accessible within the expansions:
-  #
-  #   Parameter             | Meaning
-  #   ----------------------+---------------
-  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
-  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
-  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
-  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
-  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
-  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
-
-  ####################################[ time: current time ]####################################
-  # Current time color.
-  typeset -g POWERLEVEL9K_TIME_FOREGROUND=0
-  typeset -g POWERLEVEL9K_TIME_BACKGROUND=7
-  # Format for the current time: 09:51:02. See `man 3 strftime`.
-  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
-  # If set to true, time will update when you hit enter. This way prompts for the past
-  # commands will contain the start times of their commands as opposed to the default
-  # behavior where they contain the end times of their preceding commands.
-  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TIME_PREFIX='at '
-
-  # Example of a user-defined prompt segment. Function prompt_example will be called on every
-  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
-  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and yellow text on red background
-  # greeting the user.
-  #
-  # Type `p10k help segment` for documentation and a more sophisticated example.
-  function prompt_example() {
-    p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n'
-  }
-
-  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
-  # is to generate the prompt segment for display in instant prompt. See
-  # https://github.com/romkatv/powerlevel10k#instant-prompt.
-  #
-  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
-  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
-  # will replay these calls without actually calling instant_prompt_*. It is imperative that
-  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
-  # rule is not observed, the content of instant prompt will be incorrect.
-  #
-  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
-  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
-  function instant_prompt_example() {
-    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
-    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
-    # and regular prompts.
-    prompt_example
-  }
-
-  # User-defined prompt segments can be customized the same way as built-in segments.
-  typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=3
-  typeset -g POWERLEVEL9K_EXAMPLE_BACKGROUND=1
-  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
-  # when accepting a command line. Supported values:
-  #
-  #   - off:      Don't change prompt when accepting a command line.
-  #   - always:   Trim down prompt when accepting a command line.
-  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
-  #               typed after changing current working directory.
-  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
-
-  # Instant prompt mode.
-  #
-  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
-  #              it incompatible with your zsh configuration files.
-  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
-  #              during zsh initialization. Choose this if you've read and understood
-  #              https://github.com/romkatv/powerlevel10k#instant-prompt.
-  #   - verbose: Enable instant prompt and print a warning when detecting console output during
-  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
-  #              seen the warning, or if you are unsure what this all means.
-  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
-
-  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
-  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
-  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
-  # really need it.
-  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
-
-  # If p10k is already loaded, reload configuration.
-  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
-  (( ! $+functions[p10k] )) || p10k reload
-}
-
-# Tell `p10k configure` which file it should overwrite.
-typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
-
-(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
-'builtin' 'unset' 'p10k_config_opts'

From 845ac0865bc5ce7e35f64586066a260e0c862bc4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:54:03 +0000
Subject: [PATCH 774/973] fish: remove ephemeral file.

---
 .../private_fish/private_fish_variables       | 41 -------------------
 1 file changed, 41 deletions(-)
 delete mode 100644 chezmoi/private_dot_config/private_fish/private_fish_variables

diff --git a/chezmoi/private_dot_config/private_fish/private_fish_variables b/chezmoi/private_dot_config/private_fish/private_fish_variables
deleted file mode 100644
index f67fd04b..00000000
--- a/chezmoi/private_dot_config/private_fish/private_fish_variables
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true
-SETUVAR __fish_initialized:3800
-SETUVAR fish_color_autosuggestion:brblack
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:normal
-SETUVAR fish_color_comment:red
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:green
-SETUVAR fish_color_error:brred
-SETUVAR fish_color_escape:brcyan
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:brcyan
-SETUVAR fish_color_param:cyan
-SETUVAR fish_color_quote:yellow
-SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
-SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
-SETUVAR fish_color_status:red
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_background:\x1d
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:yellow\x1e\x2di
-SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan\x1e\x2d\x2dbold
-SETUVAR fish_pager_color_secondary_background:\x1d
-SETUVAR fish_pager_color_secondary_completion:\x1d
-SETUVAR fish_pager_color_secondary_description:\x1d
-SETUVAR fish_pager_color_secondary_prefix:\x1d
-SETUVAR fish_pager_color_selected_background:\x2dr
-SETUVAR fish_pager_color_selected_completion:\x1d
-SETUVAR fish_pager_color_selected_description:\x1d
-SETUVAR fish_pager_color_selected_prefix:\x1d
-SETUVAR fish_user_paths:/Users/james\x2elawton/\x2ecargo/bin\x1e/Users/james\x2elawton/bin

From 55ba97edf235a8064e993689dffcae2a4f10c35a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 3 Nov 2025 22:55:42 +0000
Subject: [PATCH 775/973] fish: disable some abbrevs.

---
 .../private_fish/conf.d/abbreviations.fish          | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index 62e56e37..aa8cb057 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -8,24 +8,21 @@ abbr --add gps 'git push'
 # -l Long format
 # -h Short size suffixes (B, K, M, G, P)
 # -p Postpend slash to folders
-abbr --add ls 'ls -G -h -p '
-abbr --add ll 'ls -l -G -h -p '
+# abbr --add ls 'ls -G -h -p '
+# abbr --add ll 'ls -l -G -h -p '
 
 abbr --add grep 'grep --color=auto --exclude=.git'
 abbr --add egrep 'egrep --color=auto --exclude=.git'
 abbr --add fgrep 'fgrep --color=auto --exclude=.git'
 
-abbr --add rm 'rm -i'
-abbr --add cp 'cp -i'
-abbr --add mv 'mv -i'
+# abbr --add rm 'rm -i'
+# abbr --add cp 'cp -i'
+# abbr --add mv 'mv -i'
 
 abbr --add now 'date +"%Y%m%d-%H%M%S"'
 abbr --add minicom 'minicom -C minicom-`now`.log'
-
 abbr --add pgrep 'ps auxww | grep \!* | grep -v grep'
-
 abbr --add a2ps 'a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'
-
 abbr --add gatekeeper 'sudo xattr -d com.apple.quarantine'
 
 # On Mac OSX, uuidgen produces uppercase.

From b6da4018d15f8d7b34c7d6bd188d6c8569035484 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 11:18:11 +0000
Subject: [PATCH 776/973] Trying better Git prompt.

---
 chezmoi/private_dot_config/starship.toml | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 3cf1b50d..bc659f5c 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -8,7 +8,8 @@
 format = """\
 $directory\
 [](fg:#2a6bef bg:#fbef6a)\
-$git_branch\
+${custom.git_branch_dirty}\
+${custom.git_branch_clean}\
 $git_status\
 $git_metrics\
 [](fg:#fbec51 bg:#030B16)\
@@ -47,10 +48,27 @@ style = "dimmed white"
 time_format = "%T" # %R no seconds, %T seconds
 
 [git_branch]
+disabled = true
 format = '[ $symbol$branch(:$remote_branch) ]($style)'
 symbol = "  "
 style = "fg:#1C3A5E bg:#f9e71f"
 
+[custom.git_branch_dirty]
+command = "git rev-parse --abbrev-ref HEAD 2>/dev/null"
+style = "fg:#1C3A5E bg:#f9e71f"
+symbol = " "
+format = "[$symbol($output)]($style)"
+require_repo = true
+when = "git status --porcelain | grep -q ."
+
+[custom.git_branch_clean]
+command = "git rev-parse --abbrev-ref HEAD 2>/dev/null"
+style = "fg:black bg:green"
+symbol = " "
+format = "[$symbol($output)]($style)"
+require_repo = true
+when = "! git status --porcelain | grep -q ."
+
 [git_status]
 format = '[$all_status]($style)'
 style = "fg:#1C3A5E bg:#f9e71f"

From 4eb73f572959e66c1a23b5cad0a553b18fd55a78 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 11:44:06 +0000
Subject: [PATCH 777/973] Removed custom git_status attempts.

---
 chezmoi/private_dot_config/starship.toml | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index bc659f5c..a04b8cd0 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -8,8 +8,7 @@
 format = """\
 $directory\
 [](fg:#2a6bef bg:#fbef6a)\
-${custom.git_branch_dirty}\
-${custom.git_branch_clean}\
+$git_branch\
 $git_status\
 $git_metrics\
 [](fg:#fbec51 bg:#030B16)\
@@ -48,28 +47,13 @@ style = "dimmed white"
 time_format = "%T" # %R no seconds, %T seconds
 
 [git_branch]
-disabled = true
+disabled = false
 format = '[ $symbol$branch(:$remote_branch) ]($style)'
 symbol = "  "
 style = "fg:#1C3A5E bg:#f9e71f"
 
-[custom.git_branch_dirty]
-command = "git rev-parse --abbrev-ref HEAD 2>/dev/null"
-style = "fg:#1C3A5E bg:#f9e71f"
-symbol = " "
-format = "[$symbol($output)]($style)"
-require_repo = true
-when = "git status --porcelain | grep -q ."
-
-[custom.git_branch_clean]
-command = "git rev-parse --abbrev-ref HEAD 2>/dev/null"
-style = "fg:black bg:green"
-symbol = " "
-format = "[$symbol($output)]($style)"
-require_repo = true
-when = "! git status --porcelain | grep -q ."
-
 [git_status]
+disabled = false
 format = '[$all_status]($style)'
 style = "fg:#1C3A5E bg:#f9e71f"
 ahead = '⇡${count}'
@@ -77,6 +61,7 @@ behind = '⇣${count}'
 diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#1C3A5E bg:#f9e71f)'
 
 [git_metrics]
+disabled = false
 format = "([+$added]($added_style))[]($added_style)"
 added_style = "fg:#1C3A5E bg:#f9e71f"
 deleted_style = "fg:bright-red bg:235"

From dba89e2bd750ac48f140d7d5022eed82321e050c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 12:16:28 +0000
Subject: [PATCH 778/973] starship: tweak prompt colours.

---
 chezmoi/private_dot_config/starship.toml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index a04b8cd0..12bcdc10 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -7,11 +7,11 @@
 # - Disabled line break for compactness
 format = """\
 $directory\
-[](fg:#2a6bef bg:#fbef6a)\
+[](fg:#3B76F0 bg:#4dff4d)\
 $git_branch\
 $git_status\
 $git_metrics\
-[](fg:#fbec51 bg:#030B16)\
+[](fg:#4dff4d bg:#030B16)\
 [ ]('')\
 """
 
@@ -50,7 +50,7 @@ time_format = "%T" # %R no seconds, %T seconds
 disabled = false
 format = '[ $symbol$branch(:$remote_branch) ]($style)'
 symbol = "  "
-style = "fg:#1C3A5E bg:#f9e71f"
+style = "fg:#1C3A5E bg:#4dff4d"
 
 [git_status]
 disabled = false
@@ -61,7 +61,7 @@ behind = '⇣${count}'
 diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#1C3A5E bg:#f9e71f)'
 
 [git_metrics]
-disabled = false
+disabled = true
 format = "([+$added]($added_style))[]($added_style)"
 added_style = "fg:#1C3A5E bg:#f9e71f"
 deleted_style = "fg:bright-red bg:235"

From 15efcda71ecda8a42e580ee8557a48317c14993e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 12:21:48 +0000
Subject: [PATCH 779/973] Remove more zsh files.

---
 _setup_zsh.sh             | 11 -----------
 install_apps.sh           | 40 ---------------------------------------
 override_window_title.zsh |  5 -----
 zsh_history               |  1 -
 4 files changed, 57 deletions(-)
 delete mode 100755 _setup_zsh.sh
 delete mode 100755 install_apps.sh
 delete mode 100644 override_window_title.zsh
 delete mode 100644 zsh_history

diff --git a/_setup_zsh.sh b/_setup_zsh.sh
deleted file mode 100755
index b2486e58..00000000
--- a/_setup_zsh.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-if [ -d oh-my-zsh ]; then
-    if [ ! -e oh-my-zsh/custom/override_window_title.zsh ]; then
-        (cd oh-my-zsh/custom; ln -sf ../../override_window_title.zsh)
-    fi
-    if [ ! -e oh-my-zsh/custom/plugins/fast-syntax-highlighting ]; then
-        (cd oh-my-zsh/custom/plugins; git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git; chmod -R 755 fast-syntax-highlighting)
-    fi
-    echo "Done!"
-fi
diff --git a/install_apps.sh b/install_apps.sh
deleted file mode 100755
index c9a29481..00000000
--- a/install_apps.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-set -e # Failed commands will cause an immediate exit
-
-# Inspired by: https://gist.github.com/t-io/8255711
-
-test_for_home_brew_installation()
-{
-	which -s brew
-	if [[ $? != 0 ]] ; then
-		echo "Installing Homebrew."
-		/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-	else
-		echo "Homebrew 'brew' is already installed. Now updating."
-		brew update
-	fi
-}
-
-## Use Brewfile in $CWD to install formulae and casks
-## Info at https://github.com/Homebrew/homebrew-bundle
-brew tap homebrew/bundle
-brew bundle
-
-test_for_xcode_installation()
-{
-    if hash xcode-select -v 2>/dev/null; then
-       echo "XCode is already installed. Continuing."
-    else 
-       # Install XCode
-       xcode-select --install
-    fi
-}
-
-## Install Oh My Zsh
-sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
-
-## TODO: Find out how to automatedly install
-# MesloLGS NF fonts for Powerline, https://github.com/romkatv/powerlevel10k/blob/master/README.md#manual-font-installation
-
-## Maintenance
-softwareupdate -i -a # Install all software updates
diff --git a/override_window_title.zsh b/override_window_title.zsh
deleted file mode 100644
index 2a418d4d..00000000
--- a/override_window_title.zsh
+++ /dev/null
@@ -1,5 +0,0 @@
-# This overrides ZSH's default window title, to remover user@host.
-# In a new setup, symlink to this file from oh-my-zsh/custom/.
-
-ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
-ZSH_THEME_TERM_TITLE_IDLE="%~"
diff --git a/zsh_history b/zsh_history
deleted file mode 100644
index 8b137891..00000000
--- a/zsh_history
+++ /dev/null
@@ -1 +0,0 @@
-

From 47ff4d671e0f2ef2162ffd212e9cd5098151d20f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 12:32:08 +0000
Subject: [PATCH 780/973] Tidy.

---
 chezmoi/private_dot_config/private_fish/conf.d/variables.fish | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
index 0c717d87..3280a046 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -1,9 +1,5 @@
 export OS=$(uname -s)
 
-#########################################################################
-# Tool settings
-#########################################################################
-
 # Set the default pager to less
 set -gx PAGER less
 # Set less to have a default flag of -R (RAW) so color passes through

From d25b8cda6a6ef9e8c0a89d52f8ebf9fcb392947b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 13:08:40 +0000
Subject: [PATCH 781/973] Add template for chezmoi machine config.

---
 .chezmoi.toml.tmpl | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 create mode 100644 .chezmoi.toml.tmpl

diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl
new file mode 100644
index 00000000..d3f6e285
--- /dev/null
+++ b/.chezmoi.toml.tmpl
@@ -0,0 +1,12 @@
+{{- $email := promptStringOnce . "email" "Email address" -}}
+{{ $passphrase := promptStringOnce . "passphrase" "passphrase" -}}
+
+encryption = "gpg"
+
+[data]
+    email = {{ $email | quote }}
+    passphrase = {{ $passphrase | quote }}
+
+[gpg]
+    symmetric = true
+    args = ["--quiet", "--batch", "--passphrase", {{ $passphrase | quote }}, "--no-symkey-cache"]

From 730f77e2c3bb1e3300bfb421ffa0d969232c42d3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 13:14:17 +0000
Subject: [PATCH 782/973] Update prompts.

---
 .chezmoi.toml.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.chezmoi.toml.tmpl b/.chezmoi.toml.tmpl
index d3f6e285..96a104a5 100644
--- a/.chezmoi.toml.tmpl
+++ b/.chezmoi.toml.tmpl
@@ -1,5 +1,5 @@
 {{- $email := promptStringOnce . "email" "Email address" -}}
-{{ $passphrase := promptStringOnce . "passphrase" "passphrase" -}}
+{{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}
 
 encryption = "gpg"
 

From 51f12d7e93ae81e33557dfdb9b2bdbef92453b17 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 13:20:05 +0000
Subject: [PATCH 783/973] chezmoi: moved config template to chezmoi dir.

---
 .chezmoi.toml.tmpl => chezmoi/.chezmoi.toml.tmpl | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename .chezmoi.toml.tmpl => chezmoi/.chezmoi.toml.tmpl (100%)

diff --git a/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl
similarity index 100%
rename from .chezmoi.toml.tmpl
rename to chezmoi/.chezmoi.toml.tmpl

From 86823b34ab9a70144880914ea8b1dab1308b4462 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 13:46:19 +0000
Subject: [PATCH 784/973] brew: add age, rage.

---
 chezmoi/.chezmoidata/packages.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index a0b70527..f8d2e2dc 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -14,6 +14,7 @@ packages:
     brews:
       - "a2ps"
       - "adr-tools"
+      - "age"
       - "asciidoc"
       - "asciinema"
       - "atuin"
@@ -175,6 +176,7 @@ packages:
       - "python-packaging"
       - "qemu"
       - "qt"
+      - "rage"
       - "rake-completion"
       - "rbenv"
       - "rbw"

From b51ce7cb5921a082504e49f6e85be0d423a79519 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 13:50:11 +0000
Subject: [PATCH 785/973] chezmoi: ignore key.txt.age.

---
 chezmoi/.chezmoiignore | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 chezmoi/.chezmoiignore

diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore
new file mode 100644
index 00000000..b0229733
--- /dev/null
+++ b/chezmoi/.chezmoiignore
@@ -0,0 +1 @@
+key.txt.age

From 6db35b414892fa71eeb5792562a3b2b3386906a4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:08:09 +0000
Subject: [PATCH 786/973] chezmoi: encryption: switch from gpg to rage.

---
 chezmoi/.chezmoi.toml.tmpl | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/chezmoi/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl
index 96a104a5..fa46c337 100644
--- a/chezmoi/.chezmoi.toml.tmpl
+++ b/chezmoi/.chezmoi.toml.tmpl
@@ -1,12 +1,11 @@
 {{- $email := promptStringOnce . "email" "Email address" -}}
 {{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}
 
-encryption = "gpg"
+encryption = "rage"
+[age]
+    identity = "~/.config/chezmoi/key.txt"
+    recipient = "age160lkyv2ayy6n5j2d34h72kjry00styzt24mfsq2dn588tn95ygzqrnnak6"
 
 [data]
     email = {{ $email | quote }}
     passphrase = {{ $passphrase | quote }}
-
-[gpg]
-    symmetric = true
-    args = ["--quiet", "--batch", "--passphrase", {{ $passphrase | quote }}, "--no-symkey-cache"]

From 343e7513a5771f9ab6abd16f37b72b13bad02ff7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:09:14 +0000
Subject: [PATCH 787/973] chezmoi: ignore identity.txt.

---
 chezmoi/.chezmoiignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore
index b0229733..ecef1a63 100644
--- a/chezmoi/.chezmoiignore
+++ b/chezmoi/.chezmoiignore
@@ -1 +1,2 @@
 key.txt.age
+identity.txt

From a9f19111129602f1fe0c373392b075b66cf775e9 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:09:50 +0000
Subject: [PATCH 788/973] ignore identity.txt.

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index fecbe958..88974174 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ cloudapp
 karabiner/automatic_backups
 shellvars-work
 shellfunctions-work
+identity.txt

From 53bb99480ce16598370c195b4357a19d3bc83386 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:22:43 +0000
Subject: [PATCH 789/973] chezmoi: add encrypted key file.

---
 chezmoi/key.txt.age | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 chezmoi/key.txt.age

diff --git a/chezmoi/key.txt.age b/chezmoi/key.txt.age
new file mode 100644
index 00000000..c1bbeb01
--- /dev/null
+++ b/chezmoi/key.txt.age
@@ -0,0 +1,10 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBBbUhCYnRhMEkrckhtdGtj
+cmE0c2p3IDE4ClEyQTFUZW9NV3hKMFk1QmRWekcxWlBubktLTXAvNW43SVovbWRv
+RUM0Q2MKLS0tIDlXbXRhMDcwbkV6RGlYUG53M0N1aUpvN1Y2YVNpeWwwSHd1L2lp
+UXNrSG8K+uS2PSsg+4JYD7F9NAZjqVhLqajFtnEfI4RMwq0c48VnumKR+Kohqfvj
+t6+cPbdvxdQVVfQfQAia11V7FwMX8LBBYJVohe6Fys+qJ5GR2i8MoNAoxf2CjOjk
+oU57VS0xzSFx94Jmre+EPs3J+ip0NRNuPGX1mACXx7qFJ/tIKtPg0PNU6GnieECX
+v85YlTVAA+EB7eZakIHH6Qm3sL6zt0k73lzzQsNYZ+/n+UrR8eSLlvcZEO8kMhFP
+F2rBEcLW+LHP63g3uzaNsebEWVIWMBB5ZVOoNVR0
+-----END AGE ENCRYPTED FILE-----

From 927ca9b64112b549007436f43ae80403fc4164e4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:43:28 +0000
Subject: [PATCH 790/973] chezmoi: encryption, use age.

---
 chezmoi/.chezmoi.toml.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl
index fa46c337..9050e81d 100644
--- a/chezmoi/.chezmoi.toml.tmpl
+++ b/chezmoi/.chezmoi.toml.tmpl
@@ -1,7 +1,7 @@
 {{- $email := promptStringOnce . "email" "Email address" -}}
 {{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}
 
-encryption = "rage"
+encryption = "age"
 [age]
     identity = "~/.config/chezmoi/key.txt"
     recipient = "age160lkyv2ayy6n5j2d34h72kjry00styzt24mfsq2dn588tn95ygzqrnnak6"

From 397b850ee0349578ae7588046219bbbf3192aa28 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:43:52 +0000
Subject: [PATCH 791/973] chezmoi: add decryption template.

---
 chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl

diff --git a/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl b/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl
new file mode 100644
index 00000000..dbffe10e
--- /dev/null
+++ b/chezmoi/run_onchange_before_decrypt-private-key.sh.tmpl
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ ! -f "${HOME}/.config/chezmoi/key.txt" ]; then
+    mkdir -p "${HOME}/.config/chezmoi"
+    chezmoi age decrypt --output "${HOME}/.config/chezmoi/key.txt" --passphrase "{{ .chezmoi.sourceDir }}/key.txt.age"
+    chmod 600 "${HOME}/.config/chezmoi/key.txt"
+fi

From bd0a4c1f6355462fbec57cc492481015c4285c0a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:57:09 +0000
Subject: [PATCH 792/973] chezmoi: remove dup include of vars file.

---
 chezmoi/private_dot_config/private_fish/config.fish | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 654a6bd3..261535cf 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -31,7 +31,4 @@ if status is-interactive
     bind -M insert up _atuin_bind_up
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
-
-    # Load sensitive variables.
-    source ~/dotfiles/shellvars-work
 end

From 8556f7fb5b94cc5efc6fc742d28eaa7f44d0f57a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 14:58:59 +0000
Subject: [PATCH 793/973] Replace shellvars files.

---
 .../private_dot_config/private_fish/conf.d/variables.fish  | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
index 3280a046..a0bff3f9 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -22,9 +22,4 @@ set -gx GOENV_ROOT $HOME/.goenv
 
 set -gx TSRC_PARALLEL_JOBS 8
 
-if test -f $HOME/dotfiles/shellvars-personal
-    source $HOME/dotfiles/shellvars-personal
-end
-if test -f $HOME/dotfiles/shellvars-work
-    source $HOME/dotfiles/shellvars-work
-end
+source $HOME/.sensitive

From 68f82448136791f07eec55fc08fe272d950a749c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 15:17:10 +0000
Subject: [PATCH 794/973] Rename shellvars file.

---
 chezmoi/private_dot_config/private_fish/conf.d/variables.fish | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
index a0bff3f9..df8f4248 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -22,4 +22,4 @@ set -gx GOENV_ROOT $HOME/.goenv
 
 set -gx TSRC_PARALLEL_JOBS 8
 
-source $HOME/.sensitive
+source $HOME/.shellvars

From 17b6cc691817c1e1c12141add525a3d842b4f2b5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 15:19:07 +0000
Subject: [PATCH 795/973] chezmoi: shell vars file.

---
 chezmoi/encrypted_private_dot_shellvars.age | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 chezmoi/encrypted_private_dot_shellvars.age

diff --git a/chezmoi/encrypted_private_dot_shellvars.age b/chezmoi/encrypted_private_dot_shellvars.age
new file mode 100644
index 00000000..0a403b13
--- /dev/null
+++ b/chezmoi/encrypted_private_dot_shellvars.age
@@ -0,0 +1,21 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4ZHY5c2RseDdNa09qYnlM
+djUyMHJQZTVDYWNuWTE1MzJodnRFOFpTVmw4ClFGWkFQdGJVa2MxcVp3dGhSMHZz
+UWRkaUN3WUhkdkZEcThCOGdYVkc4NlkKLS0tIDNPTEdHeGdSaXk5VGZuMFZLcmQ0
+TlhyNEYySXNidXMyYitMN2pVaVljb3cKG6amW5Wqx14iG/zR6pU/9GPqozN8aQRC
+LvF+WcYqUaXBZPLk6dQ7oHkRSqs6+Zimukx0Wrmg+3bmURxphHIUb/+roe3zzl1r
+lSHi1xWEu9TqRmVpuZCeRVwBDWiR5s70IkeIfiR+PNu6aRtGL4RH0KG4nM1JnxN8
+clZQwDlioIgmfLhbgSDO7iJCMYoYkMBH9/tpgbbh2A1Kb1qM/ptACLNXBhXnRsSY
+S/CRpVPJWsDY36pJhj5rKE/xy4YxVQXqwZ1XsXnQGhTcvHkFLXK/XxFzErtoCL/Z
+gDHgrhLIFfxRA5+CIbs3ENHhBv4M916GD1OTmkCjjHN/fGvKjAP0mKkcAGcW9hcG
+Equ+A2zY3WdBqXOyJrF6tFxKTJqhFLfzUSK3IQLSNAJ0CtsiP6oIPzxybpRGRcMR
+C+iVeiRxGTWSyS9zvmMhVUbCRIF0DnI1mgMDzoOJOqNzX2KM5FlfSjDpiBK085ti
+pOzx5+eXcZ5+pktGqFtjG1tWf4AwwOmdNgZ+EKkW+TObGjjHD35Bta5lg3xHGMcQ
+234SVtSrtx5yV5yC/5a5ZJhNlvbaPn83LyxBNOMy/AjjfY3E2Ct7KjjnX8rCKAVP
+p3MFCa3hS9XqZpZ8+ZOjiybdLPEXsMptNrKESzCLm105xYtbuytBdpnqISJfMZJc
+fshyQH4qIbEPyzWCyllbbu8bsLRuVUaYVhHRTHDelodOutI8MPcR7qh3owJxr0Rd
+VOGDr7nOtnJ1R0Xt1jwJHSDlyv0oY41qTS0NS4dTBHctjch6x7kix9sP0LPmtJj/
+lcrpyJxuCfnIKJmnmIAESpOA9TWVbsztS+RLGsZnucoOl3FsdwzfQKjEe3NywynK
+Az5nCX0ZUd++dpkkpu1oVDUwajLFUyhOzv+sQtHxHMtIKj8FHGgvComT5vz5LtJD
+yNXZus8Ggny2
+-----END AGE ENCRYPTED FILE-----

From ba4fb8ba088238aa50789883e34057ad4cd102b7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 15:21:04 +0000
Subject: [PATCH 796/973] Remove old file.

---
 personalisation | 11 -----------
 1 file changed, 11 deletions(-)
 delete mode 100644 personalisation

diff --git a/personalisation b/personalisation
deleted file mode 100644
index 7351727c..00000000
--- a/personalisation
+++ /dev/null
@@ -1,11 +0,0 @@
-#########################################################################
-# User-specific configuration.
-#########################################################################
-
-export _USERNAMES="jiml jlawton jim.lawton jlawto001c jlawto001 james.lawton"
-export _NAME="Jim Lawton"
-export _SHORTUSER="jim"
-export _MACHNAME="mac"
-
-# Don't forget to modify gitconfig-personal and gitconfig-work for your email 
-# addresses and directory paths for Git commits.

From 96ceaad4da6f981bfd46096790c0d22c8871f28b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 15:49:21 +0000
Subject: [PATCH 797/973] Move config.

---
 chezmoi/dot_gitconfig | 4 ----
 git-identity-work     | 3 +++
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
index dadb4e9d..074aab70 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig
@@ -137,7 +137,3 @@
 
 [spice "branchCreate"]
 	commit = false
-
-[spice "forge.github"]
-    url = https://github.cicd.cloud.fpdev.io
-    apiUrl = https://github.cicd.cloud.fpdev.io/api
diff --git a/git-identity-work b/git-identity-work
index 3d5c6baf..2a87a099 100644
--- a/git-identity-work
+++ b/git-identity-work
@@ -8,3 +8,6 @@
     templateDir = ~/dotfiles/git-template
 [credential "https://github.cicd.cloud.fpdev.io"]
     helper = !/opt/homebrew/bin/gh auth git-credential
+[spice "forge.github"]
+    url = https://github.cicd.cloud.fpdev.io
+    apiUrl = https://github.cicd.cloud.fpdev.io/api

From 56d2b894860c78ba3dcab168b3b9702706446701 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 15:59:35 +0000
Subject: [PATCH 798/973] Moved old script.

---
 git/forest2manifest.sh | 86 ------------------------------------------
 scripts                |  2 +-
 2 files changed, 1 insertion(+), 87 deletions(-)
 delete mode 100755 git/forest2manifest.sh

diff --git a/git/forest2manifest.sh b/git/forest2manifest.sh
deleted file mode 100755
index 4f9c2bba..00000000
--- a/git/forest2manifest.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/bash
-
-# Script to walk a tree of Git clones and build an XML manifest
-# for use with the git-repo tool.
-#
-# Parameters (all optional):
-#  1: path to manifest file to write (default: ./default.xml).
-#  2: path to the root of the Git clone tree (default: current directory).
-#  3: default Git remote for the repo manifest (default: first found in the tree of Git clones).
-
-if [ -z "$1" ]; then
-    mfile="default.xml"
-else
-    mfile=$1
-fi
-
-if [ -z "$2" ]; then
-    top=`pwd`
-else
-    top=$2
-fi
-
-if [ -z "$3" ]; then
-    defremote="github.com"
-else
-    defremote=$3
-fi
-
-gitdirs=`cd $top; find . -not -path \*/.repo/\* -type d -name .git`
-repos=""
-for g in $gitdirs; do
-    repos="$repos `dirname $g`"
-done
-repos=`echo $repos | tr ' ' '\n' | sort | tr '\n' ' '`
-
-remotes=""
-for repo in $repos; do
-    url=`git config -f $top/$repo/.git/config --get remote.origin.url`
-    scheme=`echo $url | sed 's;://.*;;'`
-    host=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;/.*;;'`
-    remote="$scheme://$host"
-    if [[ $remotes != *"$remote"* ]]; then
-        remotes="$remotes $remote"
-    fi
-done
-
-remotes=`echo $remotes | sort`
-
-if [ ${#remotes[@]} -eq 1 ]; then
-    defremote="${remotes[0]}"
-    defremote=`echo $defremote | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'`
-fi
-
-cat >$mfile <
-
-EOF
-
-for remote in $remotes; do
-    rname=`echo $remote | sed 's;.*://;;'`
-    cat >>$mfile <
-EOF
-done
-
-cat >>$mfile <
-EOF
-
-for repo in $repos; do
-    url=`git config -f $top/$repo/.git/config --get remote.origin.url`
-    scheme=`echo $url | sed 's;://.*;;'`
-    host=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;/.*;;'`
-    remote="$scheme://$host"
-    rname=`echo $remote | sed 's;.*://;;'`
-    name=`echo $url | awk -F: '{print $2}' | sed 's;//;;' | sed 's;[^/]*/;;'`
-    clonepath=`echo $repo | sed "s;$(pwd)/;;" | sed "s;./;;"`
-    cat >>$mfile <
-EOF
-done
-
-cat >>$mfile <
-EOF
-
diff --git a/scripts b/scripts
index b2924746..0234f4c0 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit b2924746bdec31e5a8d49025512bffc4df0f11cb
+Subproject commit 0234f4c090c83c9437203352d0c3f31669f92c67

From 692cac8e30451fd77aac0ad5bdcd9100476325e6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:01:44 +0000
Subject: [PATCH 799/973] Moved old scripts.

---
 history/persistent-history-to-csv.py | 148 ----------------
 history/zsh-to-persistent-history.py | 255 ---------------------------
 scripts                              |   2 +-
 3 files changed, 1 insertion(+), 404 deletions(-)
 delete mode 100755 history/persistent-history-to-csv.py
 delete mode 100755 history/zsh-to-persistent-history.py

diff --git a/history/persistent-history-to-csv.py b/history/persistent-history-to-csv.py
deleted file mode 100755
index d2848b36..00000000
--- a/history/persistent-history-to-csv.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env python3
-
-"""Script to convert my Persistent History format to CSV for use with Atuin."""
-
-# The Persistent History file is in the format:
-#   hostname | date-time | command
-# example:
-#  `mbp-70wql7 | 2025-10-31 14:36:30 | crontab -l`
-#
-# The CSV file is in the format:
-#   timestamp,hostname,command
-# example:
-# `,mbp-70wql7,crontab -l`
-
-import argparse
-import csv
-import os
-import sys
-from datetime import datetime
-
-
-def main():
-    parser = argparse.ArgumentParser()
-    parser.add_argument(
-        "-w",
-        "--write",
-        action="store_true",
-        dest="write",
-        help="Write/overwrite the output file.",
-    )
-    parser.add_argument(
-        "-s",
-        "--sort",
-        action="store_true",
-        dest="sort",
-        help="Sort the output, in ascending time order.",
-    )
-    parser.add_argument(
-        "-i",
-        "--infile",
-        type=str,
-        metavar="FILE",
-        default="~/.persistent_history",
-        help="Input persistent history file",
-    )
-    parser.add_argument(
-        "-o",
-        "--outfile",
-        type=str,
-        metavar="FILE",
-        help="Output CSV file",
-    )
-    args = parser.parse_args()
-
-    infile = os.path.expanduser(args.infile)
-    print(f"Input persistent history: {infile}")
-
-    if not args.outfile:
-        sys.exit("Error: output CSV file must be specified with -o/--outfile")
-
-    outfile = os.path.expanduser(args.outfile)
-    print(f"Output CSV history: {outfile}")
-
-    if not os.path.exists(infile):
-        sys.exit(f"Error: input history file {infile} does not exist!")
-
-    if os.path.exists(outfile) and not args.write:
-        sys.exit(f"Error: output persistent history file {outfile} already exists!")
-
-    real_infile = os.path.realpath(infile)
-    if not os.path.exists(real_infile):
-        sys.exit(
-            f"Error: input history file {infile} is a symlink to {real_infile} which does not exist!"
-        )
-    print(f"Real input file: {real_infile}")
-
-    real_outfile = os.path.realpath(outfile)
-    print(f"Real output file: {real_outfile}")
-
-    # Read input persistent history file.
-    with open(infile, "r", errors="ignore") as f:
-        histdata = f.readlines()
-
-    outrows = []
-    bad_count = 0
-    bad_hostname_count = 0
-    bad_time_count = 0
-    for i, inline in enumerate(range(len(histdata))):
-        parts = histdata[inline].strip().split("|")
-        if len(parts) < 3:
-            print(f"Warning: skipping malformed line: {histdata[inline].strip()}")
-            continue
-        # Split only on the first 2 pipes, since the command may contain pipes
-        parts = histdata[inline].strip().split("|", 2)
-        hostname = parts[0].strip()
-        if (
-            hostname == "unknown"
-            or hostname.endswith(".local")
-            or hostname.endswith(".station")
-        ):
-            print(
-                f"Warning: skipping line {i} with invalid hostname: {histdata[inline].strip()}"
-            )
-            bad_count += 1
-            bad_hostname_count += 1
-            # continue
-        date_time = parts[1].strip()
-        # Convert datetime string to seconds since epoch
-        try:
-            dt_obj = datetime.strptime(date_time, "%Y-%m-%d %H:%M:%S")
-            timestamp = int(dt_obj.timestamp())
-        except ValueError:
-            print(
-                f"Warning: skipping line {i} with invalid datetime format: {histdata[inline].strip()}"
-            )
-            bad_count += 1
-            bad_time_count += 1
-            continue
-        # Command is everything after the second pipe to the end of the line.
-        command = parts[2].strip()
-        # Set the duration to zero always, as we don't have that info.
-        outrows.append((timestamp, 0, hostname, command))
-
-    # TODO uniq the records?
-    # TODO Sort by the date field, ascending?
-
-    if args.write:
-        savefilename = f"{real_outfile}"
-        print(f"Writing {savefilename} ...")
-        with open(f"{savefilename}", "w") as f:
-            writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
-            # Write header row.
-            writer.writerow(["timestamp", "duration", "hostname", "command"])
-            # Write outrows to CSV file.
-            for row in outrows:
-                writer.writerow(row)
-
-    print(f"Processed {len(outrows)} valid history lines.")
-    if bad_count > 0:
-        print(f"Skipped {bad_count} bad lines:")
-        if bad_hostname_count > 0:
-            print(f"  {bad_hostname_count} lines with bad hostnames.")
-        if bad_time_count > 0:
-            print(f"  {bad_time_count} lines with bad date/time formats.")
-
-
-if __name__ == "__main__":
-    main()
diff --git a/history/zsh-to-persistent-history.py b/history/zsh-to-persistent-history.py
deleted file mode 100755
index 7c48314e..00000000
--- a/history/zsh-to-persistent-history.py
+++ /dev/null
@@ -1,255 +0,0 @@
-#!/usr/bin/env python3
-
-"""Script to convert ZSH history to my Persistent History format."""
-
-# Inspired by Eli Bendersky:
-#  - http://eli.thegreenplace.net/2013/06/11/keeping-persistent-history-in-bash/
-#  - https://github.com/eliben/code-for-blog/blob/master/2016/persistent-history/add-persistent-history.sh
-#
-# This was done per-entry when using the Bash shell, using the prompt strings.
-# On moving to zsh and oh-my-zsh, this is no longer feasible.
-# zsh stores its history in a particular format in ~/.zsh_history:
-#
-# : 1612182922:0;git st
-# : 1612201796:0;history | tail
-# : 1612201819:0;tail ~/.zsh_history
-#
-# The first integer is time since epoch, the second is runtime, the remainder of the line after ';'
-# is the command line.
-#
-# This script is then run from cron:
-# 0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >/dev/null 2>&1 || true
-
-import argparse
-import datetime
-import filecmp
-import glob
-import os
-import re
-import shutil
-import socket
-import sys
-
-
-# Skip any potential credentials.
-def _skip_line(combined_regex, line):
-    ret = False
-    if "API_KEY" in line or "PASSWORD" in line:
-        ret = True
-    if "$ARTIFACTORY_API_KEY" in line in line:
-        ret = False
-    if re.match(combined_regex, line):
-        ret = True
-    if ret:
-        print(f"Skipping {line}")
-    return ret
-
-
-def main():
-    parser = argparse.ArgumentParser()
-    parser.add_argument(
-        "-w",
-        "--write",
-        action="store_true",
-        dest="write",
-        help="Write/overwrite the output file.",
-    )
-    parser.add_argument(
-        "-s",
-        "--sort",
-        action="store_true",
-        dest="sort",
-        help="Sort the output, in ascending time order.",
-    )
-    parser.add_argument(
-        "-i",
-        "--infile",
-        type=str,
-        metavar="FILE",
-        default="~/.persistent_history",
-        help="Input persistent history file",
-    )
-    parser.add_argument(
-        "-o",
-        "--outfile",
-        type=str,
-        metavar="FILE",
-        default="~/.persistent_history",
-        help="Output persistent history file",
-    )
-    parser.add_argument(
-        "-z",
-        "--zfile",
-        type=str,
-        metavar="FILE",
-        default="~/.zsh_history",
-        help="Input ZSH history file",
-    )
-    parser.add_argument(
-        "-e",
-        "--extra-file",
-        type=str,
-        dest="extra_file",
-        metavar="FILE",
-        help="Extra input persistent history file",
-    )
-    parser.add_argument(
-        "-I",
-        "--iterm-files",
-        type=str,
-        dest="iterm_files",
-        metavar="FILE",
-        help="Extra input iTerm2 history file(s) - can be wild-carded",
-    )
-    args = parser.parse_args()
-
-    infile = os.path.expanduser(args.infile)
-    print(f"Input persistent history: {infile}")
-    zfile = os.path.expanduser(args.zfile)
-    print(f"Input ZSH history: {zfile}")
-    outfile = os.path.expanduser(args.outfile)
-    print(f"Output persistent history: {outfile}")
-
-    extra_file = None
-    if args.extra_file:
-        extra_file = os.path.expanduser(args.extra_file)
-        if not os.path.exists(extra_file):
-            sys.exit(f"Error: extra history file {extra_file} does not exist!")
-        extra_file = os.path.abspath(extra_file)
-        print(f"Extra ZSH input history file: {extra_file}")
-
-    iterm_files = []
-    if args.iterm_files:
-        if "*" in args.iterm_files:
-            print(args.iterm_files)
-            iterm_file_list = glob.glob(os.path.expanduser(args.iterm_files))
-            print(iterm_file_list)
-            for filepath in iterm_file_list:
-                iterm_files.append(os.path.abspath(filepath))
-        else:
-            iterm_files = [os.path.abspath(os.path.expanduser(args.iterm_files))]
-
-    for iterm_file in iterm_files:
-        if not os.path.exists(iterm_file):
-            sys.exit(f"Error: extra history file {iterm_file} does not exist!")
-        print(f"Extra iTerm2 input history file: {iterm_file}")
-
-    for filename in (infile, zfile):
-        if not os.path.exists(filename):
-            sys.exit(f"Error: input history file {filename} does not exist!")
-
-    if outfile != infile:
-        if os.path.exists(outfile) and not args.write:
-            sys.exit(f"Error: output persistent history file {outfile} already exists!")
-
-    real_infile = os.path.realpath(infile)
-    if not os.path.exists(real_infile):
-        sys.exit(
-            f"Error: input history file {infile} is a symlink to {real_infile} which does not exist!"
-        )
-    print(f"Real input file: {real_infile}")
-
-    real_outfile = os.path.realpath(outfile)
-    print(f"Real output file: {real_outfile}")
-
-    # Read input ZSH history file.
-    with open(zfile, "r", errors="ignore") as f:
-        zdata = f.readlines()
-
-    hostname = socket.gethostname().lower()
-    if hostname.endswith(".local"):
-        hostname = hostname.replace(".local", "")
-    user = os.getenv("USER")
-    usernames = os.getenv("_USERNAMES")
-    if usernames is None:
-        usernames = [user]
-    else:
-        usernames = usernames.split()
-        usernames.append(user)
-        usernames = list(set(usernames))
-
-    # Regexes to find occurrences of usernames not in paths.
-    user_regexes = [f".*[^/]{user}[^/].*" for user in usernames]
-    combined_regex = "(" + ")|(".join(user_regexes) + ")"
-
-    # Read input ZSH history file.
-    with open(infile, "r", errors="ignore") as f:
-        histdata = f.readlines()
-
-    # Add the ZSH history to persistent history.
-    for line in zdata:
-        if not line.startswith(":") or ";" not in line:
-            continue
-        timestamp = int(line.split(":")[1].strip())
-        time = datetime.datetime.fromtimestamp(timestamp)
-        # duration = line.split(':')[2].strip().split(';')[0]
-        cmd = line.split(";")[1].strip()
-        if _skip_line(combined_regex, cmd):
-            continue
-        histdata.append(f"{hostname} | {time} | {cmd}\n")
-
-    extra_data = []
-    if extra_file:
-        with open(extra_file, "r", errors="ignore") as f:
-            extra_data = f.readlines()
-        histdata.extend(extra_data)
-
-    iterm_data = []
-    if iterm_files:
-        for iterm_file in iterm_files:
-            print(f"Reading {iterm_file}")
-            with open(iterm_file, "r", errors="ignore") as f:
-                iterm_data = f.readlines()
-            if len(iterm_data) % 2 != 0:
-                sys.exit(
-                    f"Error: input file {iterm_file} does not have an even number of lines!"
-                )
-            it = iter(iterm_data)
-            for line in it:
-                if not line.startswith("#"):
-                    continue
-                timestamp = int(line.split("#")[1].strip())
-                time = datetime.datetime.fromtimestamp(timestamp)
-                cmd = next(it).strip()
-                if _skip_line(combined_regex, cmd):
-                    continue
-                histdata.append(f"{hostname} | {time} | {cmd}\n")
-
-    # uniq the records.
-    histdata = list(set(histdata))
-
-    # Sort by the date field, ascending.
-    # Keep the order of records at the same time unchanged.
-    histdata = sorted(
-        histdata,
-        key=lambda x: "".join([x.split("|")[1], x.split("|")[0], x.split("|")[2]]),
-    )
-
-    if args.write:
-        if real_outfile == real_infile:
-            # Save data to a temporary file.
-            savefilename = f"{real_infile}.new"
-        else:
-            # Save data to output file.
-            savefilename = f"{real_outfile}"
-
-        print(f"Writing {savefilename} ...")
-        with open(f"{savefilename}", "w") as f:
-            f.write("".join(histdata))
-
-        if real_outfile == real_infile:
-            if filecmp.cmp(real_infile, savefilename, shallow=True):
-                print(f"No changes, removing {savefilename} ...")
-                os.remove(savefilename)
-            else:
-                # Now, move the files around.
-                #  - infile -> infile.backup
-                #  - outfile -> infile
-                print(f"Moving {real_infile} to {real_infile}.backup ...")
-                shutil.move(real_infile, f"{real_infile}.backup")
-                print(f"Moving {savefilename} to {real_infile} ...")
-                shutil.move(savefilename, real_infile)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/scripts b/scripts
index 0234f4c0..9178f65c 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 0234f4c090c83c9437203352d0c3f31669f92c67
+Subproject commit 9178f65ceb5105cbc4925d0e0bcda605425796a0

From ea72600496347e5727f9225cd6040af84add1d11 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:08:51 +0000
Subject: [PATCH 800/973] chezmoi: move git aliases.

---
 git-aliases => chezmoi/dot_gitaliases | 0
 chezmoi/dot_gitconfig                 | 2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename git-aliases => chezmoi/dot_gitaliases (100%)

diff --git a/git-aliases b/chezmoi/dot_gitaliases
similarity index 100%
rename from git-aliases
rename to chezmoi/dot_gitaliases
diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
index 074aab70..a6494e00 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig
@@ -15,7 +15,7 @@
 
 # Git aliases.
 [include]
-    path = ~/dotfiles/git-aliases
+    path = ~/.gitaliases
 
 [apply]
 	whitespace = nowarn

From 050928a2aaffa689612589b99c4a592c1bb5487e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:12:49 +0000
Subject: [PATCH 801/973] chezmoi: move git identity files.

---
 chezmoi/dot_gitconfig                          |  6 +++---
 chezmoi/encrypted_dot_gitidentity-personal.age | 12 ++++++++++++
 chezmoi/encrypted_dot_gitidentity-work.age     | 15 +++++++++++++++
 git-identity-personal                          |  9 ---------
 git-identity-work                              | 13 -------------
 5 files changed, 30 insertions(+), 25 deletions(-)
 create mode 100644 chezmoi/encrypted_dot_gitidentity-personal.age
 create mode 100644 chezmoi/encrypted_dot_gitidentity-work.age
 delete mode 100644 git-identity-personal
 delete mode 100644 git-identity-work

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig
index a6494e00..395d9ca7 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig
@@ -7,11 +7,11 @@
 
 # Personal/work Git identity.
 [includeIf "gitdir:~/Work/"]
-    path = ~/dotfiles/git-identity-work
+    path = ~/.gitidentity-work
 [includeIf "gitdir:~/Personal/"]
-    path = ~/dotfiles/git-identity-personal
+    path = ~/.gitidentity-personal
 [includeIf "gitdir:~/.local/share/chezmoi/"]
-    path = ~/dotfiles/git-identity-personal
+    path = ~/.gitidentity-personal
 
 # Git aliases.
 [include]
diff --git a/chezmoi/encrypted_dot_gitidentity-personal.age b/chezmoi/encrypted_dot_gitidentity-personal.age
new file mode 100644
index 00000000..b6e72e58
--- /dev/null
+++ b/chezmoi/encrypted_dot_gitidentity-personal.age
@@ -0,0 +1,12 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQTllxeVE4RDh2cUZmTENJ
+UlFUT0VKUXVQL2FiRXVwNzE0UFBxSXk1bEdvCmdKYUVwZlZHTEJGdGxlRGtNclRE
+VWZwdDJRaFhyZlJ2Yi9VSW5IeFFVUzAKLS0tIEhoVmIzTW84Wm94bUVBVENnS0o5
+RmJ0WEsxZmEraVJDaFNCVFZRWTFaakUKY0ZJOU2FI/q4cKqYaUz8CmCwxrU4/+wG
+yMtAx9pTIwCdZx5rZVZdt2+MQnfEYHU9/dgmiSTFjnO50fP29ifK1HB1e6lcXE7K
+zA+Wc5qv4+6hfSOyDuegWz6tTqHde3U0xjDD2AuQIybuJlvWtceBPEZkJ6OSpuUh
+tVAs32t8vYUklSdrCN3lQB7A5+wl0NPQdxtZa1+3STFl1gwMr4vg20V0VEPWQhgu
+AecC0jFaHCPH1cqPbu/emu7x6S4nxGO/F1vLXG+HsjRfW6oH20C8wwodOU4k2XGq
+ul9DcKABxzA6doXENl47kRLADt8NnrvNAF3HhUkxhMPNwU2gQJ6v6wJ++5a0T4dH
+fLwVK0FbMkxyS55OVdfOqsbYpC6XpVA03xANurDeXuvNWEXWgOryMQ==
+-----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/encrypted_dot_gitidentity-work.age b/chezmoi/encrypted_dot_gitidentity-work.age
new file mode 100644
index 00000000..8dbdcf4e
--- /dev/null
+++ b/chezmoi/encrypted_dot_gitidentity-work.age
@@ -0,0 +1,15 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwR3ExdVAxTzMvWEpkdmt6
+ME5WUmFWVi8wTm9IeUtBRm5FRkdHeldJcmcwCjZ4ZVh1enZ0ZEo3ZWZBcEhxYzM2
+bk9xMUVCazBhRHltYWUyOW9uNEIzNWcKLS0tIHNEVmV4VGFrMzh2bUptekl2UWYr
+Ujk2aGxRN1ZmRWxKcktmV1ZKa1ljdDAK5Qz3Y7juI6ZIoojT51fiMdADK6ZV3WIR
+lDETtXbG4XrjTaBbVS8Ma2rCup5j8l6lDV4FdQPVhf/x4ilgLZIP3lrTimFdSStf
+o5R+Fu/6bbE++XMslefMl5oGPsu17uu+tC4X9yLWkBE5mwOZXvHONZSpXm0e2lL0
+gu8/fA/cFhugRWTaCDb6i/WGwR5BWBCRy6wJT0CmlCj1Nr8Dh/NazZfuTVf5c9KU
+tfccPC6JJYbl8uiqAe1MQWAj3nBnFER383K5UtKSfbdcjsLRt0ZgsO+9QDnmoD3w
+eflnho+Z2m8zjS9eFMuOYr5tesIM6LaaJA5Bh9EeLhCJX6FaCa+pzxR0zk1EPqyx
+Uuj9AeM+TEMdoe+2wxBmU57RuH/PbbwDu4HTiV5ggxci4WCagcry3xtkNiVlqWoM
+GleuSC7CPK5Z77m0fe77xg6e4fMQZoLkW1/uXPiV+p80rfZMFztyLsAqrxU1ArNu
+k+UUGopGfUprWpsTiD0u3LA3PU3sACHPE4Go3boI7GPNyEswj8a/YBg36HhL3z1R
+jNKjPucctCJt97USWwamQchV72neQtjnNsRd+jAd+yZsvgsdtEqhzg==
+-----END AGE ENCRYPTED FILE-----
diff --git a/git-identity-personal b/git-identity-personal
deleted file mode 100644
index b17f25e9..00000000
--- a/git-identity-personal
+++ /dev/null
@@ -1,9 +0,0 @@
-[user]
-    name = Jim Lawton
-    email = jim.lawton@gmail.com
-[hub]
-    protocol = https
-[credential "https://github.com"]
-    helper = !/opt/homebrew/bin/gh auth git-credential
-[credential "https://gist.github.com"]
-    helper = !/opt/homebrew/bin/gh auth git-credential
diff --git a/git-identity-work b/git-identity-work
deleted file mode 100644
index 2a87a099..00000000
--- a/git-identity-work
+++ /dev/null
@@ -1,13 +0,0 @@
-[user]
-    name = Jim Lawton
-    email = james.lawton@forcepoint.com
-[hub]
-    protocol = https
-    host = https://github.cicd.cloud.fpdev.io
-[init]
-    templateDir = ~/dotfiles/git-template
-[credential "https://github.cicd.cloud.fpdev.io"]
-    helper = !/opt/homebrew/bin/gh auth git-credential
-[spice "forge.github"]
-    url = https://github.cicd.cloud.fpdev.io
-    apiUrl = https://github.cicd.cloud.fpdev.io/api

From feaedfcca5652d0f45916a44e6aba5c8a5b0af96 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:19:33 +0000
Subject: [PATCH 802/973] Remove Dropbox symlinking, no longer needed.

---
 _setupdotfiles.sh | 22 ----------------------
 1 file changed, 22 deletions(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index 6df25600..5307f627 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -3,8 +3,6 @@
 DOTFILESDIR=~/dotfiles
 DOTFILES=".iterm2_shell_integration.zsh"
 DOTDIRS=".hammerspoon"
-DROPFILES="persistent_history"
-DROPDIRS="bin .pip"
 SAVEDIR=~/.old/_setupdotfiles
 
 function symlinkifne {
@@ -87,26 +85,6 @@ for dotdir in $DOTDIRS; do
 	symlinkifne $dotdir
 done
 
-echo "Symlinking Dropbox directories..."
-# Any directories you want linked from Dropbox.
-if [ -e ~/Dropbox/ ]; then
-    for dropdir in $DROPDIRS; do
-        if [ ! -e ~/$dropdir ]; then
-            ln -s ~/Dropbox/unixhome/$dropdir ~/
-        fi
-    done
-fi
-
-echo "Symlinking Dropbox files..."
-# Any files you want linked from Dropbox.
-if [ -e ~/Dropbox/ ]; then
-    for dropfile in $DROPFILES; do
-        if [ ! -e ~/$dropfile ]; then
-            ln -s ~/Dropbox/$dropfile ~/.$dropfile
-        fi
-    done
-fi
-
 echo "Symlinking config directories..."
 mkdir -p ~/.config
 ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner

From c46f43ac5a30abeab9c28b97a00d653050538e24 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:21:55 +0000
Subject: [PATCH 803/973] Move old script.

---
 mac/Open in iTerm2.scpt | Bin 2878 -> 0 bytes
 scripts                 |   2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 mac/Open in iTerm2.scpt

diff --git a/mac/Open in iTerm2.scpt b/mac/Open in iTerm2.scpt
deleted file mode 100644
index a3458a7eeecc73d393bb7215c9c2cde64caf65b8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2878
zcmcImX?Ijb5WVjuY;UF~$*=^COQJ$>j2YriL?8r^2r)>);qx#IGMY@rnUUojKll^;
z1%7rz#eH9J!4(x{5tSVT+1wXguD9MKCLZHC=+QS*_x0u-h-SsWa
zEz^x+04l3Uc<@o-sR5_9cdPpCsq|5)kx>}!1Qoq%18o??-}tM;82DWwTN}n=oD+l-
zD=`Owk3h^3M4cdBC<1c{6pAAk!Tv3rj%nAI0Y1P~+R6BuxMfg3IKcOZN
zR0ip_*_=ZSygrSLmMK40@JDzK)$sa5Yrr2O`~k7)7}d94-1b_Y&H0E)PaNZ&Ahalg
z2*2ld{MO_5X3Td6-uxYWSEa$6bI6ogj2^Eoym`
zNBFtNqbBNz!RO}U3q==UiW7vps1~y@6^%|1?xH$ehiN{hiS1$}oFEifhdLhSAs+O2
z*km0tIA{VBqD#=^1Qi`>*P)&Va4Gi(dQEQbC>8p0YuDy;xA*pvcgmqaLXX3xWiKcy
zXpW&7-bN&AkW|EOKo)&yL{UCof&%)nNE_}p(Qn?%#m;sl{_4QSv#?&Thj`^>Jr
z278RNMRXZ1cY@Hk22AB{e#TD&?v`(y&
zMl|vh?&8NDKQTSK3_do_D@9k~Y9|O?+lXs%4Q4n&=-MP&(dr9)4a{_cP+$^C?&J<`
z_qfw!?J(GG0%wY@!z?EVtxw__ZsSLo9dO%#Ym2$kxN3oo-V59Twm^QM1pSzd|UnPg|#XxS4-VOzU8p6tZpV|@=dY=%Hg#{A
zy2kQKYgIWqs?g!xG1mO`-##5ZOFQ9vuyi)bo@xfXXlE*&&6WC#tLqoe8$sdRc`{Vb
zxNJ|R(AS*G=SN^VgD#UXoUQyF)TeJB-iv5kKHr;7r%KuWTv7I&m24f})B1-MNvL#B
zz&Pbz4>HQbK4obNdHt%CrBQV1E3MHSO3Kk9Rx4i@YV*V~X}HAX9}-pIy(G*^A5%m(
z@O7tb57S^aX7e?^%2zzTW|4c<;1vts>lVIok25yZe6#UuRo;_n*Qy=bwZx
zSdh)F%oP50{LVCd?fr#Jcc!o=o6cDHE>5;~uP>G|eXWbLD+;N?`qtqLtwTnI;hdy1
zenA+rm0?KFG@w(&z+WxYqeY9+=>%b@wH>*MFY_gjn~dpY
zgO`j`*@GMTqQi|toG(j*E`o
s5=GFJ5JtKZ$D2+x#o-bsPi>yk8%1^3l4a$8RjQaSDAl8<{9

diff --git a/scripts b/scripts
index 9178f65c..be264d70 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 9178f65ceb5105cbc4925d0e0bcda605425796a0
+Subproject commit be264d70112441fb7f7a0befacbec9dc8a1e96d7

From d70b60317401a1394707ad50176fd6ea6ca648b2 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:39:42 +0000
Subject: [PATCH 804/973] chezmoi: change gitconfig to template, pull in
 platform files.

---
 chezmoi/{dot_gitconfig => dot_gitconfig.tmpl} | 18 +++++++++++++-----
 gitconfig-linux                               |  2 --
 gitconfig-macos                               |  8 --------
 3 files changed, 13 insertions(+), 15 deletions(-)
 rename chezmoi/{dot_gitconfig => dot_gitconfig.tmpl} (90%)
 delete mode 100644 gitconfig-linux
 delete mode 100644 gitconfig-macos

diff --git a/chezmoi/dot_gitconfig b/chezmoi/dot_gitconfig.tmpl
similarity index 90%
rename from chezmoi/dot_gitconfig
rename to chezmoi/dot_gitconfig.tmpl
index 395d9ca7..689a3166 100644
--- a/chezmoi/dot_gitconfig
+++ b/chezmoi/dot_gitconfig.tmpl
@@ -1,9 +1,17 @@
 # Mac/Linux specifics.
-[includeIf "gitdir:/Users"]
-    path = ~/dotfiles/gitconfig-macos
-# FIXME: this also matches on Mac.
-#[includeIf "gitdir:/home"]
-#    path = ~/dotfiles/gitconfig-linux
+{{ if eq .chezmoi.os "darwin" -}}
+[credential]
+	helper = osxkeychain
+	helper = /usr/local/share/gcm-core/git-credential-manager
+[safe]
+	directory = "*"
+
+[push]
+	default = current
+{{ else if eq .chezmoi.os "linux" -}}
+[credential]
+	helper = cache --timeout=300
+{{ end -}}
 
 # Personal/work Git identity.
 [includeIf "gitdir:~/Work/"]
diff --git a/gitconfig-linux b/gitconfig-linux
deleted file mode 100644
index edc933f1..00000000
--- a/gitconfig-linux
+++ /dev/null
@@ -1,2 +0,0 @@
-[credential]
-	helper = cache --timeout=300
diff --git a/gitconfig-macos b/gitconfig-macos
deleted file mode 100644
index 4c244c14..00000000
--- a/gitconfig-macos
+++ /dev/null
@@ -1,8 +0,0 @@
-[credential]
-	helper = osxkeychain
-	helper = /usr/local/share/gcm-core/git-credential-manager
-[safe]
-	directory = "*"
-
-[push]
-	default = current

From 3f820ba5884edc68792af648aadc9efcb33da3a3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:40:59 +0000
Subject: [PATCH 805/973] Update gitignore.

---
 chezmoi/dot_gitignore | 2 --
 1 file changed, 2 deletions(-)

diff --git a/chezmoi/dot_gitignore b/chezmoi/dot_gitignore
index 587b9b0e..b2f73e94 100644
--- a/chezmoi/dot_gitignore
+++ b/chezmoi/dot_gitignore
@@ -9,10 +9,8 @@ thumbs.db
 .#*
 *.pyc
 *.o
-# srclib build cache
 .srclib-cache/
 .DS_Store
 .gradle
 .gradle_targets
 .gradletasknamecache
-.gitconfig-work

From 3a04755cc72054e8a2d9681667c3557849449908 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:45:45 +0000
Subject: [PATCH 806/973] Update crontab.

---
 crontab.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/crontab.txt b/crontab.txt
index 0b82218f..48204a9b 100644
--- a/crontab.txt
+++ b/crontab.txt
@@ -1,3 +1,2 @@
-#0,15,30,45 * * * * python3 ~/dotfiles/history/zsh-to-persistent-history.py -w >> ~/ph.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1
 0,15,30,45 8,9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1

From 32e11db7f864d065e83579935e15f54d302e660a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:53:34 +0000
Subject: [PATCH 807/973] Rename readme.

---
 README.markdown => README.md | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename README.markdown => README.md (100%)

diff --git a/README.markdown b/README.md
similarity index 100%
rename from README.markdown
rename to README.md

From 45997274e1058e34a220b140efe3e52ecc36a961 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 16:56:58 +0000
Subject: [PATCH 808/973] Update readme.

---
 README.md | 70 +++++++++++++++++++++++++++----------------------------
 1 file changed, 34 insertions(+), 36 deletions(-)

diff --git a/README.md b/README.md
index c64bd2a3..b4b2ec18 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,43 @@
 # dotfiles
 
-## What is this?
+This repository is meant to manage and configure a personalised dev env setup for MacOS/Linux.
 
-These are Jim's shell configuration dot files. The goal is to increase CLI
-productivity on Linux (mainly Ubuntu) and OSX, though many scripts run just fine
-on any POSIX implementation.
+This primarily uses [chezmoi](https://www.chezmoi.io/) to manage dotfiles and a combination of [mise](https://mise.jdx.dev/) and Homebrew to manage package installations.
 
-## Focus
+## Structure
 
-The focus is on Zsh support. This used to work with Bash, but I switched and
-don't support that any more.
+Packages are contained within .chezmoidata/packages.yaml
 
-## Inspirations
+These are installed whenever the packages.yaml has changed and a `chezmoi apply` is run
 
-The contents of this repo are based on Matthew McCullough's [original](https://github.com/matthewmccullough/dotfiles).
-Other bits have been added over the years.
+## Usage
+
+### Install XCode Command Line Tools if necessary
+```
+xcode-select --install
+```
+
+### Install homebrew
+```
+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+```
+
+### Install chezmoi
+```
+brew install chezmoi
+```
+
+### Clone the repo and apply the dotfiles
+```
+chezmoi init https://github.com/jimlawton/dotfiles
+```
+
+> [!IMPORTANT]
+> Update .chezmoidata/identity.yaml with your personal details
+
+```
+chezmoi apply
+```
 
 ## Acquiring This Repo
 
@@ -28,34 +51,9 @@ home directory, as follows.
 
 ## Setup
 
-Personalisation settings are in `personalisation`. Replace the values with your own.
-
 There is a set up script that establishes the symlinks in your home directory.
-Run this:
+If necessary, you can run this:
 
 ```bash
 > ~/dotfiles/_setupdotfiles.sh
 ```
-
-This will attempt to set up symlinks to the relevant dot files from your home
-directory. In the event of files already existing in your home directory, it
-will warn and skip them. Carefully check the warnings, and when you are happy
-to proceed, do:
-
-```bash
-> MOVE=true ~/dotfiles/_setupdotfiles.sh
-```
-
-> NOTE: Some of my personal configuration will remain after setup. You should
-> fork and tweak to your specific needs.
-
-## Non-automated, non-captured config
-
-Reminder-to-self: Some additional personalization lives in the `~/.config/`
-directory. Specifically, the `~/.config/gh/config.yml` file for [`gh`](https://cli.github.com).
-It is not yet in scope for capture or copy, but some users have
-[shared their configuration in a Gist](https://gist.github.com/vilmibm/a1b9a405ac0d5153c614c9c646e37d13).
-
-## Contributions
-
-Contributions are always welcome in the form of pull requests with explanatory comments.

From c06b7375a00e4546928a665cc5156b0ba3a5ccaf Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 17:19:06 +0000
Subject: [PATCH 809/973] Disable now abbrev.

---
 .../private_dot_config/private_fish/conf.d/abbreviations.fish   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index aa8cb057..85efe559 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -19,7 +19,7 @@ abbr --add fgrep 'fgrep --color=auto --exclude=.git'
 # abbr --add cp 'cp -i'
 # abbr --add mv 'mv -i'
 
-abbr --add now 'date +"%Y%m%d-%H%M%S"'
+# abbr --add now 'date +"%Y%m%d-%H%M%S"'
 abbr --add minicom 'minicom -C minicom-`now`.log'
 abbr --add pgrep 'ps auxww | grep \!* | grep -v grep'
 abbr --add a2ps 'a2ps --landscape -1 --line-numbers=5 --pretty-print --highlight-level=heavy --chars-per-line=120 --sides=duplex --prologue=color'

From 48e5953d8e8d8de78dd9aa81eb8e86d05c4194f5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 17:21:31 +0000
Subject: [PATCH 810/973] Move crontab to chezmoi.

---
 crontab.txt => chezmoi/dot_crontab | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename crontab.txt => chezmoi/dot_crontab (100%)

diff --git a/crontab.txt b/chezmoi/dot_crontab
similarity index 100%
rename from crontab.txt
rename to chezmoi/dot_crontab

From 49d082e99be1d3ac8662861a9958c62f1ed29e37 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 17:24:13 +0000
Subject: [PATCH 811/973] chezmoi: add template script to update crontab.

---
 chezmoi/run_onchange_after_update-crontab.sh.tmpl | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 chezmoi/run_onchange_after_update-crontab.sh.tmpl

diff --git a/chezmoi/run_onchange_after_update-crontab.sh.tmpl b/chezmoi/run_onchange_after_update-crontab.sh.tmpl
new file mode 100644
index 00000000..66f4d364
--- /dev/null
+++ b/chezmoi/run_onchange_after_update-crontab.sh.tmpl
@@ -0,0 +1,2 @@
+#!/bin/sh
+crontab ~/.crontab

From 0096b97b73fde2f1cb411a4e101458e38968c83b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 18:25:01 +0000
Subject: [PATCH 812/973] chezmoi: better crontab updater.

---
 chezmoi/run_onchange_after_update-crontab.sh.tmpl | 2 --
 chezmoi/run_onchange_update-crontab.sh.tmpl       | 3 +++
 2 files changed, 3 insertions(+), 2 deletions(-)
 delete mode 100644 chezmoi/run_onchange_after_update-crontab.sh.tmpl
 create mode 100644 chezmoi/run_onchange_update-crontab.sh.tmpl

diff --git a/chezmoi/run_onchange_after_update-crontab.sh.tmpl b/chezmoi/run_onchange_after_update-crontab.sh.tmpl
deleted file mode 100644
index 66f4d364..00000000
--- a/chezmoi/run_onchange_after_update-crontab.sh.tmpl
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-crontab ~/.crontab
diff --git a/chezmoi/run_onchange_update-crontab.sh.tmpl b/chezmoi/run_onchange_update-crontab.sh.tmpl
new file mode 100644
index 00000000..d84ddfeb
--- /dev/null
+++ b/chezmoi/run_onchange_update-crontab.sh.tmpl
@@ -0,0 +1,3 @@
+#!/bin/sh
+# crontab hash: {{ include "crontab" | sha256sum }}
+crontab {{ joinPath .chezmoi.sourceDir "crontab" | quote }}

From 99b8bf6dfc4fdff775c2cdce376311a03add62b9 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 18:26:07 +0000
Subject: [PATCH 813/973] Rename crontab.

---
 chezmoi/{dot_crontab => crontab} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename chezmoi/{dot_crontab => crontab} (100%)

diff --git a/chezmoi/dot_crontab b/chezmoi/crontab
similarity index 100%
rename from chezmoi/dot_crontab
rename to chezmoi/crontab

From 782cc78cb5408228ecc99be78ff975635724d683 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 18:26:22 +0000
Subject: [PATCH 814/973] chezmoi: ignore crontab.

---
 chezmoi/.chezmoiignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore
index ecef1a63..cd69af50 100644
--- a/chezmoi/.chezmoiignore
+++ b/chezmoi/.chezmoiignore
@@ -1,2 +1,3 @@
 key.txt.age
 identity.txt
+crontab

From a33d418815a7cf4a6d0ee8f7711887af96f9b189 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 18:46:17 +0000
Subject: [PATCH 815/973] chezmoi: move hammerspoon setup.

---
 chezmoi/dot_hammerspoon/Spoons/.keep     | 0
 chezmoi/dot_hammerspoon/symlink_init.lua | 1 +
 hammerspoon/init.lua                     | 1 -
 3 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 chezmoi/dot_hammerspoon/Spoons/.keep
 create mode 100644 chezmoi/dot_hammerspoon/symlink_init.lua
 delete mode 120000 hammerspoon/init.lua

diff --git a/chezmoi/dot_hammerspoon/Spoons/.keep b/chezmoi/dot_hammerspoon/Spoons/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua b/chezmoi/dot_hammerspoon/symlink_init.lua
new file mode 100644
index 00000000..3af2fd74
--- /dev/null
+++ b/chezmoi/dot_hammerspoon/symlink_init.lua
@@ -0,0 +1 @@
+../dotfiles/hyper-hacks/hammerspoon/init.lua
diff --git a/hammerspoon/init.lua b/hammerspoon/init.lua
deleted file mode 120000
index 82d8b0bf..00000000
--- a/hammerspoon/init.lua
+++ /dev/null
@@ -1 +0,0 @@
-../hyper-hacks/hammerspoon/init.lua
\ No newline at end of file

From 274ee73d0a5feb941a6fbcfb351fd0d6e4df31b6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 18:49:16 +0000
Subject: [PATCH 816/973] More cleanup of setup script.

---
 _setupdotfiles.sh | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index 5307f627..f1451e88 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -2,7 +2,6 @@
 
 DOTFILESDIR=~/dotfiles
 DOTFILES=".iterm2_shell_integration.zsh"
-DOTDIRS=".hammerspoon"
 SAVEDIR=~/.old/_setupdotfiles
 
 function symlinkifne {
@@ -80,15 +79,9 @@ for dotfile in $DOTFILES; do
 	symlinkifne $dotfile
 done
 
-echo "Symlinking dot directories..."
-for dotdir in $DOTDIRS; do
-	symlinkifne $dotdir
-done
-
 echo "Symlinking config directories..."
 mkdir -p ~/.config
 ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner
-ln -sf ~/dotfiles/fish ~/.config/fish
 
 echo "Creating Terraform directory..."
 mkdir -p ~/.terraform.d

From 9effe13c2ccc16a2ace828c8e05e892a79812667 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:00:16 +0000
Subject: [PATCH 817/973] Remote iterm2 zsh integration.

---
 iterm2_shell_integration.zsh | 180 -----------------------------------
 1 file changed, 180 deletions(-)
 delete mode 100755 iterm2_shell_integration.zsh

diff --git a/iterm2_shell_integration.zsh b/iterm2_shell_integration.zsh
deleted file mode 100755
index 31080ce3..00000000
--- a/iterm2_shell_integration.zsh
+++ /dev/null
@@ -1,180 +0,0 @@
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-
-if [[ -o interactive ]]; then
-  if [ "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "tmux-256color" -a "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "screen" -a "${ITERM_SHELL_INTEGRATION_INSTALLED-}" = "" -a "$TERM" != linux -a "$TERM" != dumb ]; then
-    ITERM_SHELL_INTEGRATION_INSTALLED=Yes
-    ITERM2_SHOULD_DECORATE_PROMPT="1"
-    # Indicates start of command output. Runs just before command executes.
-    iterm2_before_cmd_executes() {
-      if [ "$TERM_PROGRAM" = "iTerm.app" ]; then
-        printf "\033]133;C;\r\007"
-      else
-        printf "\033]133;C;\007"
-      fi
-    }
-
-    iterm2_set_user_var() {
-      printf "\033]1337;SetUserVar=%s=%s\007" "$1" $(printf "%s" "$2" | base64 | tr -d '\n')
-    }
-
-    # Users can write their own version of this method. It should call
-    # iterm2_set_user_var but not produce any other output.
-    # e.g., iterm2_set_user_var currentDirectory $PWD
-    # Accessible in iTerm2 (in a badge now, elsewhere in the future) as
-    # \(user.currentDirectory).
-    whence -v iterm2_print_user_vars > /dev/null 2>&1
-    if [ $? -ne 0 ]; then
-      iterm2_print_user_vars() {
-          true
-      }
-    fi
-
-    iterm2_print_state_data() {
-      local _iterm2_hostname="${iterm2_hostname-}"
-      if [ -z "${iterm2_hostname:-}" ]; then
-        _iterm2_hostname=$(hostname -f 2>/dev/null)
-      fi
-      printf "\033]1337;RemoteHost=%s@%s\007" "$USER" "${_iterm2_hostname-}"
-      printf "\033]1337;CurrentDir=%s\007" "$PWD"
-      iterm2_print_user_vars
-    }
-
-    # Report return code of command; runs after command finishes but before prompt
-    iterm2_after_cmd_executes() {
-      printf "\033]133;D;%s\007" "$STATUS"
-      iterm2_print_state_data
-    }
-
-    # Mark start of prompt
-    iterm2_prompt_mark() {
-      printf "\033]133;A\007"
-    }
-
-    # Mark end of prompt
-    iterm2_prompt_end() {
-      printf "\033]133;B\007"
-    }
-
-    # There are three possible paths in life.
-    #
-    # 1) A command is entered at the prompt and you press return.
-    #    The following steps happen:
-    #    * iterm2_preexec is invoked
-    #      * PS1 is set to ITERM2_PRECMD_PS1
-    #      * ITERM2_SHOULD_DECORATE_PROMPT is set to 1
-    #    * The command executes (possibly reading or modifying PS1)
-    #    * iterm2_precmd is invoked
-    #      * ITERM2_PRECMD_PS1 is set to PS1 (as modified by command execution)
-    #      * PS1 gets our escape sequences added to it
-    #    * zsh displays your prompt
-    #    * You start entering a command
-    #
-    # 2) You press ^C while entering a command at the prompt.
-    #    The following steps happen:
-    #    * (iterm2_preexec is NOT invoked)
-    #    * iterm2_precmd is invoked
-    #      * iterm2_before_cmd_executes is called since we detected that iterm2_preexec was not run
-    #      * (ITERM2_PRECMD_PS1 and PS1 are not messed with, since PS1 already has our escape
-    #        sequences and ITERM2_PRECMD_PS1 already has PS1's original value)
-    #    * zsh displays your prompt
-    #    * You start entering a command
-    #
-    # 3) A new shell is born.
-    #    * PS1 has some initial value, either zsh's default or a value set before this script is sourced.
-    #    * iterm2_precmd is invoked
-    #      * ITERM2_SHOULD_DECORATE_PROMPT is initialized to 1
-    #      * ITERM2_PRECMD_PS1 is set to the initial value of PS1
-    #      * PS1 gets our escape sequences added to it
-    #    * Your prompt is shown and you may begin entering a command.
-    #
-    # Invariants:
-    # * ITERM2_SHOULD_DECORATE_PROMPT is 1 during and just after command execution, and "" while the prompt is
-    #   shown and until you enter a command and press return.
-    # * PS1 does not have our escape sequences during command execution
-    # * After the command executes but before a new one begins, PS1 has escape sequences and
-    #   ITERM2_PRECMD_PS1 has PS1's original value.
-    iterm2_decorate_prompt() {
-      # This should be a raw PS1 without iTerm2's stuff. It could be changed during command
-      # execution.
-      ITERM2_PRECMD_PS1="$PS1"
-      ITERM2_SHOULD_DECORATE_PROMPT=""
-
-      # Add our escape sequences just before the prompt is shown.
-      # Use ITERM2_SQUELCH_MARK for people who can't modify PS1 directly, like powerlevel9k users.
-      # This is gross but I had a heck of a time writing a correct if statetment for zsh 5.0.2.
-      local PREFIX=""
-      if [[ $PS1 == *"$(iterm2_prompt_mark)"* ]]; then
-        PREFIX=""
-      elif [[ "${ITERM2_SQUELCH_MARK-}" != "" ]]; then
-        PREFIX=""
-      else
-        PREFIX="%{$(iterm2_prompt_mark)%}"
-      fi
-      PS1="$PREFIX$PS1%{$(iterm2_prompt_end)%}"
-      ITERM2_DECORATED_PS1="$PS1"
-    }
-
-    iterm2_precmd() {
-      local STATUS="$?"
-      if [ -z "${ITERM2_SHOULD_DECORATE_PROMPT-}" ]; then
-        # You pressed ^C while entering a command (iterm2_preexec did not run)
-        iterm2_before_cmd_executes
-        if [ "$PS1" != "${ITERM2_DECORATED_PS1-}" ]; then
-          # PS1 changed, perhaps in another precmd. See issue 9938.
-          ITERM2_SHOULD_DECORATE_PROMPT="1"
-        fi
-      fi
-
-      iterm2_after_cmd_executes "$STATUS"
-
-      if [ -n "$ITERM2_SHOULD_DECORATE_PROMPT" ]; then
-        iterm2_decorate_prompt
-      fi
-    }
-
-    # This is not run if you press ^C while entering a command.
-    iterm2_preexec() {
-      # Set PS1 back to its raw value prior to executing the command.
-      PS1="$ITERM2_PRECMD_PS1"
-      ITERM2_SHOULD_DECORATE_PROMPT="1"
-      iterm2_before_cmd_executes
-    }
-
-    # If hostname -f is slow on your system set iterm2_hostname prior to
-    # sourcing this script. We know it is fast on macOS so we don't cache
-    # it. That lets us handle the hostname changing like when you attach
-    # to a VPN.
-    if [ -z "${iterm2_hostname-}" ]; then
-      if [ "$(uname)" != "Darwin" ]; then
-        iterm2_hostname=`hostname -f 2>/dev/null`
-        # Some flavors of BSD (i.e. NetBSD and OpenBSD) don't have the -f option.
-        if [ $? -ne 0 ]; then
-          iterm2_hostname=`hostname`
-        fi
-      fi
-    fi
-
-    [[ -z ${precmd_functions-} ]] && precmd_functions=()
-    precmd_functions=($precmd_functions iterm2_precmd)
-
-    [[ -z ${preexec_functions-} ]] && preexec_functions=()
-    preexec_functions=($preexec_functions iterm2_preexec)
-
-    iterm2_print_state_data
-    printf "\033]1337;ShellIntegrationVersion=14;shell=zsh\007"
-  fi
-fi
-#alias imgcat=${HOME}/.iterm2/imgcat;alias imgls=${HOME}/.iterm2/imgls;alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2tip=${HOME}/.iterm2/it2tip;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion;alias it2profile=${HOME}/.iterm2/it2profile;alias it2cat=${HOME}/.iterm2/it2cat
-alias it2api=${HOME}/.iterm2/it2api;alias it2attention=${HOME}/.iterm2/it2attention;alias it2check=${HOME}/.iterm2/it2check;alias it2copy=${HOME}/.iterm2/it2copy;alias it2dl=${HOME}/.iterm2/it2dl;alias it2getvar=${HOME}/.iterm2/it2getvar;alias it2git=${HOME}/.iterm2/it2git;alias it2setcolor=${HOME}/.iterm2/it2setcolor;alias it2setkeylabel=${HOME}/.iterm2/it2setkeylabel;alias it2tip=${HOME}/.iterm2/it2tip;alias it2ul=${HOME}/.iterm2/it2ul;alias it2universion=${HOME}/.iterm2/it2universion;alias it2profile=${HOME}/.iterm2/it2profile;alias it2cat=${HOME}/.iterm2/it2cat

From 16828fa1e68451dff97207284e5c3b83931d401c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:03:39 +0000
Subject: [PATCH 818/973] Move iTerm settings to directory.

---
 com.googlecode.iterm2.plist => iTerm2/com.googlecode.iterm2.plist | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename com.googlecode.iterm2.plist => iTerm2/com.googlecode.iterm2.plist (100%)

diff --git a/com.googlecode.iterm2.plist b/iTerm2/com.googlecode.iterm2.plist
similarity index 100%
rename from com.googlecode.iterm2.plist
rename to iTerm2/com.googlecode.iterm2.plist

From 17f97d194256aa0569018a09e6382f7adc1563cf Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:04:07 +0000
Subject: [PATCH 819/973] Update iTerm2 settings.

---
 iTerm2/com.googlecode.iterm2.plist | Bin 147353 -> 30163 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/iTerm2/com.googlecode.iterm2.plist b/iTerm2/com.googlecode.iterm2.plist
index 88acd374c0905be853bc843bf1d41f4ed522dbef..99de0bbc7616ebbab0a087a6e853de2dd41381f0 100644
GIT binary patch
literal 30163
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

literal 147353
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
K(Qd!}$NvW({FE^O


From b510849ebc5c4a3793d27a9d776d4366f38be1d6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:04:31 +0000
Subject: [PATCH 820/973] Add iTerm2 profiles.

---
 iTerm2/Profiles.json | 2156 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 2156 insertions(+)
 create mode 100644 iTerm2/Profiles.json

diff --git a/iTerm2/Profiles.json b/iTerm2/Profiles.json
new file mode 100644
index 00000000..4e130d57
--- /dev/null
+++ b/iTerm2/Profiles.json
@@ -0,0 +1,2156 @@
+{
+"Profiles": [
+{
+  "Ansi 7 Color (Light)" : {
+    "Red Component" : 0.7810397744178772,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78104829788208008,
+    "Alpha Component" : 1,
+    "Green Component" : 0.78105825185775757
+  },
+  "Ansi 15 Color (Light)" : {
+    "Red Component" : 0.99999600648880005,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Ansi 2 Color (Light)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.7607843279838562
+  },
+  "Bold Color" : {
+    "Red Component" : 0.062745101749897003,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.062745101749897003,
+    "Alpha Component" : 1,
+    "Green Component" : 0.062745101749897003
+  },
+  "Ansi 1 Color (Dark)" : {
+    "Red Component" : 0.7074432373046875,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.16300037503242493,
+    "Alpha Component" : 1,
+    "Green Component" : 0.23660069704055786
+  },
+  "Use Bright Bold" : true,
+  "Ansi 9 Color (Light)" : {
+    "Red Component" : 0.8659515380859375,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.45833224058151245,
+    "Alpha Component" : 1,
+    "Green Component" : 0.47524076700210571
+  },
+  "Ansi 8 Color (Dark)" : {
+    "Red Component" : 0.40781760215759277,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.4078223705291748,
+    "Alpha Component" : 1,
+    "Green Component" : 0.40782788395881653
+  },
+  "Background Color" : {
+    "Red Component" : 0.97999999999999998,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.97999999999999998,
+    "Alpha Component" : 1,
+    "Green Component" : 0.97999999999999998
+  },
+  "Columns" : 80,
+  "Ansi 8 Color" : {
+    "Red Component" : 0.40781760215759277,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.4078223705291748,
+    "Alpha Component" : 1,
+    "Green Component" : 0.40782788395881653
+  },
+  "Right Option Key Sends" : 0,
+  "Ansi 4 Color (Light)" : {
+    "Red Component" : 0.15404300391674042,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78216177225112915,
+    "Alpha Component" : 1,
+    "Green Component" : 0.26474356651306152
+  },
+  "Blinking Cursor" : false,
+  "Selected Text Color (Light)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Selected Text Color (Dark)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Ansi 3 Color (Dark)" : {
+    "Red Component" : 0.78058648109436035,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.76959484815597534
+  },
+  "Keyboard Map" : {
+
+  },
+  "Visual Bell" : true,
+  "Only The Default BG Color Uses Transparency" : true,
+  "Cursor Text Color" : {
+    "Red Component" : 1,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Scrollback Lines" : 1000,
+  "Selection Color (Light)" : {
+    "Red Component" : 0.70196080207824707,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.84313726425170898
+  },
+  "Ansi 0 Color" : {
+    "Red Component" : 0.078431375324726105,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.11764705926179886,
+    "Alpha Component" : 1,
+    "Green Component" : 0.098039217293262482
+  },
+  "Ansi 11 Color (Light)" : {
+    "Red Component" : 0.9259033203125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.8833775520324707
+  },
+  "Ansi 5 Color (Dark)" : {
+    "Red Component" : 0.752197265625,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.74494361877441406,
+    "Alpha Component" : 1,
+    "Green Component" : 0.24931684136390686
+  },
+  "Cursor Text Color (Light)" : {
+    "Red Component" : 1,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Silence Bell" : false,
+  "Rows" : 25,
+  "Draw Powerline Glyphs" : true,
+  "Guid" : "1B0D64B6-E3A3-429A-AC1F-64B67EFEDAF3",
+  "Ansi 14 Color (Dark)" : {
+    "Red Component" : 0.37597531080245972,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.99263292551040649
+  },
+  "Ansi 15 Color (Dark)" : {
+    "Red Component" : 0.99999600648880005,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Ansi 0 Color (Dark)" : {
+    "Red Component" : 0.078431375324726105,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.11764705926179886,
+    "Alpha Component" : 1,
+    "Green Component" : 0.098039217293262482
+  },
+  "Ambiguous Double Width" : false,
+  "Option Key Sends" : 0,
+  "Ansi 3 Color" : {
+    "Red Component" : 0.78058648109436035,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.76959484815597534
+  },
+  "Window Type" : 0,
+  "BM Growl" : true,
+  "Prompt Before Closing 2" : false,
+  "Command" : "",
+  "Selected Text Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Ansi 14 Color (Light)" : {
+    "Red Component" : 0.37597531080245972,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.99263292551040649
+  },
+  "Cursor Guide Color (Dark)" : {
+    "Red Component" : 0.37649588016392954,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.94099044799804688,
+    "Alpha Component" : 0.25,
+    "Green Component" : 0.80232617749205526
+  },
+  "Send Code When Idle" : false,
+  "Ansi 6 Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78166204690933228,
+    "Alpha Component" : 1,
+    "Green Component" : 0.77425903081893921
+  },
+  "Jobs to Ignore" : [
+    "rlogin",
+    "ssh",
+    "slogin",
+    "telnet"
+  ],
+  "Badge Color (Dark)" : {
+    "Red Component" : 0.9787440299987793,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.65218597462148864,
+    "Alpha Component" : 0.5,
+    "Green Component" : 0.65218597462148864
+  },
+  "Cursor Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Vertical Spacing" : 1,
+  "Disable Window Resizing" : true,
+  "Close Sessions On End" : true,
+  "Selection Color (Dark)" : {
+    "Red Component" : 0.70196080207824707,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.84313726425170898
+  },
+  "Default Bookmark" : "No",
+  "Foreground Color (Light)" : {
+    "Red Component" : 0.062745098039215685,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.062745098039215685,
+    "Alpha Component" : 1,
+    "Green Component" : 0.062745098039215685
+  },
+  "Custom Command" : "No",
+  "Background Color (Dark)" : {
+    "Red Component" : 0.0806884765625,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.12103271484375,
+    "Alpha Component" : 1,
+    "Green Component" : 0.099111050367355347
+  },
+  "Ansi 9 Color" : {
+    "Red Component" : 0.8659515380859375,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.45833224058151245,
+    "Alpha Component" : 1,
+    "Green Component" : 0.47524076700210571
+  },
+  "Ansi 14 Color" : {
+    "Red Component" : 0.37597531080245972,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.99263292551040649
+  },
+  "Flashing Bell" : false,
+  "Use Italic Font" : true,
+  "Ansi 13 Color (Dark)" : {
+    "Red Component" : 0.8821563720703125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.8821563720703125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.4927266538143158
+  },
+  "Minimum Contrast" : 0,
+  "Cursor Guide Color (Light)" : {
+    "Red Component" : 0.52338262643729649,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.85319280624389648,
+    "Alpha Component" : 0.25,
+    "Green Component" : 0.77217718629089516
+  },
+  "Ansi 12 Color" : {
+    "Red Component" : 0.65349078178405762,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9485321044921875,
+    "Alpha Component" : 1,
+    "Green Component" : 0.67044717073440552
+  },
+  "Ansi 10 Color (Light)" : {
+    "Red Component" : 0.3450070321559906,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.56541937589645386,
+    "Alpha Component" : 1,
+    "Green Component" : 0.9042816162109375
+  },
+  "Non-ASCII Anti Aliased" : true,
+  "Ansi 10 Color" : {
+    "Red Component" : 0.3450070321559906,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.56541937589645386,
+    "Alpha Component" : 1,
+    "Green Component" : 0.9042816162109375
+  },
+  "Foreground Color" : {
+    "Red Component" : 0.062745101749897003,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.062745101749897003,
+    "Alpha Component" : 1,
+    "Green Component" : 0.062745101749897003
+  },
+  "Link Color (Light)" : {
+    "Red Component" : 0.19802422821521759,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9337158203125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.55789834260940552
+  },
+  "Description" : "Default",
+  "Ansi 7 Color (Dark)" : {
+    "Red Component" : 0.7810397744178772,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78104829788208008,
+    "Alpha Component" : 1,
+    "Green Component" : 0.78105825185775757
+  },
+  "Sync Title" : false,
+  "Ansi 1 Color" : {
+    "Red Component" : 0.7074432373046875,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.16300037503242493,
+    "Alpha Component" : 1,
+    "Green Component" : 0.23660069704055786
+  },
+  "Name" : "Default",
+  "Transparency" : 0,
+  "Horizontal Spacing" : 1,
+  "Cursor Color (Dark)" : {
+    "Red Component" : 0.99997633695602417,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.99998724460601807,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Ansi 2 Color (Dark)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.7607843279838562
+  },
+  "Ansi 9 Color (Dark)" : {
+    "Red Component" : 0.8659515380859375,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.45833224058151245,
+    "Alpha Component" : 1,
+    "Green Component" : 0.47524076700210571
+  },
+  "Badge Color" : {
+    "Red Component" : 0.74613857269287109,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.11610633134841919,
+    "Alpha Component" : 0.5,
+    "Green Component" : 0.11610633134841919
+  },
+  "Ansi 13 Color (Light)" : {
+    "Red Component" : 0.8821563720703125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.8821563720703125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.4927266538143158
+  },
+  "Idle Code" : 0,
+  "Ansi 4 Color" : {
+    "Red Component" : 0.15404300391674042,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78216177225112915,
+    "Alpha Component" : 1,
+    "Green Component" : 0.26474356651306152
+  },
+  "Bold Color (Dark)" : {
+    "Red Component" : 0.99999600648880005,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Screen" : -1,
+  "Ansi 4 Color (Dark)" : {
+    "Red Component" : 0.15404300391674042,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78216177225112915,
+    "Alpha Component" : 1,
+    "Green Component" : 0.26474356651306152
+  },
+  "Cursor Text Color (Dark)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Selection Color" : {
+    "Red Component" : 0.70196080207824707,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 0.84313726425170898
+  },
+  "Use Non-ASCII Font" : false,
+  "Badge Color (Light)" : {
+    "Red Component" : 0.74613857269287109,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.11610633058398889,
+    "Alpha Component" : 0.5,
+    "Green Component" : 0.11610633058398889
+  },
+  "Character Encoding" : 4,
+  "Ansi 11 Color (Dark)" : {
+    "Red Component" : 0.9259033203125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.8833775520324707
+  },
+  "Bold Color (Light)" : {
+    "Red Component" : 0.062745098039215685,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.062745098039215685,
+    "Alpha Component" : 1,
+    "Green Component" : 0.062745098039215685
+  },
+  "Ansi 12 Color (Dark)" : {
+    "Red Component" : 0.65349078178405762,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9485321044921875,
+    "Alpha Component" : 1,
+    "Green Component" : 0.67044717073440552
+  },
+  "Ansi 7 Color" : {
+    "Red Component" : 0.7810397744178772,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78104829788208008,
+    "Alpha Component" : 1,
+    "Green Component" : 0.78105825185775757
+  },
+  "Non Ascii Font" : "Monaco 12",
+  "Ansi 6 Color (Dark)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78166204690933228,
+    "Alpha Component" : 1,
+    "Green Component" : 0.77425903081893921
+  },
+  "Cursor Guide Color" : {
+    "Red Component" : 0.52338260412216187,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.85319280624389648,
+    "Alpha Component" : 0.25,
+    "Green Component" : 0.77217715978622437
+  },
+  "Custom Directory" : "No",
+  "Working Directory" : "\/Users\/james.lawton",
+  "ASCII Anti Aliased" : true,
+  "Shortcut" : "",
+  "Mouse Reporting" : true,
+  "Tags" : [
+
+  ],
+  "Ansi 6 Color (Light)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.78166204690933228,
+    "Alpha Component" : 1,
+    "Green Component" : 0.77425903081893921
+  },
+  "Background Image Location" : "",
+  "Ansi 1 Color (Light)" : {
+    "Red Component" : 0.7074432373046875,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.16300037503242493,
+    "Alpha Component" : 1,
+    "Green Component" : 0.23660069704055786
+  },
+  "Use Bold Font" : true,
+  "Ansi 8 Color (Light)" : {
+    "Red Component" : 0.40781760215759277,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.4078223705291748,
+    "Alpha Component" : 1,
+    "Green Component" : 0.40782788395881653
+  },
+  "Ansi 2 Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.7607843279838562
+  },
+  "Normal Font" : "Menlo-Regular 11",
+  "Unlimited Scrollback" : false,
+  "Ansi 12 Color (Light)" : {
+    "Red Component" : 0.65349078178405762,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9485321044921875,
+    "Alpha Component" : 1,
+    "Green Component" : 0.67044717073440552
+  },
+  "Ansi 10 Color (Dark)" : {
+    "Red Component" : 0.3450070321559906,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.56541937589645386,
+    "Alpha Component" : 1,
+    "Green Component" : 0.9042816162109375
+  },
+  "Ansi 3 Color (Light)" : {
+    "Red Component" : 0.78058648109436035,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.76959484815597534
+  },
+  "Cursor Color (Light)" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Ansi 15 Color" : {
+    "Red Component" : 0.99999600648880005,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Blur" : false,
+  "Use Separate Colors for Light and Dark Mode" : true,
+  "Background Color (Light)" : {
+    "Red Component" : 0.97999999999999998,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.97999999999999998,
+    "Alpha Component" : 1,
+    "Green Component" : 0.97999999999999998
+  },
+  "Terminal Type" : "xterm-256color",
+  "Ansi 13 Color" : {
+    "Red Component" : 0.8821563720703125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.8821563720703125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.4927266538143158
+  },
+  "Ansi 5 Color (Light)" : {
+    "Red Component" : 0.752197265625,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.74494361877441406,
+    "Alpha Component" : 1,
+    "Green Component" : 0.24931684136390686
+  },
+  "Foreground Color (Dark)" : {
+    "Red Component" : 0.86197912693023682,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.86198854446411133,
+    "Alpha Component" : 1,
+    "Green Component" : 0.86199951171875
+  },
+  "Link Color" : {
+    "Red Component" : 0.19802422821521759,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9337158203125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.55789834260940552
+  },
+  "Link Color (Dark)" : {
+    "Red Component" : 0.19802422821521759,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.9337158203125,
+    "Alpha Component" : 1,
+    "Green Component" : 0.55789834260940552
+  },
+  "Ansi 11 Color" : {
+    "Red Component" : 0.9259033203125,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0.8833775520324707
+  },
+  "Ansi 5 Color" : {
+    "Red Component" : 0.752197265625,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.74494361877441406,
+    "Alpha Component" : 1,
+    "Green Component" : 0.24931684136390686
+  },
+  "Ansi 0 Color (Light)" : {
+    "Red Component" : 0.078431375324726105,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.11764705926179886,
+    "Alpha Component" : 1,
+    "Green Component" : 0.098039217293262482
+  }
+},
+{
+  "Right Option Key Sends" : 2,
+  "Tags" : [
+
+  ],
+  "Ansi 12 Color" : {
+    "Red Component" : 0.01669310778379441,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.9982903003692627,
+    "Alpha Component" : 1,
+    "Green Component" : 0.26095205545425415
+  },
+  "Ansi 6 Color" : {
+    "Red Component" : 0.003921568859368561,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.92941176891326904,
+    "Alpha Component" : 1,
+    "Green Component" : 0.7137255072593689
+  },
+  "Draw Powerline Glyphs" : true,
+  "Bold Color" : {
+    "Red Component" : 1,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Use Non-ASCII Font" : false,
+  "Normal Font" : "MesloLGS-NF-Regular 14",
+  "Ansi 2 Color" : {
+    "Red Component" : 0.59543848037719727,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.13826943933963776,
+    "Alpha Component" : 1,
+    "Green Component" : 0.88415688276290894
+  },
+  "Rows" : 40,
+  "Default Bookmark" : "No",
+  "Ansi 3 Color" : {
+    "Red Component" : 0.99948215484619141,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.040143705904483781,
+    "Alpha Component" : 1,
+    "Green Component" : 0.95177114009857178
+  },
+  "Ansi 4 Color" : {
+    "Red Component" : 0.01669310778379441,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.9982903003692627,
+    "Alpha Component" : 1,
+    "Green Component" : 0.26095205545425415
+  },
+  "Automatically Log" : false,
+  "Cursor Guide Color" : {
+    "Red Component" : 0.64999997615814209,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 1,
+    "Alpha Component" : 0.25,
+    "Green Component" : 0.9100000262260437
+  },
+  "Non-ASCII Anti Aliased" : true,
+  "Use Bright Bold" : true,
+  "Ansi 10 Color" : {
+    "Red Component" : 0.69346785545349121,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.3713659942150116,
+    "Alpha Component" : 1,
+    "Green Component" : 0.87939631938934326
+  },
+  "Ambiguous Double Width" : false,
+  "Jobs to Ignore" : [
+    "rlogin",
+    "ssh",
+    "slogin",
+    "telnet"
+  ],
+  "Ansi 15 Color" : {
+    "Red Component" : 1,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 1,
+    "Alpha Component" : 1,
+    "Green Component" : 1
+  },
+  "Foreground Color" : {
+    "Red Component" : 0.97530043125152588,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.9752877950668335,
+    "Alpha Component" : 1,
+    "Green Component" : 0.97527122497558594
+  },
+  "Bound Hosts" : [
+
+  ],
+  "Working Directory" : "\/Users\/james.lawton",
+  "Blinking Cursor" : false,
+  "Disable Window Resizing" : true,
+  "Sync Title" : false,
+  "Prompt Before Closing 2" : false,
+  "BM Growl" : true,
+  "Command" : "",
+  "Description" : "Default",
+  "Mouse Reporting" : true,
+  "Screen" : -1,
+  "Selection Color" : {
+    "Red Component" : 1,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.99999129772186279,
+    "Alpha Component" : 1,
+    "Green Component" : 0.99997437000274658
+  },
+  "Columns" : 120,
+  "Idle Code" : 0,
+  "Ansi 13 Color" : {
+    "Red Component" : 0.95072436332702637,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.9646141529083252,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Title Components" : 4,
+  "Custom Command" : "No",
+  "ASCII Anti Aliased" : true,
+  "Non Ascii Font" : "Monaco 12",
+  "Vertical Spacing" : 1,
+  "Use Bold Font" : true,
+  "Option Key Sends" : 0,
+  "Selected Text Color" : {
+    "Red Component" : 0,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Background Color" : {
+    "Red Component" : 0.070588238537311554,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.070588238537311554,
+    "Alpha Component" : 1,
+    "Green Component" : 0.070588238537311554
+  },
+  "Character Encoding" : 4,
+  "Ansi 11 Color" : {
+    "Red Component" : 0.99927449226379395,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.42728197574615479,
+    "Alpha Component" : 1,
+    "Green Component" : 0.94947350025177002
+  },
+  "Use Italic Font" : true,
+  "Unlimited Scrollback" : true,
+  "Keyboard Map" : {
+    "0x33-0x200000-0x0" : {
+      "Text" : "3",
+      "Action" : 12
+    },
+    "0x2f-0x200000-0x0" : {
+      "Text" : "\/",
+      "Action" : 12
+    },
+    "0x3-0x200000-0x0" : {
+      "Text" : "0xd",
+      "Action" : 11
+    },
+    "0x38-0x200000-0x0" : {
+      "Text" : "8",
+      "Action" : 12
+    },
+    "0xf728-0x80000-0x0" : {
+      "Text" : "d",
+      "Action" : 10
+    },
+    "0xf70e-0x20000-0x0" : {
+      "Text" : "[23;2~",
+      "Action" : 10
+    },
+    "0xf701-0x220000-0x0" : {
+      "Text" : "[1;2B",
+      "Action" : 10
+    },
+    "0x32-0x40000-0x0" : {
+      "Text" : "0x00",
+      "Action" : 11
+    },
+    "0xf700-0x240000-0x0" : {
+      "Text" : "[1;5A",
+      "Action" : 10
+    },
+    "0xf703-0x220000-0x0" : {
+      "Text" : "[1;2C",
+      "Action" : 10
+    },
+    "0xf70b-0x20000-0x0" : {
+      "Text" : "[19;2~",
+      "Action" : 10
+    },
+    "0xf702-0x240000-0x0" : {
+      "Text" : "[1;5D",
+      "Action" : 10
+    },
+    "0xf701-0x260000-0x0" : {
+      "Text" : "[1;6B",
+      "Action" : 10
+    },
+    "0xf72b-0x40000-0x0" : {
+      "Text" : "[1;5F",
+      "Action" : 10
+    },
+    "0xf703-0x260000-0x0" : {
+      "Text" : "[1;6C",
+      "Action" : 10
+    },
+    "0x31-0x200000-0x0" : {
+      "Text" : "1",
+      "Action" : 12
+    },
+    "0xf702-0x280000-0x0" : {
+      "Text" : "b",
+      "Action" : 10
+    },
+    "0x2d-0x200000-0x0" : {
+      "Text" : "-",
+      "Action" : 12
+    },
+    "0xf709-0x20000-0x0" : {
+      "Text" : "[17;2~",
+      "Action" : 10
+    },
+    "0x36-0x200000-0x0" : {
+      "Text" : "6",
+      "Action" : 12
+    },
+    "0xf706-0x20000-0x0" : {
+      "Text" : "[1;2R",
+      "Action" : 10
+    },
+    "0x36-0x40000-0x0" : {
+      "Text" : "0x1e",
+      "Action" : 11
+    },
+    "0xf729-0x40000-0x0" : {
+      "Text" : "[1;5H",
+      "Action" : 10
+    },
+    "0x2d-0x40000-0x0" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0xf702-0x300000-0x0" : {
+      "Text" : "0x1",
+      "Action" : 11
+    },
+    "0x7f-0x80000-0x0" : {
+      "Text" : "0x1b 0x7f",
+      "Action" : 11
+    },
+    "0x33-0x40000-0x0" : {
+      "Text" : "0x1b",
+      "Action" : 11
+    },
+    "0x2b-0x200000-0x0" : {
+      "Text" : "+",
+      "Action" : 12
+    },
+    "0x34-0x200000-0x0" : {
+      "Text" : "4",
+      "Action" : 12
+    },
+    "0xf70d-0x20000-0x0" : {
+      "Text" : "[21;2~",
+      "Action" : 10
+    },
+    "0xf72b-0x20000-0x0" : {
+      "Text" : "[1;2F",
+      "Action" : 10
+    },
+    "0x39-0x200000-0x0" : {
+      "Text" : "9",
+      "Action" : 12
+    },
+    "0xf70a-0x20000-0x0" : {
+      "Text" : "[18;2~",
+      "Action" : 10
+    },
+    "0x37-0x40000-0x0" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0xf708-0x20000-0x0" : {
+      "Text" : "[15;2~",
+      "Action" : 10
+    },
+    "0xf729-0x20000-0x0" : {
+      "Text" : "[1;2H",
+      "Action" : 10
+    },
+    "0xf700-0x220000-0x0" : {
+      "Text" : "[1;2A",
+      "Action" : 10
+    },
+    "0xf705-0x20000-0x0" : {
+      "Text" : "[1;2Q",
+      "Action" : 10
+    },
+    "0xf702-0x220000-0x0" : {
+      "Text" : "[1;2D",
+      "Action" : 10
+    },
+    "0x2e-0x200000-0x0" : {
+      "Text" : ".",
+      "Action" : 12
+    },
+    "0x32-0x200000-0x0" : {
+      "Text" : "2",
+      "Action" : 12
+    },
+    "0xf701-0x240000-0x0" : {
+      "Text" : "[1;5B",
+      "Action" : 10
+    },
+    "0xf700-0x260000-0x0" : {
+      "Text" : "[1;6A",
+      "Action" : 10
+    },
+    "0x37-0x200000-0x0" : {
+      "Text" : "7",
+      "Action" : 12
+    },
+    "0xf703-0x240000-0x0" : {
+      "Text" : "[1;5C",
+      "Action" : 10
+    },
+    "0x34-0x40000-0x0" : {
+      "Text" : "0x1c",
+      "Action" : 11
+    },
+    "0xf702-0x260000-0x0" : {
+      "Text" : "[1;6D",
+      "Action" : 10
+    },
+    "0xf703-0x280000-0x0" : {
+      "Text" : "f",
+      "Action" : 10
+    },
+    "0xf70f-0x20000-0x0" : {
+      "Text" : "[24;2~",
+      "Action" : 10
+    },
+    "0x7f-0x100000-0x0" : {
+      "Text" : "0x15",
+      "Action" : 11
+    },
+    "0xf70c-0x20000-0x0" : {
+      "Text" : "[20;2~",
+      "Action" : 10
+    },
+    "0xf703-0x300000-0x0" : {
+      "Text" : "0x5",
+      "Action" : 11
+    },
+    "0x30-0x200000-0x0" : {
+      "Text" : "0",
+      "Action" : 12
+    },
+    "0x38-0x40000-0x0" : {
+      "Text" : "0x7f",
+      "Action" : 11
+    },
+    "0x35-0x200000-0x0" : {
+      "Text" : "5",
+      "Action" : 12
+    },
+    "0xf739-0x0-0x0" : {
+      "Text" : "",
+      "Action" : 13
+    },
+    "0xf707-0x20000-0x0" : {
+      "Text" : "[1;2S",
+      "Action" : 10
+    },
+    "0xf704-0x20000-0x0" : {
+      "Text" : "[1;2P",
+      "Action" : 10
+    },
+    "0x35-0x40000-0x0" : {
+      "Text" : "0x1d",
+      "Action" : 11
+    },
+    "0xf728-0x0-0x0" : {
+      "Text" : "0x4",
+      "Action" : 11
+    },
+    "0x2a-0x200000-0x0" : {
+      "Text" : "*",
+      "Action" : 12
+    }
+  },
+  "Window Type" : 0,
+  "Cursor Boost" : 0,
+  "Background Image Location" : "",
+  "Blur" : false,
+  "Badge Color" : {
+    "Red Component" : 1,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0,
+    "Alpha Component" : 0.5,
+    "Green Component" : 0
+  },
+  "Allow Title Setting" : true,
+  "Scrollback Lines" : 0,
+  "Send Code When Idle" : false,
+  "Close Sessions On End" : true,
+  "Scrollback in Alternate Screen" : false,
+  "Terminal Type" : "xterm-256color",
+  "Flashing Bell" : false,
+  "Visual Bell" : true,
+  "Silence Bell" : true,
+  "Session Close Undo Timeout" : 1000000,
+  "Ansi 14 Color" : {
+    "Red Component" : 0.31685584783554077,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.99888235330581665,
+    "Alpha Component" : 1,
+    "Green Component" : 0.80626189708709717
+  },
+  "ASCII Ligatures" : true,
+  "Cursor Text Color" : {
+    "Red Component" : 0.91798752546310425,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.036231454461812973,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Name" : "Jim's Profile",
+  "Minimum Contrast" : 0,
+  "Shortcut" : "",
+  "Cursor Color" : {
+    "Red Component" : 0.98594832420349121,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.026950567960739125,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Ansi 0 Color" : {
+    "Red Component" : 0.070588238537311554,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.070588238537311554,
+    "Alpha Component" : 1,
+    "Green Component" : 0.070588238537311554
+  },
+  "Guid" : "3B600FAB-A938-4AD0-944C-107527693D47",
+  "Custom Directory" : "No",
+  "Ansi 1 Color" : {
+    "Red Component" : 0.98061299324035645,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.20415860414505005,
+    "Alpha Component" : 1,
+    "Green Component" : 0.16063156723976135
+  },
+  "Horizontal Spacing" : 1,
+  "Ansi 5 Color" : {
+    "Red Component" : 0.97254902124404907,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.97254902124404907,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
+  "Has Hotkey" : false,
+  "Ansi 7 Color" : {
+    "Red Component" : 1,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.99999129772186279,
+    "Alpha Component" : 1,
+    "Green Component" : 0.99997437000274658
+  },
+  "Ansi 8 Color" : {
+    "Red Component" : 0.51280313730239868,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.51279646158218384,
+    "Alpha Component" : 1,
+    "Green Component" : 0.51278775930404663
+  },
+  "Ansi 9 Color" : {
+    "Red Component" : 0.9644390344619751,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.61410599946975708,
+    "Alpha Component" : 1,
+    "Green Component" : 0.40106064081192017
+  },
+  "Link Color" : {
+    "Red Component" : 0.89783346652984619,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.99908709526062012,
+    "Alpha Component" : 1,
+    "Green Component" : 0.24597522616386414
+  },
+  "Transparency" : 0
+},
+{
+  "Ansi 3 Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0
+  },
+  "Tags" : [
+
+  ],
+  "Ansi 12 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 0.3333333432674408,
+    "Blue Component" : 1
+  },
+  "Normal Font" : "Monaco 12",
+  "Ansi 4 Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Bold Color" : {
+    "Green Component" : 1,
+    "Red Component" : 1,
+    "Blue Component" : 1
+  },
+  "Ansi 5 Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Use Non-ASCII Font" : false,
+  "Rows" : 40,
+  "Default Bookmark" : "No",
+  "Non-ASCII Anti Aliased" : true,
+  "Use Bright Bold" : true,
+  "Ansi 10 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 0.3333333432674408,
+    "Blue Component" : 0.3333333432674408
+  },
+  "Ambiguous Double Width" : false,
+  "Jobs to Ignore" : [
+    "rlogin",
+    "ssh",
+    "slogin",
+    "telnet"
+  ],
+  "Show Status Bar" : false,
+  "Ansi 15 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 1,
+    "Blue Component" : 1
+  },
+  "Foreground Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Working Directory" : "\/Users\/james.lawton",
+  "Blinking Cursor" : false,
+  "Disable Window Resizing" : true,
+  "Sync Title" : false,
+  "Prompt Before Closing 2" : false,
+  "BM Growl" : true,
+  "Command" : "",
+  "Description" : "Default",
+  "Mouse Reporting" : true,
+  "Screen" : -1,
+  "Selection Color" : {
+    "Green Component" : 0.8353000283241272,
+    "Red Component" : 0.70980000495910645,
+    "Blue Component" : 1
+  },
+  "Columns" : 120,
+  "Idle Code" : 0,
+  "Ansi 13 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 1,
+    "Blue Component" : 1
+  },
+  "Title Components" : 4,
+  "Custom Command" : "No",
+  "ASCII Anti Aliased" : true,
+  "Non Ascii Font" : "Monaco 12",
+  "Vertical Spacing" : 1,
+  "Use Bold Font" : true,
+  "Option Key Sends" : 0,
+  "Selected Text Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0,
+    "Blue Component" : 0
+  },
+  "Background Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.21176470588235294,
+    "Alpha Component" : 1,
+    "Green Component" : 0.16862745098039217
+  },
+  "Character Encoding" : 4,
+  "Ansi 11 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 1,
+    "Blue Component" : 0.3333333432674408
+  },
+  "Use Italic Font" : true,
+  "Unlimited Scrollback" : false,
+  "Keyboard Map" : {
+    "0xf728-0x80000" : {
+      "Text" : "d",
+      "Action" : 10
+    },
+    "0xf702-0x280000" : {
+      "Text" : "b",
+      "Action" : 10
+    },
+    "0xf70d-0x20000" : {
+      "Text" : "[21;2~",
+      "Action" : 10
+    },
+    "0x7f-0x80000" : {
+      "Text" : "0x1b 0x7f",
+      "Action" : 11
+    },
+    "0xf708-0x20000" : {
+      "Text" : "[15;2~",
+      "Action" : 10
+    },
+    "0x33-0x40000" : {
+      "Text" : "0x1b",
+      "Action" : 11
+    },
+    "0xf703-0x260000" : {
+      "Text" : "[1;6C",
+      "Action" : 10
+    },
+    "0xf729-0x20000" : {
+      "Text" : "[1;2H",
+      "Action" : 10
+    },
+    "0xf702-0x260000" : {
+      "Text" : "[1;6D",
+      "Action" : 10
+    },
+    "0x38-0x40000" : {
+      "Text" : "0x7f",
+      "Action" : 11
+    },
+    "0xf72b-0x40000" : {
+      "Text" : "[1;5F",
+      "Action" : 10
+    },
+    "0xf70c-0x20000" : {
+      "Text" : "[20;2~",
+      "Action" : 10
+    },
+    "0xf701-0x260000" : {
+      "Text" : "[1;6B",
+      "Action" : 10
+    },
+    "0x32-0x40000" : {
+      "Text" : "0x00",
+      "Action" : 11
+    },
+    "0xf707-0x20000" : {
+      "Text" : "[1;2S",
+      "Action" : 10
+    },
+    "0xf703-0x240000" : {
+      "Text" : "[1;5C",
+      "Action" : 10
+    },
+    "0xf700-0x260000" : {
+      "Text" : "[1;6A",
+      "Action" : 10
+    },
+    "0xf702-0x240000" : {
+      "Text" : "[1;5D",
+      "Action" : 10
+    },
+    "0xf703-0x300000" : {
+      "Text" : "0x5",
+      "Action" : 11
+    },
+    "0x37-0x40000" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0x3-0x200000" : {
+      "Text" : "0xd",
+      "Action" : 11
+    },
+    "0xf701-0x240000" : {
+      "Text" : "[1;5B",
+      "Action" : 10
+    },
+    "0xf702-0x300000" : {
+      "Text" : "0x1",
+      "Action" : 11
+    },
+    "0xf703-0x220000" : {
+      "Text" : "[1;2C",
+      "Action" : 10
+    },
+    "0xf739-0x0" : {
+      "Text" : "",
+      "Action" : 13
+    },
+    "0xf70b-0x20000" : {
+      "Text" : "[19;2~",
+      "Action" : 10
+    },
+    "0xf728-0x0" : {
+      "Text" : "0x4",
+      "Action" : 11
+    },
+    "0xf706-0x20000" : {
+      "Text" : "[1;2R",
+      "Action" : 10
+    },
+    "0xf700-0x240000" : {
+      "Text" : "[1;5A",
+      "Action" : 10
+    },
+    "0xf702-0x220000" : {
+      "Text" : "[1;2D",
+      "Action" : 10
+    },
+    "0x36-0x40000" : {
+      "Text" : "0x1e",
+      "Action" : 11
+    },
+    "0xf70f-0x20000" : {
+      "Text" : "[24;2~",
+      "Action" : 10
+    },
+    "0xf701-0x220000" : {
+      "Text" : "[1;2B",
+      "Action" : 10
+    },
+    "0xf70a-0x20000" : {
+      "Text" : "[18;2~",
+      "Action" : 10
+    },
+    "0xf729-0x40000" : {
+      "Text" : "[1;5H",
+      "Action" : 10
+    },
+    "0xf72b-0x20000" : {
+      "Text" : "[1;2F",
+      "Action" : 10
+    },
+    "0xf700-0x220000" : {
+      "Text" : "[1;2A",
+      "Action" : 10
+    },
+    "0x30-0x200000" : {
+      "Text" : "0",
+      "Action" : 12
+    },
+    "0xf705-0x20000" : {
+      "Text" : "[1;2Q",
+      "Action" : 10
+    },
+    "0x31-0x200000" : {
+      "Text" : "1",
+      "Action" : 12
+    },
+    "0x33-0x200000" : {
+      "Text" : "3",
+      "Action" : 12
+    },
+    "0x35-0x40000" : {
+      "Text" : "0x1d",
+      "Action" : 11
+    },
+    "0x34-0x200000" : {
+      "Text" : "4",
+      "Action" : 12
+    },
+    "0x32-0x200000" : {
+      "Text" : "2",
+      "Action" : 12
+    },
+    "0x35-0x200000" : {
+      "Text" : "5",
+      "Action" : 12
+    },
+    "0x36-0x200000" : {
+      "Text" : "6",
+      "Action" : 12
+    },
+    "0x37-0x200000" : {
+      "Text" : "7",
+      "Action" : 12
+    },
+    "0x2d-0x40000" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0x38-0x200000" : {
+      "Text" : "8",
+      "Action" : 12
+    },
+    "0x2a-0x200000" : {
+      "Text" : "*",
+      "Action" : 12
+    },
+    "0x39-0x200000" : {
+      "Text" : "9",
+      "Action" : 12
+    },
+    "0x2b-0x200000" : {
+      "Text" : "+",
+      "Action" : 12
+    },
+    "0xf70e-0x20000" : {
+      "Text" : "[23;2~",
+      "Action" : 10
+    },
+    "0x2e-0x200000" : {
+      "Text" : ".",
+      "Action" : 12
+    },
+    "0x2d-0x200000" : {
+      "Text" : "-",
+      "Action" : 12
+    },
+    "0xf709-0x20000" : {
+      "Text" : "[17;2~",
+      "Action" : 10
+    },
+    "0x7f-0x100000" : {
+      "Text" : "0x15",
+      "Action" : 11
+    },
+    "0x2f-0x200000" : {
+      "Text" : "\/",
+      "Action" : 12
+    },
+    "0xf704-0x20000" : {
+      "Text" : "[1;2P",
+      "Action" : 10
+    },
+    "0x34-0x40000" : {
+      "Text" : "0x1c",
+      "Action" : 11
+    },
+    "0xf703-0x280000" : {
+      "Text" : "f",
+      "Action" : 10
+    }
+  },
+  "Window Type" : 0,
+  "Background Image Location" : "",
+  "Blur" : false,
+  "Scrollback Lines" : 1000,
+  "Send Code When Idle" : false,
+  "Close Sessions On End" : true,
+  "Scrollback in Alternate Screen" : false,
+  "Terminal Type" : "xterm-256color",
+  "Flashing Bell" : false,
+  "Status Bar Layout" : {
+    "components" : [
+
+    ],
+    "advanced configuration" : {
+      "font" : ".AppleSystemUIFont 12",
+      "algorithm" : 0
+    }
+  },
+  "Visual Bell" : true,
+  "Silence Bell" : true,
+  "Session Close Undo Timeout" : 5,
+  "Ansi 14 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 0.3333333432674408,
+    "Blue Component" : 1
+  },
+  "Name" : "Default (Old)",
+  "Cursor Text Color" : {
+    "Green Component" : 1,
+    "Red Component" : 1,
+    "Blue Component" : 1
+  },
+  "Shortcut" : "",
+  "Cursor Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Ansi 0 Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0,
+    "Blue Component" : 0
+  },
+  "Ansi 1 Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0
+  },
+  "Horizontal Spacing" : 1,
+  "Ansi 2 Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0,
+    "Blue Component" : 0
+  },
+  "Transparency" : 0,
+  "Right Option Key Sends" : 2,
+  "Guid" : "1295A941-9B4D-4EF5-885D-E181A707C398",
+  "Ansi 7 Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Ansi 8 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 0.3333333432674408,
+    "Blue Component" : 0.3333333432674408
+  },
+  "Ansi 9 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 1,
+    "Blue Component" : 0.3333333432674408
+  },
+  "Custom Directory" : "No",
+  "Ansi 6 Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0,
+    "Blue Component" : 0.73333334922790527
+  }
+},
+{
+  "Working Directory" : "\/Users\/james.lawton",
+  "Prompt Before Closing 2" : false,
+  "Selected Text Color" : {
+    "Green Component" : 0.92142927646636963,
+    "Red Component" : 0.90730977058410645,
+    "Blue Component" : 0.93115901947021484
+  },
+  "Rows" : 25,
+  "Ansi 11 Color" : {
+    "Green Component" : 0.88262283802032471,
+    "Red Component" : 0.99765938520431519,
+    "Blue Component" : 0.42511638998985291
+  },
+  "Use Italic Font" : true,
+  "HotKey Characters" : "",
+  "Foreground Color" : {
+    "Green Component" : 0.92142927646636963,
+    "Red Component" : 0.90730977058410645,
+    "Blue Component" : 0.93115901947021484
+  },
+  "HotKey Window Floats" : true,
+  "Right Option Key Sends" : 2,
+  "Show Status Bar" : false,
+  "Character Encoding" : 4,
+  "Selection Color" : {
+    "Green Component" : 0.41462835669517517,
+    "Red Component" : 0.30659490823745728,
+    "Blue Component" : 0.47096589207649231
+  },
+  "Mouse Reporting" : true,
+  "Ansi 4 Color" : {
+    "Green Component" : 0.7149810791015625,
+    "Red Component" : 0.215079665184021,
+    "Blue Component" : 0.99871528148651123
+  },
+  "Non-ASCII Anti Aliased" : true,
+  "Sync Title" : false,
+  "Disable Window Resizing" : true,
+  "Description" : "Default",
+  "Close Sessions On End" : true,
+  "Jobs to Ignore" : [
+    "rlogin",
+    "ssh",
+    "slogin",
+    "telnet"
+  ],
+  "Scrollback Lines" : 0,
+  "Scrollback in Alternate Screen" : false,
+  "HotKey Window Reopens On Activation" : true,
+  "Status Bar Layout" : {
+    "components" : [
+      {
+        "class" : "iTermStatusBarCPUUtilizationComponent",
+        "configuration" : {
+          "knobs" : {
+            "base: priority" : 5,
+            "shared text color" : {
+              "Red Component" : 0.90000000000000002,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.63,
+              "Alpha Component" : 1,
+              "Green Component" : 0.63
+            },
+            "base: compression resistance" : 1
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      },
+      {
+        "class" : "iTermStatusBarMemoryUtilizationComponent",
+        "configuration" : {
+          "knobs" : {
+            "base: priority" : 5,
+            "shared text color" : {
+              "Red Component" : 0.90000000000000002,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.63,
+              "Alpha Component" : 1,
+              "Green Component" : 0.90000000000000002
+            },
+            "base: compression resistance" : 1
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      },
+      {
+        "class" : "iTermStatusBarNetworkUtilizationComponent",
+        "configuration" : {
+          "knobs" : {
+            "base: priority" : 5,
+            "shared text color" : {
+              "Red Component" : 0.63,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.63,
+              "Alpha Component" : 1,
+              "Green Component" : 0.90000000000000002
+            },
+            "base: compression resistance" : 1
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      },
+      {
+        "class" : "iTermStatusBarBatteryComponent",
+        "configuration" : {
+          "knobs" : {
+            "base: priority" : 5,
+            "shared text color" : {
+              "Red Component" : 0.63,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.90000000000000002,
+              "Alpha Component" : 1,
+              "Green Component" : 0.90000000000000002
+            },
+            "base: compression resistance" : 1
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      },
+      {
+        "class" : "iTermStatusBarWorkingDirectoryComponent",
+        "configuration" : {
+          "knobs" : {
+            "path" : "path",
+            "minwidth" : 0,
+            "base: priority" : 5,
+            "base: compression resistance" : 1,
+            "shared text color" : {
+              "Red Component" : 0.63,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.90000000000000002,
+              "Alpha Component" : 1,
+              "Green Component" : 0.63
+            },
+            "maxwidth" : 1.7976931348623157e+308
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      },
+      {
+        "class" : "iTermStatusBarClockComponent",
+        "configuration" : {
+          "knobs" : {
+            "base: priority" : 5,
+            "shared text color" : {
+              "Red Component" : 0.90000000000000002,
+              "Color Space" : "sRGB",
+              "Blue Component" : 0.90000000000000002,
+              "Alpha Component" : 1,
+              "Green Component" : 0.63
+            },
+            "base: compression resistance" : 1,
+            "format" : "M\/dd h:mm"
+          },
+          "layout advanced configuration dictionary value" : {
+            "font" : ".AppleSystemUIFont 12",
+            "algorithm" : 0
+          }
+        }
+      }
+    ],
+    "advanced configuration" : {
+      "font" : ".AppleSystemUIFont 12",
+      "algorithm" : 0
+    }
+  },
+  "Flashing Bell" : false,
+  "Cursor Guide Color" : {
+    "Red Component" : 0.70213186740875244,
+    "Color Space" : "sRGB",
+    "Blue Component" : 1,
+    "Alpha Component" : 0.25,
+    "Green Component" : 0.9268307089805603
+  },
+  "BM Growl" : true,
+  "Ansi 3 Color" : {
+    "Green Component" : 0.81672251224517822,
+    "Red Component" : 0.99627053737640381,
+    "Blue Component" : 0.19727933406829834
+  },
+  "Use Non-ASCII Font" : false,
+  "Link Color" : {
+    "Red Component" : 0,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0.73423302173614502,
+    "Alpha Component" : 1,
+    "Green Component" : 0.35916060209274292
+  },
+  "Shortcut" : "",
+  "Background Image Location" : "",
+  "Bold Color" : {
+    "Green Component" : 0.91671288013458252,
+    "Red Component" : 0.91654461622238159,
+    "Blue Component" : 0.91648769378662109
+  },
+  "Unlimited Scrollback" : true,
+  "Custom Command" : "No",
+  "HotKey Key Code" : 111,
+  "Title Components" : 4,
+  "Keyboard Map" : {
+    "0xf728-0x80000" : {
+      "Text" : "d",
+      "Action" : 10
+    },
+    "0xf702-0x280000" : {
+      "Text" : "b",
+      "Action" : 10
+    },
+    "0xf70d-0x20000" : {
+      "Text" : "[21;2~",
+      "Action" : 10
+    },
+    "0x7f-0x80000" : {
+      "Text" : "0x1b 0x7f",
+      "Action" : 11
+    },
+    "0xf708-0x20000" : {
+      "Text" : "[15;2~",
+      "Action" : 10
+    },
+    "0x33-0x40000" : {
+      "Text" : "0x1b",
+      "Action" : 11
+    },
+    "0xf703-0x260000" : {
+      "Text" : "[1;6C",
+      "Action" : 10
+    },
+    "0xf729-0x20000" : {
+      "Text" : "[1;2H",
+      "Action" : 10
+    },
+    "0xf702-0x260000" : {
+      "Text" : "[1;6D",
+      "Action" : 10
+    },
+    "0x38-0x40000" : {
+      "Text" : "0x7f",
+      "Action" : 11
+    },
+    "0xf72b-0x40000" : {
+      "Text" : "[1;5F",
+      "Action" : 10
+    },
+    "0xf70c-0x20000" : {
+      "Text" : "[20;2~",
+      "Action" : 10
+    },
+    "0xf701-0x260000" : {
+      "Text" : "[1;6B",
+      "Action" : 10
+    },
+    "0x32-0x40000" : {
+      "Text" : "0x00",
+      "Action" : 11
+    },
+    "0xf707-0x20000" : {
+      "Text" : "[1;2S",
+      "Action" : 10
+    },
+    "0xf703-0x240000" : {
+      "Text" : "[1;5C",
+      "Action" : 10
+    },
+    "0xf700-0x260000" : {
+      "Text" : "[1;6A",
+      "Action" : 10
+    },
+    "0xf702-0x240000" : {
+      "Text" : "[1;5D",
+      "Action" : 10
+    },
+    "0xf703-0x300000" : {
+      "Text" : "0x5",
+      "Action" : 11
+    },
+    "0x37-0x40000" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0x3-0x200000" : {
+      "Text" : "0xd",
+      "Action" : 11
+    },
+    "0xf701-0x240000" : {
+      "Text" : "[1;5B",
+      "Action" : 10
+    },
+    "0xf702-0x300000" : {
+      "Text" : "0x1",
+      "Action" : 11
+    },
+    "0xf703-0x220000" : {
+      "Text" : "[1;2C",
+      "Action" : 10
+    },
+    "0xf739-0x0" : {
+      "Text" : "",
+      "Action" : 13
+    },
+    "0xf70b-0x20000" : {
+      "Text" : "[19;2~",
+      "Action" : 10
+    },
+    "0xf728-0x0" : {
+      "Text" : "0x4",
+      "Action" : 11
+    },
+    "0xf706-0x20000" : {
+      "Text" : "[1;2R",
+      "Action" : 10
+    },
+    "0xf700-0x240000" : {
+      "Text" : "[1;5A",
+      "Action" : 10
+    },
+    "0xf702-0x220000" : {
+      "Text" : "[1;2D",
+      "Action" : 10
+    },
+    "0x36-0x40000" : {
+      "Text" : "0x1e",
+      "Action" : 11
+    },
+    "0xf70f-0x20000" : {
+      "Text" : "[24;2~",
+      "Action" : 10
+    },
+    "0xf701-0x220000" : {
+      "Text" : "[1;2B",
+      "Action" : 10
+    },
+    "0xf70a-0x20000" : {
+      "Text" : "[18;2~",
+      "Action" : 10
+    },
+    "0xf729-0x40000" : {
+      "Text" : "[1;5H",
+      "Action" : 10
+    },
+    "0xf72b-0x20000" : {
+      "Text" : "[1;2F",
+      "Action" : 10
+    },
+    "0xf700-0x220000" : {
+      "Text" : "[1;2A",
+      "Action" : 10
+    },
+    "0x30-0x200000" : {
+      "Text" : "0",
+      "Action" : 12
+    },
+    "0xf705-0x20000" : {
+      "Text" : "[1;2Q",
+      "Action" : 10
+    },
+    "0x31-0x200000" : {
+      "Text" : "1",
+      "Action" : 12
+    },
+    "0x33-0x200000" : {
+      "Text" : "3",
+      "Action" : 12
+    },
+    "0x35-0x40000" : {
+      "Text" : "0x1d",
+      "Action" : 11
+    },
+    "0x34-0x200000" : {
+      "Text" : "4",
+      "Action" : 12
+    },
+    "0x32-0x200000" : {
+      "Text" : "2",
+      "Action" : 12
+    },
+    "0x35-0x200000" : {
+      "Text" : "5",
+      "Action" : 12
+    },
+    "0x36-0x200000" : {
+      "Text" : "6",
+      "Action" : 12
+    },
+    "0x37-0x200000" : {
+      "Text" : "7",
+      "Action" : 12
+    },
+    "0x2d-0x40000" : {
+      "Text" : "0x1f",
+      "Action" : 11
+    },
+    "0x38-0x200000" : {
+      "Text" : "8",
+      "Action" : 12
+    },
+    "0x2a-0x200000" : {
+      "Text" : "*",
+      "Action" : 12
+    },
+    "0x39-0x200000" : {
+      "Text" : "9",
+      "Action" : 12
+    },
+    "0x2b-0x200000" : {
+      "Text" : "+",
+      "Action" : 12
+    },
+    "0xf70e-0x20000" : {
+      "Text" : "[23;2~",
+      "Action" : 10
+    },
+    "0x2e-0x200000" : {
+      "Text" : ".",
+      "Action" : 12
+    },
+    "0x2d-0x200000" : {
+      "Text" : "-",
+      "Action" : 12
+    },
+    "0xf709-0x20000" : {
+      "Text" : "[17;2~",
+      "Action" : 10
+    },
+    "0x7f-0x100000" : {
+      "Text" : "0x15",
+      "Action" : 11
+    },
+    "0x2f-0x200000" : {
+      "Text" : "\/",
+      "Action" : 12
+    },
+    "0xf704-0x20000" : {
+      "Text" : "[1;2P",
+      "Action" : 10
+    },
+    "0x34-0x40000" : {
+      "Text" : "0x1c",
+      "Action" : 11
+    },
+    "0xf703-0x280000" : {
+      "Text" : "f",
+      "Action" : 10
+    }
+  },
+  "Ansi 14 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 0.60292786359786987,
+    "Blue Component" : 0.90182536840438843
+  },
+  "Ansi 2 Color" : {
+    "Green Component" : 0.94388872385025024,
+    "Red Component" : 0.36202818155288696,
+    "Blue Component" : 0.62042194604873657
+  },
+  "Send Code When Idle" : false,
+  "ASCII Anti Aliased" : true,
+  "Tags" : [
+
+  ],
+  "Ansi 9 Color" : {
+    "Green Component" : 0.45310419797897339,
+    "Red Component" : 0.98958194255828857,
+    "Blue Component" : 0.42818409204483032
+  },
+  "Use Bold Font" : true,
+  "Silence Bell" : true,
+  "Ansi 12 Color" : {
+    "Green Component" : 0.81066548824310303,
+    "Red Component" : 0.43880558013916016,
+    "Blue Component" : 0.99898606538772583
+  },
+  "Window Type" : 1,
+  "Use Bright Bold" : true,
+  "Has Hotkey" : true,
+  "HotKey Modifier Activation" : 0,
+  "Cursor Text Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0,
+    "Blue Component" : 0
+  },
+  "HotKey Window Dock Click Action" : 0,
+  "Default Bookmark" : "No",
+  "Cursor Color" : {
+    "Green Component" : 0.91671288013458252,
+    "Red Component" : 0.91654461622238159,
+    "Blue Component" : 0.91648769378662109
+  },
+  "Ansi 1 Color" : {
+    "Green Component" : 0.22098405659198761,
+    "Red Component" : 0.9871404767036438,
+    "Blue Component" : 0.25575384497642517
+  },
+  "Name" : "Hotkey Profile",
+  "Blinking Cursor" : false,
+  "Guid" : "E477A75D-BF55-48FE-85C9-58E3DEAF88B4",
+  "Idle Code" : 0,
+  "Ansi 10 Color" : {
+    "Green Component" : 0.96712285280227661,
+    "Red Component" : 0.67800694704055786,
+    "Blue Component" : 0.74659085273742676
+  },
+  "Ansi 8 Color" : {
+    "Green Component" : 0.69167852401733398,
+    "Red Component" : 0.63061976432800293,
+    "Blue Component" : 0.72321081161499023
+  },
+  "Badge Color" : {
+    "Red Component" : 1,
+    "Color Space" : "sRGB",
+    "Blue Component" : 0,
+    "Alpha Component" : 0.5,
+    "Green Component" : 0.1491314172744751
+  },
+  "Automatically Log" : false,
+  "Ambiguous Double Width" : false,
+  "Blur Radius" : 3.3997838673857861,
+  "Ansi 0 Color" : {
+    "Green Component" : 0.35616019368171692,
+    "Red Component" : 0.26286587119102478,
+    "Blue Component" : 0.40253299474716187
+  },
+  "Session Close Undo Timeout" : 10000,
+  "Blur" : false,
+  "Normal Font" : "Monaco 12",
+  "Vertical Spacing" : 1,
+  "Ansi 7 Color" : {
+    "Green Component" : 0.99997437000274658,
+    "Red Component" : 1,
+    "Blue Component" : 0.99999129772186279
+  },
+  "Space" : -1,
+  "HotKey Window AutoHides" : false,
+  "Command" : "",
+  "Terminal Type" : "xterm-256color",
+  "Horizontal Spacing" : 1,
+  "Option Key Sends" : 0,
+  "HotKey Window Animates" : true,
+  "HotKey Modifier Flags" : 1048576,
+  "Ansi 15 Color" : {
+    "Green Component" : 0.99997437000274658,
+    "Red Component" : 1,
+    "Blue Component" : 0.99999129772186279
+  },
+  "Open Toolbelt" : true,
+  "Ansi 6 Color" : {
+    "Green Component" : 1,
+    "Red Component" : 0.34860008955001831,
+    "Blue Component" : 0.82062870264053345
+  },
+  "Transparency" : 0.045899428934010146,
+  "HotKey Activated By Modifier" : false,
+  "Background Color" : {
+    "Green Component" : 0.14745020866394043,
+    "Red Component" : 0.11278382688760757,
+    "Blue Component" : 0.16608485579490662
+  },
+  "Screen" : -2,
+  "HotKey Characters Ignoring Modifiers" : "",
+  "Bound Hosts" : [
+
+  ],
+  "Non Ascii Font" : "Monaco 12",
+  "Ansi 13 Color" : {
+    "Green Component" : 0.40164706110954285,
+    "Red Component" : 0.9887651801109314,
+    "Blue Component" : 0.60766077041625977
+  },
+  "Columns" : 80,
+  "HotKey Alternate Shortcuts" : [
+
+  ],
+  "Visual Bell" : true,
+  "Custom Directory" : "No",
+  "Ansi 5 Color" : {
+    "Green Component" : 0.13310989737510681,
+    "Red Component" : 0.986469566822052,
+    "Blue Component" : 0.43182668089866638
+  }
+},
+{
+  "Prompt Before Closing 2" : false,
+  "Command" : "\/bin\/bash --login",
+  "Default Bookmark" : "No",
+  "Instant Replay" : true,
+  "Custom Command" : "Browser",
+  "Name" : "Web Browser",
+  "Jobs to Ignore" : [
+    "rlogin",
+    "ssh",
+    "slogin",
+    "telnet"
+  ],
+  "Tags" : [
+
+  ],
+  "Guid" : "B6891D8A-6A43-4120-A8F1-9D2BD95368A0"
+}
+]
+}

From 3cb57999b59a796846d4b0afc4235fe2d0904056 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:07:37 +0000
Subject: [PATCH 821/973] chezmoi: move iTerm2 setup.

---
 {iTerm2 => chezmoi/dot_iterm2}/Profiles.json        |   0
 .../dot_iterm2}/com.googlecode.iterm2.plist         | Bin
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename {iTerm2 => chezmoi/dot_iterm2}/Profiles.json (100%)
 rename {iTerm2 => chezmoi/dot_iterm2}/com.googlecode.iterm2.plist (100%)

diff --git a/iTerm2/Profiles.json b/chezmoi/dot_iterm2/Profiles.json
similarity index 100%
rename from iTerm2/Profiles.json
rename to chezmoi/dot_iterm2/Profiles.json
diff --git a/iTerm2/com.googlecode.iterm2.plist b/chezmoi/dot_iterm2/com.googlecode.iterm2.plist
similarity index 100%
rename from iTerm2/com.googlecode.iterm2.plist
rename to chezmoi/dot_iterm2/com.googlecode.iterm2.plist

From 7c0b1ca883f8cc6662a5f7ef29832464946cc341 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:10:48 +0000
Subject: [PATCH 822/973] Remove some more vestigial setup.

---
 _setupdotfiles.sh | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index f1451e88..e0b8a6ce 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -1,7 +1,6 @@
 #!/bin/bash
 
 DOTFILESDIR=~/dotfiles
-DOTFILES=".iterm2_shell_integration.zsh"
 SAVEDIR=~/.old/_setupdotfiles
 
 function symlinkifne {
@@ -74,11 +73,6 @@ if [ ! -d dotfiles ]; then
 	exit 1
 fi
 
-echo "Symlinking dot files..."
-for dotfile in $DOTFILES; do
-	symlinkifne $dotfile
-done
-
 echo "Symlinking config directories..."
 mkdir -p ~/.config
 ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner

From 73608b9bdf2fdbc972e06154fd5571fc8e4f61ed Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:15:57 +0000
Subject: [PATCH 823/973] chezmoi: add karabiner setup.

---
 chezmoi/private_dot_config/symlink_karabiner | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 chezmoi/private_dot_config/symlink_karabiner

diff --git a/chezmoi/private_dot_config/symlink_karabiner b/chezmoi/private_dot_config/symlink_karabiner
new file mode 100644
index 00000000..3a316891
--- /dev/null
+++ b/chezmoi/private_dot_config/symlink_karabiner
@@ -0,0 +1 @@
+../.local/share/chezmoi/hyper-hacks/karabiner

From 3782c29ad1bd2254609e4148fb9f77f4362e75ea Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:16:51 +0000
Subject: [PATCH 824/973] Setup: remove more obsolete stuff.

---
 _setupdotfiles.sh | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
index e0b8a6ce..38b0ffaa 100755
--- a/_setupdotfiles.sh
+++ b/_setupdotfiles.sh
@@ -73,10 +73,6 @@ if [ ! -d dotfiles ]; then
 	exit 1
 fi
 
-echo "Symlinking config directories..."
-mkdir -p ~/.config
-ln -sf ~/dotfiles/hyper-hacks/karabiner ~/.config/karabiner
-
 echo "Creating Terraform directory..."
 mkdir -p ~/.terraform.d
 

From 228dcad3510bd3cc01bdc2788cbdcc4baea6512f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:18:59 +0000
Subject: [PATCH 825/973] Moved daymd from wcripts repo.

* 15b4447  Add brew path. (1 year, 1 month ago) 
* 8503f86  Strip MS teams event boilerplate. (2 years, 9 months ago) 
* aa70013  Revert to homebrew version of icalBuddy. Fix homebrew paths. (3 years ago) 
* 1bfc2cb  Fix paths for M1 homebrew locations. Use recompiled icalBuddy for M1. (3 years, 5 months ago) 
* a3a66b2  More date fixing. (3 years, 10 months ago) 
* 2ecafd9  More fixes for date handling. (3 years, 10 months ago) 
* a059fe0  Renamed todaymd to daymd, and support an arbitrary date. (3 years, 10 months ago) 
---
 obsidian/daymd | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 scripts        |  2 +-
 2 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100755 obsidian/daymd

diff --git a/obsidian/daymd b/obsidian/daymd
new file mode 100755
index 00000000..444b657d
--- /dev/null
+++ b/obsidian/daymd
@@ -0,0 +1,47 @@
+#!/opt/homebrew/bin/bash
+option="eventsToday"
+brew_prefix="$(/opt/homebrew/bin/brew --prefix)"
+ical_buddy="/opt/homebrew/bin/icalBuddy"
+
+if [ -e ${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed ]; then
+    SED=${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed
+else
+    SED=${brew_prefix}/opt/gnu-sed/libexec/gnubin/sed
+fi
+
+AWK=${brew_prefix}/bin/awk
+
+if [ -n "$1" ]; then
+    option="eventsFrom:$1 to:$1"
+fi
+
+${ical_buddy} -b '' -npn -nc -ps "/ | /" -nrd -eep "notes,attendees,url" ${option} | \
+    ${AWK} -F\| '
+{
+    if (NF>2) {
+        if (index($3, "at") != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9] at /,"",$3);
+        }
+        if (match($3, /[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/) != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/,"00:00-23:59",$3);
+        }
+        gsub(/ /,"",$3);
+        printf("- `%s`  %s %s\n", $3, $1, $2);
+    } else if (NF==1) {
+        printf("- %s\n", $1);
+    } else {
+        if (index($2, "at") != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9] at /,"",$2);
+        }
+        if (match($2, /[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/) != 0) {
+            # This is needed when eventsFrom is used, because it insists on always adding the date.
+            gsub(/[0-9]*[0-9] [A-Z][a-z][a-z] [0-9]*[0-9][0-9][0-9]/,"00:00-23:59",$2);
+        }
+        gsub(/ /,"",$2);
+        printf("- `%s`  %s\n", $2, $1);
+    }
+}
+' | ${SED} 's/\(https:\/\/[^ ]*\)/[zoom](\1)/' | ${SED} 's/[ ]*Microsoft Teams Meeting[ ]*$//'
diff --git a/scripts b/scripts
index be264d70..528a7c98 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit be264d70112441fb7f7a0befacbec9dc8a1e96d7
+Subproject commit 528a7c983c0c4cc89aed181e81b9050c66244aef

From da4bac12c4b64523370c883c93246785dcee098d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:22:15 +0000
Subject: [PATCH 826/973] Point script into chezmoi checkout.

---
 obsidian/daily-note.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py
index 46a52711..177b92b6 100755
--- a/obsidian/daily-note.py
+++ b/obsidian/daily-note.py
@@ -9,8 +9,6 @@
 import subprocess
 import sys
 
-DAYMD_SCRIPT = "dotfiles/scripts/daymd"
-
 
 def main():
     """Generate daily agenda as Markdown."""
@@ -134,7 +132,7 @@ def main():
     # Generate agenda
     file_lines.append("## Agenda (Hyper-D)")
     print("Running daymd...")
-    daymd = os.path.join(home, "dotfiles", "scripts", "daymd")
+    daymd = os.path.join(home, ".local", "share", "chezmoi", "obsidian", "daymd")
     result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE)
     file_lines.append(result.stdout.decode())
 

From 5fe3a9db119b40050a4e92ae636aeafb21c0df85 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:22:58 +0000
Subject: [PATCH 827/973] Remove obsolete path.

---
 chezmoi/private_dot_config/private_fish/conf.d/paths.fish | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
index c12cd38d..dbf68830 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -6,6 +6,5 @@ fish_add_path /usr/local/opt/gnu-sed/libexec/gnubin
 fish_add_path $GOENV_ROOT/bin
 fish_add_path /opt/homebrew/opt/llvm/bin
 fish_add_path $HOME/bin
-fish_add_path $HOME/dotfiles/scripts
 fish_add_path $HOME/.cargo/bin
 fish_add_path .

From 497092f86409fb6b4d6af9ffbb94368161ee9fbd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:25:03 +0000
Subject: [PATCH 828/973] Point crontab at chezmoi dotfiles copy.

---
 chezmoi/crontab | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chezmoi/crontab b/chezmoi/crontab
index 48204a9b..0a2fc50d 100644
--- a/chezmoi/crontab
+++ b/chezmoi/crontab
@@ -1,2 +1,2 @@
-0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/dotfiles/obsidian/daily-note.py >> ~/daily-note.log 2>&1
-0,15,30,45 8,9,10,11,12 * * 1 python3 ~/dotfiles/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1
+0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/.local/chezmoi/obsidian/daily-note.py >> ~/daily-note.log 2>&1
+0,15,30,45 8,9,10,11,12 * * 1 python3 ~/.local/chezmoi/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1

From 357fbf4363bf6684f73f71f594a32d3bdb1e97c8 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:26:31 +0000
Subject: [PATCH 829/973] Point hammerspoon at chezmoi dotfiles copy.

---
 chezmoi/dot_hammerspoon/symlink_init.lua | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua b/chezmoi/dot_hammerspoon/symlink_init.lua
index 3af2fd74..f27057b3 100644
--- a/chezmoi/dot_hammerspoon/symlink_init.lua
+++ b/chezmoi/dot_hammerspoon/symlink_init.lua
@@ -1 +1 @@
-../dotfiles/hyper-hacks/hammerspoon/init.lua
+../.local/chezmoi/hyper-hacks/hammerspoon/init.lua

From 4aedc91e929e8c1a6e758b7bf6101479db84a809 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:27:06 +0000
Subject: [PATCH 830/973] Remove old setup script, finally.

---
 _setupdotfiles.sh | 81 -----------------------------------------------
 1 file changed, 81 deletions(-)
 delete mode 100755 _setupdotfiles.sh

diff --git a/_setupdotfiles.sh b/_setupdotfiles.sh
deleted file mode 100755
index 38b0ffaa..00000000
--- a/_setupdotfiles.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/bash
-
-DOTFILESDIR=~/dotfiles
-SAVEDIR=~/.old/_setupdotfiles
-
-function symlinkifne {
-	target=~/$1
-	echo "Working on: $target"
-	export dotless=`echo $1 | sed s/^\.//`
-	if [ ! -e $DOTFILESDIR/$dotless ]; then
-		# Check if platform-specific version exists.
-		osname=$(uname)
-		if [ "$osname" = "Darwin" ]; then
-			platform="macos"
-		elif [ "$osname" = "Linux" ]; then
-			platform="linux"
-		else
-			echo "ERROR: unsupported OS $osname!"
-			exit 1
-		fi
-		if [ -e $DOTFILESDIR/$dotless-$platform ]; then
-			export dotless="$dotless-$platform"
-		else
-			echo "ERROR: file $DOTFILESDIR/$dotless does not exist, and has no platform-specific variant!"
-			exit 1
-		fi
-	fi
-	if [ -e $target ]; then
-		if [ ! -L $target ]; then
-			# If it's not a symlink, tread carefully.
-			echo "  WARNING: $target already exists!"
-			if [ "${MOVE:-false}" = "true" ]; then
-				echo "  Moving $target to $SAVEDIR/"
-				mv $target $SAVEDIR/
-				dotless=$(echo $1 | sed s/.//)
-				echo "  Symlinking $DOTFILESDIR/$dotless to $1"
-				ln -s $DOTFILESDIR/$dotless $target
-			else
-				echo "  Skipping $1."
-			fi
-		else
-			# Safe to just delete if it is a symlink (or if it doesn't exist).
-			rm -f $target
-			echo "  Symlinking $DOTFILESDIR/$dotless to $target"
-			ln -s $DOTFILESDIR/$dotless $target
-		fi
-	else
-		echo "  Symlinking $DOTFILESDIR/$dotless to $target"
-		ln -s $DOTFILESDIR/$dotless $target
-	fi
-}
-
-echo "This script must be run from the dotfiles directory"
-echo "Setting up..."
-
-pushd ~
-
-if [ "${MOVE:-false}" = "true" -a -d $SAVEDIR ]; then
-	echo "$SAVEDIR already exists! Please clean up and try again."
-	echo "This is used to save old versions of your configuration files."
-	exit 1
-fi
-
-mkdir -p $SAVEDIR
-
-if [ ! -d dotfiles ]; then
-	echo "The dotfiles directory does not exist in your home directory!"
-	echo "You need to do:"
-	echo "# cd ~"
-	echo "# git clone --recurse-submodules https://github.com/jimlawton/dotfiles"
-	echo "# cd dotfiles"
-	echo "# ./_setupdotfiles.sh"
-	exit 1
-fi
-
-echo "Creating Terraform directory..."
-mkdir -p ~/.terraform.d
-
-popd
-
-echo "Done!"

From e7a575ee479ff0ce0dcb1515bec1500e4e5afeed Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 4 Nov 2025 19:28:26 +0000
Subject: [PATCH 831/973] Remove scripts submodule.

---
 .gitmodules | 3 ---
 scripts     | 1 -
 2 files changed, 4 deletions(-)
 delete mode 160000 scripts

diff --git a/.gitmodules b/.gitmodules
index 07e2eca7..93632c66 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "scripts"]
-	path = scripts
-	url = https://github.com/jimlawton/scripts
 [submodule "hyper-hacks"]
 	path = hyper-hacks
 	url = https://github.com/jimlawton/hyper-hacks.git
diff --git a/scripts b/scripts
deleted file mode 160000
index 528a7c98..00000000
--- a/scripts
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 528a7c983c0c4cc89aed181e81b9050c66244aef

From 15b149d5681f2041ce229e19be087f579bd0fad0 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:02:30 +0000
Subject: [PATCH 832/973] chezmoi: fix links.

---
 chezmoi/dot_hammerspoon/symlink_init.lua     | 2 +-
 chezmoi/private_dot_config/symlink_karabiner | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua b/chezmoi/dot_hammerspoon/symlink_init.lua
index f27057b3..5c0a14de 100644
--- a/chezmoi/dot_hammerspoon/symlink_init.lua
+++ b/chezmoi/dot_hammerspoon/symlink_init.lua
@@ -1 +1 @@
-../.local/chezmoi/hyper-hacks/hammerspoon/init.lua
+$HOME/.local/share/chezmoi/hyper-hacks/hammerspoon/init.lua
diff --git a/chezmoi/private_dot_config/symlink_karabiner b/chezmoi/private_dot_config/symlink_karabiner
index 3a316891..8c483585 100644
--- a/chezmoi/private_dot_config/symlink_karabiner
+++ b/chezmoi/private_dot_config/symlink_karabiner
@@ -1 +1 @@
-../.local/share/chezmoi/hyper-hacks/karabiner
+$HOME/.local/share/chezmoi/hyper-hacks/karabiner

From 1d5cc1889f72c5233d3f0f162e7b291cfee455fb Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:26:31 +0000
Subject: [PATCH 833/973] chezmoi: change Hammerspoon/Karabiner synlinks to
 templated symlinks.

---
 chezmoi/dot_hammerspoon/symlink_init.lua          | 1 -
 chezmoi/dot_hammerspoon/symlink_init.lua.tmpl     | 1 +
 chezmoi/private_dot_config/symlink_karabiner      | 1 -
 chezmoi/private_dot_config/symlink_karabiner.tmpl | 1 +
 4 files changed, 2 insertions(+), 2 deletions(-)
 delete mode 100644 chezmoi/dot_hammerspoon/symlink_init.lua
 create mode 100644 chezmoi/dot_hammerspoon/symlink_init.lua.tmpl
 delete mode 100644 chezmoi/private_dot_config/symlink_karabiner
 create mode 100644 chezmoi/private_dot_config/symlink_karabiner.tmpl

diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua b/chezmoi/dot_hammerspoon/symlink_init.lua
deleted file mode 100644
index 5c0a14de..00000000
--- a/chezmoi/dot_hammerspoon/symlink_init.lua
+++ /dev/null
@@ -1 +0,0 @@
-$HOME/.local/share/chezmoi/hyper-hacks/hammerspoon/init.lua
diff --git a/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl b/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl
new file mode 100644
index 00000000..f92eb001
--- /dev/null
+++ b/chezmoi/dot_hammerspoon/symlink_init.lua.tmpl
@@ -0,0 +1 @@
+{{- .chezmoi.homeDir -}}/.local/share/chezmoi/hyper-hacks/hammerspoon/init.lua
diff --git a/chezmoi/private_dot_config/symlink_karabiner b/chezmoi/private_dot_config/symlink_karabiner
deleted file mode 100644
index 8c483585..00000000
--- a/chezmoi/private_dot_config/symlink_karabiner
+++ /dev/null
@@ -1 +0,0 @@
-$HOME/.local/share/chezmoi/hyper-hacks/karabiner
diff --git a/chezmoi/private_dot_config/symlink_karabiner.tmpl b/chezmoi/private_dot_config/symlink_karabiner.tmpl
new file mode 100644
index 00000000..b1319a61
--- /dev/null
+++ b/chezmoi/private_dot_config/symlink_karabiner.tmpl
@@ -0,0 +1 @@
+{{- .chezmoi.homeDir -}}/.local/share/chezmoi/hyper-hacks/karabiner

From 04012cba405e7e1aa73b4f582133f95314c36d2d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:32:24 +0000
Subject: [PATCH 834/973] chezmoi: update iTerm2 profiles.

---
 chezmoi/dot_iterm2/Profiles.json | 136 +++++++++++++++----------------
 1 file changed, 68 insertions(+), 68 deletions(-)

diff --git a/chezmoi/dot_iterm2/Profiles.json b/chezmoi/dot_iterm2/Profiles.json
index 4e130d57..7e7a958b 100644
--- a/chezmoi/dot_iterm2/Profiles.json
+++ b/chezmoi/dot_iterm2/Profiles.json
@@ -610,7 +610,13 @@
   }
 },
 {
-  "Right Option Key Sends" : 2,
+  "Ansi 5 Color" : {
+    "Red Component" : 0.97254902124404907,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.97254902124404907,
+    "Alpha Component" : 1,
+    "Green Component" : 0
+  },
   "Tags" : [
 
   ],
@@ -621,13 +627,7 @@
     "Alpha Component" : 1,
     "Green Component" : 0.26095205545425415
   },
-  "Ansi 6 Color" : {
-    "Red Component" : 0.003921568859368561,
-    "Color Space" : "Calibrated",
-    "Blue Component" : 0.92941176891326904,
-    "Alpha Component" : 1,
-    "Green Component" : 0.7137255072593689
-  },
+  "Has Hotkey" : false,
   "Draw Powerline Glyphs" : true,
   "Bold Color" : {
     "Red Component" : 1,
@@ -636,14 +636,26 @@
     "Alpha Component" : 1,
     "Green Component" : 1
   },
-  "Use Non-ASCII Font" : false,
-  "Normal Font" : "MesloLGS-NF-Regular 14",
-  "Ansi 2 Color" : {
-    "Red Component" : 0.59543848037719727,
+  "Ansi 7 Color" : {
+    "Red Component" : 1,
     "Color Space" : "Calibrated",
-    "Blue Component" : 0.13826943933963776,
+    "Blue Component" : 0.99999129772186279,
     "Alpha Component" : 1,
-    "Green Component" : 0.88415688276290894
+    "Green Component" : 0.99997437000274658
+  },
+  "Ansi 8 Color" : {
+    "Red Component" : 0.51280313730239868,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.51279646158218384,
+    "Alpha Component" : 1,
+    "Green Component" : 0.51278775930404663
+  },
+  "Ansi 9 Color" : {
+    "Red Component" : 0.9644390344619751,
+    "Color Space" : "Calibrated",
+    "Blue Component" : 0.61410599946975708,
+    "Alpha Component" : 1,
+    "Green Component" : 0.40106064081192017
   },
   "Rows" : 40,
   "Default Bookmark" : "No",
@@ -708,9 +720,9 @@
   "Sync Title" : false,
   "Prompt Before Closing 2" : false,
   "BM Growl" : true,
+  "Mouse Reporting" : true,
   "Command" : "",
   "Description" : "Default",
-  "Mouse Reporting" : true,
   "Screen" : -1,
   "Selection Color" : {
     "Red Component" : 1,
@@ -1059,44 +1071,32 @@
     "Green Component" : 0.070588238537311554
   },
   "Guid" : "3B600FAB-A938-4AD0-944C-107527693D47",
-  "Custom Directory" : "No",
-  "Ansi 1 Color" : {
-    "Red Component" : 0.98061299324035645,
-    "Color Space" : "Calibrated",
-    "Blue Component" : 0.20415860414505005,
-    "Alpha Component" : 1,
-    "Green Component" : 0.16063156723976135
-  },
   "Horizontal Spacing" : 1,
-  "Ansi 5 Color" : {
-    "Red Component" : 0.97254902124404907,
-    "Color Space" : "Calibrated",
-    "Blue Component" : 0.97254902124404907,
-    "Alpha Component" : 1,
-    "Green Component" : 0
-  },
-  "Has Hotkey" : false,
-  "Ansi 7 Color" : {
-    "Red Component" : 1,
+  "Ansi 2 Color" : {
+    "Red Component" : 0.59543848037719727,
     "Color Space" : "Calibrated",
-    "Blue Component" : 0.99999129772186279,
+    "Blue Component" : 0.13826943933963776,
     "Alpha Component" : 1,
-    "Green Component" : 0.99997437000274658
+    "Green Component" : 0.88415688276290894
   },
-  "Ansi 8 Color" : {
-    "Red Component" : 0.51280313730239868,
+  "Ansi 1 Color" : {
+    "Red Component" : 0.98061299324035645,
     "Color Space" : "Calibrated",
-    "Blue Component" : 0.51279646158218384,
+    "Blue Component" : 0.20415860414505005,
     "Alpha Component" : 1,
-    "Green Component" : 0.51278775930404663
+    "Green Component" : 0.16063156723976135
   },
-  "Ansi 9 Color" : {
-    "Red Component" : 0.9644390344619751,
+  "Right Option Key Sends" : 2,
+  "Use Non-ASCII Font" : false,
+  "Ansi 6 Color" : {
+    "Red Component" : 0.003921568859368561,
     "Color Space" : "Calibrated",
-    "Blue Component" : 0.61410599946975708,
+    "Blue Component" : 0.92941176891326904,
     "Alpha Component" : 1,
-    "Green Component" : 0.40106064081192017
+    "Green Component" : 0.7137255072593689
   },
+  "Normal Font" : "MesloLGS-NF-Regular 14",
+  "Transparency" : 0,
   "Link Color" : {
     "Red Component" : 0.89783346652984619,
     "Color Space" : "Calibrated",
@@ -1104,13 +1104,13 @@
     "Alpha Component" : 1,
     "Green Component" : 0.24597522616386414
   },
-  "Transparency" : 0
+  "Custom Directory" : "No"
 },
 {
-  "Ansi 3 Color" : {
+  "Ansi 7 Color" : {
     "Green Component" : 0.73333334922790527,
     "Red Component" : 0.73333334922790527,
-    "Blue Component" : 0
+    "Blue Component" : 0.73333334922790527
   },
   "Tags" : [
 
@@ -1120,11 +1120,15 @@
     "Red Component" : 0.3333333432674408,
     "Blue Component" : 1
   },
-  "Normal Font" : "Monaco 12",
-  "Ansi 4 Color" : {
-    "Green Component" : 0,
-    "Red Component" : 0,
-    "Blue Component" : 0.73333334922790527
+  "Ansi 8 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 0.3333333432674408,
+    "Blue Component" : 0.3333333432674408
+  },
+  "Ansi 9 Color" : {
+    "Green Component" : 0.3333333432674408,
+    "Red Component" : 1,
+    "Blue Component" : 0.3333333432674408
   },
   "Bold Color" : {
     "Green Component" : 1,
@@ -1508,29 +1512,25 @@
     "Blue Component" : 0
   },
   "Horizontal Spacing" : 1,
+  "Ansi 3 Color" : {
+    "Green Component" : 0.73333334922790527,
+    "Red Component" : 0.73333334922790527,
+    "Blue Component" : 0
+  },
+  "Ansi 4 Color" : {
+    "Green Component" : 0,
+    "Red Component" : 0,
+    "Blue Component" : 0.73333334922790527
+  },
+  "Right Option Key Sends" : 2,
   "Ansi 2 Color" : {
     "Green Component" : 0.73333334922790527,
     "Red Component" : 0,
     "Blue Component" : 0
   },
   "Transparency" : 0,
-  "Right Option Key Sends" : 2,
+  "Normal Font" : "Monaco 12",
   "Guid" : "1295A941-9B4D-4EF5-885D-E181A707C398",
-  "Ansi 7 Color" : {
-    "Green Component" : 0.73333334922790527,
-    "Red Component" : 0.73333334922790527,
-    "Blue Component" : 0.73333334922790527
-  },
-  "Ansi 8 Color" : {
-    "Green Component" : 0.3333333432674408,
-    "Red Component" : 0.3333333432674408,
-    "Blue Component" : 0.3333333432674408
-  },
-  "Ansi 9 Color" : {
-    "Green Component" : 0.3333333432674408,
-    "Red Component" : 1,
-    "Blue Component" : 0.3333333432674408
-  },
   "Custom Directory" : "No",
   "Ansi 6 Color" : {
     "Green Component" : 0.73333334922790527,
@@ -1675,9 +1675,9 @@
         "configuration" : {
           "knobs" : {
             "path" : "path",
-            "minwidth" : 0,
             "base: priority" : 5,
             "base: compression resistance" : 1,
+            "minwidth" : 0,
             "shared text color" : {
               "Red Component" : 0.63,
               "Color Space" : "sRGB",

From eb9fa0576d00c76e59bb20514072d2481cbd9d62 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:39:52 +0000
Subject: [PATCH 835/973] chezmoi: add iTerm2 fish shell integration.

---
 .../dot_iterm2/.iterm2_shell_integration.fish | 127 ++++++++++++++++++
 1 file changed, 127 insertions(+)
 create mode 100755 chezmoi/dot_iterm2/.iterm2_shell_integration.fish

diff --git a/chezmoi/dot_iterm2/.iterm2_shell_integration.fish b/chezmoi/dot_iterm2/.iterm2_shell_integration.fish
new file mode 100755
index 00000000..e2168a9f
--- /dev/null
+++ b/chezmoi/dot_iterm2/.iterm2_shell_integration.fish
@@ -0,0 +1,127 @@
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+if begin; status --is-interactive; and not functions -q -- iterm2_status; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != screen; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != screen-256color; and test "$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != tmux-256color; and test "$TERM" != dumb; and test "$TERM" != linux; end
+  function iterm2_status
+    printf "\033]133;D;%s\007" $argv
+  end
+
+  # Mark start of prompt
+  function iterm2_prompt_mark
+    printf "\033]133;A\007"
+  end
+
+  # Mark end of prompt
+  function iterm2_prompt_end
+    printf "\033]133;B\007"
+  end
+
+  # Tell terminal to create a mark at this location
+  function iterm2_preexec --on-event fish_preexec
+    # For other shells we would output status here but we can't do that in fish.
+    if test "$TERM_PROGRAM" = "iTerm.app"
+      printf "\033]133;C;\r\007"
+    else
+      printf "\033]133;C;\007"
+    end
+  end
+
+  # Usage: iterm2_set_user_var key value
+  # These variables show up in badges (and later in other places). For example
+  # iterm2_set_user_var currentDirectory "$PWD"
+  # Gives a variable accessible in a badge by \(user.currentDirectory)
+  # Calls to this go in iterm2_print_user_vars.
+  function iterm2_set_user_var
+    printf "\033]1337;SetUserVar=%s=%s\007" $argv[1] (printf "%s" $argv[2] | base64 | tr -d "\n")
+  end
+
+  function iterm2_write_remotehost_currentdir_uservars
+    if not set -q -g iterm2_hostname
+      printf "\033]1337;RemoteHost=%s@%s\007\033]1337;CurrentDir=%s\007" $USER (hostname -f 2>/dev/null) $PWD
+    else
+      printf "\033]1337;RemoteHost=%s@%s\007\033]1337;CurrentDir=%s\007" $USER $iterm2_hostname $PWD
+    end
+
+    # Users can define a function called iterm2_print_user_vars.
+    # It should call iterm2_set_user_var and produce no other output.
+    if functions -q -- iterm2_print_user_vars
+      iterm2_print_user_vars
+    end
+  end
+
+  functions -c fish_prompt iterm2_fish_prompt
+
+  function iterm2_common_prompt
+    set -l last_status $status
+
+    iterm2_status $last_status
+    iterm2_write_remotehost_currentdir_uservars
+    if not functions iterm2_fish_prompt | string match -q "*iterm2_prompt_mark*"
+      iterm2_prompt_mark
+    end
+    return $last_status
+  end
+
+  function iterm2_check_function -d "Check if function is defined and non-empty"
+    test (functions $argv[1] | grep -cvE '^ *(#|function |end$|$)') != 0
+  end
+
+  if iterm2_check_function fish_mode_prompt
+    # Only override fish_mode_prompt if it is non-empty. This works around a problem created by a
+    # workaround in starship: https://github.com/starship/starship/issues/1283
+    functions -c fish_mode_prompt iterm2_fish_mode_prompt
+    function fish_mode_prompt --description 'Write out the mode prompt; do not replace this. Instead, change fish_mode_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_mode_prompt instead.'
+      iterm2_common_prompt
+      iterm2_fish_mode_prompt
+    end
+
+    function fish_prompt --description 'Write out the prompt; do not replace this. Instead, change fish_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_prompt instead.'
+      # Remove the trailing newline from the original prompt. This is done
+      # using the string builtin from fish, but to make sure any escape codes
+      # are correctly interpreted, use %b for printf.
+      printf "%b" (string join "\n" -- (iterm2_fish_prompt))
+
+      iterm2_prompt_end
+    end
+  else
+    # fish_mode_prompt is empty or unset.
+    function fish_prompt --description 'Write out the mode prompt; do not replace this. Instead, change fish_mode_prompt before sourcing .iterm2_shell_integration.fish, or modify iterm2_fish_mode_prompt instead.'
+      iterm2_common_prompt
+
+      # Remove the trailing newline from the original prompt. This is done
+      # using the string builtin from fish, but to make sure any escape codes
+      # are correctly interpreted, use %b for printf.
+      printf "%b" (string join "\n" -- (iterm2_fish_prompt))
+
+      iterm2_prompt_end
+    end
+  end
+
+  # If hostname -f is slow for you, set iterm2_hostname before sourcing this script
+  if not set -q -g iterm2_hostname
+    # hostname -f is fast on macOS so don't cache it. This lets us get an updated version when
+    # it changes, such as if you attach to a VPN.
+    if test (uname) != Darwin
+      set -g iterm2_hostname (hostname -f 2>/dev/null)
+      # some flavors of BSD (i.e. NetBSD and OpenBSD) don't have the -f option
+      if test $status -ne 0
+        set -g iterm2_hostname (hostname)
+      end
+    end
+  end
+
+  iterm2_write_remotehost_currentdir_uservars
+  printf "\033]1337;ShellIntegrationVersion=19;shell=fish\007"
+end
+alias imgcat=~/.iterm2/imgcat;alias imgls=~/.iterm2/imgls;alias it2api=~/.iterm2/it2api;alias it2attention=~/.iterm2/it2attention;alias it2check=~/.iterm2/it2check;alias it2copy=~/.iterm2/it2copy;alias it2dl=~/.iterm2/it2dl;alias it2getvar=~/.iterm2/it2getvar;alias it2git=~/.iterm2/it2git;alias it2setcolor=~/.iterm2/it2setcolor;alias it2setkeylabel=~/.iterm2/it2setkeylabel;alias it2tip=~/.iterm2/it2tip;alias it2ul=~/.iterm2/it2ul;alias it2universion=~/.iterm2/it2universion;alias it2profile=~/.iterm2/it2profile;alias it2cat=~/.iterm2/it2cat

From 8e24d07a5d66117f53943d3d8d16ac98642d8640 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:44:09 +0000
Subject: [PATCH 836/973] chezmoi: rename iTerm2 file.

---
 ...term2_shell_integration.fish => iterm2_shell_integration.fish} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename chezmoi/dot_iterm2/{.iterm2_shell_integration.fish => iterm2_shell_integration.fish} (100%)

diff --git a/chezmoi/dot_iterm2/.iterm2_shell_integration.fish b/chezmoi/dot_iterm2/iterm2_shell_integration.fish
similarity index 100%
rename from chezmoi/dot_iterm2/.iterm2_shell_integration.fish
rename to chezmoi/dot_iterm2/iterm2_shell_integration.fish

From 6537a89ec2e4e5f96dd32130213b0a32b74a3623 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:44:40 +0000
Subject: [PATCH 837/973] chezmoi: fish: use in-place iTerm2 integration.

---
 chezmoi/private_dot_config/private_fish/config.fish | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 261535cf..889c4a51 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -32,3 +32,6 @@ if status is-interactive
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
 end
+
+test -e {$HOME}/.iterm2/iterm2_shell_integration.fish ; and source {$HOME}/.iterm2/iterm2_shell_integration.fish
+

From a2f4d2205ead458807b5995b8db31a42ecc17277 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 12:51:27 +0000
Subject: [PATCH 838/973] chezmoi: fix crontab paths.

---
 chezmoi/crontab | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chezmoi/crontab b/chezmoi/crontab
index 0a2fc50d..8e0385ce 100644
--- a/chezmoi/crontab
+++ b/chezmoi/crontab
@@ -1,2 +1,2 @@
-0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/.local/chezmoi/obsidian/daily-note.py >> ~/daily-note.log 2>&1
-0,15,30,45 8,9,10,11,12 * * 1 python3 ~/.local/chezmoi/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1
+0,15,30,45 8,9,10,11,12 * * 1,2,3,4,5 python3 ~/.local/share/chezmoi/obsidian/daily-note.py >> ~/daily-note.log 2>&1
+0,15,30,45 8,9,10,11,12 * * 1 python3 ~/.local/share/chezmoi/obsidian/weekly-report.py >> ~/weekly-report.log 2>&1

From 8b81f00aad8cfcab259d01c71289dc45048510f9 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 13:11:29 +0000
Subject: [PATCH 839/973] starship: fix git_status ahead/behind.

---
 chezmoi/private_dot_config/starship.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index 12bcdc10..dbf03525 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -54,7 +54,7 @@ style = "fg:#1C3A5E bg:#4dff4d"
 
 [git_status]
 disabled = false
-format = '[$all_status]($style)'
+format = '[$all_status$ahead_behind]($style)'
 style = "fg:#1C3A5E bg:#f9e71f"
 ahead = '⇡${count}'
 behind = '⇣${count}'

From dc2517e9266115e0b2f138602c898323f44ce30b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 16:04:34 +0000
Subject: [PATCH 840/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index f8ee8b2c..376e2de7 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit f8ee8b2cfef7c98a3d3574c4c803f26e7c7ba5be
+Subproject commit 376e2de73f5285f1e837ec777605e3b903816bdf

From 50f6a8e389ac8a1360251ea3e64e91dac61af5ef Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 16:04:54 +0000
Subject: [PATCH 841/973] starship: fix git status issues.

---
 chezmoi/private_dot_config/starship.toml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index dbf03525..e21a20a4 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -59,6 +59,7 @@ style = "fg:#1C3A5E bg:#f9e71f"
 ahead = '⇡${count}'
 behind = '⇣${count}'
 diverged = '[⇕⇡${ahead_count}⇣${behind_count}](fg:#1C3A5E bg:#f9e71f)'
+use_git_executable = true
 
 [git_metrics]
 disabled = true

From 90d93627897be68b7b9c95b7dbf524d13c3a1832 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 16:14:36 +0000
Subject: [PATCH 842/973] chezmoi: remove obsolete file.

---
 chezmoi/.chezmoidata/identity.yaml | 5 -----
 1 file changed, 5 deletions(-)
 delete mode 100644 chezmoi/.chezmoidata/identity.yaml

diff --git a/chezmoi/.chezmoidata/identity.yaml b/chezmoi/.chezmoidata/identity.yaml
deleted file mode 100644
index a48293fa..00000000
--- a/chezmoi/.chezmoidata/identity.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-git:
-    work_name: Jim Lawton
-    work_email: james.lawton@forcepoint.com
-    personal_name: Jim Lawton
-    personal_email: jimlawton@gmail.com

From 2ee90fdc1fb1d8c997fc57e1c576cea8c4977741 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 16:17:39 +0000
Subject: [PATCH 843/973] update readme.

---
 README.md | 24 ------------------------
 1 file changed, 24 deletions(-)

diff --git a/README.md b/README.md
index b4b2ec18..a57ad388 100644
--- a/README.md
+++ b/README.md
@@ -30,30 +30,6 @@ brew install chezmoi
 ### Clone the repo and apply the dotfiles
 ```
 chezmoi init https://github.com/jimlawton/dotfiles
-```
-
-> [!IMPORTANT]
-> Update .chezmoidata/identity.yaml with your personal details
 
-```
 chezmoi apply
 ```
-
-## Acquiring This Repo
-
-This project contains submodules. It is suggested that you clone this into your
-home directory, as follows.
-
-```bash
-> cd ~
-> git clone --recurse-submodules https://github.com/jimlawton/dotfiles
-```
-
-## Setup
-
-There is a set up script that establishes the symlinks in your home directory.
-If necessary, you can run this:
-
-```bash
-> ~/dotfiles/_setupdotfiles.sh
-```

From 83820751a125e87469e54d7605e7a97f676cfbf6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 5 Nov 2025 16:34:53 +0000
Subject: [PATCH 844/973] Update readme.

---
 README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/README.md b/README.md
index a57ad388..22768607 100644
--- a/README.md
+++ b/README.md
@@ -33,3 +33,61 @@ chezmoi init https://github.com/jimlawton/dotfiles
 
 chezmoi apply
 ```
+
+## Encrypted Files
+
+Some files in this repo are encrypted. This is a good [page](https://www.chezmoi.io/user-guide/frequently-asked-questions/encryption/) that describes managing encrypted files in `chezmoi`.
+
+The general sequence is:
+
+- Use `chezmoi age-keygen` to generate a public/private key pair.
+  - The public key is a long string sth like `"age193wd0hfuhtjfsunlq3c83s8m93pde442dkcn7lmj3lspeekm9g7stwutrl"`. This is NOT a secret.
+  - The private key is a long string sth like `"AGE-SECRET-KEY-"`. This IS a secret.
+- Use `chezmoi age encrypt` to produce an encrypted private key file, using a passphrase. The encrypted key file is NOT a secret. However, the passphrase IS a secret.
+- The FAQ says do this: `chezmoi age-keygen | chezmoi age encrypt --passphrase --output=key.txt.age`, however that never prints the  public key, which you need, so do it in 2 steps:
+  - `chezmoi age-keygen -o identity.txt`
+  - `cat identity.txt | chezmoi age encrypt --passphrase --output=key.txt.age`
+- Add `key.txt.age` to `.chezmoiignore`  so chezmoi doesn't try to manage it.
+- Don't leave `identity.txt` lying around, don't check it into Git and don't let chezmoi get its hands on it. Add it to `.gitignore` and `.chezmoiignore` for safety.
+- Next, in your `.chezmoi.toml.tmpl` you'll need:
+
+```
+{{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}
+
+encryption = "age"
+[age]
+    identity = "~/.config/chezmoi/key.txt"
+    recipient = "
Date: Thu, 6 Nov 2025 10:35:05 +0000
Subject: [PATCH 845/973] Initialise zoxide.

---
 chezmoi/private_dot_config/private_fish/config.fish | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 889c4a51..4b99d248 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -31,7 +31,9 @@ if status is-interactive
     bind -M insert up _atuin_bind_up
     bind -M insert \eOA _atuin_bind_up
     bind -M insert \e\[A _atuin_bind_up
+
+    # Zoxide setup.
+    zoxide init fish | source
 end
 
 test -e {$HOME}/.iterm2/iterm2_shell_integration.fish ; and source {$HOME}/.iterm2/iterm2_shell_integration.fish
-

From 5ff5d3f15ce481d02aedff7a3f18a1dc7cdd69dd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 12:04:45 +0000
Subject: [PATCH 846/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index 376e2de7..2a0b342b 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit 376e2de73f5285f1e837ec777605e3b903816bdf
+Subproject commit 2a0b342be7a57de6695498e4c12a3c3de1b181d8

From c62ef798c1217bca71ebe277c8f5ff56c1f07d10 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 15:05:51 +0000
Subject: [PATCH 847/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index 2a0b342b..c631bc3a 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit 2a0b342be7a57de6695498e4c12a3c3de1b181d8
+Subproject commit c631bc3a629bda088d2ade137f677a7638f1829a

From 88bc1690af010c1110c3b3eed754ad1d8acae0a2 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 16:00:24 +0000
Subject: [PATCH 848/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index c631bc3a..e11eb7cb 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit c631bc3a629bda088d2ade137f677a7638f1829a
+Subproject commit e11eb7cbfb33253a752d77b2791563d937775bd3

From f34f2dbea12b839a9e9a64f694a84bce03a9177d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 16:08:35 +0000
Subject: [PATCH 849/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index e11eb7cb..45a29587 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit e11eb7cbfb33253a752d77b2791563d937775bd3
+Subproject commit 45a295876b35dc9d8cb77bd69922d38009ff72bf

From 7996072ecf3c0ade6f98b5a5e44982741e9ee137 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 16:15:51 +0000
Subject: [PATCH 850/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index 45a29587..d4f41176 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit 45a295876b35dc9d8cb77bd69922d38009ff72bf
+Subproject commit d4f41176526330bc0e0ab10077033a55e0f1cacb

From 771602e96daa0ff0c664a1d6600734d927f71f37 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 6 Nov 2025 16:23:58 +0000
Subject: [PATCH 851/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index d4f41176..2e97cf59 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit d4f41176526330bc0e0ab10077033a55e0f1cacb
+Subproject commit 2e97cf592a888d84bedfdf3d4d7f471810f68ac0

From be716e1284b7cb712560d2b2e6c72a51792164b4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 7 Nov 2025 17:10:24 +0000
Subject: [PATCH 852/973] Remove time from right prompt.

---
 chezmoi/private_dot_config/starship.toml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/private_dot_config/starship.toml b/chezmoi/private_dot_config/starship.toml
index e21a20a4..5b4654ac 100644
--- a/chezmoi/private_dot_config/starship.toml
+++ b/chezmoi/private_dot_config/starship.toml
@@ -18,7 +18,6 @@ $git_metrics\
 right_format = """\
 $character\
 $cmd_duration\
-$time\
 """
 
 [line_break]

From 75f943c16ddedb435d4452d6c81b7906c0dcc02a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 7 Nov 2025 17:10:48 +0000
Subject: [PATCH 853/973] Fix starship transient prompt.

---
 chezmoi/private_dot_config/private_fish/config.fish | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 4b99d248..0a9d02f5 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -9,12 +9,9 @@ if status is-interactive
     # Don't be so friendly.
     set fish_greeting
 
-    # Starship prompt setup.
-    function starship_transient_prompt_func
-        starship module character
-    end
+    # Starship transient prompt setup.
     function starship_transient_rprompt_func
-        starship module time
+        starship module character
     end
     starship init fish | source
     enable_transience

From 0229e784fd0efe40236420455f7203655e2f095c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 7 Nov 2025 17:14:44 +0000
Subject: [PATCH 854/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index 2e97cf59..b2d71bc8 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit 2e97cf592a888d84bedfdf3d4d7f471810f68ac0
+Subproject commit b2d71bc840a29143cb8159f3c7ba7c9718505092

From 014832cb26c7b9297ec9a8ce24668087321dcd0b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 7 Nov 2025 17:28:39 +0000
Subject: [PATCH 855/973] Update hyper-hacks module.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index b2d71bc8..220ee5d8 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit b2d71bc840a29143cb8159f3c7ba7c9718505092
+Subproject commit 220ee5d8d05d4c414533953bdc18dc6bf7ca89c5

From 0221f06945c415e76c412a085130f02cd890e2ef Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 15:13:17 +0000
Subject: [PATCH 856/973] Remove mise setup.

---
 chezmoi/private_dot_config/mise/config.toml | 19 -------------------
 chezmoi/run_onchange_mise-install.sh.tmpl   |  8 --------
 2 files changed, 27 deletions(-)
 delete mode 100644 chezmoi/private_dot_config/mise/config.toml
 delete mode 100644 chezmoi/run_onchange_mise-install.sh.tmpl

diff --git a/chezmoi/private_dot_config/mise/config.toml b/chezmoi/private_dot_config/mise/config.toml
deleted file mode 100644
index 1b033c42..00000000
--- a/chezmoi/private_dot_config/mise/config.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[tools]
-rust = {version = "latest", components = "rustfmt,clippy,llvm-tools-preview"}
-cargo = "latest"
-"cargo:cargo-audit" = "latest"
-"cargo:cargo-workspaces" = "latest"
-"cargo:cargo-license" = "latest"
-"cargo:cargo-fuzz" = "latest"
-"cargo:cargo-semver" = "latest"
-"cargo:cargo-llvm-cov" = "latest"
-python = "3.13"
-# pipx = "latest"
-# uv = "latest"
-"pipx:pre-commit" = "latest"
-"pipx:pipenv" = "latest"
-"pipx:black" = "latest"
-"pipx:tsrc" = "latest"
-
-[settings]
-idiomatic_version_file_enable_tools = ["python"]
diff --git a/chezmoi/run_onchange_mise-install.sh.tmpl b/chezmoi/run_onchange_mise-install.sh.tmpl
deleted file mode 100644
index cb62976a..00000000
--- a/chezmoi/run_onchange_mise-install.sh.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-set -ex
-
-# hash of the mise config file, used to determine if we need to rerun this script
-# mise/config.toml hash: {{ include "private_dot_config/mise/config.toml" | sha256sum }}
-
-mise install -y

From a99bad1526949827d118a2c4292e85a8953b2304 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 15:16:04 +0000
Subject: [PATCH 857/973] Update readme.

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 22768607..01152cc8 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 This repository is meant to manage and configure a personalised dev env setup for MacOS/Linux.
 
-This primarily uses [chezmoi](https://www.chezmoi.io/) to manage dotfiles and a combination of [mise](https://mise.jdx.dev/) and Homebrew to manage package installations.
+This primarily uses [chezmoi](https://www.chezmoi.io/) to manage dotfiles and Homebrew to manage package installations.
 
 ## Structure
 

From 0cfdddd0ea244a67a7e74307e5796da5bc4b6c8c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 15:34:27 +0000
Subject: [PATCH 858/973] Remove mise and OneNote.

---
 chezmoi/.chezmoidata/packages.yaml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index f8d2e2dc..75c1568b 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -126,7 +126,6 @@ packages:
       - "micro"
       - "microsocks"
       - "minicom"
-      - "mise"
       - "mmark"
       - "mplayer"
       - "mtr"
@@ -301,8 +300,6 @@ packages:
         id: 1614666244
       - name: "Microsoft Excel"
         id: 462058435
-      - name: "Microsoft OneNote"
-        id: 784801555
       - name: "Microsoft Outlook"
         id: 985367838
       - name: "Microsoft PowerPoint"

From 1708f64f5794e0ae88f8d65c5dee656055977538 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:08:00 +0000
Subject: [PATCH 859/973] Disable Microsoft apps from MAS install.

---
 chezmoi/.chezmoidata/packages.yaml | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index 75c1568b..f6d69353 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -298,14 +298,14 @@ packages:
         id: 441258766
       - name: "Mattermost"
         id: 1614666244
-      - name: "Microsoft Excel"
-        id: 462058435
-      - name: "Microsoft Outlook"
-        id: 985367838
-      - name: "Microsoft PowerPoint"
-        id: 462062816
-      - name: "Microsoft Word"
-        id: 462054704
+      # - name: "Microsoft Excel"
+      #   id: 462058435
+      # - name: "Microsoft Outlook"
+      #   id: 985367838
+      # - name: "Microsoft PowerPoint"
+      #   id: 462062816
+      # - name: "Microsoft Word"
+      #   id: 462054704
       - name: "Notability"
         id: 360593530
       - name: "Okta Extension App"
@@ -320,8 +320,8 @@ packages:
         id: 899247664
       - name: "The Unarchiver"
         id: 425424353
-      - name: "Windows App"
-        id: 1295203466
+      # - name: "Windows App"
+      #   id: 1295203466
       - name: "Xcode"
         id: 497799835
       - name: "Xmind"

From 5430bb30dbc4add056f19ed5dbbfe4666afaf16f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:15:15 +0000
Subject: [PATCH 860/973] fish: set up pyenv.

---
 chezmoi/private_dot_config/private_fish/config.fish | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 0a9d02f5..c1b03cb0 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -31,6 +31,9 @@ if status is-interactive
 
     # Zoxide setup.
     zoxide init fish | source
+
+    # Pyenv setup.
+    pyenv init - fish | source
 end
 
 test -e {$HOME}/.iterm2/iterm2_shell_integration.fish ; and source {$HOME}/.iterm2/iterm2_shell_integration.fish

From 3cdb677feeb4ea829d6c64a7abf58d757c1c68df Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:15:34 +0000
Subject: [PATCH 861/973] Add script to ensure pyenv and Python are installed.

---
 chezmoi/run_onchange_install_pyenv.sh | 28 +++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 chezmoi/run_onchange_install_pyenv.sh

diff --git a/chezmoi/run_onchange_install_pyenv.sh b/chezmoi/run_onchange_install_pyenv.sh
new file mode 100644
index 00000000..0fc29af6
--- /dev/null
+++ b/chezmoi/run_onchange_install_pyenv.sh
@@ -0,0 +1,28 @@
+{{ if eq .chezmoi.os "darwin" -}}
+#!/bin/bash
+
+if ! command -v pyenv &> /dev/null
+then
+    echo "pyenv could not be found, installing pyenv..."
+
+    brew update
+    brew install pyenv
+
+    # Initialize pyenv in the current shell session
+    if command -v pyenv &> /dev/null
+    then
+        echo "pyenv installed successfully."
+        eval "$(pyenv init --path)"
+        eval "$(pyenv init -)"
+    else
+        echo "Failed to install pyenv."
+        exit 1
+    fi
+else
+    echo "pyenv is already installed."
+fi
+
+pyenv install 3.13
+pyenv global 3.13
+
+{{ end -}}

From 557ddd54b46b725da05733de57a6b60fe428ddf0 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:18:25 +0000
Subject: [PATCH 862/973] chezmoi: change to template.

---
 ...change_install_pyenv.sh => run_onchange_install_pyenv.sh.tmpl} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename chezmoi/{run_onchange_install_pyenv.sh => run_onchange_install_pyenv.sh.tmpl} (100%)

diff --git a/chezmoi/run_onchange_install_pyenv.sh b/chezmoi/run_onchange_install_pyenv.sh.tmpl
similarity index 100%
rename from chezmoi/run_onchange_install_pyenv.sh
rename to chezmoi/run_onchange_install_pyenv.sh.tmpl

From ed6824c4eaf9690c915f7a29943b199ecc1c023d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:18:41 +0000
Subject: [PATCH 863/973] pyenv: skip if already installed.

---
 chezmoi/run_onchange_install_pyenv.sh.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_install_pyenv.sh.tmpl b/chezmoi/run_onchange_install_pyenv.sh.tmpl
index 0fc29af6..12409043 100644
--- a/chezmoi/run_onchange_install_pyenv.sh.tmpl
+++ b/chezmoi/run_onchange_install_pyenv.sh.tmpl
@@ -22,7 +22,7 @@ else
     echo "pyenv is already installed."
 fi
 
-pyenv install 3.13
+pyenv install -s 3.13
 pyenv global 3.13
 
 {{ end -}}

From adeb835ec951438d47c57ef946fbd1294a8a6d1e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:29:21 +0000
Subject: [PATCH 864/973] Add template script to set up Rust env.

---
 chezmoi/run_onchange_install_rust.sh.tmpl | 31 +++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 chezmoi/run_onchange_install_rust.sh.tmpl

diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl
new file mode 100644
index 00000000..be3afae1
--- /dev/null
+++ b/chezmoi/run_onchange_install_rust.sh.tmpl
@@ -0,0 +1,31 @@
+{{ if eq .chezmoi.os "darwin" -}}
+#!/bin/bash
+
+# Assuming rustup is already installed, install the required Rust toolchains and components.
+
+rustup install stable
+rustup install nightly
+
+rustup component add rustfmt
+rustup component add clippy
+rustup component add rust-analyzer
+rustup component add llvm-tools-preview
+
+cargo install cargo-audit
+cargo install cargo-deps
+cargo install cargo-fuzz
+cargo install cargo-license
+cargo install cargo-llvm-cov
+cargo install cargo-outdated
+cargo install cargo-semver
+cargo install cargo-tarpaulin
+cargo install cargo-udeps
+cargo install cargo-warloc
+cargo install cargo-workspces
+cargo install cargo-xwin
+cargo install cargo2junit
+cargo install cross
+cargo install gitoxide
+cargo install sccache
+
+{{ end -}}

From 7fccd24488905ac678e2202b03aa592510409027 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:41:06 +0000
Subject: [PATCH 865/973] Add cargo-semver version constraint.

---
 chezmoi/run_onchange_install_rust.sh.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl
index be3afae1..4575fdc5 100644
--- a/chezmoi/run_onchange_install_rust.sh.tmpl
+++ b/chezmoi/run_onchange_install_rust.sh.tmpl
@@ -17,7 +17,7 @@ cargo install cargo-fuzz
 cargo install cargo-license
 cargo install cargo-llvm-cov
 cargo install cargo-outdated
-cargo install cargo-semver
+cargo install cargo-semver --vers 1.0.0-alpha.3
 cargo install cargo-tarpaulin
 cargo install cargo-udeps
 cargo install cargo-warloc

From ffff033d5013449323438edf87dbc09c367dea9a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:41:33 +0000
Subject: [PATCH 866/973] Rename script template and install pipx tools also.

---
 ...all_pyenv.sh.tmpl => run_onchange_install_python.sh.tmpl} | 5 +++++
 1 file changed, 5 insertions(+)
 rename chezmoi/{run_onchange_install_pyenv.sh.tmpl => run_onchange_install_python.sh.tmpl} (87%)

diff --git a/chezmoi/run_onchange_install_pyenv.sh.tmpl b/chezmoi/run_onchange_install_python.sh.tmpl
similarity index 87%
rename from chezmoi/run_onchange_install_pyenv.sh.tmpl
rename to chezmoi/run_onchange_install_python.sh.tmpl
index 12409043..93b38565 100644
--- a/chezmoi/run_onchange_install_pyenv.sh.tmpl
+++ b/chezmoi/run_onchange_install_python.sh.tmpl
@@ -25,4 +25,9 @@ fi
 pyenv install -s 3.13
 pyenv global 3.13
 
+pipx install black
+pipx install pre-commit
+pipx install pipenv
+pipx install tsrc
+
 {{ end -}}

From 61e2eea71d41acf390b5b4cc136d301824469cdd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:43:56 +0000
Subject: [PATCH 867/973] Rust: fix typo in crate name.

---
 chezmoi/run_onchange_install_rust.sh.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl
index 4575fdc5..451d3f05 100644
--- a/chezmoi/run_onchange_install_rust.sh.tmpl
+++ b/chezmoi/run_onchange_install_rust.sh.tmpl
@@ -21,7 +21,7 @@ cargo install cargo-semver --vers 1.0.0-alpha.3
 cargo install cargo-tarpaulin
 cargo install cargo-udeps
 cargo install cargo-warloc
-cargo install cargo-workspces
+cargo install cargo-workspaces
 cargo install cargo-xwin
 cargo install cargo2junit
 cargo install cross

From 3634a86fa608d37ed75514e239bb789269f49f69 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 10 Nov 2025 16:45:03 +0000
Subject: [PATCH 868/973] cargo: remove sccache.

---
 chezmoi/run_onchange_install_rust.sh.tmpl | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl
index 451d3f05..6cf612b6 100644
--- a/chezmoi/run_onchange_install_rust.sh.tmpl
+++ b/chezmoi/run_onchange_install_rust.sh.tmpl
@@ -26,6 +26,5 @@ cargo install cargo-xwin
 cargo install cargo2junit
 cargo install cross
 cargo install gitoxide
-cargo install sccache
 
 {{ end -}}

From 4b31a194a4d0212e87c9c281eb799518b02af4ab Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 13 Nov 2025 09:58:54 +0000
Subject: [PATCH 869/973] Disable unused daily note section.

---
 obsidian/daily-note.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py
index 177b92b6..c304994e 100755
--- a/obsidian/daily-note.py
+++ b/obsidian/daily-note.py
@@ -136,9 +136,9 @@ def main():
     result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE)
     file_lines.append(result.stdout.decode())
 
-    file_lines.append("## Reading/Learning")
-    file_lines.append("- ")
-    file_lines.append("")
+    # file_lines.append("## Reading/Learning")
+    # file_lines.append("- ")
+    # file_lines.append("")
 
     file_lines.append("## Activities")
     file_lines.append("- ")

From 76c3909fd0ec8e8e71757662c0523a94e069cbc4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 14 Nov 2025 12:05:10 +0000
Subject: [PATCH 870/973] Fix lint issue.

---
 obsidian/daily-note.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py
index c304994e..3bb0a645 100755
--- a/obsidian/daily-note.py
+++ b/obsidian/daily-note.py
@@ -82,7 +82,7 @@ def main():
         next_date = datetime.datetime.strptime(
             date_str, "%Y-%m-%d"
         ) + datetime.timedelta(days=1)
-    next_str = next_date.strftime("%Y-%m-%d")
+    _next_str = next_date.strftime("%Y-%m-%d")
 
     file_lines = []
 

From 6e7222a3f3d1aa0343b44fc668550ec417442e29 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 14 Nov 2025 19:09:41 +0000
Subject: [PATCH 871/973] atuin: disable automatic update check, let brew do
 it.

---
 chezmoi/private_dot_config/private_atuin/private_config.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_atuin/private_config.toml b/chezmoi/private_dot_config/private_atuin/private_config.toml
index bcc6761a..604dbd4b 100644
--- a/chezmoi/private_dot_config/private_atuin/private_config.toml
+++ b/chezmoi/private_dot_config/private_atuin/private_config.toml
@@ -27,7 +27,7 @@ dialect = "uk"
 auto_sync = true
 
 ## enable or disable automatic update checks
-# update_check = true
+update_check = false
 
 ## address of the sync server
 # sync_address = "https://api.atuin.sh"

From 0bba4345bcb36e9b7d65328ffafc981270dec896 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 17 Nov 2025 15:03:25 +0000
Subject: [PATCH 872/973] Add rcmd.

---
 chezmoi/.chezmoidata/packages.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
index f6d69353..97b2cc38 100644
--- a/chezmoi/.chezmoidata/packages.yaml
+++ b/chezmoi/.chezmoidata/packages.yaml
@@ -312,6 +312,8 @@ packages:
         id: 1439967473
       - name: "Okta Verify"
         id: 490179405
+      - name: "rcmd"
+        id: 1596283165
       - name: "Speedtest"
         id: 1153157709
       - name: "Tailscale"

From c814f0960c8d254a838ed25abd541c85b0006be5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 17 Nov 2025 15:26:59 +0000
Subject: [PATCH 873/973] Restore Brewfile.

---
 chezmoi/Brewfile | 394 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 394 insertions(+)
 create mode 100644 chezmoi/Brewfile

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
new file mode 100644
index 00000000..0e117f5b
--- /dev/null
+++ b/chezmoi/Brewfile
@@ -0,0 +1,394 @@
+tap "abhinav/tap"
+tap "ankitpokhrel/jira-cli"
+tap "bufbuild/buf"
+tap "charmbracelet/tap"
+tap "common-fate/granted"
+tap "coretech/terrafile"
+tap "dutchcoders/cloudman"
+tap "github/gh"
+tap "messense/macos-cross-toolchains"
+tap "romkatv/powerlevel10k"
+tap "taiki-e/tap"
+brew "a2ps"
+brew "adr-tools"
+brew "age"
+brew "openssl@3"
+brew "readline"
+brew "xz"
+brew "ansible@9"
+brew "giflib"
+brew "libtiff"
+brew "boost"
+brew "asciidoc"
+brew "asciinema"
+brew "gettext"
+brew "atomicparsley"
+brew "atuin"
+brew "autojump"
+brew "awk"
+brew "node"
+brew "aws-cdk"
+brew "aws-shell"
+brew "awscli"
+brew "bandwhich"
+brew "base64"
+brew "bash"
+brew "bash-completion"
+brew "libssh2"
+brew "oniguruma"
+brew "bat"
+brew "freetype"
+brew "cairo"
+brew "harfbuzz"
+brew "bazel"
+brew "bitwarden-cli"
+brew "black"
+brew "brew-cask-completion"
+brew "bzip2"
+brew "cargo-binstall"
+brew "gcc"
+brew "checkov"
+brew "chezmoi"
+brew "clang-format"
+brew "cloc"
+brew "cmake"
+brew "coreutils"
+brew "rtmpdump"
+brew "curl"
+brew "d2"
+brew "dateutils"
+brew "delve"
+brew "difftastic"
+brew "diffutils"
+brew "dive"
+brew "docker-completion"
+brew "docker"
+brew "docker-compose"
+brew "docker-credential-helper"
+brew "docker-credential-helper-ecr"
+brew "docutils"
+brew "dos2unix"
+brew "dotter"
+brew "doxygen"
+brew "fd"
+brew "fribidi"
+brew "libidn2"
+brew "p11-kit"
+brew "unbound"
+brew "gnutls"
+brew "leptonica"
+brew "sdl2"
+brew "tesseract"
+brew "x265"
+brew "xvid"
+brew "zeromq"
+brew "ffmpeg"
+brew "figlet"
+brew "fish"
+brew "fzf"
+brew "get_iplayer"
+brew "gh"
+brew "gimme-aws-creds"
+brew "gist"
+brew "git"
+brew "git-delta"
+brew "git-extras"
+brew "git-filter-repo"
+brew "git-quick-stats"
+brew "git-who"
+brew "gitleaks"
+brew "glow"
+brew "gnu-indent"
+brew "gnu-sed"
+brew "gnu-tar"
+brew "gnu-time"
+brew "libgcrypt"
+brew "libksba"
+brew "libusb"
+brew "pinentry"
+brew "gnupg"
+brew "go"
+brew "pkgconf"
+brew "gobject-introspection"
+brew "goenv"
+brew "golangci-lint"
+brew "gopls"
+brew "netpbm"
+brew "gts"
+brew "librsvg"
+brew "graphviz"
+brew "grep"
+brew "grpcurl"
+brew "gtk+3"
+brew "hadolint"
+brew "htop"
+brew "httpie"
+brew "hub"
+brew "ical-buddy"
+brew "id3lib"
+brew "id3v2"
+brew "infracost"
+brew "iproute2mac"
+brew "ipython"
+brew "isort"
+brew "jfrog-cli"
+brew "jj"
+brew "jless"
+brew "jq"
+brew "jsonlint"
+brew "jsonnet"
+brew "pandoc"
+brew "jupyterlab"
+brew "lftp"
+brew "libcaca"
+brew "libffi"
+brew "libressl"
+brew "libusb-compat"
+brew "llvm"
+brew "make"
+brew "markdownlint-cli"
+brew "mas"
+brew "md5sha1sum"
+brew "mdbook"
+brew "micro"
+brew "microsocks"
+brew "minicom"
+brew "mmark"
+brew "mplayer"
+brew "mtr"
+brew "mypy"
+brew "ncftp"
+brew "neovim"
+brew "nushell"
+brew "ocrad"
+brew "okta-aws-cli"
+brew "openconnect"
+brew "openjdk"
+brew "openjdk@11"
+brew "ossp-uuid"
+brew "osv-scanner"
+brew "p7zip"
+brew "packer-completion"
+brew "parallel"
+brew "patchutils"
+brew "peco"
+brew "percol"
+brew "pip-completion"
+brew "pipenv"
+brew "pipx"
+brew "plantuml"
+brew "pre-commit"
+brew "progress"
+brew "protobuf"
+brew "protobuf-c"
+brew "protoc-gen-go"
+brew "protoc-gen-go-grpc"
+brew "pth"
+brew "pulseaudio"
+brew "pulumi"
+brew "pycodestyle"
+brew "pyenv"
+brew "pyenv-virtualenv"
+brew "pyenv-virtualenvwrapper"
+brew "pygments"
+brew "python-packaging"
+brew "qemu"
+brew "qt"
+brew "rage"
+brew "rake-completion"
+brew "rbenv"
+brew "rbw"
+brew "rclone"
+brew "repo"
+brew "ripgrep"
+brew "rlwrap"
+brew "robot-framework"
+brew "ruff"
+brew "rustup"
+brew "scc"
+brew "sccache"
+brew "semgrep"
+brew "shellcheck"
+brew "skate"
+brew "socat"
+brew "sonar-scanner"
+brew "sphinx-doc"
+brew "ssh-copy-id"
+brew "sshuttle"
+brew "starship"
+brew "staticcheck"
+brew "telnet"
+brew "terminal-notifier"
+brew "terraform-docs"
+brew "tfenv"
+brew "tflint"
+brew "tfsec"
+brew "tig"
+brew "tldr"
+brew "todo-txt"
+brew "tokei"
+brew "tree"
+brew "uv"
+brew "vim"
+brew "wget"
+brew "xpdf"
+brew "yaegi"
+brew "yamlfmt"
+brew "yamllint"
+brew "yt-dlp"
+brew "zig"
+brew "zlib"
+brew "zoxide"
+brew "zsh"
+brew "abhinav/tap/git-spice"
+brew "ankitpokhrel/jira-cli/jira-cli"
+brew "bufbuild/buf/buf"
+brew "common-fate/granted/granted"
+brew "coretech/terrafile/terrafile"
+brew "dutchcoders/cloudman/cloudman"
+brew "messense/macos-cross-toolchains/x86_64-unknown-linux-gnu"
+brew "taiki-e/tap/cargo-llvm-cov"
+cask "alt-tab"
+cask "bartender"
+cask "beardedspice"
+cask "bitwarden"
+cask "doll"
+cask "drawio"
+cask "firefox"
+cask "font-anonymice-powerline"
+cask "font-consolas-for-powerline"
+cask "font-dejavu-sans-mono-for-powerline"
+cask "font-droid-sans-mono-for-powerline"
+cask "font-fira-code-nerd-font"
+cask "font-fira-mono-for-powerline"
+cask "font-inconsolata-dz-for-powerline"
+cask "font-inconsolata-for-powerline"
+cask "font-inconsolata-for-powerline-bold"
+cask "font-inconsolata-g-for-powerline"
+cask "font-juliamono"
+cask "font-liberation-mono-for-powerline"
+cask "font-menlo-for-powerline"
+cask "font-meslo-for-powerline"
+cask "font-monofur-for-powerline"
+cask "font-noto-mono-for-powerline"
+cask "font-powerline-symbols"
+cask "font-roboto-mono-for-powerline"
+cask "font-sf-mono-for-powerline"
+cask "font-source-code-pro-for-powerline"
+cask "font-ubuntu-mono-derivative-powerline"
+cask "funter"
+cask "ghostty"
+cask "git-credential-manager"
+cask "hammerspoon"
+cask "iterm2"
+cask "jupyter-notebook-ql"
+cask "karabiner-elements"
+cask "maccy"
+cask "meetingbar"
+cask "mitmproxy"
+cask "monitorcontrol"
+cask "notunes"
+cask "obsidian"
+cask "rectangle"
+cask "sublime-merge@dev"
+cask "sublime-text@dev"
+cask "temurin"
+cask "visual-studio-code"
+cask "vlc"
+cask "yt-music"
+cask "zed"
+mas "Battery Monitor", id: 836505650
+mas "Bitwarden", id: 1352778147
+mas "Elisi", id: 1406239881
+mas "GoPro Player", id: 1460836908
+mas "GoPro Quik", id: 561350520
+mas "Keynote", id: 409183694
+mas "Kindle", id: 302584613
+mas "Magnet", id: 441258766
+mas "Mattermost", id: 1614666244
+mas "Notability", id: 360593530
+mas "Okta Extension App", id: 1439967473
+mas "Okta Verify", id: 490179405
+mas "Proxy", id: 0
+mas "rcmd", id: 1596283165
+mas "Speedtest", id: 1153157709
+mas "Tailscale", id: 1475387142
+mas "TestFlight", id: 899247664
+mas "The Unarchiver", id: 425424353
+mas "Windows App", id: 1295203466
+mas "Xcode", id: 497799835
+mas "Xmind", id: 1327661892
+mas "Yubico Authenticator", id: 1497506650
+vscode "aryanahire.sublime-monokai"
+vscode "atlassian.atlascode"
+vscode "charliermarsh.ruff"
+vscode "codezombiech.gitignore"
+vscode "cschlosser.doxdocgen"
+vscode "davidanson.vscode-markdownlint"
+vscode "davidbwaters.macos-modern-theme"
+vscode "docker.docker"
+vscode "donjayamanne.githistory"
+vscode "editorconfig.editorconfig"
+vscode "fabiospampinato.vscode-diff"
+vscode "giovdk21.vscode-sublime-merge"
+vscode "github.copilot"
+vscode "github.copilot-chat"
+vscode "github.github-vscode-theme"
+vscode "github.vscode-pull-request-github"
+vscode "golang.go"
+vscode "grafana.vscode-jsonnet"
+vscode "grapecity.gc-excelviewer"
+vscode "gruntfuggly.todo-tree"
+vscode "hashicorp.hcl"
+vscode "hashicorp.terraform"
+vscode "hediet.vscode-drawio"
+vscode "humao.rest-client"
+vscode "janjoerke.jenkins-pipeline-linter-connector"
+vscode "jebbs.plantuml"
+vscode "jeff-hykin.better-cpp-syntax"
+vscode "joffreykern.markdown-toc"
+vscode "llvm-vs-code-extensions.lldb-dap"
+vscode "mechatroner.rainbow-csv"
+vscode "meezilla.json"
+vscode "mellowmarshmallow.groovy"
+vscode "mermaidchart.vscode-mermaid-chart"
+vscode "mrmlnc.vscode-duplicate"
+vscode "ms-azuretools.vscode-containers"
+vscode "ms-azuretools.vscode-docker"
+vscode "ms-python.debugpy"
+vscode "ms-python.isort"
+vscode "ms-python.mypy-type-checker"
+vscode "ms-python.python"
+vscode "ms-python.vscode-pylance"
+vscode "ms-python.vscode-python-envs"
+vscode "ms-toolsai.jupyter"
+vscode "ms-toolsai.jupyter-keymap"
+vscode "ms-toolsai.jupyter-renderers"
+vscode "ms-toolsai.vscode-jupyter-cell-tags"
+vscode "ms-toolsai.vscode-jupyter-slideshow"
+vscode "ms-vscode-remote.remote-containers"
+vscode "ms-vscode.cmake-tools"
+vscode "ms-vscode.cpptools"
+vscode "ms-vscode.cpptools-extension-pack"
+vscode "ms-vscode.cpptools-themes"
+vscode "ms-vscode.live-server"
+vscode "ms-vscode.makefile-tools"
+vscode "pdconsec.vscode-print"
+vscode "peterj.proto"
+vscode "redhat.vscode-yaml"
+vscode "ritwickdey.liveserver"
+vscode "rust-lang.rust-analyzer"
+vscode "ryanluker.vscode-coverage-gutters"
+vscode "solomonkinard.git-blame"
+vscode "streetsidesoftware.code-spell-checker"
+vscode "swiftlang.swift-vscode"
+vscode "tadayosi.vscode-makefile-outliner"
+vscode "takumii.markdowntable"
+vscode "tamasfe.even-better-toml"
+vscode "timonwong.shellcheck"
+vscode "tomoki1207.pdf"
+vscode "visualjj.visualjj"
+vscode "vscode-icons-team.vscode-icons"
+vscode "ziglang.vscode-zig"
+go "github.com/maxmind/mm-geofeed-verifier"
+go "github.com/lasorda/protobuf-language-server"

From 7448327e507359e8d582649eed0c3e917acfc808 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 17 Nov 2025 15:28:07 +0000
Subject: [PATCH 874/973] Update Brewfile.

---
 chezmoi/Brewfile | 2 --
 1 file changed, 2 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 0e117f5b..73110bfa 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -297,7 +297,6 @@ cask "visual-studio-code"
 cask "vlc"
 cask "yt-music"
 cask "zed"
-mas "Battery Monitor", id: 836505650
 mas "Bitwarden", id: 1352778147
 mas "Elisi", id: 1406239881
 mas "GoPro Player", id: 1460836908
@@ -315,7 +314,6 @@ mas "Speedtest", id: 1153157709
 mas "Tailscale", id: 1475387142
 mas "TestFlight", id: 899247664
 mas "The Unarchiver", id: 425424353
-mas "Windows App", id: 1295203466
 mas "Xcode", id: 497799835
 mas "Xmind", id: 1327661892
 mas "Yubico Authenticator", id: 1497506650

From 735bbde44d5ff68f8acc482a8896d0800cfe8e04 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 17 Nov 2025 15:28:32 +0000
Subject: [PATCH 875/973] Install packages from Brewfile.

---
 chezmoi/.chezmoidata/packages.yaml            | 332 ------------------
 ...n_onchange_darwin-install-packages.sh.tmpl |  16 +-
 2 files changed, 2 insertions(+), 346 deletions(-)
 delete mode 100644 chezmoi/.chezmoidata/packages.yaml

diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml
deleted file mode 100644
index 97b2cc38..00000000
--- a/chezmoi/.chezmoidata/packages.yaml
+++ /dev/null
@@ -1,332 +0,0 @@
-packages:
-  darwin:
-    taps:
-      - "abhinav/tap"
-      - "ankitpokhrel/jira-cli"
-      - "bufbuild/buf"
-      - "common-fate/granted"
-      - "coretech/terrafile"
-      - "dutchcoders/cloudman"
-      - "github/gh"
-      - "messense/macos-cross-toolchains"
-      - "romkatv/powerlevel10k"
-      - "taiki-e/tap"
-    brews:
-      - "a2ps"
-      - "adr-tools"
-      - "age"
-      - "asciidoc"
-      - "asciinema"
-      - "atuin"
-      - "autojump"
-      - "awk"
-      - "aws-shell"
-      - "awscli"
-      - "bandwhich"
-      - "base64"
-      - "bat"
-      - "bitwarden-cli"
-      - "black"
-      - "brew-cask-completion"
-      - "buf"
-      - "bzip2"
-      - "cargo-binstall"
-      - "cargo-llvm-cov"
-      - "checkov"
-      - "chezmoi"
-      - "clang-format"
-      - "cloc"
-      - "cloudman"
-      - "cmake"
-      - "coreutils"
-      - "curl"
-      - "d2"
-      - "dateutils"
-      - "delve"
-      - "difftastic"
-      - "diffutils"
-      - "dive"
-      - "docker"
-      - "docker-completion"
-      - "docker-compose"
-      - "docker-credential-helper"
-      - "docker-credential-helper-ecr"
-      - "docutils"
-      - "dos2unix"
-      - "dotter"
-      - "doxygen"
-      - "fd"
-      - "ffmpeg"
-      - "figlet"
-      - "fish"
-      - "freetype"
-      - "fribidi"
-      - "fzf"
-      - "gcc"
-      - "get_iplayer"
-      - "gettext"
-      - "gh"
-      - "giflib"
-      - "gimme-aws-creds"
-      - "gist"
-      - "git"
-      - "git-delta"
-      - "git-extras"
-      - "git-filter-repo"
-      - "git-quick-stats"
-      - "git-spice"
-      - "git-who"
-      - "gitleaks"
-      - "glow"
-      - "gnu-indent"
-      - "gnu-sed"
-      - "gnu-tar"
-      - "gnu-time"
-      - "gnupg"
-      - "gnutls"
-      - "go"
-      - "gobject-introspection"
-      - "goenv"
-      - "golangci-lint"
-      - "gopls"
-      - "granted"
-      - "graphviz"
-      - "grep"
-      - "grpcurl"
-      - "gtk+3"
-      - "gts"
-      - "hadolint"
-      - "harfbuzz"
-      - "htop"
-      - "httpie"
-      - "hub"
-      - "ical-buddy"
-      - "id3lib"
-      - "id3v2"
-      - "infracost"
-      - "iproute2mac"
-      - "ipython"
-      - "isort"
-      - "jfrog-cli"
-      - "jira-cli"
-      - "jj"
-      - "jless"
-      - "jq"
-      - "jsonlint"
-      - "jsonnet"
-      - "jupyterlab"
-      - "leptonica"
-      - "lftp"
-      - "llvm"
-      - "make"
-      - "markdownlint-cli"
-      - "mas"
-      - "md5sha1sum"
-      - "mdbook"
-      - "micro"
-      - "microsocks"
-      - "minicom"
-      - "mmark"
-      - "mplayer"
-      - "mtr"
-      - "mypy"
-      - "ncftp"
-      - "neovim"
-      - "netpbm"
-      - "node"
-      - "nushell"
-      - "ocrad"
-      - "okta-aws-cli"
-      - "oniguruma"
-      - "openconnect"
-      - "openjdk"
-      - "openjdk@11"
-      - "openssl@3"
-      - "ossp-uuid"
-      - "osv-scanner"
-      - "p11-kit"
-      - "p7zip"
-      - "packer-completion"
-      - "pandoc"
-      - "parallel"
-      - "patchutils"
-      - "peco"
-      - "percol"
-      - "pinentry"
-      - "pip-completion"
-      - "pipenv"
-      - "pipx"
-      - "pkgconf"
-      - "plantuml"
-      - "pre-commit"
-      - "progress"
-      - "protobuf"
-      - "protobuf-c"
-      - "protoc-gen-go"
-      - "protoc-gen-go-grpc"
-      - "pth"
-      - "pulseaudio"
-      - "pulumi"
-      - "pycodestyle"
-      - "pyenv"
-      - "pyenv-virtualenv"
-      - "pyenv-virtualenvwrapper"
-      - "pygments"
-      - "python-packaging"
-      - "qemu"
-      - "qt"
-      - "rage"
-      - "rake-completion"
-      - "rbenv"
-      - "rbw"
-      - "rclone"
-      - "readline"
-      - "repo"
-      - "ripgrep"
-      - "rlwrap"
-      - "robot-framework"
-      - "rtmpdump"
-      - "ruff"
-      - "rustup"
-      - "scc"
-      - "sccache"
-      - "sdl2"
-      - "semgrep"
-      - "shellcheck"
-      - "skate"
-      - "socat"
-      - "sonar-scanner"
-      - "sphinx-doc"
-      - "ssh-copy-id"
-      - "sshuttle"
-      - "starship"
-      - "staticcheck"
-      - "telnet"
-      - "terminal-notifier"
-      - "terrafile"
-      - "terraform-docs"
-      - "tesseract"
-      - "tfenv"
-      - "tflint"
-      - "tfsec"
-      - "tig"
-      - "tldr"
-      - "todo-txt"
-      - "tokei"
-      - "tree"
-      - "unbound"
-      - "uv"
-      - "vim"
-      - "wget"
-      - "x265"
-      - "x86_64-unknown-linux-gnu"
-      - "xpdf"
-      - "xvid"
-      - "xz"
-      - "yaegi"
-      - "yamlfmt"
-      - "yamllint"
-      - "yt-dlp"
-      - "zeromq"
-      - "zig"
-      - "zlib"
-      - "zoxide"
-      - "zsh"
-    casks:
-      - "alt-tab"
-      - "bartender"
-      - "beardedspice"
-      - "bitwarden"
-      - "doll"
-      - "drawio"
-      - "firefox"
-      - "font-anonymice-powerline"
-      - "font-consolas-for-powerline"
-      - "font-dejavu-sans-mono-for-powerline"
-      - "font-droid-sans-mono-for-powerline"
-      - "font-fira-code-nerd-font"
-      - "font-fira-mono-for-powerline"
-      - "font-inconsolata-dz-for-powerline"
-      - "font-inconsolata-for-powerline"
-      - "font-inconsolata-for-powerline-bold"
-      - "font-inconsolata-g-for-powerline"
-      - "font-juliamono"
-      - "font-liberation-mono-for-powerline"
-      - "font-menlo-for-powerline"
-      - "font-meslo-for-powerline"
-      - "font-monofur-for-powerline"
-      - "font-noto-mono-for-powerline"
-      - "font-powerline-symbols"
-      - "font-roboto-mono-for-powerline"
-      - "font-sf-mono-for-powerline"
-      - "font-source-code-pro-for-powerline"
-      - "font-ubuntu-mono-derivative-powerline"
-      - "funter"
-      - "ghostty"
-      - "git-credential-manager"
-      - "hammerspoon"
-      - "iterm2"
-      - "karabiner-elements"
-      - "maccy"
-      - "meetingbar"
-      - "mitmproxy"
-      - "monitorcontrol"
-      - "notunes"
-      - "obsidian"
-      - "rectangle"
-      - "temurin"
-      - "visual-studio-code"
-      - "vlc"
-      - "yt-music"
-      - "zed"
-    mas:
-      - name: "Battery Monitor"
-        id: 836505650
-      - name: "Bitwarden"
-        id: 1352778147
-      - name: "Elisi"
-        id: 1406239881
-      - name: "GoPro Player"
-        id: 1460836908
-      - name: "GoPro Quik"
-        id: 561350520
-      - name: "Keynote"
-        id: 409183694
-      - name: "Kindle"
-        id: 302584613
-      - name: "Magnet"
-        id: 441258766
-      - name: "Mattermost"
-        id: 1614666244
-      # - name: "Microsoft Excel"
-      #   id: 462058435
-      # - name: "Microsoft Outlook"
-      #   id: 985367838
-      # - name: "Microsoft PowerPoint"
-      #   id: 462062816
-      # - name: "Microsoft Word"
-      #   id: 462054704
-      - name: "Notability"
-        id: 360593530
-      - name: "Okta Extension App"
-        id: 1439967473
-      - name: "Okta Verify"
-        id: 490179405
-      - name: "rcmd"
-        id: 1596283165
-      - name: "Speedtest"
-        id: 1153157709
-      - name: "Tailscale"
-        id: 1475387142
-      - name: "TestFlight"
-        id: 899247664
-      - name: "The Unarchiver"
-        id: 425424353
-      # - name: "Windows App"
-      #   id: 1295203466
-      - name: "Xcode"
-        id: 497799835
-      - name: "Xmind"
-        id: 1327661892
-      - name: "Yubico Authenticator"
-        id: 1497506650
diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index d614f759..83dccbe2 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -1,18 +1,6 @@
 {{ if eq .chezmoi.os "darwin" -}}
 #!/bin/bash
 
-brew bundle --file=/dev/stdin <
Date: Mon, 17 Nov 2025 15:39:37 +0000
Subject: [PATCH 876/973] When installing from Brewfile, avoid upgrading
 existing packages, which can fail in the case of MAS apps.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index 83dccbe2..1ca39a24 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -2,5 +2,8 @@
 #!/bin/bash
 
 # Install packages via Homebrew Bundle.
-brew bundle --file=$HOME/Brewfile
+# NOTE: --no-upgrade to avoid upgrading existing packages, which can fail in the case of MAS apps.
+# NOTE: ignore errors, since MAS often fails.
+set -o pipefail
+brew bundle --no-upgrade --file=$HOME/Brewfile || true
 {{ end -}}

From c8db73110a18e9716ebdbfe283c647397cb4370d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 17 Nov 2025 15:40:21 +0000
Subject: [PATCH 877/973] Add a simple bootstrap script.

---
 bootstrap.sh | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100755 bootstrap.sh

diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 00000000..c4f3327a
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# Dotfiles bootstrap script.
+# NOTE: this has only been tested on macOS.
+
+# Install XCode Command Line Tools, if necessary.
+xcode-select --install || echo "XCode already installed"
+
+# Install Homebrew, if necessary.
+if which -s brew; then
+    echo 'Homebrew is already installed'
+else
+    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+    (
+        echo
+        echo 'eval "$(/opt/homebrew/bin/brew shellenv)"'
+    ) >>$HOME/.zprofile
+    eval "$(/opt/homebrew/bin/brew shellenv)"
+fi
+
+brew install chezmoi
+chezmoi init jimlawton/dotfiles
+chezmoi apply

From a2bc4875eb9188f462b893b0d9373bcc1846263d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 24 Nov 2025 12:47:18 +0000
Subject: [PATCH 878/973] Add .local/bin to path (for pipx stuff).

---
 chezmoi/private_dot_config/private_fish/config.fish | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index c1b03cb0..8ef452b7 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -1,6 +1,7 @@
 /opt/homebrew/bin/brew shellenv | source
 
 fish_add_path $HOME/bin
+fish_add_path $HOME/.local/bin
 fish_add_path $CARGO_HOME/bin
 
 if status is-interactive

From fb8c7ccd3f4343ed32de1ed1df2114de3fee15c3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 8 Dec 2025 12:40:20 +0000
Subject: [PATCH 879/973] Update Brewfile.

---
 chezmoi/Brewfile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 73110bfa..a1a818f1 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -162,6 +162,7 @@ brew "neovim"
 brew "nushell"
 brew "ocrad"
 brew "okta-aws-cli"
+brew "opencode"
 brew "openconnect"
 brew "openjdk"
 brew "openjdk@11"
@@ -306,8 +307,10 @@ mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766
 mas "Mattermost", id: 1614666244
 mas "Notability", id: 360593530
+mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473
 mas "Okta Verify", id: 490179405
+mas "Pages", id: 409201541
 mas "Proxy", id: 0
 mas "rcmd", id: 1596283165
 mas "Speedtest", id: 1153157709

From 687c66cfa941e85e21c130c57c1d486011eef55a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 8 Dec 2025 17:50:18 +0000
Subject: [PATCH 880/973] Update cargo installs.

---
 chezmoi/run_onchange_install_rust.sh.tmpl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/run_onchange_install_rust.sh.tmpl b/chezmoi/run_onchange_install_rust.sh.tmpl
index 6cf612b6..d9e8d001 100644
--- a/chezmoi/run_onchange_install_rust.sh.tmpl
+++ b/chezmoi/run_onchange_install_rust.sh.tmpl
@@ -25,6 +25,8 @@ cargo install cargo-workspaces
 cargo install cargo-xwin
 cargo install cargo2junit
 cargo install cross
+cargo install cross-util
 cargo install gitoxide
+cargo install oxdraw
 
 {{ end -}}

From 9125954da79a7f99b4e8c2e585d3f30fad459b09 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 12 Dec 2025 12:54:31 +0000
Subject: [PATCH 881/973] Update Brewfile.

---
 chezmoi/Brewfile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index a1a818f1..29f638d5 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -70,6 +70,7 @@ brew "docutils"
 brew "dos2unix"
 brew "dotter"
 brew "doxygen"
+brew "eza"
 brew "fd"
 brew "fribidi"
 brew "libidn2"
@@ -306,6 +307,7 @@ mas "Keynote", id: 409183694
 mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766
 mas "Mattermost", id: 1614666244
+mas "Microsoft PowerPoint", id: 462062816
 mas "Notability", id: 360593530
 mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473

From 01887c97f8b141aad961d23c09592807c5b9e69c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 12 Dec 2025 12:59:22 +0000
Subject: [PATCH 882/973] Add more abbrevs.

---
 .../private_fish/conf.d/abbreviations.fish           | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index 85efe559..2a676016 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -39,3 +39,15 @@ abbr --add jkanban "jira issue list -q \"project in (FWAAS) AND issuetype not in
 
 # Ping Artifactory.
 abbr --add afping 'curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
+
+# On Mac OSX, the make version installed is from 2006, so use gmake.
+abbr --add make 'gmake'
+
+# Use zoxide instead of cd
+abbr --add cd 'z'
+
+# Use bat instead of cat
+abbr --add cat 'bat'
+
+# Use ls replacement eza to list the directory tree
+abbr --add ll 'eza -lhT --git'

From cd6f582e4a1da305ad458c7f3117519a40954425 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 12 Dec 2025 14:34:16 +0000
Subject: [PATCH 883/973] Disable make alias.

---
 .../private_dot_config/private_fish/conf.d/abbreviations.fish  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index 2a676016..4553eb03 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -41,7 +41,8 @@ abbr --add jkanban "jira issue list -q \"project in (FWAAS) AND issuetype not in
 abbr --add afping 'curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
 
 # On Mac OSX, the make version installed is from 2006, so use gmake.
-abbr --add make 'gmake'
+# NOTE: disable this, it does not honour Makefile target tab completion.
+# abbr --add make 'gmake'
 
 # Use zoxide instead of cd
 abbr --add cd 'z'

From cd3311825c007a02f4426dc2050161ff06bc5d15 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 12 Dec 2025 15:08:28 +0000
Subject: [PATCH 884/973] Remove the fish abbrev for make, it does not honour
 tab completions.

---
 .../private_dot_config/private_fish/conf.d/abbreviations.fish | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index 4553eb03..2e452f3d 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -40,10 +40,6 @@ abbr --add jkanban "jira issue list -q \"project in (FWAAS) AND issuetype not in
 # Ping Artifactory.
 abbr --add afping 'curl -I https:/${ARTIFACTORY_EMAIL}:${ARTIFACTORY_API_KEY}@${ARTIFACTORY_BASE}/artifactory/api/system/ping'
 
-# On Mac OSX, the make version installed is from 2006, so use gmake.
-# NOTE: disable this, it does not honour Makefile target tab completion.
-# abbr --add make 'gmake'
-
 # Use zoxide instead of cd
 abbr --add cd 'z'
 

From b628e2e0306b055cda10d3496e202d71bd158e26 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 12 Dec 2025 15:08:50 +0000
Subject: [PATCH 885/973] Clean paths, add gmake path so it replaces system
 make.

---
 .../private_fish/conf.d/paths.fish               | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
index dbf68830..c4898aec 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -1,10 +1,6 @@
-fish_add_path --global --move --path "/opt/homebrew/bin" "/opt/homebrew/sbin"
-fish_add_path $GOPATH/bin
-fish_add_path $GOROOT/bin
-fish_add_path /usr/local/sbin
-fish_add_path /usr/local/opt/gnu-sed/libexec/gnubin
-fish_add_path $GOENV_ROOT/bin
-fish_add_path /opt/homebrew/opt/llvm/bin
-fish_add_path $HOME/bin
-fish_add_path $HOME/.cargo/bin
-fish_add_path .
+fish_add_path --global --move --path $HOMEBREW_PREFIX/bin $HOMEBREW_PREFIX/sbin
+fish_add_path --global --move --path /usr/local/sbin
+fish_add_path --global --move --path /opt/homebrew/opt/gnu-sed/libexec/gnubin
+fish_add_path --global --move --path /opt/homebrew/opt/make/libexec/gnubin
+fish_add_path --global --move --path /opt/homebrew/opt/llvm/bin
+fish_add_path --global --move --path $HOME/bin $HOME/.cargo/bin $GOPATH/bin

From acf125822010bb23d8492272943f2425b12325de Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 16 Dec 2025 21:42:27 +0000
Subject: [PATCH 886/973] Update Brewfile.

---
 chezmoi/Brewfile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 29f638d5..0a5a44c4 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -163,6 +163,7 @@ brew "neovim"
 brew "nushell"
 brew "ocrad"
 brew "okta-aws-cli"
+brew "ripgrep"
 brew "opencode"
 brew "openconnect"
 brew "openjdk"
@@ -202,7 +203,6 @@ brew "rbenv"
 brew "rbw"
 brew "rclone"
 brew "repo"
-brew "ripgrep"
 brew "rlwrap"
 brew "robot-framework"
 brew "ruff"
@@ -291,6 +291,7 @@ cask "mitmproxy"
 cask "monitorcontrol"
 cask "notunes"
 cask "obsidian"
+cask "opencode-desktop"
 cask "rectangle"
 cask "sublime-merge@dev"
 cask "sublime-text@dev"

From 4add69046e0f67b225cc367447998a260e8ddd7e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 5 Jan 2026 12:06:22 +0000
Subject: [PATCH 887/973] Update Brewfile.

---
 chezmoi/Brewfile | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 0a5a44c4..6bca3813 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -6,6 +6,7 @@ tap "common-fate/granted"
 tap "coretech/terrafile"
 tap "dutchcoders/cloudman"
 tap "github/gh"
+tap "julien-cpsn/atac"
 tap "messense/macos-cross-toolchains"
 tap "romkatv/powerlevel10k"
 tap "taiki-e/tap"
@@ -22,6 +23,8 @@ brew "boost"
 brew "asciidoc"
 brew "asciinema"
 brew "gettext"
+brew "oniguruma"
+brew "atac"
 brew "atomicparsley"
 brew "atuin"
 brew "autojump"
@@ -35,7 +38,6 @@ brew "base64"
 brew "bash"
 brew "bash-completion"
 brew "libssh2"
-brew "oniguruma"
 brew "bat"
 brew "freetype"
 brew "cairo"
@@ -58,6 +60,7 @@ brew "curl"
 brew "d2"
 brew "dateutils"
 brew "delve"
+brew "devcontainer"
 brew "difftastic"
 brew "diffutils"
 brew "dive"
@@ -149,7 +152,7 @@ brew "llvm"
 brew "make"
 brew "markdownlint-cli"
 brew "mas"
-brew "md5sha1sum"
+brew "md5sha1sum", link: true
 brew "mdbook"
 brew "micro"
 brew "microsocks"
@@ -396,3 +399,20 @@ vscode "vscode-icons-team.vscode-icons"
 vscode "ziglang.vscode-zig"
 go "github.com/maxmind/mm-geofeed-verifier"
 go "github.com/lasorda/protobuf-language-server"
+cargo "cargo-audit"
+cargo "cargo-deps"
+cargo "cargo-fuzz"
+cargo "cargo-license"
+cargo "cargo-llvm-cov"
+cargo "cargo-outdated"
+cargo "cargo-semver"
+cargo "cargo-tarpaulin"
+cargo "cargo-udeps"
+cargo "cargo-warloc"
+cargo "cargo-workspaces"
+cargo "cargo-xwin"
+cargo "cargo2junit"
+cargo "cross"
+cargo "gitoxide"
+cargo "oxdraw"
+cargo "sccache"

From e249e1867d1f3141f7b9e396a3a2e9f308c2b2bf Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 5 Jan 2026 13:22:22 +0000
Subject: [PATCH 888/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 6bca3813..701cd911 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -154,6 +154,7 @@ brew "markdownlint-cli"
 brew "mas"
 brew "md5sha1sum", link: true
 brew "mdbook"
+brew "mergiraf"
 brew "micro"
 brew "microsocks"
 brew "minicom"

From 13e1b863a15de690516aa5318d46b0477e0f8fb7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 5 Jan 2026 13:59:40 +0000
Subject: [PATCH 889/973] Update shell vars.

---
 chezmoi/encrypted_private_dot_shellvars.age | 38 ++++++++++-----------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/chezmoi/encrypted_private_dot_shellvars.age b/chezmoi/encrypted_private_dot_shellvars.age
index 0a403b13..e2b4105c 100644
--- a/chezmoi/encrypted_private_dot_shellvars.age
+++ b/chezmoi/encrypted_private_dot_shellvars.age
@@ -1,21 +1,21 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4ZHY5c2RseDdNa09qYnlM
-djUyMHJQZTVDYWNuWTE1MzJodnRFOFpTVmw4ClFGWkFQdGJVa2MxcVp3dGhSMHZz
-UWRkaUN3WUhkdkZEcThCOGdYVkc4NlkKLS0tIDNPTEdHeGdSaXk5VGZuMFZLcmQ0
-TlhyNEYySXNidXMyYitMN2pVaVljb3cKG6amW5Wqx14iG/zR6pU/9GPqozN8aQRC
-LvF+WcYqUaXBZPLk6dQ7oHkRSqs6+Zimukx0Wrmg+3bmURxphHIUb/+roe3zzl1r
-lSHi1xWEu9TqRmVpuZCeRVwBDWiR5s70IkeIfiR+PNu6aRtGL4RH0KG4nM1JnxN8
-clZQwDlioIgmfLhbgSDO7iJCMYoYkMBH9/tpgbbh2A1Kb1qM/ptACLNXBhXnRsSY
-S/CRpVPJWsDY36pJhj5rKE/xy4YxVQXqwZ1XsXnQGhTcvHkFLXK/XxFzErtoCL/Z
-gDHgrhLIFfxRA5+CIbs3ENHhBv4M916GD1OTmkCjjHN/fGvKjAP0mKkcAGcW9hcG
-Equ+A2zY3WdBqXOyJrF6tFxKTJqhFLfzUSK3IQLSNAJ0CtsiP6oIPzxybpRGRcMR
-C+iVeiRxGTWSyS9zvmMhVUbCRIF0DnI1mgMDzoOJOqNzX2KM5FlfSjDpiBK085ti
-pOzx5+eXcZ5+pktGqFtjG1tWf4AwwOmdNgZ+EKkW+TObGjjHD35Bta5lg3xHGMcQ
-234SVtSrtx5yV5yC/5a5ZJhNlvbaPn83LyxBNOMy/AjjfY3E2Ct7KjjnX8rCKAVP
-p3MFCa3hS9XqZpZ8+ZOjiybdLPEXsMptNrKESzCLm105xYtbuytBdpnqISJfMZJc
-fshyQH4qIbEPyzWCyllbbu8bsLRuVUaYVhHRTHDelodOutI8MPcR7qh3owJxr0Rd
-VOGDr7nOtnJ1R0Xt1jwJHSDlyv0oY41qTS0NS4dTBHctjch6x7kix9sP0LPmtJj/
-lcrpyJxuCfnIKJmnmIAESpOA9TWVbsztS+RLGsZnucoOl3FsdwzfQKjEe3NywynK
-Az5nCX0ZUd++dpkkpu1oVDUwajLFUyhOzv+sQtHxHMtIKj8FHGgvComT5vz5LtJD
-yNXZus8Ggny2
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3QmNwcVIwTzczL2FiOHJ3
+NTJuNFJiTFkzc2hjZTVjSjBKM0NVQXhSTFZrCjR6VHhxQjZFTEtMWDR3eU42M2t6
+Q3BkR1lkbjhSakt3MVZGTE1tbUJRekUKLS0tIGF4VTlSeUE2eHVmNmdPMzRocHRo
+N2JNUkM3UDdXOStlTWFJSm9VT3ZwYVEKp0lcZd2H0OE8WsClk8sm7wUzMPe9tIei
++YxJu3deDLI+9AoO/QWKIydyiPUa5EI10Zs6B3Dk2HxkRezr429Mu4t1oeEyIz+S
+KBUYqm8B0i25bHhDpSIM01B0LBCFPODCRoZeD+OTYRN4UWYt5zkvDCPqIgA441Oc
+1UI1EhHq00EzwhHp4a6zhJlYa5CEWOkO6TgUC3hPYoYEe9IvazRtLLYBsCVVlEbp
+zhxSCbdz4d8oFqlM/q0sEPi8b+aVOOuOTHbzX46Eoo0l9D3tdHhqzPMizbD/cI/t
+YWxtBY43HVyAovv1QVk3HKIZxGDA6/CsVfhA2KgVaCZAo1JTsNshislPC0FnlxSn
+V+Weud3EPadc9ZsAo62dKhrpGqLZP5idbXgJi0lcdAzbHayL2MW659QmqUuCyh9X
+TPvDL7W3mEIAc8iraWqfKts6IfQ7OCs03ndMlyC5nMVbVDFYVy8ns75oV7+GTlsq
+d4gM6uG/QobGyoSkC8V4spcdgRJpWXSkfEgpuvY19OZ0Ee0qAGwiVo+SV5VeK0AS
+PAlHKEgsbKWNwC3CHSBfwQ/7e9QHBAxdAKdMVFT599GzJEjw1FWDIHNiZQ6XaS80
+wTSDFL2e9QUAwPr9vhcdTRNrFdCj66IoDOhUjaKQ0KosDyw8b5Rl2fAhEfrOHEIT
+0Tvl0ybLRxxucovlP4+NEpV5YoorXMgRSggeplzyc8I+LgDOii+tTXFe8+sxG52S
+PoIkSvmXnQj7lbGaptU7lft1jthoxRCws/GjwEG0uc1qYNjoBuw6YiEWscHLWfiS
+fVTPoXhR0FrkWIFdrYDEpHClXb8dLPe5hht6mpgqcE2tJLdHj2ktdSJLsbeo0qYZ
+hqnHHWLqsb2Yt7VmN2Lwz8tfvFoL1n//r02RVfN2Q5OgMQGSwHeoPlMPDtix6ezH
+qu0g0nuJ+dUL
 -----END AGE ENCRYPTED FILE-----

From e315387b30c3b1a0ea117f5be26f9d23fc7b7baa Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 11:20:13 +0000
Subject: [PATCH 890/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 701cd911..36148b01 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -159,6 +159,7 @@ brew "micro"
 brew "microsocks"
 brew "minicom"
 brew "mmark"
+brew "mole"
 brew "mplayer"
 brew "mtr"
 brew "mypy"

From 04a5b4d23facbc3a1a12a5ae80a958840e8dcdc9 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 11:25:42 +0000
Subject: [PATCH 891/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 36148b01..64f25e0a 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -238,6 +238,7 @@ brew "tree"
 brew "uv"
 brew "vim"
 brew "wget"
+brew "witr"
 brew "xpdf"
 brew "yaegi"
 brew "yamlfmt"

From 49d6c40f423560c372af03cade32cdfcc6cc3280 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 12:10:32 +0000
Subject: [PATCH 892/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 64f25e0a..6081a345 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -217,6 +217,7 @@ brew "sccache"
 brew "semgrep"
 brew "shellcheck"
 brew "skate"
+brew "snitch"
 brew "socat"
 brew "sonar-scanner"
 brew "sphinx-doc"

From 8ea83d1eac74cac72bfbf314a81915ec76a2357f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 12:10:53 +0000
Subject: [PATCH 893/973] Don't copy Brewfile to home dir.

---
 chezmoi/.chezmoiignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore
index cd69af50..9cac80c9 100644
--- a/chezmoi/.chezmoiignore
+++ b/chezmoi/.chezmoiignore
@@ -1,3 +1,4 @@
 key.txt.age
 identity.txt
 crontab
+Brewfile

From 68f3b4d36da8a9f40c1c60989a083b2b5774b39b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 12:11:11 +0000
Subject: [PATCH 894/973] Ensure script runs whenever Brewfile changes.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index 1ca39a24..8683a133 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -1,6 +1,9 @@
 {{ if eq .chezmoi.os "darwin" -}}
 #!/bin/bash
 
+# Hash of the Brewfile, used to determine if we need to rerun this script.
+# Brewfile hash: {{ include "Brewfile" | sha256sum }}
+
 # Install packages via Homebrew Bundle.
 # NOTE: --no-upgrade to avoid upgrading existing packages, which can fail in the case of MAS apps.
 # NOTE: ignore errors, since MAS often fails.

From efa9fc52c23202d6f12ba39163a45a93aca61fa2 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 6 Jan 2026 12:11:26 +0000
Subject: [PATCH 895/973] Use Brewfile from chezmoi directory.

---
 chezmoi/run_onchange_darwin-install-packages.sh.tmpl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
index 8683a133..26ac431c 100644
--- a/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
+++ b/chezmoi/run_onchange_darwin-install-packages.sh.tmpl
@@ -8,5 +8,5 @@
 # NOTE: --no-upgrade to avoid upgrading existing packages, which can fail in the case of MAS apps.
 # NOTE: ignore errors, since MAS often fails.
 set -o pipefail
-brew bundle --no-upgrade --file=$HOME/Brewfile || true
+brew bundle --no-upgrade --file={{ joinPath .chezmoi.sourceDir "Brewfile" | quote }} || true
 {{ end -}}

From 2a9e161d11921cf885eaebb1a29a5a19c5c4ba4e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 13 Jan 2026 13:25:02 +0000
Subject: [PATCH 896/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 6081a345..d6e6a233 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -261,6 +261,7 @@ cask "alt-tab"
 cask "bartender"
 cask "beardedspice"
 cask "bitwarden"
+cask "claude"
 cask "doll"
 cask "drawio"
 cask "firefox"

From 3b188e8fb30bab6c58d26b95d354b6fd5d40831f Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 23 Jan 2026 11:48:00 +0000
Subject: [PATCH 897/973] Update Brewfile.

---
 chezmoi/Brewfile | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index d6e6a233..37aeb7bf 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -9,6 +9,7 @@ tap "github/gh"
 tap "julien-cpsn/atac"
 tap "messense/macos-cross-toolchains"
 tap "romkatv/powerlevel10k"
+tap "steipete/tap"
 tap "taiki-e/tap"
 brew "a2ps"
 brew "adr-tools"
@@ -75,21 +76,21 @@ brew "dotter"
 brew "doxygen"
 brew "eza"
 brew "fd"
+brew "sdl2"
+brew "x265"
+brew "ffmpeg"
+brew "figlet"
+brew "fish"
 brew "fribidi"
+brew "fzf"
 brew "libidn2"
 brew "p11-kit"
 brew "unbound"
 brew "gnutls"
 brew "leptonica"
-brew "sdl2"
 brew "tesseract"
-brew "x265"
 brew "xvid"
 brew "zeromq"
-brew "ffmpeg"
-brew "figlet"
-brew "fish"
-brew "fzf"
 brew "get_iplayer"
 brew "gh"
 brew "gimme-aws-creds"
@@ -301,6 +302,7 @@ cask "notunes"
 cask "obsidian"
 cask "opencode-desktop"
 cask "rectangle"
+cask "steipete/tap/repobar"
 cask "sublime-merge@dev"
 cask "sublime-text@dev"
 cask "temurin"

From fe1774053cdbc61cb79be44b4fd00329f79bad65 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 23 Jan 2026 12:13:57 +0000
Subject: [PATCH 898/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 37aeb7bf..ec7f9274 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -262,6 +262,7 @@ cask "alt-tab"
 cask "bartender"
 cask "beardedspice"
 cask "bitwarden"
+cask "block-goose"
 cask "claude"
 cask "doll"
 cask "drawio"

From cc6ab5d435dc0d4927ccf76005cffb16125a18c3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 23 Jan 2026 12:18:43 +0000
Subject: [PATCH 899/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index ec7f9274..d299937f 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -46,6 +46,7 @@ brew "harfbuzz"
 brew "bazel"
 brew "bitwarden-cli"
 brew "black"
+brew "block-goose-cli"
 brew "brew-cask-completion"
 brew "bzip2"
 brew "cargo-binstall"

From 01587b56658a23ebe966be400b3dddd44fdb68da Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 29 Jan 2026 12:57:17 +0000
Subject: [PATCH 900/973] Update Brewfile.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index d299937f..2e6529ae 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -235,6 +235,7 @@ brew "tflint"
 brew "tfsec"
 brew "tig"
 brew "tldr"
+brew "tmux"
 brew "todo-txt"
 brew "tokei"
 brew "tree"

From b758d785ca8c4f28881b0e267dce325a1ce2e892 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 29 Jan 2026 16:50:09 +0000
Subject: [PATCH 901/973] Disable invalid tmux options.

---
 chezmoi/dot_tmux.conf | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf
index 09cf1be0..96999002 100644
--- a/chezmoi/dot_tmux.conf
+++ b/chezmoi/dot_tmux.conf
@@ -188,25 +188,25 @@ bind M \
 # default statusbar colors
 set-option -g status-bg brightgreen
 set-option -g status-fg white
-set-option -g status-attr default
+# set-option -g status-attr default
 
 # default window title colors
-set-window-option -g window-status-fg brightcyan
-set-window-option -g window-status-bg default
-#set-window-option -g window-status-attr dim
+# set-window-option -g window-status-fg brightcyan
+# set-window-option -g window-status-bg default
+# set-window-option -g window-status-attr dim
 
 # active window title colors
-set-window-option -g window-status-current-fg white
-set-window-option -g window-status-current-bg blue
-#set-window-option -g window-status-current-attr bright
+# set-window-option -g window-status-current-fg white
+# set-window-option -g window-status-current-bg blue
+# set-window-option -g window-status-current-attr bright
 
 # pane border
-set-option -g pane-border-fg brightgreen
-set-option -g pane-active-border-fg red
+# set-option -g pane-border-fg brightgreen
+# set-option -g pane-active-border-fg red
 
 # message text
-set-option -g message-bg black
-set-option -g message-fg red
+# set-option -g message-bg black
+# set-option -g message-fg red
 
 # pane number display
 set-option -g display-panes-active-colour red

From afd84ccafccf36162c12429b2b6624b8589637d3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 30 Jan 2026 12:38:53 +0000
Subject: [PATCH 902/973] Update tmux config.

---
 chezmoi/dot_tmux.conf | 176 ++++++------------------------------------
 1 file changed, 22 insertions(+), 154 deletions(-)

diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf
index 96999002..4d9208fa 100644
--- a/chezmoi/dot_tmux.conf
+++ b/chezmoi/dot_tmux.conf
@@ -3,26 +3,19 @@
 ###########################################################################
 # General options
 
-# Set profix to C-a.
-set -g prefix C-b
+# Set prefix to C-a.
 unbind C-a
-
-# Default termtype. If the rcfile sets $TERM, that overrides this value.
-set -g default-terminal screen-256color
-
-# Ring the bell if any background window rang a bell
-set -g bell-action any
-
-# Watch for activity in background windows
-setw -g monitor-activity on
-set -g visual-activity on
+set -g prefix C-a
+bind C-a send-prefix
 
 # scrollback size
 set -g history-limit 10000
 
 # set first window to index 1 (not 0) to map more to the keyboard layout
-set -g base-index 1
-setw -g pane-base-index 1
+#set -g base-index 1
+#setw -g pane-base-index 1
+
+set -g renumber-windows on
 
 # pass through xterm keys
 set -g xterm-keys on
@@ -40,147 +33,46 @@ bind R refresh-client
 
 # reload tmux config
 unbind r
-bind r \
-    source-file ~/.tmux.conf \;\
-    display 'Reloaded tmux config.'
-
-# Use emacs keybindings for tmux commandline input.
-#set -g status-keys emacs
-
-# Use vi keybindings in copy and choice modes
-#setw -g mode-keys vi
+bind r source-file ~/.tmux.conf \; display 'Reloaded tmux config!'
 
 ###########################################################################
 # Window management / navigation
 
-# move between windows
-#bind-key C-h previous-window
-#bind-key C-l next-window
-
 # C-\ (no prefix) to skip to last window we were in before this one
 bind -n "C-\\" last-window
 
 # C-Space (no prefix) to tab to next window
 bind -n C-Space next-window
 
-# C-Shift-Left swaps current window with window to the left.
-bind-key -n C-S-Left swap-window -t -1
+# Keep current path for new window
+bind c new-window -c "#{pane_current_path}"
+
+# Space (with prefix) to toggle between current and previous window
+bind Space last-window
 
-# C-Shift-Right swaps current window with window to the right.
-bind-key -n C-S-Right swap-window -t +1
+# C-Space (with prefix) to toggle between current and previous session
+bind-key C-Space switch-client -l
 
 ###########################################################################
 # Pane management / navigation
 
-# Horizontal splits with s or C-s
-#unbind s
-#unbind C-s
-#bind-key s split-window
-#bind-key C-s split-window
-bind | split-window -h
-
-# Vertical split with v or C-v
-#unbind v
-#unbind C-v
-#bind-key v split-window -h
-#bind-key C-v split-window -h
-bind - split-window -v
+bind-key "|" split-window -h -c "#{pane_current_path}"
+bind-key "\\" split-window -fh -c "#{pane_current_path}"
+bind-key "-" split-window -v -c "#{pane_current_path}"
+bind-key "_" split-window -fv -c "#{pane_current_path}"
 
-# navigation with C-{h,j,k,l} -- NO PREFIX
-# https://gist.github.com/mislav/5189704
-
-#bind -n C-k run-shell 'tmux-vim-select-pane -U'
-#bind -n C-j run-shell 'tmux-vim-select-pane -D'
-#bind -n C-h run-shell 'tmux-vim-select-pane -L'
-#bind -n C-l run-shell 'tmux-vim-select-pane -R'
+bind -r "<" swap-window -d -t -1
+bind -r ">" swap-window -d -t +1
 
 # C-b C-k to passthrough a C-k
 # C-k is consumed for pane navigation but we want it for kill-to-eol
 unbind C-k
 bind C-k send-key C-k
 
-# Pane resize in all four directions using vi bindings.
-# Can use these raw but I map them to Cmd-Opt- in iTerm2.
-# http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
-# Note on a few prefix options: C-a = 0x01, C-b = 0x02, C-g = 0x06
-#bind-key J resize-pane -D
-#bind-key K resize-pane -U
-#bind-key H resize-pane -L
-#bind-key L resize-pane -R
-
-# easily toggle synchronization (mnemonic: e is for echo)
-# sends input to all panes in a given window.
-#bind e setw synchronize-panes on
-#bind E setw synchronize-panes off
-
-###########################################################################
-# Scrollback / pastebuffer
-
-# Vim-style copy/paste
-#unbind [
-#bind y copy-mode
-#unbind p
-#bind p paste-buffer
-#bind -t vi-copy v begin-selection
-#bind -t vi-copy y copy-selection
-#bind -t vi-copy Escape cancel
-
 ###########################################################################
 # Mouse mode
 
-#set -g mode-mouse on
-#set -g mouse-resize-pane on
-#set -g mouse-select-pane on
-#set -g mouse-select-window on
-
-# Toggle mouse on
-bind m \
-    set -g mode-mouse on \;\
-    set -g mouse-resize-pane on \;\
-    set -g mouse-select-pane on \;\
-    set -g mouse-select-window on \;\
-    display 'Mouse: ON'
-
-# Toggle mouse off
-bind M \
-    set -g mode-mouse off \;\
-    set -g mouse-resize-pane off \;\
-    set -g mouse-select-pane off \;\
-    set -g mouse-select-window off \;\
-    display 'Mouse: OFF'
-
-###########################################################################
-# Color scheme (Solarized light)
-
-### default statusbar colors
-##set-option -g status-bg colour231 #base2
-##set-option -g status-fg colour130 #yellow
-##set-option -g status-attr default
-##
-### default window title colors
-##set-window-option -g window-status-fg colour180 #base00
-##set-window-option -g window-status-bg default
-##
-### active window title colors
-##set-window-option -g window-status-current-fg colour196 #orange
-##set-window-option -g window-status-current-bg default
-##
-### pane border
-##set-option -g pane-active-border-fg black
-##set-option -g pane-active-border-bg white
-##set-option -g pane-border-fg brightcyan
-##set-option -g pane-border-bg default
-##
-### message text
-##set-option -g message-bg colour231 #base2
-##set-option -g message-fg colour196 #orange
-##
-### pane number display
-##set-option -g display-panes-active-colour colour20 #blue
-##set-option -g display-panes-colour colour196 #orange
-##
-### clock
-##set-window-option -g clock-mode-colour colour40 #green
+set -g mouse on
 
 ###########################################################################
 # Color scheme (Solarized Dark)
@@ -188,25 +80,6 @@ bind M \
 # default statusbar colors
 set-option -g status-bg brightgreen
 set-option -g status-fg white
-# set-option -g status-attr default
-
-# default window title colors
-# set-window-option -g window-status-fg brightcyan
-# set-window-option -g window-status-bg default
-# set-window-option -g window-status-attr dim
-
-# active window title colors
-# set-window-option -g window-status-current-fg white
-# set-window-option -g window-status-current-bg blue
-# set-window-option -g window-status-current-attr bright
-
-# pane border
-# set-option -g pane-border-fg brightgreen
-# set-option -g pane-active-border-fg red
-
-# message text
-# set-option -g message-bg black
-# set-option -g message-fg red
 
 # pane number display
 set-option -g display-panes-active-colour red
@@ -223,10 +96,5 @@ set -g @plugin 'tmux-plugins/tmux-sensible'
 set -g @plugin 'tmux-plugins/tmux-resurrect'
 set -g @plugin 'tmux-plugins/tmux-continuum'
 
-# Other examples:
-# set -g @plugin 'github_username/plugin_name'
-# set -g @plugin 'git@github.com/user/plugin'
-# set -g @plugin 'git@bitbucket.com/user/plugin'
-
 # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
 run '~/.tmux/plugins/tpm/tpm'

From 04ec1948b2ad5aa3e25fd6defb7e4798c7938e10 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 30 Jan 2026 12:51:12 +0000
Subject: [PATCH 903/973] tmux: display pane info.

---
 chezmoi/dot_tmux.conf | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf
index 4d9208fa..a8a035b3 100644
--- a/chezmoi/dot_tmux.conf
+++ b/chezmoi/dot_tmux.conf
@@ -69,6 +69,10 @@ bind -r ">" swap-window -d -t +1
 unbind C-k
 bind C-k send-key C-k
 
+# Show pane titles at top of borders
+set -g pane-border-status top
+set -g pane-border-format "#P: #{pane_title}"
+
 ###########################################################################
 # Mouse mode
 

From 3776b58e19d7e7df98133bb7536979842863560d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 30 Jan 2026 13:15:38 +0000
Subject: [PATCH 904/973] Stop fish from modifying tmux pane titles.

---
 chezmoi/dot_tmux.conf                               | 11 +++++++++++
 chezmoi/private_dot_config/private_fish/config.fish |  7 +++++++
 2 files changed, 18 insertions(+)

diff --git a/chezmoi/dot_tmux.conf b/chezmoi/dot_tmux.conf
index a8a035b3..5b29688b 100644
--- a/chezmoi/dot_tmux.conf
+++ b/chezmoi/dot_tmux.conf
@@ -69,10 +69,21 @@ bind -r ">" swap-window -d -t +1
 unbind C-k
 bind C-k send-key C-k
 
+###########################################################################
+# Pane titles
+
 # Show pane titles at top of borders
 set -g pane-border-status top
 set -g pane-border-format "#P: #{pane_title}"
 
+# Prevent automatic renaming
+set -g allow-rename off
+set -g automatic-rename off
+
+# Optional: Set a default title format if you want
+#set -g set-titles on
+#set -g set-titles-string "#T"
+
 ###########################################################################
 # Mouse mode
 
diff --git a/chezmoi/private_dot_config/private_fish/config.fish b/chezmoi/private_dot_config/private_fish/config.fish
index 8ef452b7..1001c07f 100644
--- a/chezmoi/private_dot_config/private_fish/config.fish
+++ b/chezmoi/private_dot_config/private_fish/config.fish
@@ -38,3 +38,10 @@ if status is-interactive
 end
 
 test -e {$HOME}/.iterm2/iterm2_shell_integration.fish ; and source {$HOME}/.iterm2/iterm2_shell_integration.fish
+
+# Disable terminal title updates in tmux
+if set -q TMUX
+    function fish_title
+        # Do nothing - don't update title in tmux
+    end
+end

From 1e5e6ff84976ec9c7c89c7017e8735ffaaa6f3a2 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 6 Feb 2026 13:03:22 +0000
Subject: [PATCH 905/973] Prune daily note heading.

---
 obsidian/daily-note.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/obsidian/daily-note.py b/obsidian/daily-note.py
index 3bb0a645..f9291fb0 100755
--- a/obsidian/daily-note.py
+++ b/obsidian/daily-note.py
@@ -130,7 +130,7 @@ def main():
     file_lines.append("")
 
     # Generate agenda
-    file_lines.append("## Agenda (Hyper-D)")
+    file_lines.append("## Agenda")
     print("Running daymd...")
     daymd = os.path.join(home, ".local", "share", "chezmoi", "obsidian", "daymd")
     result = subprocess.run([daymd, f"{date_str}"], stdout=subprocess.PIPE)

From ecdec86e71a7391025742b8ead7cf58cc53eba23 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 6 Feb 2026 13:05:26 +0000
Subject: [PATCH 906/973] Update shell vars.

---
 chezmoi/encrypted_private_dot_shellvars.age | 33 +++++++++------------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/chezmoi/encrypted_private_dot_shellvars.age b/chezmoi/encrypted_private_dot_shellvars.age
index e2b4105c..f39c5445 100644
--- a/chezmoi/encrypted_private_dot_shellvars.age
+++ b/chezmoi/encrypted_private_dot_shellvars.age
@@ -1,21 +1,16 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3QmNwcVIwTzczL2FiOHJ3
-NTJuNFJiTFkzc2hjZTVjSjBKM0NVQXhSTFZrCjR6VHhxQjZFTEtMWDR3eU42M2t6
-Q3BkR1lkbjhSakt3MVZGTE1tbUJRekUKLS0tIGF4VTlSeUE2eHVmNmdPMzRocHRo
-N2JNUkM3UDdXOStlTWFJSm9VT3ZwYVEKp0lcZd2H0OE8WsClk8sm7wUzMPe9tIei
-+YxJu3deDLI+9AoO/QWKIydyiPUa5EI10Zs6B3Dk2HxkRezr429Mu4t1oeEyIz+S
-KBUYqm8B0i25bHhDpSIM01B0LBCFPODCRoZeD+OTYRN4UWYt5zkvDCPqIgA441Oc
-1UI1EhHq00EzwhHp4a6zhJlYa5CEWOkO6TgUC3hPYoYEe9IvazRtLLYBsCVVlEbp
-zhxSCbdz4d8oFqlM/q0sEPi8b+aVOOuOTHbzX46Eoo0l9D3tdHhqzPMizbD/cI/t
-YWxtBY43HVyAovv1QVk3HKIZxGDA6/CsVfhA2KgVaCZAo1JTsNshislPC0FnlxSn
-V+Weud3EPadc9ZsAo62dKhrpGqLZP5idbXgJi0lcdAzbHayL2MW659QmqUuCyh9X
-TPvDL7W3mEIAc8iraWqfKts6IfQ7OCs03ndMlyC5nMVbVDFYVy8ns75oV7+GTlsq
-d4gM6uG/QobGyoSkC8V4spcdgRJpWXSkfEgpuvY19OZ0Ee0qAGwiVo+SV5VeK0AS
-PAlHKEgsbKWNwC3CHSBfwQ/7e9QHBAxdAKdMVFT599GzJEjw1FWDIHNiZQ6XaS80
-wTSDFL2e9QUAwPr9vhcdTRNrFdCj66IoDOhUjaKQ0KosDyw8b5Rl2fAhEfrOHEIT
-0Tvl0ybLRxxucovlP4+NEpV5YoorXMgRSggeplzyc8I+LgDOii+tTXFe8+sxG52S
-PoIkSvmXnQj7lbGaptU7lft1jthoxRCws/GjwEG0uc1qYNjoBuw6YiEWscHLWfiS
-fVTPoXhR0FrkWIFdrYDEpHClXb8dLPe5hht6mpgqcE2tJLdHj2ktdSJLsbeo0qYZ
-hqnHHWLqsb2Yt7VmN2Lwz8tfvFoL1n//r02RVfN2Q5OgMQGSwHeoPlMPDtix6ezH
-qu0g0nuJ+dUL
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYZ2hDL2ltYU10QVBHM2lH
+WnhuaDkzSkFmRlpIUlVsOEU5VFVUeUtJMVg0CjZUWi92SFFxejlERlRuMzI5SjVX
+NVFNMnNsVDhKUTBvTlNGblVHT090OFkKLS0tIFNRUGxISW1FeU1jNURhTnBidndr
+MUJmN3MzL25KSmpSd2QrZFhQQXhVdDAKZY4uLob93e3LfBTPTJLK9+G6zLim0t2O
+pEVOR/k0R9f+GnV2k74ZnHpScfxHB3+NYFbXRj7sUa4a7cxcJcz/imgIL2IlQHXu
+44Wg8eEEYkAqOAr231x2ofeV6LEp4DzBii9dBvs31GGk8HdY5uMb8BzLUbwKv3jT
+8y+FTB6TComEBKVI2+SFgOf0MeNBI5ro0V7UGjHFXa42GssEUiFrqRTtlI+w4eSw
+iIphjxNDDxVrqs1HoMiAc+tsTn2v9roY2lHvcfnA5Z/1TMRYuxxV1drRN7Ebwoz1
+ILgWzjgTK4wZfIfo8yb80aB9jKtRTQJ3c+QRubf4aRi1XOOWMXKVR21ZJ9NEi842
+R0RjcN5eQszDjSZmvoE7YOzCy2OSA/EoLBAzLSnhMooAeXmoqRWzdp7pPKFjTKD8
+OSM+ynjIg+TPTcl8TsCkP95naKFH3xgl+Rtk5cESpRMgGuD+qr9y1IJHc1i+PEzo
+ZjdWdmT1WDq96VzC2LQKIKKEI+Rskcg07tlTacYCk91I8A+VdnC3LvHkpdUdX9dY
+kdeJOaKuPW2xkTJCcNCot50hOYpFg4vV3pP082rOb0DdhpksPC7RWBQio6bENmWM
+xrWZTmECVQppY8elOu+Bwa+ZJjK+oQX6Uim+Ukg1yyEO6NDWsWnCoA==
 -----END AGE ENCRYPTED FILE-----

From 97bd8ba41f575c8660db9bdb5d3d28498c1cfb8c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 10 Feb 2026 11:56:09 +0000
Subject: [PATCH 907/973] Add ghostty config.

---
 chezmoi/private_dot_config/ghostty/config | 48 +++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 chezmoi/private_dot_config/ghostty/config

diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config
new file mode 100644
index 00000000..2a909682
--- /dev/null
+++ b/chezmoi/private_dot_config/ghostty/config
@@ -0,0 +1,48 @@
+# This is the configuration file for Ghostty.
+#
+# This template file has been automatically created at the following
+# path since Ghostty couldn't find any existing config files on your system:
+#
+#   /Users/james.lawton/Library/Application Support/com.mitchellh.ghostty/config
+#
+# The template does not set any default options, since Ghostty ships
+# with sensible defaults for all options. Users should only need to set
+# options that they want to change from the default.
+#
+# Run `ghostty +show-config --default --docs` to view a list of
+# all available config options and their default values.
+#
+# Additionally, each config option is also explained in detail
+# on Ghostty's website, at https://ghostty.org/docs/config.
+
+# Config syntax crash course
+# ==========================
+# # The config file consists of simple key-value pairs,
+# # separated by equals signs.
+# font-family = Iosevka
+# window-padding-x = 2
+#
+# # Spacing around the equals sign does not matter.
+# # All of these are identical:
+# key=value
+# key= value
+# key =value
+# key = value
+#
+# # Any line beginning with a # is a comment. It's not possible to put
+# # a comment after a config option, since it would be interpreted as a
+# # part of the value. For example, this will have a value of "#123abc":
+# background = #123abc
+#
+# # Empty values are used to reset config keys to default.
+# key =
+#
+# # Some config options have unique syntaxes for their value,
+# # which is explained in the docs for that config option.
+# # Just for example:
+# resize-overlay-duration = 4s 200ms
+
+# Quick terminal:
+keybind = global:cmd+grave_accent=toggle_quick_terminal
+quick-terminal-position = bottom
+

From 2736f69c57b1b21726c03d6dbaa5007480838cad Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 10 Feb 2026 12:07:09 +0000
Subject: [PATCH 908/973] Add ghostty shell integration for SSH.

---
 chezmoi/private_dot_config/ghostty/config | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config
index 2a909682..cd410862 100644
--- a/chezmoi/private_dot_config/ghostty/config
+++ b/chezmoi/private_dot_config/ghostty/config
@@ -46,3 +46,5 @@
 keybind = global:cmd+grave_accent=toggle_quick_terminal
 quick-terminal-position = bottom
 
+# Shell integration for SSH:
+shell-integration-features = ssh-terminfo,ssh-env

From 454757d95305a8012c3ec4efb482f954ed4f33cd Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 11 Feb 2026 17:17:25 +0000
Subject: [PATCH 909/973] Update Brewfile.

---
 chezmoi/Brewfile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 2e6529ae..eef98e29 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -57,7 +57,6 @@ brew "clang-format"
 brew "cloc"
 brew "cmake"
 brew "coreutils"
-brew "rtmpdump"
 brew "curl"
 brew "d2"
 brew "dateutils"
@@ -212,6 +211,7 @@ brew "rclone"
 brew "repo"
 brew "rlwrap"
 brew "robot-framework"
+brew "rtmpdump"
 brew "ruff"
 brew "rustup"
 brew "scc"
@@ -236,6 +236,7 @@ brew "tfsec"
 brew "tig"
 brew "tldr"
 brew "tmux"
+brew "tmuxinator"
 brew "todo-txt"
 brew "tokei"
 brew "tree"
@@ -248,6 +249,7 @@ brew "yaegi"
 brew "yamlfmt"
 brew "yamllint"
 brew "yt-dlp"
+brew "zellij"
 brew "zig"
 brew "zlib"
 brew "zoxide"
@@ -321,7 +323,6 @@ mas "Keynote", id: 409183694
 mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766
 mas "Mattermost", id: 1614666244
-mas "Microsoft PowerPoint", id: 462062816
 mas "Notability", id: 360593530
 mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473
@@ -348,7 +349,6 @@ vscode "donjayamanne.githistory"
 vscode "editorconfig.editorconfig"
 vscode "fabiospampinato.vscode-diff"
 vscode "giovdk21.vscode-sublime-merge"
-vscode "github.copilot"
 vscode "github.copilot-chat"
 vscode "github.github-vscode-theme"
 vscode "github.vscode-pull-request-github"

From 0595d6c8dc637044458aaa3b542c3582a5dede56 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 10 Mar 2026 11:36:17 +0000
Subject: [PATCH 910/973] Add opencode config.

---
 .../private_dot_config/opencode/opencode.json    | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 chezmoi/private_dot_config/opencode/opencode.json

diff --git a/chezmoi/private_dot_config/opencode/opencode.json b/chezmoi/private_dot_config/opencode/opencode.json
new file mode 100644
index 00000000..4ec6a5d0
--- /dev/null
+++ b/chezmoi/private_dot_config/opencode/opencode.json
@@ -0,0 +1,16 @@
+{
+  "$schema": "https://opencode.ai/config.json",
+  "formatter": false
+  "permission": {
+    "*": "ask",
+    "bash": {
+      "*": "ask",
+      "rm *": "deny",
+      "grep *": "allow"
+    },
+    "edit": {
+      "*": "ask",
+      "*.md": "allow"
+    }
+  }
+}

From 2c7806856f5216054be963ec28f1711074f780a3 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 10 Mar 2026 11:38:59 +0000
Subject: [PATCH 911/973] Add zed config.

---
 .../zed/conversations/.keep                   |  0
 chezmoi/private_dot_config/zed/keymap.json    | 32 ++++++
 .../prompts/prompts-library-db.0.mdb/.keep    |  0
 chezmoi/private_dot_config/zed/settings.json  | 98 +++++++++++++++++++
 chezmoi/private_dot_config/zed/themes/.keep   |  0
 5 files changed, 130 insertions(+)
 create mode 100644 chezmoi/private_dot_config/zed/conversations/.keep
 create mode 100644 chezmoi/private_dot_config/zed/keymap.json
 create mode 100644 chezmoi/private_dot_config/zed/prompts/prompts-library-db.0.mdb/.keep
 create mode 100644 chezmoi/private_dot_config/zed/settings.json
 create mode 100644 chezmoi/private_dot_config/zed/themes/.keep

diff --git a/chezmoi/private_dot_config/zed/conversations/.keep b/chezmoi/private_dot_config/zed/conversations/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/private_dot_config/zed/keymap.json b/chezmoi/private_dot_config/zed/keymap.json
new file mode 100644
index 00000000..cf763210
--- /dev/null
+++ b/chezmoi/private_dot_config/zed/keymap.json
@@ -0,0 +1,32 @@
+// Zed keymap
+//
+// For information on binding keys, see the Zed
+// documentation: https://zed.dev/docs/key-bindings
+//
+// To see the default key bindings run `zed: open default keymap`
+// from the command palette.
+[
+  {
+    "bindings": {
+      "cmd-y": "editor::Redo"
+    }
+  },
+  {
+    "context": "!ContextEditor > Editor && mode == full",
+    "bindings": {
+      "cmd-i": "assistant::InlineAssist"
+    }
+  },
+  {
+    "context": "Workspace",
+    "bindings": {
+      // "shift shift": "file_finder::Toggle"
+    }
+  },
+  {
+    "context": "Editor && vim_mode == insert && !menu",
+    "bindings": {
+      // "j k": "vim::SwitchToNormalMode"
+    }
+  }
+]
diff --git a/chezmoi/private_dot_config/zed/prompts/prompts-library-db.0.mdb/.keep b/chezmoi/private_dot_config/zed/prompts/prompts-library-db.0.mdb/.keep
new file mode 100644
index 00000000..e69de29b
diff --git a/chezmoi/private_dot_config/zed/settings.json b/chezmoi/private_dot_config/zed/settings.json
new file mode 100644
index 00000000..f88acd5c
--- /dev/null
+++ b/chezmoi/private_dot_config/zed/settings.json
@@ -0,0 +1,98 @@
+// Zed settings
+//
+// For information on how to configure Zed, see the Zed
+// documentation: https://zed.dev/docs/configuring-zed
+//
+// To see all of Zed's default settings without changing your
+// custom settings, run `zed: open default settings` from the
+// command palette (cmd-shift-p / ctrl-shift-p)
+{
+  "edit_predictions": {
+    "provider": "copilot"
+  },
+  "auto_update_extensions": {
+    "groovy": false
+  },
+  "outline_panel": {
+    "dock": "right"
+  },
+  "agent": {
+    "default_profile": "write",
+    "default_model": {
+      "provider": "copilot_chat",
+      "model": "claude-sonnet-4.5"
+    },
+    "always_allow_tool_actions": true,
+    "model_parameters": [],
+    "play_sound_when_agent_done": true
+  },
+  "buffer_font_size": 16,
+  "colorize_brackets": true,
+  "context_servers": {
+    // "atlassian": {
+    //   "source": "custom",
+    //   "command": "npx",
+    //   "args": ["-y", "mcp-remote", "https://mcp.atlassian.com/v1/sse"],
+    //   "env": {}
+    // }
+  },
+  "file_types": {
+    "Make": ["Makefile.include", "Makefile.env"],
+    "Groovy": ["Jenkinsfile", "Jenkinsfile.*"]
+  },
+  "git": {
+    "blame": {
+      "show_avatar": true
+    }
+  },
+  "languages": {
+    "JSON": {
+      "format_on_save": "off"
+    },
+    "Markdown": {
+      // Wrap text according to the previously defined preferred line length.
+      "soft_wrap": "preferred_line_length",
+      // do not remove any trailing whitespace since line breaks in
+      // lists (without adding a new punctuation) rely on whitespaces.
+      "remove_trailing_whitespace_on_save": false
+    },
+    "Python": {
+      "language_servers": ["ruff"],
+      "format_on_save": "on",
+      "formatter": [
+        { "code_action": "source.organizeImports.ruff" },
+        { "code_action": "source.fixAll.ruff" },
+        {
+          "language_server": {
+            "name": "ruff"
+          }
+        }
+      ]
+    },
+    "YAML": {
+      "prettier": {
+        "allowed": true
+      }
+    }
+  },
+  // Set a preferred line lenth, showing a vertical gutter bar
+  "preferred_line_length": 160,
+  // Decrease the horizontal indent size of files & folders in the project
+  // panel to avoid horizontal scrolling
+  "project_panel": {
+    "indent_size": 16
+  },
+  // Show file type icons in the tab bar. Also color them according to the git status.
+  "tabs": {
+    "file_icons": true,
+    "git_status": true
+  },
+  "theme": {
+    "mode": "system",
+    "light": "One Light",
+    "dark": "One Dark Pro"
+  },
+  "terminal": { "font_family": "MesloLGS NF" },
+  "ui_font_size": 16,
+  "use_system_window_tabs": true
+}
diff --git a/chezmoi/private_dot_config/zed/themes/.keep b/chezmoi/private_dot_config/zed/themes/.keep
new file mode 100644
index 00000000..e69de29b

From 66fc8083d00d44122547e1baa934f920ea5c7469 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 10 Mar 2026 12:08:19 +0000
Subject: [PATCH 912/973] Set path for Obsidian CLI.

---
 chezmoi/private_dot_config/private_fish/conf.d/paths.fish | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
index c4898aec..74b245cb 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/paths.fish
@@ -4,3 +4,4 @@ fish_add_path --global --move --path /opt/homebrew/opt/gnu-sed/libexec/gnubin
 fish_add_path --global --move --path /opt/homebrew/opt/make/libexec/gnubin
 fish_add_path --global --move --path /opt/homebrew/opt/llvm/bin
 fish_add_path --global --move --path $HOME/bin $HOME/.cargo/bin $GOPATH/bin
+fish_add_path --global --move --path /Applications/Obsidian.app/Contents/MacOS

From 9d9e362de60f3b6386db700047c8a6069ac61ecb Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 25 Feb 2026 16:26:11 +0000
Subject: [PATCH 913/973] Add opencode config.

---
 chezmoi/private_dot_config/opencode/.gitignore | 3 +++
 chezmoi/private_dot_config/opencode/.keep      | 0
 2 files changed, 3 insertions(+)
 create mode 100644 chezmoi/private_dot_config/opencode/.gitignore
 create mode 100644 chezmoi/private_dot_config/opencode/.keep

diff --git a/chezmoi/private_dot_config/opencode/.gitignore b/chezmoi/private_dot_config/opencode/.gitignore
new file mode 100644
index 00000000..ba59d83a
--- /dev/null
+++ b/chezmoi/private_dot_config/opencode/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+package.json
+bun.lock
diff --git a/chezmoi/private_dot_config/opencode/.keep b/chezmoi/private_dot_config/opencode/.keep
new file mode 100644
index 00000000..e69de29b

From 000aa97349cf9ee9a17c720db66248b7b54c303c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 11 Mar 2026 18:47:57 +0000
Subject: [PATCH 914/973] Add Claude config files.

---
 .../dot_claude/encrypted_settings.json.age    |  12 +
 chezmoi/encrypted_dot_claude.json.age         | 673 ++++++++++++++++++
 .../private_Claude/encrypted_config.json.age  |  15 +
 3 files changed, 700 insertions(+)
 create mode 100644 chezmoi/dot_claude/encrypted_settings.json.age
 create mode 100644 chezmoi/encrypted_dot_claude.json.age
 create mode 100644 chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age

diff --git a/chezmoi/dot_claude/encrypted_settings.json.age b/chezmoi/dot_claude/encrypted_settings.json.age
new file mode 100644
index 00000000..c5fd6651
--- /dev/null
+++ b/chezmoi/dot_claude/encrypted_settings.json.age
@@ -0,0 +1,12 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhZmRZMktvSW1vWWRoUGFp
+bGlOaTdIWkJjT1BqSk5idjZrVE9QMEY3MlNnCkZxMkpKMGxBZndXTGUvdXZqa2J0
+ME5LYVBjOGVuZ0llQWZIcUNRbWgrMmsKLS0tIDVUOVVRVGxqN1k1K2VqNmxmSHpH
+VHBmRW9YZmFxT3hzYVA5ZEoxNzFRVFEK26ujznkWMWGzS+M1Z070favp601+vNPm
+LNBFPrXC7z7W9zKFVapnS9Ld+4y4S522FjD3gE2sJrdjsqirGZNRejzPO4/HZqw6
+Bs43T6aTeaBm5CfMXAdOLYmEye9r//+3O8xKnko5wgdokqsYcrAJliVwsKNtzC/o
+FtjEp5kYdvQ9/mfujfNycmeybMGw/itebwRv5P/3z0LkOYoi1fHptxQYZnDnRuFC
+GX16SrL712dmszmMfDrpo1xZTGv68PI/KjknsaHu/+yRFzKjfPpFkzMwJAowZRwq
+iy/OJWRx3597I9i1r34QjxXPuotKkY+WiWoSUQFagGoXhmKVrmUKGo/oT8wLYxog
+pOBoKzs4q2hxxI5C
+-----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
new file mode 100644
index 00000000..bc547c02
--- /dev/null
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -0,0 +1,673 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2eUVqREZMcjk0cU1WNDhB
+MDNJU0J3QnBRcTdYbU5vanJaeGM5WlVnSFNJClhNTUVubml1QmpBRnRjZnVEQ3h1
+RGNwbHNhMGVKbHhKK01sRTE3M1BxcVkKLS0tIGJlWldubXpONEJLR1ZhVm5Sb3c1
+Z2orUk1McWNYL2JtUjV0MFBHc2t0T0UKkyc/GmKgwK1uLb3lp30BvD8eP0Zi8lCu
+P7+Q6C/UzEEoLkyzCdI55jbvKA+aaYir5+VZW2lErf5wdX69Y/sD/muaPWtI7k5k
+dMDZwnMoOIpwTvqW/UE1Ir8G3DzqrpkhNRAxhbSxwuQMb72ca//7rp7Hm+RdD5cV
+3nq7iSoZbbpaowY3I95ZDiPWdgDvNEZ2Myqxmj6d6VgDiPp+l7VzRTRmV3FjnufM
+4TjrZ2Y6fGd2xXvciFmf0vz4viLS4bTnus+fB1djkUKfONnO6FaBaXfz7d1wY0OH
+SivdyrpT4K9Q+YcDDYRsA0Jh98hMy+gjZi8Mx7bNOg9D/HNnDRarPgtwtFJJgmJ7
+suQvAKrXq4aiTOcU+qdBtVmIJTzSZ5abqayscdhob5mdtDKoMHkZEzqjyGer8PDm
+NhNickFHcanIS1NthTv2/vb7E0xwgNlNgRHS9M4LqqMbIz0GgGM7bldYiFulkuBT
+69oTyYqlaE72F5sPgJx6m1QEgs1YYJy8p8Zlp75KVpgI6aegPmnb72Pse9bA/tEh
+Qg+OHqMmsZWKcQx7Oj+V0CpS1zlyV3vE3BXPJBrEz+aDKxYBfi1wlJt8l8qQ7N7z
+W/V7HpLEf09fjfwYu60hP3NSdvbiDabc2QjVEfrsjeanyPkBw2ItUdTgR2q2h+ZJ
+KsTMh6IgnCvsNrpmc0uIsw8czMoI/sHuJGcShe6W5dvVvHalzoBaQQT/vgKi/Gkq
+5QpBVC8dI3dygJ3O4EgVzNDyTiCINlFv0Y5ijGV1lABI9uE+svCV3ReZlk4+4/9q
+K18SvdHhcIlZpYZIMShwRduYkXwauGNNqiNZPz6RwiE4bxAPy+h6za3NpZyh9ZOf
+qDqZrHIap3yEuPz4OF8HxST+B0O8tglnyi4o5lDIG7OO4/teuAip4RHUlpp2gBqZ
+PnU2rfmtY1W/3wj40WJZJwfPbthaYl23b4cz0Q8yIPXu9LMqbi93CBMJVoHXUQsH
+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
+xeCLSJbshgETtg==
+-----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
new file mode 100644
index 00000000..769c4b07
--- /dev/null
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -0,0 +1,15 @@
+-----BEGIN AGE ENCRYPTED FILE-----
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5ZytKRFJYcXdOKzBCdGJ5
+eTZMaEt0S0ZkR3ZKKzB4VUFWSGJFUWRHRHpZCnVJaEhkTmpZNWlYMmdxMFVrNnJZ
+YzJ5dTA2dGs2T0xnRUEwTjB2RElIdTQKLS0tIFVVaGNVMXRqQU91d0ZhVFEvUm5t
+SkFlYVZTTkQ1VnV6eUErQzhHZlRFUEUKNPeKzMvs45W0O5zWALOmGJuFIWeawyUy
+0i6NkCd9Y1pWJZtVEmEIqcdjtzMwi2jWM/t1ywh02puY5m8CmqIi2vvxuNipIvwD
+LbGZP1masFUj72wilRB2VDJLrRp9+LknBZTHxfx0bRqpK0LuCDX4V06eN3AmoEG1
+5LxTqO8hhCwi3QC4rdT+zrWNW0SWloZcQwFiWUeLBzdDoHEfLMAcAOtEzesvoZWN
+vS3XLo09Nz7cU64wb/D53oPmch/Kw/G1uV+/OIVHRKL0Bryjpf9aTMfX6bX6lu0C
+RHC/MwWfQ7kQnihaa4b+TT9Y542sfFUfOIefRvhG20JASPQ4outCpHWP3hJNK+pf
+LeKa+Tssp4kdXA/EetuaR2qh5Z27lnf2qkd1NKfH2Xw5KzdZPHsLp7GxF7i2uqgr
+/mTbJbj6c2f681sY+FcmIEmXf8JeYGY3+/h/W08qLU/UIl/zih4KpWcL/RraEGF0
+dwCoI0dJ7vGHgM9atJRBrWmSqXXZtDwZwYIajOJVbTcFAxwCSrzBRp4cghtX2au4
+QBHu1vu8gL29NKQemHgQdM3AJCo9t/+JjzCx/8Klrl2jtTKQD38edeTLxA8=
+-----END AGE ENCRYPTED FILE-----

From e6499dfd8ef4f92fc554269a232f812004b32a85 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 12 Mar 2026 20:12:38 +0000
Subject: [PATCH 915/973] Update Claude configs.

---
 .../dot_claude/encrypted_settings.json.age    | 20 +++++++-------
 .../private_Claude/encrypted_config.json.age  | 26 +++++++++----------
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/chezmoi/dot_claude/encrypted_settings.json.age b/chezmoi/dot_claude/encrypted_settings.json.age
index c5fd6651..1ce62c40 100644
--- a/chezmoi/dot_claude/encrypted_settings.json.age
+++ b/chezmoi/dot_claude/encrypted_settings.json.age
@@ -1,12 +1,12 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhZmRZMktvSW1vWWRoUGFp
-bGlOaTdIWkJjT1BqSk5idjZrVE9QMEY3MlNnCkZxMkpKMGxBZndXTGUvdXZqa2J0
-ME5LYVBjOGVuZ0llQWZIcUNRbWgrMmsKLS0tIDVUOVVRVGxqN1k1K2VqNmxmSHpH
-VHBmRW9YZmFxT3hzYVA5ZEoxNzFRVFEK26ujznkWMWGzS+M1Z070favp601+vNPm
-LNBFPrXC7z7W9zKFVapnS9Ld+4y4S522FjD3gE2sJrdjsqirGZNRejzPO4/HZqw6
-Bs43T6aTeaBm5CfMXAdOLYmEye9r//+3O8xKnko5wgdokqsYcrAJliVwsKNtzC/o
-FtjEp5kYdvQ9/mfujfNycmeybMGw/itebwRv5P/3z0LkOYoi1fHptxQYZnDnRuFC
-GX16SrL712dmszmMfDrpo1xZTGv68PI/KjknsaHu/+yRFzKjfPpFkzMwJAowZRwq
-iy/OJWRx3597I9i1r34QjxXPuotKkY+WiWoSUQFagGoXhmKVrmUKGo/oT8wLYxog
-pOBoKzs4q2hxxI5C
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrQkxXR3poakNKbVZsbDlH
+MkRwdWNjRE1UZWE2MXIwaWhzRUdpTnZtOUYwClJzZzRxdHVqUHZwRVFEaW1QNTRt
+d1dhbE1vY0xCeEU0SGJtcHltbjJsM28KLS0tIHJHbXVBUkJWNGJyTjdhNlMyd3VL
+aDVPbXozSWNrV2IvWGowUXhybXdIenMK40AqnXlBrRpTANsXEt0Ls1rWJYgi5NhM
+Z25VmWR6+YD3OYIqYWylDWYGFIDW1S8LUqDUlnEqJsXw/i/yxdkJ6MIGof0nAJNY
+GbQ2WBObUpkj7pgKGmNQBZEOiSVZMhC/1vUhKmOUXzPesSi3TNA1HV23re3o6oaH
+0soKcOXVgCvFMS0wORFm7gfOfGtDHzhQL3/1CmRy1vxe1WSmliYYoAnGo+TW4V20
+n5uT4Ha/m53q72O3DQRQj2JB1GMDN1VU5KXl00ffir0LVPvORkjzGhUXWpau+hcF
+JKwG4GTMeEq0oaTQYJKBarEhKE27yj66c5t3I9RbRDxgtwC6PqNcQfC3XdfL5bnC
+GqHYWk1LZZZj6rl0bug=
 -----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 769c4b07..6b67df95 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,15 +1,15 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5ZytKRFJYcXdOKzBCdGJ5
-eTZMaEt0S0ZkR3ZKKzB4VUFWSGJFUWRHRHpZCnVJaEhkTmpZNWlYMmdxMFVrNnJZ
-YzJ5dTA2dGs2T0xnRUEwTjB2RElIdTQKLS0tIFVVaGNVMXRqQU91d0ZhVFEvUm5t
-SkFlYVZTTkQ1VnV6eUErQzhHZlRFUEUKNPeKzMvs45W0O5zWALOmGJuFIWeawyUy
-0i6NkCd9Y1pWJZtVEmEIqcdjtzMwi2jWM/t1ywh02puY5m8CmqIi2vvxuNipIvwD
-LbGZP1masFUj72wilRB2VDJLrRp9+LknBZTHxfx0bRqpK0LuCDX4V06eN3AmoEG1
-5LxTqO8hhCwi3QC4rdT+zrWNW0SWloZcQwFiWUeLBzdDoHEfLMAcAOtEzesvoZWN
-vS3XLo09Nz7cU64wb/D53oPmch/Kw/G1uV+/OIVHRKL0Bryjpf9aTMfX6bX6lu0C
-RHC/MwWfQ7kQnihaa4b+TT9Y542sfFUfOIefRvhG20JASPQ4outCpHWP3hJNK+pf
-LeKa+Tssp4kdXA/EetuaR2qh5Z27lnf2qkd1NKfH2Xw5KzdZPHsLp7GxF7i2uqgr
-/mTbJbj6c2f681sY+FcmIEmXf8JeYGY3+/h/W08qLU/UIl/zih4KpWcL/RraEGF0
-dwCoI0dJ7vGHgM9atJRBrWmSqXXZtDwZwYIajOJVbTcFAxwCSrzBRp4cghtX2au4
-QBHu1vu8gL29NKQemHgQdM3AJCo9t/+JjzCx/8Klrl2jtTKQD38edeTLxA8=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2eW5SN2FHVXgxTU1TOHpa
+ZW12eXBxRWNpNmFyTHhES3h2MEJ1M3ZJNjFjCjVFY20wZC9lVjhLUy9YUnZDTHlO
+VXJ4SFAwZFZxejRpbVJaR3dmOGpzbFEKLS0tIG53RjdXQjdiZnpwOGgxYTRTUW1W
+QzVVYkxUeGxJbXFMb0Nha0tqcGdudmMKD63CBDxgmNFnyXdVe56jVtDsO7wi3tof
+7vPXWLqz/1UmbKph7JhREaLQUa7nZz3ezMbap2CIyGXs+TJvSbO6Da2ednSmYroF
+XU0JJ6UVWBLfKj1TQ7kzBHho6ggR7wp9JCxrOa/NTsoeOTyiFh7qQMO+2aq4D4TF
+eg7ADt2B65vVSqnavJ6qh/HJdkd7XO1HlLJHgU2sOKObGUM07ETGKMHNB/yEvLy/
++js4r8hx74ePsGOXe2Ocv6vgvnE4W40AyE7GvfqA9TIi2FIsSeG1qYmjQ6XlLmpw
+lPL4/X56sxqG1QPtbOLdci1sRyBsppfBYKKYdNyiJjRPAnKhuexZyjD+yiarVT5Y
+0O8oMLDlh22foL/GVlUs3+ZgB5Vw8oL23564UP3Jkkv//Eb1+VDteqSUA8S+PlQQ
+fEoeb1807oF42ohb/K/wLrYGkmDZWAf/865cQewFEKjSnlM0mbCvM6+sfa8fBuYR
+S+fLzH7ITB4wdd2zvBjK05G1+C+ui3y5g3a6Shv+myzj+AbX+aiI1jHU1kzDhZfx
+zg7a50N9iR2DrtW+b18+63KoT05vvKtNIgOAh/M46QqVjiZw82CxJUBVXqw=
 -----END AGE ENCRYPTED FILE-----

From b94d63a28e3cf0e6972f164cbe3558db4053c937 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 13 Mar 2026 13:25:13 +0000
Subject: [PATCH 916/973] Update Claude configs.

---
 chezmoi/encrypted_dot_claude.json.age         | 1377 +++++++++--------
 .../private_Claude/encrypted_config.json.age  |   26 +-
 2 files changed, 719 insertions(+), 684 deletions(-)

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index bc547c02..d834e24c 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,673 +1,708 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2eUVqREZMcjk0cU1WNDhB
-MDNJU0J3QnBRcTdYbU5vanJaeGM5WlVnSFNJClhNTUVubml1QmpBRnRjZnVEQ3h1
-RGNwbHNhMGVKbHhKK01sRTE3M1BxcVkKLS0tIGJlWldubXpONEJLR1ZhVm5Sb3c1
-Z2orUk1McWNYL2JtUjV0MFBHc2t0T0UKkyc/GmKgwK1uLb3lp30BvD8eP0Zi8lCu
-P7+Q6C/UzEEoLkyzCdI55jbvKA+aaYir5+VZW2lErf5wdX69Y/sD/muaPWtI7k5k
-dMDZwnMoOIpwTvqW/UE1Ir8G3DzqrpkhNRAxhbSxwuQMb72ca//7rp7Hm+RdD5cV
-3nq7iSoZbbpaowY3I95ZDiPWdgDvNEZ2Myqxmj6d6VgDiPp+l7VzRTRmV3FjnufM
-4TjrZ2Y6fGd2xXvciFmf0vz4viLS4bTnus+fB1djkUKfONnO6FaBaXfz7d1wY0OH
-SivdyrpT4K9Q+YcDDYRsA0Jh98hMy+gjZi8Mx7bNOg9D/HNnDRarPgtwtFJJgmJ7
-suQvAKrXq4aiTOcU+qdBtVmIJTzSZ5abqayscdhob5mdtDKoMHkZEzqjyGer8PDm
-NhNickFHcanIS1NthTv2/vb7E0xwgNlNgRHS9M4LqqMbIz0GgGM7bldYiFulkuBT
-69oTyYqlaE72F5sPgJx6m1QEgs1YYJy8p8Zlp75KVpgI6aegPmnb72Pse9bA/tEh
-Qg+OHqMmsZWKcQx7Oj+V0CpS1zlyV3vE3BXPJBrEz+aDKxYBfi1wlJt8l8qQ7N7z
-W/V7HpLEf09fjfwYu60hP3NSdvbiDabc2QjVEfrsjeanyPkBw2ItUdTgR2q2h+ZJ
-KsTMh6IgnCvsNrpmc0uIsw8czMoI/sHuJGcShe6W5dvVvHalzoBaQQT/vgKi/Gkq
-5QpBVC8dI3dygJ3O4EgVzNDyTiCINlFv0Y5ijGV1lABI9uE+svCV3ReZlk4+4/9q
-K18SvdHhcIlZpYZIMShwRduYkXwauGNNqiNZPz6RwiE4bxAPy+h6za3NpZyh9ZOf
-qDqZrHIap3yEuPz4OF8HxST+B0O8tglnyi4o5lDIG7OO4/teuAip4RHUlpp2gBqZ
-PnU2rfmtY1W/3wj40WJZJwfPbthaYl23b4cz0Q8yIPXu9LMqbi93CBMJVoHXUQsH
-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
-xeCLSJbshgETtg==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCcEVKbEtycFlhNDFuOU1I
+azQ5NXJUMm10ZTZwOUdCbFkxV280VUtHdnpnCnBMQkFSK3R3T0pYS1ZwSVRxTVQx
+T0VQSnhoWkRqSk9oNldxSzNjVlBWMW8KLS0tIFkyY1o0KzRVWDk1cmk0dllnVDRD
+cCsySVNva2RiN2pwM0kxTTNSRWgvSFkKY1SWPoBc9H3y+OkTvKHlNTTwuT43f52j
+ONntkvdJHw6HaecxaGNL42usxPudpnhR6qjeslecm7PgAj2A/2olYkFqB7d/FW+j
+HkQpQC/S/V7XMOQiw9bqTAPL/KybIqcZzdCf8YB1dZUCw29eWfLRzciQHt3nDgze
+7/ETs7oyj5GaZrRtNpiVo2oRoRNj1bLWcUc8CaCfii95As7e+cFxDswpKuVdNo5f
+HSel3YQT54VoPXOid26agV1p04nFzNcgabQaccJEvyXpTiLP+vemTc4AsBaXexaL
+sAZxGTYrXo+zZJdK+GY9Tc9ZtmS1BW2xHS2jdJm9aIt60sLrTwLcZ0R1HqTS/Z7Z
+fm5ATMDwF7+7G2WQnjtTDK9MfPufZB5jCN+lbYBKJ9r1lvGNA5fhdSM1vT3Up3SO
+TfsJilNhct4k8f+Ds1xUCgGolMegc0ldyineOhafGjuS4Naq5gJuY2EV5aEjqbcx
+yWJmJYEPiPYH5BDCA0szRdyKYLrich42bTQ6wQL38beNZkoBN7O848fLBCprSii1
+2r/O6WyL3RJvsiP95s1i93+YtwEfYjdmYuqKHAfuMXcXAgT5MI8dgXpRH5iHV5tD
+WhYvlWWUzgPiXObC/4TGcOmAlDRM/gNvi7Zf59la/nQWSADe899kqPV6r9xRcGqx
+u3xRC8He6PuTna7I0a541BxdPmcd9EfqnXOESVc8mTCCU7LAMUZke5iPCqBcMSpo
+kJjpjJXpvIKrhjQDlR5r18I9rJgprp1gdEQ1fRGwivfzg+H6oui+PSj1eFTcenai
+QtlGt/kD0020gn+ij7pMHVShlrBiRjKEbfolirbSez1s9Mdx/oQCM9dCpxgkg7Ca
+MmRcECoRyWey03eh4zPV7AEgUo61QsVl9KIx4J7p9HjordVCSmzVMiMSyWmIhnWK
+75Zm67h/lS21K978sUJVuBWIT37DeZJ1zIb9g8DiDeaKuFj5cyeZ9G+uCxo0ToCU
+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
+hx2KyYaxiS41Q0E=
 -----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 6b67df95..6146413b 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,15 +1,15 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2eW5SN2FHVXgxTU1TOHpa
-ZW12eXBxRWNpNmFyTHhES3h2MEJ1M3ZJNjFjCjVFY20wZC9lVjhLUy9YUnZDTHlO
-VXJ4SFAwZFZxejRpbVJaR3dmOGpzbFEKLS0tIG53RjdXQjdiZnpwOGgxYTRTUW1W
-QzVVYkxUeGxJbXFMb0Nha0tqcGdudmMKD63CBDxgmNFnyXdVe56jVtDsO7wi3tof
-7vPXWLqz/1UmbKph7JhREaLQUa7nZz3ezMbap2CIyGXs+TJvSbO6Da2ednSmYroF
-XU0JJ6UVWBLfKj1TQ7kzBHho6ggR7wp9JCxrOa/NTsoeOTyiFh7qQMO+2aq4D4TF
-eg7ADt2B65vVSqnavJ6qh/HJdkd7XO1HlLJHgU2sOKObGUM07ETGKMHNB/yEvLy/
-+js4r8hx74ePsGOXe2Ocv6vgvnE4W40AyE7GvfqA9TIi2FIsSeG1qYmjQ6XlLmpw
-lPL4/X56sxqG1QPtbOLdci1sRyBsppfBYKKYdNyiJjRPAnKhuexZyjD+yiarVT5Y
-0O8oMLDlh22foL/GVlUs3+ZgB5Vw8oL23564UP3Jkkv//Eb1+VDteqSUA8S+PlQQ
-fEoeb1807oF42ohb/K/wLrYGkmDZWAf/865cQewFEKjSnlM0mbCvM6+sfa8fBuYR
-S+fLzH7ITB4wdd2zvBjK05G1+C+ui3y5g3a6Shv+myzj+AbX+aiI1jHU1kzDhZfx
-zg7a50N9iR2DrtW+b18+63KoT05vvKtNIgOAh/M46QqVjiZw82CxJUBVXqw=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNTGpkckh6Yit5ZW81cUNt
+amdEOG5qOG1JMDkyQWZoek1mZDVZeWRvcmlnCmdQaFhXN0YzK2dNNlAvbTFDY0VG
+aElqRWRoWG94S0o4UTVtTnpIQXE3UWsKLS0tIFVxNWZMY1RCYXBRdWcvVkw1ZlBW
+c3h4RXZOWFZHZFk2M0tqYVFBMnovZVEKDncaO1MK5BLXCuNirPWtA4KBBImE1zLV
+N0ABQ5ncMoySgEszK6oHdo2pRYH25Q5MOgtmyhdAYxn4HoPOzD/SdVsQOiJ8/V0b
+Gvut56E0w4ajDCZu2KZmExspp9gHC/FXzaSn57KSMlnPDUAgFYaqAhMYaPpX5gA8
+EPAnMzlIZF4pm9MzOMZmz5ZY9KNePCS6DiETvcaLE2CpWoWo1/7155Mzbp9+y68o
+yawoqMVCZijjyR6i39E5Y3//73HQ+kPqmufL1az83bxIot3ylcU0LaR46BY+ouRC
+VNxexhls7SHGvsW+a2XVTTk+U65mEhuJHdg8Tn88CIlEjjQ4IHYs03j9lRCFNm8c
+rfnQZ66+d27Wqo2g8bwkCRDvm7KZ/tD62U+3ZrZMLxXalV5w3F//153H4Lxe6UdP
+ygEzBJ8MBNFMACUrqBPDS3ziu7WEfKksa0/tiwMGEdZFkSWeBLBhZyIFl2SJgI5F
+zIx+v96/tJunxaudqT92ZCqc4DyeVmwaVhYPKOp1TczdcJepOdAzHoJZcU6qGRSR
+4WMqdVYxRQut/ZZLoHE5OOB8HdidRlmSyJm6Kai+UUFQ6MRFFs0MSsDsaEA=
 -----END AGE ENCRYPTED FILE-----

From 3339f1b44ae6c3891a7a734e3afaf1ca93565aab Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 11:43:45 +0000
Subject: [PATCH 917/973] Update Claude settings.

---
 .../dot_claude/encrypted_settings.json.age    |   20 +-
 chezmoi/encrypted_dot_claude.json.age         | 1489 +++++++++--------
 2 files changed, 793 insertions(+), 716 deletions(-)

diff --git a/chezmoi/dot_claude/encrypted_settings.json.age b/chezmoi/dot_claude/encrypted_settings.json.age
index 1ce62c40..f894a223 100644
--- a/chezmoi/dot_claude/encrypted_settings.json.age
+++ b/chezmoi/dot_claude/encrypted_settings.json.age
@@ -1,12 +1,12 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrQkxXR3poakNKbVZsbDlH
-MkRwdWNjRE1UZWE2MXIwaWhzRUdpTnZtOUYwClJzZzRxdHVqUHZwRVFEaW1QNTRt
-d1dhbE1vY0xCeEU0SGJtcHltbjJsM28KLS0tIHJHbXVBUkJWNGJyTjdhNlMyd3VL
-aDVPbXozSWNrV2IvWGowUXhybXdIenMK40AqnXlBrRpTANsXEt0Ls1rWJYgi5NhM
-Z25VmWR6+YD3OYIqYWylDWYGFIDW1S8LUqDUlnEqJsXw/i/yxdkJ6MIGof0nAJNY
-GbQ2WBObUpkj7pgKGmNQBZEOiSVZMhC/1vUhKmOUXzPesSi3TNA1HV23re3o6oaH
-0soKcOXVgCvFMS0wORFm7gfOfGtDHzhQL3/1CmRy1vxe1WSmliYYoAnGo+TW4V20
-n5uT4Ha/m53q72O3DQRQj2JB1GMDN1VU5KXl00ffir0LVPvORkjzGhUXWpau+hcF
-JKwG4GTMeEq0oaTQYJKBarEhKE27yj66c5t3I9RbRDxgtwC6PqNcQfC3XdfL5bnC
-GqHYWk1LZZZj6rl0bug=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLd1IxekxGVUtka05PcEd5
+OEFyeGtBc21GdlhXOGVJMWFGZWJKVk0zdUZNCmcwRHltWm56cTF2VEcvUWI3WWFK
+alFVZVlWLytNTGw3REJrdGtvcmhHVGsKLS0tIC8rUEVrSENSeXFWVmVhZVd4UnAv
+eVRoeE5xaW5KRWVMSTRrWEVxWGZTbTAKDHkVGthhNdxI5I8oGIQVTlgbykQ5uN07
+ItkE5pynsjrlRiZjVPbbQjerLp2mgUfr1KXF6+369IV7cSS4DDW1GXa6iG+kMK3g
+UBxPTYt/ae05fxg1qVzvjzvpYlDG+tYobozn8BmTeg1FVJvyouotADDKqHlS3L0f
+k6da7uPQqimuHDb88a3VqzA5MpG+KKWebh6Q7hdB2vkX+Ke6osNs7YC2DghCRLyR
+gNgPKfi10jvKzXnVd0ImBmsI+26Yv5+QSiJQ9J5W7D0RL/kixRC2t/L82b9oA8eI
+5rVeVvpE3HJIWCrypdWpx9xTjVKEJn4Q6EkRZcy+LKGmie2+ymNx7wHCY+Yo7Hne
+dx5SQhqyDBWPKeorQWl4MLh1
 -----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index d834e24c..9a5f495f 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,708 +1,785 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCcEVKbEtycFlhNDFuOU1I
-azQ5NXJUMm10ZTZwOUdCbFkxV280VUtHdnpnCnBMQkFSK3R3T0pYS1ZwSVRxTVQx
-T0VQSnhoWkRqSk9oNldxSzNjVlBWMW8KLS0tIFkyY1o0KzRVWDk1cmk0dllnVDRD
-cCsySVNva2RiN2pwM0kxTTNSRWgvSFkKY1SWPoBc9H3y+OkTvKHlNTTwuT43f52j
-ONntkvdJHw6HaecxaGNL42usxPudpnhR6qjeslecm7PgAj2A/2olYkFqB7d/FW+j
-HkQpQC/S/V7XMOQiw9bqTAPL/KybIqcZzdCf8YB1dZUCw29eWfLRzciQHt3nDgze
-7/ETs7oyj5GaZrRtNpiVo2oRoRNj1bLWcUc8CaCfii95As7e+cFxDswpKuVdNo5f
-HSel3YQT54VoPXOid26agV1p04nFzNcgabQaccJEvyXpTiLP+vemTc4AsBaXexaL
-sAZxGTYrXo+zZJdK+GY9Tc9ZtmS1BW2xHS2jdJm9aIt60sLrTwLcZ0R1HqTS/Z7Z
-fm5ATMDwF7+7G2WQnjtTDK9MfPufZB5jCN+lbYBKJ9r1lvGNA5fhdSM1vT3Up3SO
-TfsJilNhct4k8f+Ds1xUCgGolMegc0ldyineOhafGjuS4Naq5gJuY2EV5aEjqbcx
-yWJmJYEPiPYH5BDCA0szRdyKYLrich42bTQ6wQL38beNZkoBN7O848fLBCprSii1
-2r/O6WyL3RJvsiP95s1i93+YtwEfYjdmYuqKHAfuMXcXAgT5MI8dgXpRH5iHV5tD
-WhYvlWWUzgPiXObC/4TGcOmAlDRM/gNvi7Zf59la/nQWSADe899kqPV6r9xRcGqx
-u3xRC8He6PuTna7I0a541BxdPmcd9EfqnXOESVc8mTCCU7LAMUZke5iPCqBcMSpo
-kJjpjJXpvIKrhjQDlR5r18I9rJgprp1gdEQ1fRGwivfzg+H6oui+PSj1eFTcenai
-QtlGt/kD0020gn+ij7pMHVShlrBiRjKEbfolirbSez1s9Mdx/oQCM9dCpxgkg7Ca
-MmRcECoRyWey03eh4zPV7AEgUo61QsVl9KIx4J7p9HjordVCSmzVMiMSyWmIhnWK
-75Zm67h/lS21K978sUJVuBWIT37DeZJ1zIb9g8DiDeaKuFj5cyeZ9G+uCxo0ToCU
-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
-hx2KyYaxiS41Q0E=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqa3hpSENZWEdTRmNpeTlr
+d1JPUWk5ejFSbUJsNGU2dzlqeHFMZUdzelJvCk9LUFFjMGNTY0UxMHQ3czhaVXhi
+OVMyTGlQQ2p0TUJKMlNRd1JZYVlvKzQKLS0tIDhjRzFrQnQ4RGl4aUt3cjRxaVlx
+OFFvc1dubStkNFZyQWFqdjBXSDFwOGMKGLftRk649w+RPFkBfIFXWLcbhyfSufSm
+c9rLwthYdwp8vIBI0uNVOfgUyRCrnhpE8Gfx1f2QA6g7MIWM1+ePmtwD9UvczCrI
+CbrCeJqB7VLkBjUgs2X5t780mhG+8/7putHFj7rAgxdcOW5Ora+XrdCwiuaambO6
+6UI6H5sZOrdSesI+E99H8JlR27ZGtQl3NdKW5rE2dx7wCtTOGTZ/IBcsB9Ev8Y42
+CoO0nbxyPlkM/4qxVNJAhkkfKASUniK+GpJs2DVSQ8aderIO4QuMYvBM2PnpbdUt
++i6piWFjCAbfCTQNU8LIlHBRa4rvaq7M4r2/U2cFAAOqmOOmIFd5TEBsABYU0f7R
+QS0gaNjzAZ6jpRJ/apTW8wAs0qjPTfZnS53AucOV5hgES4RHN97UfZeL/TgZ+Prp
+/Vf15wkGircyiiNzIOs3JTLgZcvBtefRbJ1XSvp7+d0PeyoD+S3aWClHvKOMGokd
+v/EpRRKi1gTbYFm5Fc39UZ4j7O+BM1eAcNCUNFI9XEBQw2/IAxae/4M4WzZ4deME
+uvQjjV/bmzw1U2znGLvmHjqAOWPBeO7lpYGhpkYkKmpNZfvNJLJIxw91k9tfPIC/
+DTGvZVDxtWdfxIdk8k7PPoGwYgmietjVVJMaTCKFhKYHwSrPmVz8n7ND6ADQ55FE
+x/0NK6HxovyPj2sAQLic3HttxKXCPg2tpXtoPJI7IA6dWa+7RczZBMBWSE2I2ghR
+vk7r1C4u5S9R0vM82HrXSoMgUFG60SmdXOjqQVdOwLZvBkfpVvGih3zLjvNckdhb
+JJYocuE9Cp3IQjMu2DrCS+Gr8D7+M9ub73dXojqXMgM1UJpjoec3ROajutJvsr7N
+nwruUOcXe6KVMSIIAU+D+G6quSJ/vddDgw/s45XTHLN8vhhSgTgAkksbSd88hpIH
+smSMr4RJOtcCm5HdoWJ/Ri5XNKgTrDkzQGpwdaq/nTpYsVkxO1oRhkhGQDjHJxef
+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
 -----END AGE ENCRYPTED FILE-----

From 0623977759edaab5b0b79f8667ae73185310ce3a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 12:30:57 +0000
Subject: [PATCH 918/973] Rename zed settings file.

---
 .../zed/{settings.json => private_settings.json}              | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
 rename chezmoi/private_dot_config/zed/{settings.json => private_settings.json} (97%)

diff --git a/chezmoi/private_dot_config/zed/settings.json b/chezmoi/private_dot_config/zed/private_settings.json
similarity index 97%
rename from chezmoi/private_dot_config/zed/settings.json
rename to chezmoi/private_dot_config/zed/private_settings.json
index f88acd5c..19ecc651 100644
--- a/chezmoi/private_dot_config/zed/settings.json
+++ b/chezmoi/private_dot_config/zed/private_settings.json
@@ -17,12 +17,14 @@
     "dock": "right"
   },
   "agent": {
+    "tool_permissions": {
+      "default": "allow"
+    },
     "default_profile": "write",
     "default_model": {
       "provider": "copilot_chat",
       "model": "claude-sonnet-4.5"
     },
-    "always_allow_tool_actions": true,
     "model_parameters": [],
     "play_sound_when_agent_done": true
   },

From 8d034c1cf028f1d670457aa9ce3d3ff7909fa73e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 12:31:53 +0000
Subject: [PATCH 919/973] Update Claude settings.

---
 chezmoi/encrypted_dot_claude.json.age | 1566 ++++++++++++-------------
 1 file changed, 783 insertions(+), 783 deletions(-)

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index 9a5f495f..e2597b99 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,785 +1,785 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqa3hpSENZWEdTRmNpeTlr
-d1JPUWk5ejFSbUJsNGU2dzlqeHFMZUdzelJvCk9LUFFjMGNTY0UxMHQ3czhaVXhi
-OVMyTGlQQ2p0TUJKMlNRd1JZYVlvKzQKLS0tIDhjRzFrQnQ4RGl4aUt3cjRxaVlx
-OFFvc1dubStkNFZyQWFqdjBXSDFwOGMKGLftRk649w+RPFkBfIFXWLcbhyfSufSm
-c9rLwthYdwp8vIBI0uNVOfgUyRCrnhpE8Gfx1f2QA6g7MIWM1+ePmtwD9UvczCrI
-CbrCeJqB7VLkBjUgs2X5t780mhG+8/7putHFj7rAgxdcOW5Ora+XrdCwiuaambO6
-6UI6H5sZOrdSesI+E99H8JlR27ZGtQl3NdKW5rE2dx7wCtTOGTZ/IBcsB9Ev8Y42
-CoO0nbxyPlkM/4qxVNJAhkkfKASUniK+GpJs2DVSQ8aderIO4QuMYvBM2PnpbdUt
-+i6piWFjCAbfCTQNU8LIlHBRa4rvaq7M4r2/U2cFAAOqmOOmIFd5TEBsABYU0f7R
-QS0gaNjzAZ6jpRJ/apTW8wAs0qjPTfZnS53AucOV5hgES4RHN97UfZeL/TgZ+Prp
-/Vf15wkGircyiiNzIOs3JTLgZcvBtefRbJ1XSvp7+d0PeyoD+S3aWClHvKOMGokd
-v/EpRRKi1gTbYFm5Fc39UZ4j7O+BM1eAcNCUNFI9XEBQw2/IAxae/4M4WzZ4deME
-uvQjjV/bmzw1U2znGLvmHjqAOWPBeO7lpYGhpkYkKmpNZfvNJLJIxw91k9tfPIC/
-DTGvZVDxtWdfxIdk8k7PPoGwYgmietjVVJMaTCKFhKYHwSrPmVz8n7ND6ADQ55FE
-x/0NK6HxovyPj2sAQLic3HttxKXCPg2tpXtoPJI7IA6dWa+7RczZBMBWSE2I2ghR
-vk7r1C4u5S9R0vM82HrXSoMgUFG60SmdXOjqQVdOwLZvBkfpVvGih3zLjvNckdhb
-JJYocuE9Cp3IQjMu2DrCS+Gr8D7+M9ub73dXojqXMgM1UJpjoec3ROajutJvsr7N
-nwruUOcXe6KVMSIIAU+D+G6quSJ/vddDgw/s45XTHLN8vhhSgTgAkksbSd88hpIH
-smSMr4RJOtcCm5HdoWJ/Ri5XNKgTrDkzQGpwdaq/nTpYsVkxO1oRhkhGQDjHJxef
-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
-p6Nv6pf9UXKJ27X7tl36MO4XbFs23BfrFV8uks49bzqADik4ZJbCEg6HLEn+hFat
-adHM60HY1KZKo3yN5bsO59NBixIE0mdOSZeyywFYCNaqe3uJiwlUKFxHyvuSd+YF
-bhPmor8BN1ZHpe7CRfSU4INTVuMTYH5GsO2y1l0uBZa7TzqgFTn4/ADlvJbK/b8m
-COjnAsh/V3ZjHXDAP+i/9uGzsVBfXTDKBGhQIGurB2ix0Q==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYN3lNUkpqWnl2TFNZbTJq
+a1o2YXFJS3E3MEdTaEplb3NYNzBmTGpTQW44Ck1SbjgzU0owOEx1eVdDWW5uWWpu
+SThwK2IyNDZHQ0FKYlVwVSszN0dncFkKLS0tIFRKSENjZXZ4R1R5Q3E4ZDVuZVhX
+aS83RXJtemZFbGRGQ0MzckFMcjRUdlEKQkLwA9JIoYsTp84J2x7MHZa0wECTPVPk
+126g4Ms1gwh1sPiEhyWh32d2tiCj40SwJKazyf4BynCJl5CMlgNlMyQRepiLm6b4
+bzSNC9bK3qubqv5J6c4inW9zzC2/UJgS+OrQLD60FYG/EjihUsyWhzTZQM4w9SEg
+ctE0+Dn1KIO1BI03QEDKPKIBGVUia7KbUJm14QfuijlMrLZvxmgr87Kmvcaqr1tg
+YSwz2aSGPoKWdrvS8V2J+OcZgnQ5FCfAHU6CqUAqb/62lp3fUj4E9D29+PwQ2Qyp
+cX/K92ib52mGyNN/l/khofzkmCHDV25e61T/r0XhPtLDHz2tcugp3nRWOZN37WiG
+yCKgXVbYJr/EG2FGuu9MxZadTNUjzEhCCCF7vl6qZH5MQxKGwOR2PbkW5eOsx7ss
+Egm4jTQ0sBbDbP3rWTQQeRvbZyrLwkb3wc7SOLWsnBLLwQP3L0qP9ghl4jydM8xx
+FrvhpQJreeY4Rush/20Onn7T25YGpm1DzE+Fopd3Abbwb+v56YAzu5aGgE0JQpJh
+tsXgFGhtU4fQDgD/NSF5e3NfvBA60/qkAKPo3WUQ54tz/6jCRRJY8cpaUepRmLNt
+0Dj6FXTJ58uD3SdsT4bvlO3eRFjTrb2B4nhuuUeV7eDGSTPlDTuqGX1oZ4qEvPgV
+PE//pNsuW/lXuGPNE6XnLrpPsLmy7LI2IUpuI0mGxEPehzl1i8ocTpEsNGfXdAcw
+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
 -----END AGE ENCRYPTED FILE-----

From 64644f50b4983b43c2276d5a78581f6ac05887bb Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 16:43:24 +0000
Subject: [PATCH 920/973] Update Claude settings.

---
 chezmoi/encrypted_dot_claude.json.age | 1631 +++++++++++++------------
 1 file changed, 848 insertions(+), 783 deletions(-)

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index e2597b99..bfce1b6d 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,785 +1,850 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYN3lNUkpqWnl2TFNZbTJq
-a1o2YXFJS3E3MEdTaEplb3NYNzBmTGpTQW44Ck1SbjgzU0owOEx1eVdDWW5uWWpu
-SThwK2IyNDZHQ0FKYlVwVSszN0dncFkKLS0tIFRKSENjZXZ4R1R5Q3E4ZDVuZVhX
-aS83RXJtemZFbGRGQ0MzckFMcjRUdlEKQkLwA9JIoYsTp84J2x7MHZa0wECTPVPk
-126g4Ms1gwh1sPiEhyWh32d2tiCj40SwJKazyf4BynCJl5CMlgNlMyQRepiLm6b4
-bzSNC9bK3qubqv5J6c4inW9zzC2/UJgS+OrQLD60FYG/EjihUsyWhzTZQM4w9SEg
-ctE0+Dn1KIO1BI03QEDKPKIBGVUia7KbUJm14QfuijlMrLZvxmgr87Kmvcaqr1tg
-YSwz2aSGPoKWdrvS8V2J+OcZgnQ5FCfAHU6CqUAqb/62lp3fUj4E9D29+PwQ2Qyp
-cX/K92ib52mGyNN/l/khofzkmCHDV25e61T/r0XhPtLDHz2tcugp3nRWOZN37WiG
-yCKgXVbYJr/EG2FGuu9MxZadTNUjzEhCCCF7vl6qZH5MQxKGwOR2PbkW5eOsx7ss
-Egm4jTQ0sBbDbP3rWTQQeRvbZyrLwkb3wc7SOLWsnBLLwQP3L0qP9ghl4jydM8xx
-FrvhpQJreeY4Rush/20Onn7T25YGpm1DzE+Fopd3Abbwb+v56YAzu5aGgE0JQpJh
-tsXgFGhtU4fQDgD/NSF5e3NfvBA60/qkAKPo3WUQ54tz/6jCRRJY8cpaUepRmLNt
-0Dj6FXTJ58uD3SdsT4bvlO3eRFjTrb2B4nhuuUeV7eDGSTPlDTuqGX1oZ4qEvPgV
-PE//pNsuW/lXuGPNE6XnLrpPsLmy7LI2IUpuI0mGxEPehzl1i8ocTpEsNGfXdAcw
-qvhEi73tg85rJc49eyChFVCaqyfcaPauGWUp6lPaNV4q57cGNksjBaKd2dQwKDs4
-67smEjsFELImvh4O5T2SUz1ZXdD/+ZqRBNgCUfYJ+obrJjGPQMc6Yjj4e1ui8icx
-7qLktFgr+mL+mdneFE8Llczp80lPplW2PuCcGTH4FA9x9IcVWPSyHRbNb8RJsqh6
-T40+4GO5IfLs9GXgomjfkssWxn+lsg20+6hGVqpUvHl6yp8YzvY2WrOVPCZl7DIm
-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
-S/eWlcbhgK68QaAIQYTLh5D+mQf8wLGMxnalkWnpnOL1cyPEB9Kp5qbyHdswNH9U
-wkWjK3xfon5H01bqrw717P8DReC/a+6gLgtiLhWMs9J4+xc85YXFQcWDl2weQADh
-YsZ7CytV+EGdODld+X2cBM7W8dXLrOjcM4l1abJfGmSU3QnKR6MO8maNDJHUH0zz
-JYxlZe8fRlXPM++Kc4A/O+CQCm4nabGLNbpSyFPANWbdBQ==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVWHNsUXhzeVp4em9SVWFK
+c1R0cFRPMFpDZUJoZjBoYkhyR2hwRGVOSFdnCmdUcEtCdVJlOUtIc1NRU09jMFZR
+aFVWNk1xL0FmM2d2ak9zVTRMMzJFRmsKLS0tIEhhQ1o3akxoV2pib1QveGFyTFQr
+YU9oU1h6UUlEejdPOFhsTUxNUjV0YkkKcRaaKo37kSlvMPydBeQTNjnUYnVvmAzs
+nnngpB4YN2pKWnZt4rYvnnx00znd9b1CQ1C449BMedgOEOnk+VttJb82aGN4BoVj
+q4ZZe1N15LJYig70+17SluooCm94RwBkNhQq0vlULwAKvmYQv8soJCKhK1+63+Jn
+lZzGi0ZA6tfovDtP8FIbMwmDMZxbE1aIxvQgvuxLj7jYGU/4vqhlhtdrIrxiaFHc
+FscABL84kLOwLos6SXMWyzWMtpWb3uPfbTkOPQCM6a2INYaoekiRuPhWqMRMjo11
+TK4kzj4NMULZF88twQ7AWCn7XLfM5Mm1ErlRPbSp6d3sdvZ33RQx/Yr4Ygkm6pdR
+gi2lNigkODMAlTOyJIt6dIHNKh2pZE+kuQ71O00DpP6MWbyx2PE7cO7cGy2Wy5ek
+2ziUchzsvDb9ZfDIJFnrFMdSaQLPnwwVznSGE60Wbn0dVc6ELGn9P8W6DfIhs1ob
+PMzdnkmcTPshMfCbhDq/agNoKZRgKREGYkvdCd2wZRHP9WxWgSZt4JXPOutMiDL5
+EqNJHXlt8Z1l7ygOvj1OdcqKP/IPY0hULbRRVHNLdBGdzM6xC6GzIjBU9gfvEa0x
+EvgbfH7DwKtr0juep6ydT6NnGvNX+XknO3F1UNdNY98e19ZtpwadSorZMLJdGAVx
+Dn2lMQlhp7TPTurW8meyx2n83CYWGHCy85bnbjkJKN3xB0Td0DLXP67Vh3fAnhqj
+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
+8EbqFOqyWktaUvGmabY=
 -----END AGE ENCRYPTED FILE-----

From 5342770f7d510b32e592af3ab163485690ab9b72 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 16:44:14 +0000
Subject: [PATCH 921/973] Update atuin settings.

---
 .../private_dot_config/private_atuin/private_config.toml    | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/chezmoi/private_dot_config/private_atuin/private_config.toml b/chezmoi/private_dot_config/private_atuin/private_config.toml
index 604dbd4b..f541884c 100644
--- a/chezmoi/private_dot_config/private_atuin/private_config.toml
+++ b/chezmoi/private_dot_config/private_atuin/private_config.toml
@@ -160,6 +160,7 @@ history_format = "{directory}\t{time}\t{command}\t{duration}"
 ## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
 # This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
 enter_accept = true
+search_mode = "daemon-fuzzy"
 
 ## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line.
 # command_chaining = false
@@ -250,6 +251,8 @@ records = true
 # strategy = "auto"
 
 [daemon]
+enabled = true
+autostart = true
 ## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
 # enabled = false
 
@@ -286,6 +289,9 @@ records = true
 # debug = true
 
 [search]
+
+[ai]
+enabled = true
 ## The list of enabled filter modes, in order of priority.
 ## The "workspace" mode is skipped when not in a workspace or workspaces = false.
 ## Default filter mode can be overridden with the filter_mode setting.

From a09b7edf63a1d0c02b953436ed20c258eced4730 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 18 Mar 2026 20:04:30 +0000
Subject: [PATCH 922/973] Update Claude settings.

---
 chezmoi/encrypted_dot_claude.json.age | 1695 ++++++++++++-------------
 1 file changed, 847 insertions(+), 848 deletions(-)

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index bfce1b6d..60e7f9d3 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,850 +1,849 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVWHNsUXhzeVp4em9SVWFK
-c1R0cFRPMFpDZUJoZjBoYkhyR2hwRGVOSFdnCmdUcEtCdVJlOUtIc1NRU09jMFZR
-aFVWNk1xL0FmM2d2ak9zVTRMMzJFRmsKLS0tIEhhQ1o3akxoV2pib1QveGFyTFQr
-YU9oU1h6UUlEejdPOFhsTUxNUjV0YkkKcRaaKo37kSlvMPydBeQTNjnUYnVvmAzs
-nnngpB4YN2pKWnZt4rYvnnx00znd9b1CQ1C449BMedgOEOnk+VttJb82aGN4BoVj
-q4ZZe1N15LJYig70+17SluooCm94RwBkNhQq0vlULwAKvmYQv8soJCKhK1+63+Jn
-lZzGi0ZA6tfovDtP8FIbMwmDMZxbE1aIxvQgvuxLj7jYGU/4vqhlhtdrIrxiaFHc
-FscABL84kLOwLos6SXMWyzWMtpWb3uPfbTkOPQCM6a2INYaoekiRuPhWqMRMjo11
-TK4kzj4NMULZF88twQ7AWCn7XLfM5Mm1ErlRPbSp6d3sdvZ33RQx/Yr4Ygkm6pdR
-gi2lNigkODMAlTOyJIt6dIHNKh2pZE+kuQ71O00DpP6MWbyx2PE7cO7cGy2Wy5ek
-2ziUchzsvDb9ZfDIJFnrFMdSaQLPnwwVznSGE60Wbn0dVc6ELGn9P8W6DfIhs1ob
-PMzdnkmcTPshMfCbhDq/agNoKZRgKREGYkvdCd2wZRHP9WxWgSZt4JXPOutMiDL5
-EqNJHXlt8Z1l7ygOvj1OdcqKP/IPY0hULbRRVHNLdBGdzM6xC6GzIjBU9gfvEa0x
-EvgbfH7DwKtr0juep6ydT6NnGvNX+XknO3F1UNdNY98e19ZtpwadSorZMLJdGAVx
-Dn2lMQlhp7TPTurW8meyx2n83CYWGHCy85bnbjkJKN3xB0Td0DLXP67Vh3fAnhqj
-6eMissIDp9wAc4vus5JJehS4LIOv2JIvs1i2htxXslL3Jh+xHyUtrJ8cjhFR6N8B
-dT71GZorc6uRCzXnjqmWHmskfAqBL+ugjRNJ1qlQ8F6soVRV9VIzeVQLZnc4ArAy
-DJgq13sBZcrh1C7CRp8oXMp03fiO6+YKdAJWXM38mGxzm/sTOKeUAOYpZZIXEaVp
-AYcpltEV6IQ0HPt8edbWDWII8F1TbhoEEoKpEGSLnJCx+1TgiYcFggeDDWAaVAos
-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
-8EbqFOqyWktaUvGmabY=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2UE9PY0tlOVhBbDMyZnd2
+THk4R3ZnMUFYcU13cVcxWk1jZkM3YVJKdlRZCjcrY3FVS3UvMVI0Y1JBcGhkenpR
+V2NHaDJpd0NWcDB4VTh4dlVCNzlJVmMKLS0tIE1MYVVYOTJveEE0MmZmNGo5eW5G
+eElIZ0hYd3FML2xtYUNwdlFSbWQzWDQKK2VHp1YviOLlJ0um+3Hq43VeOgdtefl+
+4JO9vY8ye+0sBvh13wfH2DbtMyAkjUBdbS1p4hvdpEJDPHJYjy92UEw8a3hYQI2F
+0tcif0C2r6NaDuQ7Hpfvc7ByGxbM58VIowchs/DdPqAv8qI0TQtcEaeB5sW7+guV
+YwRDUjRQr2aCUV0psRzDSf6A6iwr4rJLVjV3tXJnpLMk4TP2iwODCUeS/0E00lJK
+PbPZTyKTcPFLCGa5v/WpCMyGOC7ZZ90aix9Xbjumk0mH9ZbQ+nk5QSDNQT4xYS5l
+1ba5ujk2DxdtNnAyJHUosKf7I/bILW/8b6GCEPk6CotKuqTK2yfoWwI9C8Sf6o3F
+jk67QZNwrnndHWF6IItQOgbg1bdXio9S16ESmQpu6JLpbV882PooCtN+WeF4X7V2
+lAjx1tz8q6atpSICwKTSwpRj/ttn1Pmgir/BCgSU5F6dDMDdYmQNGL1S9GdvcoFT
+kLqtX0fZq5plaYCR1jYBldmsbH6aGETj02km0Vd+taORzGRNc3wIjV/mpePowQ81
+f9C8H7JlUq+iH/3lLju0Yx4D0PKYpQcc852zT2pWpSJ3s7NdUDgtHbuTa3irKL9y
+sg6ujCXbJ1zbwf29yx5bwpNG2KWcyamungvDRCR+xMguwOvAe8aFdbByeOPcAIqF
+hMK08NLv51R8+NchI1drjsB1RJc9SVwtkQhQrOmkNOn9WkcayB2J5EhqZtfJyRvm
+0crY+pxmk0zMCvQDR8DzvWzRfpC9BfMoOdbGvHvsK1Lce8/cfrWkJM7K5B0lqDtU
+BCuNScUHXAymb45yEK/pVZZ/GDKVm4QVeTmXfhJ4ypRkBCLo8jlcJMCldB+XYCmn
+xllsl74xUGRvvrv4QpHNlWFOZ/BKvoMSAUJXmqOH18465hi7ix117gm1Ukg5tbWH
+tAt4ucgXsVqqksmsslAt1Jju2uAyMIDII9JmuopH5LvdTuFeoKsgGURrdepxVb1g
+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
 -----END AGE ENCRYPTED FILE-----

From 32fe4eed20346ae56b6eb8dbd0bc840f7978cd6e Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 11:14:20 +0000
Subject: [PATCH 923/973] Update Brewfile.

---
 chezmoi/Brewfile | 35 +++++++++++------------------------
 1 file changed, 11 insertions(+), 24 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index eef98e29..bfe31e86 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -1,5 +1,6 @@
 tap "abhinav/tap"
 tap "ankitpokhrel/jira-cli"
+tap "anomalyco/tap"
 tap "bufbuild/buf"
 tap "charmbracelet/tap"
 tap "common-fate/granted"
@@ -7,10 +8,12 @@ tap "coretech/terrafile"
 tap "dutchcoders/cloudman"
 tap "github/gh"
 tap "julien-cpsn/atac"
+tap "manaflow-ai/cmux"
 tap "messense/macos-cross-toolchains"
 tap "romkatv/powerlevel10k"
 tap "steipete/tap"
 tap "taiki-e/tap"
+tap "yuuichieguchi/calyx"
 brew "a2ps"
 brew "adr-tools"
 brew "age"
@@ -27,7 +30,7 @@ brew "gettext"
 brew "oniguruma"
 brew "atac"
 brew "atomicparsley"
-brew "atuin"
+brew "atuin", restart_service: :changed
 brew "autojump"
 brew "awk"
 brew "node"
@@ -169,8 +172,6 @@ brew "neovim"
 brew "nushell"
 brew "ocrad"
 brew "okta-aws-cli"
-brew "ripgrep"
-brew "opencode"
 brew "openconnect"
 brew "openjdk"
 brew "openjdk@11"
@@ -194,7 +195,6 @@ brew "protoc-gen-go"
 brew "protoc-gen-go-grpc"
 brew "pth"
 brew "pulseaudio"
-brew "pulumi"
 brew "pycodestyle"
 brew "pyenv"
 brew "pyenv-virtualenv"
@@ -209,6 +209,7 @@ brew "rbenv"
 brew "rbw"
 brew "rclone"
 brew "repo"
+brew "ripgrep"
 brew "rlwrap"
 brew "robot-framework"
 brew "rtmpdump"
@@ -256,6 +257,7 @@ brew "zoxide"
 brew "zsh"
 brew "abhinav/tap/git-spice"
 brew "ankitpokhrel/jira-cli/jira-cli"
+brew "anomalyco/tap/opencode"
 brew "bufbuild/buf/buf"
 brew "common-fate/granted/granted"
 brew "coretech/terrafile/terrafile"
@@ -267,7 +269,10 @@ cask "bartender"
 cask "beardedspice"
 cask "bitwarden"
 cask "block-goose"
+cask "yuuichieguchi/calyx/calyx"
 cask "claude"
+cask "cmux"
+cask "copilot-cli"
 cask "doll"
 cask "drawio"
 cask "firefox"
@@ -323,6 +328,7 @@ mas "Keynote", id: 409183694
 mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766
 mas "Mattermost", id: 1614666244
+mas "Microsoft PowerPoint", id: 462062816
 mas "Notability", id: 360593530
 mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473
@@ -334,14 +340,12 @@ mas "Speedtest", id: 1153157709
 mas "Tailscale", id: 1475387142
 mas "TestFlight", id: 899247664
 mas "The Unarchiver", id: 425424353
-mas "Xcode", id: 497799835
 mas "Xmind", id: 1327661892
 mas "Yubico Authenticator", id: 1497506650
 vscode "aryanahire.sublime-monokai"
 vscode "atlassian.atlascode"
 vscode "charliermarsh.ruff"
 vscode "codezombiech.gitignore"
-vscode "cschlosser.doxdocgen"
 vscode "davidanson.vscode-markdownlint"
 vscode "davidbwaters.macos-modern-theme"
 vscode "docker.docker"
@@ -353,22 +357,14 @@ vscode "github.copilot-chat"
 vscode "github.github-vscode-theme"
 vscode "github.vscode-pull-request-github"
 vscode "golang.go"
-vscode "grafana.vscode-jsonnet"
 vscode "grapecity.gc-excelviewer"
 vscode "gruntfuggly.todo-tree"
-vscode "hashicorp.hcl"
-vscode "hashicorp.terraform"
-vscode "hediet.vscode-drawio"
 vscode "humao.rest-client"
 vscode "janjoerke.jenkins-pipeline-linter-connector"
 vscode "jebbs.plantuml"
-vscode "jeff-hykin.better-cpp-syntax"
 vscode "joffreykern.markdown-toc"
-vscode "llvm-vs-code-extensions.lldb-dap"
 vscode "mechatroner.rainbow-csv"
 vscode "meezilla.json"
-vscode "mellowmarshmallow.groovy"
-vscode "mermaidchart.vscode-mermaid-chart"
 vscode "mrmlnc.vscode-duplicate"
 vscode "ms-azuretools.vscode-containers"
 vscode "ms-azuretools.vscode-docker"
@@ -378,33 +374,24 @@ vscode "ms-python.mypy-type-checker"
 vscode "ms-python.python"
 vscode "ms-python.vscode-pylance"
 vscode "ms-python.vscode-python-envs"
-vscode "ms-toolsai.jupyter"
-vscode "ms-toolsai.jupyter-keymap"
-vscode "ms-toolsai.jupyter-renderers"
-vscode "ms-toolsai.vscode-jupyter-cell-tags"
-vscode "ms-toolsai.vscode-jupyter-slideshow"
-vscode "ms-vscode-remote.remote-containers"
 vscode "ms-vscode.cmake-tools"
+vscode "ms-vscode.cpp-devtools"
 vscode "ms-vscode.cpptools"
 vscode "ms-vscode.cpptools-extension-pack"
 vscode "ms-vscode.cpptools-themes"
-vscode "ms-vscode.live-server"
 vscode "ms-vscode.makefile-tools"
 vscode "pdconsec.vscode-print"
 vscode "peterj.proto"
 vscode "redhat.vscode-yaml"
-vscode "ritwickdey.liveserver"
 vscode "rust-lang.rust-analyzer"
 vscode "ryanluker.vscode-coverage-gutters"
 vscode "solomonkinard.git-blame"
 vscode "streetsidesoftware.code-spell-checker"
-vscode "swiftlang.swift-vscode"
 vscode "tadayosi.vscode-makefile-outliner"
 vscode "takumii.markdowntable"
 vscode "tamasfe.even-better-toml"
 vscode "timonwong.shellcheck"
 vscode "tomoki1207.pdf"
-vscode "visualjj.visualjj"
 vscode "vscode-icons-team.vscode-icons"
 vscode "ziglang.vscode-zig"
 go "github.com/maxmind/mm-geofeed-verifier"

From 69642845ceb38f04a15260b9af4f78e45bf9f757 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 11:14:52 +0000
Subject: [PATCH 924/973] Update Claude settings.

---
 chezmoi/encrypted_dot_claude.json.age | 1696 +++++++++++++------------
 1 file changed, 849 insertions(+), 847 deletions(-)

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
index 60e7f9d3..00ba92bc 100644
--- a/chezmoi/encrypted_dot_claude.json.age
+++ b/chezmoi/encrypted_dot_claude.json.age
@@ -1,849 +1,851 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2UE9PY0tlOVhBbDMyZnd2
-THk4R3ZnMUFYcU13cVcxWk1jZkM3YVJKdlRZCjcrY3FVS3UvMVI0Y1JBcGhkenpR
-V2NHaDJpd0NWcDB4VTh4dlVCNzlJVmMKLS0tIE1MYVVYOTJveEE0MmZmNGo5eW5G
-eElIZ0hYd3FML2xtYUNwdlFSbWQzWDQKK2VHp1YviOLlJ0um+3Hq43VeOgdtefl+
-4JO9vY8ye+0sBvh13wfH2DbtMyAkjUBdbS1p4hvdpEJDPHJYjy92UEw8a3hYQI2F
-0tcif0C2r6NaDuQ7Hpfvc7ByGxbM58VIowchs/DdPqAv8qI0TQtcEaeB5sW7+guV
-YwRDUjRQr2aCUV0psRzDSf6A6iwr4rJLVjV3tXJnpLMk4TP2iwODCUeS/0E00lJK
-PbPZTyKTcPFLCGa5v/WpCMyGOC7ZZ90aix9Xbjumk0mH9ZbQ+nk5QSDNQT4xYS5l
-1ba5ujk2DxdtNnAyJHUosKf7I/bILW/8b6GCEPk6CotKuqTK2yfoWwI9C8Sf6o3F
-jk67QZNwrnndHWF6IItQOgbg1bdXio9S16ESmQpu6JLpbV882PooCtN+WeF4X7V2
-lAjx1tz8q6atpSICwKTSwpRj/ttn1Pmgir/BCgSU5F6dDMDdYmQNGL1S9GdvcoFT
-kLqtX0fZq5plaYCR1jYBldmsbH6aGETj02km0Vd+taORzGRNc3wIjV/mpePowQ81
-f9C8H7JlUq+iH/3lLju0Yx4D0PKYpQcc852zT2pWpSJ3s7NdUDgtHbuTa3irKL9y
-sg6ujCXbJ1zbwf29yx5bwpNG2KWcyamungvDRCR+xMguwOvAe8aFdbByeOPcAIqF
-hMK08NLv51R8+NchI1drjsB1RJc9SVwtkQhQrOmkNOn9WkcayB2J5EhqZtfJyRvm
-0crY+pxmk0zMCvQDR8DzvWzRfpC9BfMoOdbGvHvsK1Lce8/cfrWkJM7K5B0lqDtU
-BCuNScUHXAymb45yEK/pVZZ/GDKVm4QVeTmXfhJ4ypRkBCLo8jlcJMCldB+XYCmn
-xllsl74xUGRvvrv4QpHNlWFOZ/BKvoMSAUJXmqOH18465hi7ix117gm1Ukg5tbWH
-tAt4ucgXsVqqksmsslAt1Jju2uAyMIDII9JmuopH5LvdTuFeoKsgGURrdepxVb1g
-jFCZNOVcfxyw3mB/p2BrUdeEJeB2B+UQOBvx8tDaLAw4x4AoPZ4GL5NYhAcQ767m
-MA6UVTGNxMWS7g+qJZMBxcIQrHv56VZzw+EzDBBQ/dMxjZjI1wyt65FVcOPmCQ0n
-eLzCliTSrMvwcCa42CLP4E91nTpsP7Ba0csVkEmlfaCIglVqHpgh4yqq0MawVAbc
-RBI2ulIlufwozeoldkfRZRRdn6n8wJfB2dONDq/fK6rH98mVYecFLa2+Y5zkf+CN
-QO1rarA1q54ttUlg+VmmLCryQjJILzkbUGYt7o3xx4vxhLjhNgUyzmEYKj8mWKoc
-3WUyraar7JXNeqY0rjiIgog8t4luVc1Se8e0i4URld1Tyk01KzyiDqsTlbGtlNov
-cYyVGKtynsHQqOLMQGo/sqPMhQ2FCvWmO/b/fGAH2EkUG2hm8wzXhoy5Ti4Oz1Ok
-NlFhJDRu1sj0JtA9cwCZBFPMpmyx36sVvHC8crV9yLIg9wEpscU0723cjcasEG0B
-H8B0UZdh27Qw7+sl23YJhc3D1n5l1DbXFpaqY5/aNK9eCfSAIBCCFEdBYFy6mmDq
-TM5jbFRZwr+CJGibBREpiwEv1916oA+/fJV3bDNteIAymjnZxhMtHc5dPY4IU8XD
-Xo81CFalR46/0oJh3kaeidhLFPhKsdJuIkhBypGBvAKR/6+1dH4caBtW+jEH0RmQ
-rybfWqoNtDC8e8tSeFrtQrDYGa7vRrJ9ZFjvBeduSSMRiNLdeLHBD4u9kqu3Jday
-BovfcMnMBi+XGYqUZdLgwwD4mfunLYHHvFtQPEg/ZP3nhRC3PFHM1xzy0wJ4HaAy
-BATj444B8PWwW7dh5T9CJaz/cV3rTCaTHBF0WhR+hV1OdE9+UfnlrQBrsNvhYK8j
-T+tFtDOiZEA0X4odEYalCcx7N7EZ5iGh4Vya+fqSVfX7brOTGcW0TGyhulRO15Y7
-vt3hcDRzCFLSWvuMPowObqgV7WSN59XhuOPIiYApKMFXd5wq4S2+IoCKqDIlWOQP
-fXvbTC+5RGo6zdSLt5PNTi0qftudJOaSUcXgFxDrMoUcNzNk4CjzbBT13+7FJP21
-sGqQbsfNJR4mUQ79OudOv0VChpubqFeB3g+9IjaNEum1vuVQQCG7m0ySMsgtnwxI
-Lad9+b6QbYbI9YR1HgCUc4nVIJyGuKvzdflaMjBN7F/O8xaufEmlgZMw/k3HyKcu
-SXzCtT+3ZI3CQgEH40aUDr8wlYxJrWBQAq2Jd5ea8x164OwoOMNEyNuTSn4y1Cb1
-NyI+PmtHFjvzgGHzuWHFKcGBF+JP43VH/sTBRJRbfYncuPZ2XuS/fisWZ4wnXfJz
-94gIZbz/Gzq26wSToq/mH1eHeFti4ivixQvl1NHlMFHUMEdvTjhuVSik0jO16btc
-3+TQSeOTgGR1FmweISv7aTYbCTucBeI9a+PULsSb4xb4Ubb4CZu91RFbGUjujzzU
-akxWoxY+AHk0k9Gi63pY5fjnIsswFStA1XO1JSwD1G1nfLO0BWygJE1zq+V7Zj3J
-UZZqnPga99kYb2M2BERGguBHd+pbajG8mQXj6opmAS/icS+GMxt5xxft3BSCRnrE
-3V719rM2DK8iblwogzTS3nOpNJwk6Itazga7E4oXeJtEWsM59X5Yzf6CQlHnyxlf
-mt7JBIRnendOYde5QLG7tTOe7dVisW57B4bDzvxNDtPh+Sk83h2vpaOBUmLztFmo
-63c2lShPkRjwNZGnmvRGS0SCU3NYWt+cvyS0VZ0Yfu6HfaU6qY9y1mUXpFa0WJMt
-ojzhSOiY7jNPqoQcWLKLimrNA5kuLUq1KqQ58hQ4Fbpt7GXRvqbTZML5AjFDh3jX
-co2gEdv+piQd0Pg8FioSkpUXoW1DrQeyKzbEtgAELteIbPeZL4Yf3W/j69s51lxy
-2TDxAaVmcG0cxMXRQREYoqkwcq5E2Z+0nMPpuxGMtp1gGun+y1kxGcVI9v92Aw2Z
-2LnVUHb7abJtGr8ysVGWJA3Vnz3zI0UkZOOXcOA4bfeIf6ZdYXoVEMrWF+PNR1EG
-LFyJy7RGq0UpYpzi02DcrEif78b4H5VdxYBsl0sOk4d+HyZq9kw3b3yGdsr29gf+
-srjj99z+0XtiLOgqvLKBg0+NUChd5zuV3jbIbEqbOW/Reft2naUwZyuUoQRq0uLF
-pUlF2M2+Ojl+sANCavtENeeBHZwGNsG/LTTsw089+69H8kzqbdFunS891kacBYt8
-D3PJLEZtAhca1vLX9MG1QF52HkjjlVWA0o7650gEDZlWSjlCSCZWjzp5Yni6n7A6
-GEYMJeAP831kkLGPmNQF3GhpLHCpNX1Wf0VihtjmbOMTy16xsU69ZFmb+1CvCfLh
-9Q50JG8G/8nXG9cj233i+m43lDzkCjOMyWQWt3qn8b+RFTdcaT9G4M0YBj5YbuXy
-6tjXoVRgoE5gz2iA6Qn/NWbH+aGWm3VlikatoZ03wzMduxnz22dYwuWuxflTxOn1
-92jseRJQVzzFrropiiDZWqqNIXeGYUoKtqZ4IaweVE6PiXWLa3ofLTYP3Hdw7pG9
-jcwfVUQVHcHpLsvybJux92+oAjdVK9Nwy3IEfjC1TMDylUbOGibz/RQ5jMSNr4Gh
-qKc1+XlCcI5R83+93m6bkQee+ldD2d393L/drJV/m1Sr6cSS7NLEqHNuTHd/82OS
-tOPRZZhkPK04LVBe+6Ikzw+YJorMRBueKwZmemFlqZH37BQievcu8gIvXadnZyqw
-Kf86BOaq66wA+JPQwS0fS3/W3218vd5Of36wzW/ojGLtIr12A3wapBNoxkKcIGs0
-kNrWugdxKOh5gF23d9H0NXQiv//7WUXEK+aSGrGCxhg5I1lGDaX5R4clVAy8FJE5
-ywfNPgJHRfms5GjcpUnzfs3Ff3tElC8lQdl/uxc8uZVInwhYquDbBwMu00S7TELm
-l3kf7HJOiJjyI/igrVJfIOvZg+DiKJy4tr6CcBiKT1tTY1DUg8AxALzaZzW4ABxw
-qWONpvPbTO5D20jTTLjYFnhl5hBNkadd5uAG3l5rzmzC9DZE2AqaEG8GaVk8b0Z1
-LhRN1Q0UXKu6i94Bv5JlABo6YXQf+jGfuU+deRRlNJBZH3n/7GSoEsKHxh84hwIa
-WncmKlBUZxtVEwmUqFuvU76oL0AH91+lQONLdaqCsDf3rb45MFiJPgrWySBWZfQx
-QVLSnLy9LQOnQKfpF3J4AFUaH4rriAPBV4nwe+N26Mcni80ZpwiaIOaVF0tEFU2F
-6//JWGsDFf0OVh9wAbjM97LTFgtxm3J9WVUD1YpkFZVPkLg6r+zXk5RcCVHPVt98
-4C5SyOJVuPLjzY51VtAKEGnvgal2tWjJCkJey9egPlnRkRB4JXnSx1HspZks52A/
-arCaEM7E+rDIWVO/e3oZRT5rq0QdUTCJ2478BnbpsL02ZT4vVTJ4jLjsUBhPadmk
-Z9yu3aVZQsDqPLKyGfU8p2sNCRtC9IkHjUCoKZ94MXTYDa6HPD5W7ZLhhywUKAN5
-rLMhYg3142U5rRVAxiQcVMQHNtlW0fnrN0436YUFdfUGdoDcd1T3nMa0yvpl0Fjg
-Zv+F8utmQH6kwYoRR7iEn753Y3CIR9p3hV5MrMfi9AsW1R52sFvtBIIgd5dok3p6
-3GU4ziQA1+OA+85hSmXxyTA8ZXr+0pybL0p6xbbyWN3rZn+fsz+Vc/ahThUp6BCF
-yTz4ru1viEj0sfPIFHdF8PL14Dj11PcQ6Xst8h8PF8fbbgOl+ii9rEbt7QrK9TAE
-BB66D9V/CeyqX8D/Qk0pGuBGRUH+p/MOzU+iEZJjI6Q5mR0+95EwbcTS5hiXaEtW
-VFLOmzRsGHxVY8rO/ezUuDDjCbVimuno0UVOLpLv2l6Lqkjs8Uwke1bKbiWK/V/s
-mkBhfUFuwInvUkwI6h2CF0Qd9ru5q/LSodII6fv3JH2JVI2hPSm6gebqZu4LqZsq
-FbGkOmJV1X6j2rfy/KwsjfAqDqjR6bq1YWtIa4QgP4zlZZcFebMmI+/DMgdcKjNc
-7fkqriwOzG45p3GWdy1CDimWGToow6S7oY1fx6mhYwNA1dNIA95USdblpMeTMP50
-HxNAcp9AqdyJ+mGMS5HM3l23ZDJqz98GF9TM4AzIltstY1stknLUvV60i9cckgRR
-TZl2lD9JnLYL/EKKzSTbDAkQ/NGmrTCXfTDh28/opw5FSG6owJg0hrzcQuWqbCrx
-zqmxNmUv+obP5Y2xdqbtYV/wqpYwqExgJAZPkZM5KAODsDysunc+JSHK19vcrwlj
-G5bePHxZrTbHFUU2fOnc8XSNWVxWrgNbtCI0hz6u8vT7eyT/FZ/0HUx9sS8B9d5R
-q5vbq9ug/ccg3o1e23PltctFr9LAsCVvIrEe92d1uu5eELJTgeOg1EIWybJgPZBr
-YsMMxkvwV/kkXg+eozPQOZEdAohe1ZVmLRFaa5oYZp7Cg+40qo4D9ZzUy5BTgGWw
-xHb9ekWZKchGuTZJbtTD8rgbEnlX/kSMWXoNlkhszs86STLp0hxYNRJd1jbYOy51
-cCKYog2kWfn4+tE9RpnErElqxHveX+et+B9e3hgilFvZmu3lzcUI7k4mQhfIq9yT
-ktqSJCfhXLlcfqNAOIlK85VxH9SUt53oRy0tVuyuOnnRcd3geVnDn51ilf9aKaZK
-95bORf7AfRjW8L9RvWf/ivBnKc0St6BfskjDjBKY4+eoie7vtonclcpYDT2MsS/7
-Nw66ZhH3M2FPgfeayE3gsXFRTIh4SVfSPxl3EZIYlTO4/vOJ7kzeRpY1e8MEq/CA
-lCJtMn6fFAD9bJSRAqi249pMRi6t+XhI2M+8uFnaud9zumZVBPUwjAXo80b9eths
-DCYUCiQtF6lCN4+ebOR/piF0dzJJTOen96rS1mqlmb/mNaow3qsgtjo5nO6NKp6R
-62ca1BaBL/Hr7xdE+EnD6EzkW+y5psL+03/a+HlBKsYCetRiMuVNrzEqnQoHaXoq
-wxJRtCx1b4Ka43TVQQgUzARppvcenkNavkaDs+A1rwEb/JKHcT1DyPy4iZcyS02K
-xjK081mNAGj0N3PPz35TcgzYMqq0PG8N+ojH/7P6HKhR4+eF56YtOOQuzzvB0km0
-OegEQv75eNU+al4aa6TjATVLH+MB5ZUa6Jn1/WHnuHgxk6CW5AOalJHnaZnSHKY1
-6i7gRjUQFBPygvkaIe7XAF+9DR0eoeLhsB5YgSi9DmxkHItkj/iYeU73soDQETz7
-qop1R9A5C2PcTWtvx/lEsLx5EBsvAW9WOFU0nPxJJHVhZCpUZqhbd0oDWbSdFjn9
-Vw9jMnar5F6zafCBBg/m9/S8pHeU2OR8e5TjnzFprLB6Aw4LuuHFBoExdpQ2dCwL
-w/CYBQjWhkey3MMsNEIb/COI5/feFiMVNWvI04EqdeFUzuOA/ukcmOpeHl4nxDwS
-y93goA0cZnUgY0ojte25ta1HA/EA5kigM/9vMMqMJXocNx5gKyq5QkDoSUHHQqVZ
-qz+xM1rRA3O6YhVefQyVZ6eX8TdViwA/0SsDdsQwIZ50lsfxoxHwta1rzaqAk2EH
-lKWtkaa14I3wuOPFXjZ7FzjzoyPseXsQGhZE7RbsL/2dYVhrlTqU/d1gFl4O9L6J
-KA+s+ZJiyFAB8XribVhBdmDhxZtBlb3X1bymfIpbm3ED0lT0QDqYmyB1OC1sfo5a
-l9eriaJyZKywYVQTMXfPNquruD/4WubiV6Gt6TaBLTBebzxdJt3f7BWEj3l62JSt
-B372Vbeyt9G/5wqxcrvjRQ9bSHVgx6m/Jwrd/5vzke4SQx9fCPZyzJ5GC8PriEPk
-al2jTeLUBXY+wDB2GmTmh6oQNUAKWTRFI4HLFE4PDBQW1QCSsvb1iiUhGxahneKr
-opUMPGs9cCmjFAo1ypvEeOq8433vk68HrcMJAG9XGnJU8yx3+G9LiI7HHqnMXMzi
-VrTl2tGaX7dsipjontq5Op7ybG7hA3P2DhOtrZPveZkYKT8BecYMw8Mc6+OuBu6n
-Gmt0cEsSO6klBz3JO4EE+wOew+rfpX3QG4q8xI8bhA59B+payRFcbllcDGl7o5HN
-nlvJuI1u9E5BPDLfGaryqcbRp82gcYAKZef+7Rzb5Fjn6BspP8YdRumggJ3+eS0c
-mx0M6tfjyKQUG9tsYe/YSPT+TPhGMebZII1Lmz7PvzL10HeUAPGHEglD4pIh/JuE
-PrDIXIf9mcT50fTeqlPmhBLrBzOGeVcwBC/8Az7Xxt4KH/Nz6hJISZEJo0aYhdlT
-/yZXSPdPpgE0ap2rbx74pWFzrpdPw8+MsOM+pAfrr14SfQVbAd4MtUjBPKkaz+PL
-JYK+u6JhwdNham/dUzjJbn9A/iOi9Rkz3ofdRUXudXYOFGc3gvpbyLIgpGub790x
-aqJi+2gXYcHp5ozXeoppxcwO02SqR7fjjKE8/cBTETMvfZW7LRa7eUumjK1Uqx5N
-/HESFDihvnW9PHbDsMG8NM7QEyrfXZxQwVmI/x9aSus1/mYwkGu52XXEgaoDL7R4
-GYIh4w+d9V5MGiFll9/5a3W0PrBmRwKXwN26rqv5X31UYDINkOJDvwAGpZtHLpc7
-hosKwFutQZ49bwK0W9Pr7tWj8QKroqUPHYUUckXlvKOCS9LamFbFbKjnZVc5GOFI
-EntgcIaSJbDc8npWQ5wmOMDUCWlRp/eUIWq0D+dvmqx+q8w5SjOVQrqnwSzOpuwd
-TM1q+DBYUDsfxgtymjbzosmeq8CIR+CXdrq4SdkAcSMRT5oBelRdxYVbNMT2IoMN
-I2keMl+8PRWRSUzsyVrSbNjviEn6WASWNj31diTB7NSv4v1mGnTYmErQwREUT3YC
-MsXjM2e4QOFzlvw/lFyZfTFFcfdn3VfyJGgEbjm0EqA+WgqHe006ZyXFq6iASVtW
-FKNAbVPCg+WlC+VPx/M+khp5bwKW0eM0s3MgypuSC8FV6M/wFyH8++sCY6Lp9T5s
-T8zA0PhfYJgRBdikcSWRpthQ1KM6oeXk2rlBLeYoNRTa4Uz9NBlwR/k+Eiu13g4C
-d5xugooU1/em3JeQYje7LNgwGKVgb2xHRNa8vY1e5JK92bNDgfNnG/QsllY2xx2d
-ely8rnQkfaVItYH+cQrggsK/GlYez8+Sp5k7Fv7zHRicjx2YNbUmPia9c4yaJD7W
-VXDzaD8pw9qjJaByGNMhZ7bdPbFuCEEiKVQEgS7UlxecrK998NMonqMJ7Q14PMoh
-T3QZl38nvgDSSu2kWOY9ArcGYLnDANPx5fydBW1u1KF0vr1YKcOU/CiJffNXjd2x
-zyTjrvQ9Q5v1TJi7ME6ubaRDgoZe5i7vCowruPw+9t0a8nc4OxctqfvK1zwh7+Ih
-27iod2w3BJ3WwVfHmsT0YkWiXEaWfAWtVEXrDZhTax5s0m1b1ya0h15VPUhYB4Ue
-Rn2ZSfTK0RuCLgCo4qGtxG5X2kHtiqNSBJTO5MPgxdszGT8vQxEsCalqcLUZfOYW
-nosO6j4FmzpmoR5lNJjBwAxYMRcS+jdsDzQ8hoIftdbVosFHjl8YT1xS0zU0Vzjq
-IAEcnoK5sNqSWIFId8HQOPhghAqrSMUh2xcO9jN3YAHAN5qFDQtnlGICJdZ0Ysb5
-D37hzqcgFkbohrT1pxNGiWOQlr0G0R73sDI730b6Xyowhz4GXyPhfw8TWvVlN06F
-r5JBbADyK3vSn3XelQ4wz60Uy4h7rDhBcaZ9wEhFa/W8b6QIQ9tMqVRFcUbMKzi4
-Su+L6xATFclwaz9qS7iU4+RnehIEhS1K9XgXRiSyWnKazwkXmMMGvNe8d668DTSo
-YbYjivNfmJQtUvVxXzSF22fZnNA9Aa4qZ/G85yGtU4owuV33fWiDuJIM28D544ft
-R80ozYbLlZyBuC0EFBaJcb/RYZUvU3FrFsYFjVHg9XrFfcrdUdCbXM2G79wcwP8y
-InJ9ByBnx8McJwhunTdHnDpo8BIQ0wjaSJnAl+p6Vfm3yY0174TTzu/1XgYi/VRU
-E6g0AZ+Iz6Ng1DUxpWrrWsBAMK48vdlXBIgZ81QaGZ2cbrCb1TfucpHYrMPAtgFP
-rKVNzW2TLfwZgLpLLISjigeK4aa/4RYfHODlCUQw9sVIJmnrNLiy9N4UBHpO1h47
-LVK+wUXgfNB5EvVgpF9XXVW1tXdF5tVypEqlcgPYWgHY3VNytXERBCDaQztePGUO
-tRKfcTzdFVhCVQJFDBjlmdiSfvEw6g7IrKNxTspN6U4D5+bKhBYajkXl1a2DqA5P
-HLqnFyCZUK4RsVD4Ferxom0AQ79eimX7K3Lp4SXmCfR8We6B/58tWYCfGtPErokw
-6DMWkjLKKp9yH8loB//nYzZrioocc7XuYCBg8PsHaSsSj71VuUepP3PHD/dzdCmR
-XnG1Q/DsnuFnMqPJLGdIheHfrOx/JhryZQKncLbKHe5HebAvlJJ3AmSGousWF3yv
-CZYSXPhBN4TbR9fBGQ2kc+yVeMuu1AjFB5DcFGJlmvhBJ1eS29yTvfwmIuttZrze
-iYOlM6DZwM3HbyrUkm2YhU0KundK/thmki7TVrSnkx2oIaQj26DSxzchKnEFoPKq
-AvJVwGbqiQQ7WjEVZbTyhrvxiNYozuZ6dA0FDnZ5RaTQ02qXKsKQ2fNT2VY1ZDQa
-I7sNQoDocNXzUuHPOkYqqHRkKKIxQol1+JUYxo+ZMRDNce7Yotkn0H5aeN2aNELO
-jUfgQi6xOvxI+lO5kixMHX4O01aOQpi4mxBl8JgZnxK8sCTbZ6jC+4AJbR6SGvMP
-nMadT3m1Ij6DK8OC+gElvt6PzGTQ5EGRyWDcCWNncOKTopD7YwrZw+DZYLehaLMx
-dpQ30pY0dn0Z7s96VHXqgZAVZrH95plDm9GvEhGa0RGA/EanLuFgnuMBuLSD3zJZ
-4+pMeljvvq5kNLST77c6b1++mqq3zrBnevV3nQFvM+5QKeHLHoz4YFKriQ6I3AhN
-FBOcebxpNUJRqIbbTY34jlK4jo7qc5YOz2MZf9URx+77gTaxiDBo2cnAeEYNqzUF
-sIdeJAwLMEU1BdWv5q7/MUTnzMD9sufYj3BR/7rGblKj3Z851y2SFsLXQu91BcTh
-nMhVtHZgIKmuXuoe+dHrjB/zXORwSHLP3tFrZ3RAKeBfJdlcAfPaO42vpqfM0OzM
-Bf3PhUBOC2xu6TQcE91bQ5QY4+xH7XGfHFUA2cX9PghpEem0ZnNoNwo7aLVwVYlG
-oWraNldZCR/E4zWrNeU0W9SpP916GrYCo2hAcw5/gOVJEw0cR/ohoFN1gto8R6Fv
-ESIOj2hhwwNsIzLkcxnjqWcqd/qcTkMUSotRcwf12NeBWx4i9xnMjkvbDyaI9Bvb
-fOvRu1pUo3ymZtz6TNBjYmh4HxSAvIzkr1yOW5Ka8QhYRZMnH3IAFbHv9wtmnK3Q
-hOiLM8L/Qz9ngoyNR5s0TCiT/wwToAg60nnaE+1H5/ZPv2mUdRMnpD58ISXBGivl
-3psFIxBS9z7mJwFdPcS1IV+ofF9SrpJuIaJUGWR0VdHYhp8BZXB3+snHHxzL8bRs
-raUSUK5kgIj8ImOPuWcPPGHmDsnQ4xh9Ovmz6R3wK7IExV1OkcJBDyNmEAIup7D0
-6uITSp8ivfYf3CO7T3lM6omA8ZzXRXehJE8KZTwB/rvL4L9TRIdnfGzLeCIKHbB7
-j8Bsy/l+ynsGnjjGlJ0Wm8WPStCRJcWHRNNrqAh447OW31/4nACZpXu0FxgT+ufj
-3il+OLBqyQ/FH/FRZnTvaklkLvBunQEYDhu7tKSys4rYtlijifYbghP6rZcEmhZW
-rQzr49URgWgGfGsaDprXI5WUkKNwlC5tBev/O0a0GO0tFhx3/Fm91ZuI5uLZqpXp
-EwKYhdjeYs6OubWgV9q+X7d6j+U/5PiNgDVzv5NYxo55A2mCejHHkjXJmOUglOWf
-UvG8y5MtvMXueZFnQyxaojczhuykr0hsIBn5pnv+mWThYig1EQtQVsLBlojtQyL+
-t+HrJJxp4PuNQ7sjrTJDMWRnxnE6qa7RSXbMpzgie2IaHAHi3PxaPIh2g1CfJJm+
-2eiqsUcxjbRBRYsuiG8V9UB1aN/XmiiKqGRzl/77wA/kFj3/JDqryFFBO9P3yL2A
-D9r9scsv2RZaMSpvS1Gr8eOPX9IeZZYufLrnPOcDL4P7h5BUnibGM54+LMNomAjB
-DBfkyqw/Lzus0tX9hGXrMuoDZA30VPt+fJbq0Q3ntbeS0UcpZJpLoDu/SPneqE8/
-lYuNl2k6rSVs8kLlSPrxllzT1SsZOISut0DZDXJOfNYfznmJgJN0J3vwu6aWBoMe
-4l7aQnzah2N4MF5C9RQtMTXCprzFmZ5uxlUO+VS+iAV4och70PHKdZ17HaOdNBSY
-0yXyhFwjF+MmaXPFU5RArtO+xPW3tJzxn+r+HVaOVTq1mR8OaNdZhjVx+B9pkFi9
-egLu9+K+5mq/r4cUuV9l2kppqgid5RD2KHtmERMEKM82SfD/UJ5/69zdCzMgVzPu
-bmYk1H2tQNkE4pqW4RVwOitNu3lCwrt0ZMg8TflFWwHRRs3KnbJygdZAnL3nzTBN
-Q9puXc5PwQkqe7qsTF4GWz/vjGGZqNhLXbq+MBSA/7axAgy+s69iSG2EFYb3sc4k
-5cYkfnNxyd5u4JtVTJolOjTIAagZpW7Np6LZ1pr/zuUNrn8vqdqxfTfr3ucQQpe4
-Rmqzxdx3yYOIPhAVU9RgAHNqYbbvsne5+0xi81jzwUy516kYq6gUc3hrFGhSLjC5
-jPGJybxdpMp1EEgZobve4It0CjWEUOYeYAVWkzxV/6AwdeHcdbEoJotTzWgRjF/4
-9rsXKdTGem3NyoMWU1Qf8iT5tUTTtOo/qfxvIq3dByvSBIWCEIZJ0SLaCo/8Z0g9
-1/PYrhFr8h9gMHL0cQGMGIKItOLyWwjA4kQWyi4cpBOG82Mokkr7cy4qRJTKFozD
-iK8scFpD6gufPN8Q+jSWHlCczslr00iDO16QPZCk8o4aYni+K69Pg9JZ9+YtRhS6
-PUX5XiETtm/VnrATHihhciBcxhwUZd3GxTn/UcvfZy0OwtTHbWUM4EIjUliKUobE
-WfMycwKL5iMcFU+axsdV66EGOz6K3caoK2HcYrYVPsKPV1SqOb/S2bvqYeptnfMN
-87bJJMGVe+rrP2bPNNZlsVuEHoBjg3bwINGud7OfA1rvjYMscHJUfPT2/wlGUjzz
-sSh6aSIGxtqGQxUOwwlMRQn8ROFQsity6fAgWPk8qKuZel3dpdDLiwbRyz4hym+u
-nKaGS0q+4n0ZletY0bcUb5F3PXgc2JhDIq/qKOX1adJhv85qLUfO8fHqELmv1ziA
-TEbPSCb1o0iOe+s87E5cgDFeEjB4ywhwCiqFEV8j0QPK3yCasq1CVnOI+NfwBHBB
-IC3/PX8m4alaEJYQvRpXO3gQVZrB3Qj+dDXf42F0qsonkRAHuWMP0L3sm0Z9CbOI
-arXwwmQ7NXuMQc3Q7afSkjH0m9VaRusRFOCP66Al2m1iT7iFC5qH2QNoiD9Cu3jw
-9r6At39E/FWmygVPDnlRGbrGl5+ZKLtHB/4xVBRx1RFD2Aza6ZkJTCNi9+ySxILl
-oL5EjkXG4Jo97iufY7ddfQ3k6LpK2ymegqZ1V51/V0muqGIJYn3ivvn4PJM36PEK
-5ljL6pjsBRGzcoRUIncs71RGu+8Gb1sLSCzB7l7SsOqJjQwNrdCk3D6myR0I92fc
-sPBw4oD3up9I4ExkGNDMISFRt8nSF3CmR+r7a4vD+viWwzl+kNIMsi28FSwcnTgX
-CKat8SR6FEDbpXZ2uqQROhesa8qMjEL/uVlZFm07LGKKsSRgpdBMm3PhtbBowFZX
-j0TY5DWhvPP3ivcIltg9iCF5vzokixtSE1X0YKnsJXQNJ/fGBjokUDGESDlx93Rr
-ozVEZ2felctVQO1m4OmKH+6byXCiTMDmRmkZ4yOICV8fSO60tjR5vyFfL8txxsnl
-ak0Z5lO5fmMzX9QyLSpNzP4FBi2b26ylARIr6rVLfRYlERasV16sgNBZT2Cx4qnd
-VevRVsUOqgiXZFMXsPj/ocgsmUQ7Ms5iRcdb4va7TdKnOPP/u6nleneVped/sznW
-KqcMv+U/Z9jhGJweGNjb+hk4EaCyzkcPi0xSIry8XPf/Dzw+7OEIFG85FdVLeVqI
-pSBftCNu51omoDQXGLrVR8CRBM2oSwdneyD7Ik+ydeMiW3hXMundkbqoGea6oZnB
-QpAMawWXEcRe2ndjT85UCZMZ5xKKAOh3FjUD0IuPxsi36uUA5V/Yzmghj7gczCgv
-1vvbL+NNG02lFKnlTCpEcKTePluNJedJc6qKK5lif93Hw2j70Wqqep1Xmk8zRrxd
-/nXhJEI9BEhV3hkPAwPLhGWG79y7ilHAQVJ9y3Yo05GB8r3zwA0N8HR7s1eViJtN
-jsmjyjFdQt+563HFxyFlhQwPHwBAFY6/2kcqkrqffxSFzy6bUlb3Pqe9sknpRO5X
-3jidCsJBGNmOQbek1OYM5jXztebKRrZ+OW02owWSt+5QhUNJfGIPVechOpMsfBl2
-9sR2snm1BdPLDktYvcmB8vXdNOT33NoIQH00NmtULDdjn1/frew57oZlHUwqAtSQ
-0ElmhxuKFZ7OhkqGc0JIr0DlMgNMAzmN8Rzn9SgnttBdqeg1pw2pP2Xg7rtb4qvV
-DzQgdeV3Id8o/hlRqtFMyBwKZVcY2hxmese6jQG2I6TRAjyW7zc/gFOv7AeM7vMr
-FAhwdu8k0eyA8pGCFhkl0/izt3XbPyzxbo0ZG2sgbEMQ2xM2jo3ZCMo6GwYGlO/g
-uvm1vnD9XuWrk/D6KCG6b5F74G5aFQ+BpwhYIWPvDH8UPTJyWf+9fE4Z2X1bliDa
-qrWRQTJ/aRrH7FxpqfopRqjpzZebH1YlfxGMxJga8IwZ/z4+KXUVSYKNmZYjtFKG
-xorC1gxRiuQoNWedCgVNSPKPPMDEMyE7j4u3r9vh4n+n2gOakpVJL5xUiJVaxzvW
-x8i7miNan3aM42xaIXPQpFEOMpLJK1mlgxp0TN0hP0E/tWw8gwEkJjj9TAMVsszX
-pobc5iOZZ9xgIwG7N31YNLd9AqtG55tcAKAlJHKKq8kxDdyjwGpim4os2liwbA0/
-BTJZJT2j6yVmPyAV7Zv1rHM0dldc5eIKPVyA6kvLNU4AZ1LWQaCoHNSpIC7FNQTP
-TCXUwxBC/osJPscmonO7Nmyg2ZUR7uVfLyZU5+sNbl6mK1wnRsEXcC3Yd+p/ZbWY
-aSLKiMZ5d/tyx3wOKHUZ8xp4TKLdZfJ0SzhmR15q4ywRDxKaP12SyE69Sv8bMHMS
-fy2lyOMZiE6P+nD3edtKeb5UNMSfhiGuCUO5CjCJFLD/vmm3adY+fH3a9LwIPgmi
-j5FRttRnE7rC1V6hi9WaxCr7MGm30ucYtGFEQULmR0OzGP8DtUVnVI0Tf3i08L0s
-wEwbezGgmY1rzzf30lUzHpvVEKEbHRcpyq9e2vp9QI2WduDAeaB7vl3sW9tI2+tV
-X7UC+RGpHegWAg5kVWDVIWXNVYHFq7ZYKzfdxA1P4LZtb4HJLmQ+3ESgDbPldcsU
-QRKsMM9h1F8fq6fKBKGVeCrx+1AP3Z8ohhnaK7WI4XxG3/BeuACBobHM2lJSq8Fm
-7KNoXfncvVE8JrYld1Yv/qKDcNZjNQL0bhf8DZ/R9RpijU1sGsZxNNwns0GTXv85
-jHcRcz9WH/Ay9qWP41IJf+4gxpD4dbWQWPu+ixYrkTdV3zpjioLG2PIhgJ7P8Awr
-xDh/mPPPIEIuSNbdo9wENF0b14VljyJgN3wCfg2624mjhlEURXRy3ZVLwgYiQdwX
-iit9mrcrzRKzsNyf5MeBit+gzKCq9Wqumyd8OK8YrqXACx4gEjv7cBj4hCpF48FO
-fKxF5tE2kk0vtDqg875pCMoI20NnUFiAkIbwOX5+1nQ4AFEKJC2Gz8uqCiieNhH8
-d/ObPaXwUzrzoKaecgYYNSUlXK7UZ1Nbj6qHaATSaoN2l+RePVf71JETVF5p/uT4
-6yjfwn2iTD7xS4pA8BVgFli2Uu4ZlAhzNyqMGJPJ4X6W7phQ8iOGPlEvx3G/CWu8
-Ll5a6hsBvsgr7OtHpJpLTMZUzgBb3CeYBvmnpZeCXtqHTeX4LR3ovjVfpW9xwKJO
-kHSQptggYb5WPbQ3uTZGmsT1UH4gYGiY3sGtz8DJi4OVXkzLGoweeFZsHW+Lapnr
-R5Iao2w3kIyvIp81v5jvIfHIcuz1SAIjAjaytD6sEWpbQ6oVlSvC1AiwLxOau9uB
-pRYGC+7+Gr2j8p/PvB7Y0xWrmdVfWbkyUydc7fDxUR/+TqZC4r5CnEiC07eogiyU
-/SIDeAKHfRqeO9s95fZeesxqJU3LSRfmH8Rot3XI6QkDF76IrEij1+ULPmPLsxCq
-6kceJqcViwZ3kW0zzZoW1gYPzUssmUVhqGLGvAyJnh7wXoBZCZgSDubZ+lJFzKPx
-20vZfM3VKLGUtfaZf5UWpD47z6NmcRNXQ5U7qNCxyBkvZPXmpoaC7w+bi1rR+5op
-EeaI9aqAaRPJk6KgvTEcCD5lji6ts5tbX7x7CummbiIrQSz2dDMaZuj5HBDTy2QQ
-7/2TulILyzCNZ7HyMUKUc5bLdv2pfdZGFE8EN0tGjZE8YhAgCWEPwfdvgOMt9Utg
-6z+Y73WYUwqA4CkXCMY7Q6u2KZFnzHigBiR44gZDPWDXnqnwKAV2rC0UvZrex2b0
-KZxH5HQ7UQWOrqX/0MecM55opDtj+J3xjw949g95WjNH6c1qfBRZfxWsuW6DCzsS
-HLD5eFPWMBibvSbvCJcDmN58qCiIioMqeTvtq7Lt+ULcm/EmSVVM1ve7XADt3G3D
-cMxZXC617tr9oRsbVgS3oAmPf5iLekKw/1cxIoCQKDtzGY9fsj4u+lk5DpRS+Hwj
-RtLdyyzGgFLJP5TfBK8RS79GQ+0SzJ3xlamgFFOSlDNI4Y9S3jGRFylAnadUdRLN
-caJCx/2i/t/3ByGWoWYbMd+yFI+8uOhYdVytEA7KLnKriQJ/SSlGGXPV/wvCYmRv
-RNvq6QwpySE+Gwh53BkChhHLFKXlcMGroTROdd+enPuA9GZzEY/3nFklDDlqBzfm
-VTwJaNvvwJwzs6VPvNBMxVdnp1e76MyFwf7coLA6QaGcITviWK1Jcw+vh/KeVYvc
-GzAcoLoAq8FbynKHR6G9+ef0+Y9pJORvID2k4ZUkxzZeV1jbYFtrTpwlldJCeHav
-8b2ohTY8iBroVYRft8SA6K4OLfS8CY8cucGrdgKdhc5rwuz1eRl5h3KiDaGhURhI
-1RnhVDf8yqHzgA4MzXFfDKAVlHuUsq/iL5yEUP9PgWAQmn5EnjaaPXwVg8UtrTSA
-dPXrJ9H1BEgZDLx/F+Qg4XrE1oMVO6CW8Aa4ATG9Jln/oCRcCQZ8fWjTCkWG+73O
-HaMwnmp20XVWoBQTLn5kbXxirCk47JZYX3dCSZZ4eBMmze20PnWoSaFY42N4Ar+R
-U0Nl5fwObkDcgPEqcWtnBTP1nECRHGMZrT/AiAJEHa8FpCG/i+Rm4dWzRlylouEl
-CFYWr+DwUpuggZAWMN71vPqPMyWjSPT+EgtwAdckVdpA72PJGmpe8qOwzR0hD2Dn
-fkwuwS5k4V9MHIMdP4dwhccp0lqs0k+GDwb0XIb0WX3jBN+njwS0OCYmklDiv6Ht
-Q1ib18MPstxgl4AaoPVd0HVyWOxHXddSSY4FYV5m0pu1dAo4UWERv1Z9mnO6i5SE
-847oZDI7IvP/AzgPvmZmc5N0JIjW4+Jk+WeulIHOdYTsJ1rQRkimQQ509OkkOrSC
-EhsM9DbCQoolV8PoJFEifTP+7qOifNPyDlsZKFU8b8S4m70nr37kWF9il2xC0ZsW
-np5e9XZsdGBZZhmJbSpQrVG+z6cRvDyE7kcL++RfQT7Pu3RZx3i3rJvHXahNxZpj
-q6OkHaT3pyY8bOG+6Nsez+X9d//g+qraMUf04blrZebaST/2MYrEzfPfBzBDRkQt
-T+9wFr2iCORuXHIEZGou5+weYwAuI9I6kVjAM7/EPRd2YEKvqNpMLN6X672b5qaN
-3pho3nmNlQwmIX6spjbQhcRZyx89nnH1+5Fqvx2daOuAGsa3o/QIWH8EUlmXH/7X
-DvZ1fUIgwaBgaPm4qKd72qWBWj3h65lgE9k88BxscIGT0jNkVNYWQvDWMz4jTXnt
-MV32iDv0k5461UGbyOf3cBdw3uu0Tpnsoe82VDs5BteIwWZ8LZ6X255tHCvHNSbL
-gegFOiV3g4IW8fi+eF9G5KZzU2g4NdlPeK3m4jNZe26x4kLYW9ZYrqx7eunao1i7
-RLLPqezGg3abkvgHbFixzjoriGfHZInTT3KTr2ISnW4LHH3WzBmz73VMB5c0dP1X
-Iz9X4lqRsJfFApug90isWgBooctpJMxn1x8xIVN3bP/EJwpSdcvH1ZbdRXZt1TG7
-JSI/NVVon8cxa8sEW4BfrfgXweL6iYqJuix/hMNhGJLcKOIfcnrxq1z751GKgGlm
-B0QXlNMtfbh71gMIn1zw1VC8+deGbH/Wu0m0wqftweZ92YMv8McOK98Yelpti87n
-l2biDJ7aBqE7pLLTUbu6iuVMyDCg9CXRkUIg7FksZCcZkB2D1JsAEpqumOo9L9kG
-Bw4IrIQA6dD5epeqiUyHDYByezfq31k12EzUZfAEz6ndhQU/ETj7VaaTq/hEwJor
-WmHiIRvCSJnGoeRVI+S0DBOQPDGE54cNP13Zzj3km2/TZvSjiTMMfk59v5pZcyqP
-qBX5+A8J7/Yj9qQgH2Pl2OMFKxyffXkrcHryU5tZ/nwMNQYQ341jcTqTW+1BnGtc
-c1DVdmdjZAbJsduhS4c/ag1nb7rtkqXH57QgzVF+NabuM84oiaGisI/3fSovZmFh
-rBRD5PHa2o31JAuL466C5uwra1eev5t9Fk5RpEiMdM+X8B5Fn/YtVficiPaEK7Uj
-a1mWhRPEHHAdO17A8oPFRGk/yNzy3IaHF/AbMnMBpXAURVmDg3j2ZgnJDiKE5lL6
-zuCueC4IGAEh6Z+SpnVuNnl7X1k4T30s0MezLYa9EJLY/GYemvtJ6ziEZJ+V7Llo
-exjlax6cO5frmYMasGTThCpE/TWXUQSxg0CGxihC4qiwIlactYFMPg3dm6lE1Yk8
-/uqdTypHf5U7nLCI+Oj8TZR32Q2A8hdUWZ+qlN2SzNL3QxkzOG14ddmUxL1MiKEB
-9qEz9t5MLpDiBJWRdancMjkvvJH8NIfBh1Jfe5sZPJLHW1kADvLvB7GEeiEXHVmZ
-ePLpW30V7PY1uOIwnTqVp+zY4koZooORYhOBlAErLHJUVX9aOibWwexCCGJP161N
-yLeGIIEAdBF58nSiIxHMdqPplD6AvR8qCfijj6HGmC0NdkIg9WcHbi69PzxT2sZ3
-hf0Q6Qmbo/015HygAWiWdlia88+yloKJszaRlvlO5sUlNjG2L+4B2M8QK1bv9oPg
-FU771JVtXmXpSf+nl+zoYbaY9i8g6s5A/KAMkI5HUUN7j7cdXbq8kh78q/H3DM6L
-xu981lRbTqrh8d6WoKxVgez/nChis+wO/6Nqed1DDSPhAINQOtbVSJ+pqT0B+S1L
-J7O/TfZpJrkrJFxi9mv4DBcWSFSTkvDpSrnqLzDWK4uFK3LWPbQKyOIi3htAfOUN
-s4223TSEh9VAAWS4yw5GUhhlziBBFx+Ardx/5hdVakL0TZSHZiu6X7IyXlzMUElQ
-Tsx1fq6w50R1p9yWhA107kSa70hS9Zt0B39m3uq60/9yLbstsEJcBdHvX/XvDfPc
-lpnrhGzc1qvn980fv9mZm6ogjCxUs5cqO+Ds0525Gx92ObQc1aWS6a0xjMFCqkwY
-CKStsgVPZWOy7d+dAMFQXYMUavdfpb40Du43F6HNTcHzsrf/jmH7pkS7h5TiWRK1
-QIWh+F2nAuurKxW1Y0IBVRUvE5ynWSOk7aOCIvY7CSEFg7wsw5pigJ99aAt95DiJ
-PqppK620Ewt6/PtEdPlwvcvAPcB0Hxg3qCCMfdnuHgF56qRhP/8NNZz1DChN8gTH
-n3wb3eMsCgiWa/pd80SgcI2xs5xnGY10MefKGUX93tm4nLzd5OYuZLm0ARJcUJ/U
-rx0Yhi4xJLRDZ1C0gRC34IWwIeyDMVDyV/xkN5T9VMk4vMMd4TPXGp6sLvVyj00T
-O0RlQ4Q0+/zK3MckBVJ8zhWgOdNhoPf7W4vUBxrAHyNZGNjzBEhNAORMNtsQJWQC
-a4ecLkgksnl2x6DfHAluysWOwuBqW39Y/Br42Mz5lIkoKp+PiHlA+Z+p44dWZwq1
-tLSERWVIBggN5DpvFfDTlsjc0JZ8wDRlhcfHudJ/+/PObCsYdweziK+R4qo6CquA
-A09LkXyBqbFmwXCGwvxscTnxuvtvvQu3uKVpgfB69DS9ePDg6FP+tVbQFwBoI6V1
-LwgKoGD0lVlQrEF86WLmFVaYST/rkats6/RhvPysEoRPNwlc4wMa6MmAuxfWCCky
-fjX1++emzE7858kOjjr0hivP7naaeFELgz428CwJXxTMVxNTIUZ/Oa8UFptv2d9U
-R70MN7B7lhZ+p8494kbLUvIwrK09AAE7H6AkxbCs3+p7uKnif4OU86heSnEMSY9/
-4l3jKp+3GnC6WBC/jy3+3Oj/vKtl54o1vihDjAausdCVMD8G2C41RpGtu7Kv8/8a
-ofwUtM84PTakOaWqxMv3yOnrjb8+IJ3aoY6NeJ84k61FSTak5llQRYrlWKg0hwUW
-kE5j56m4If+vQkrdZu1VU58b3/zRdQPVABSfZI5KoPkkfi7oOlDL7w0qu1EJRvgo
-1NznjbpvABnRqsah9AEB8iGfvcH/BcqEkXN9vKaKLCczsiw2YVEO2KePn0M6iAkv
-kxeVuX60sdlLbkC/iD8pbkA7PLtJPRX0Iy8yffG1h7ib2L8Tz0EOebv3V0iWFIrr
-DUXToRxTAMLcoqEeaO9cjvF7mF+0BXSfqbb26GySFDREdsH81EpgGagx2vEWBf4P
-lCGvlwHjn2yvSwyKlazq+d9ZyI3pw0A6FPdS2GrgDl1J7fMBWkdkNiSczosSJ0mv
-gl6ZMgmPG5zwMsaxRrfVZ2guMSzYpuXMKvLxBVtp1FFpd1E+g9o9/U4VLh7M8jC+
-gHNatYXNaLS5buhk6Bie+p4NKhxxxV29M8ra6DFzV6jruj6Ey+oT+8Dpzzt2W8/S
-HQxmlnwmXQFI3IZ06noE6Ws55gjhCia3KpPaDuKKWB8i9hPPABo4CSHq0gbWZUJd
-eXJFoPkCSxCgIxRtOibR+2C/d1dqAZFOev4VZaxgpA8DF/PhGqwI7t8ANkeLimMS
-Th84jtlwDZs7ODbboa8garOVAyGST3HFSS5PQ0dweglQIRdAdLasctAOAHWnfIYV
-u1+1kPA78h5zyMJK+PATZsHoI1iOEoMUHeQVE8OdwuuG9T8jbOJH+HwhYGTFS0M+
-MEpFWeXPLcsXbR82gOD3BIM9UVBgGi2oABtngeIo1UKKoTgqQewlZ4tPu/yIXAoI
-hMo81lbIyVUxn2FGP2aLTddO4grOHWGbZI0UM8h12U7no0w4DXKh+LE3vIdHCNyM
-FLLj4oR2alx3ZrYT2vbcBClnsVH1fw3lODCOJWXD9MiJP76UOTwXBDiqnin1myNX
-OVU7A1BWrV7BDj3A4PHHTpW7SIJFrzA2b3SbJJAVlbEWLoxm0rpD5rvMQSRRzqeO
-FCsbmJTnjmuk5yxiS4Xf34sTZ8pBlOfLlDuLA1Uf/k1qA8WmUXHlV/zVTYFwo4t/
-J5hQt8j2lyqcUnmNZWyaiPmgEBMfOm6/XxpnlDKe/A12sOTLCqU6qIlHiJNrABk2
-gln9Rt2ZbxXlPp9o738+uNeaaEg+nprCwXnoxM1Nc1Bq3AE0CAk+RBhfqvOAbISH
-bVIVk+gf3wxWuRfZfRxWoxmOTGrQZOFH5Rvh8s0A+rhRNWbACZJLN2FKEsG/dnMw
-6w9V8gjT9BPTMgOuwT7Ldz9OSBDENUhvbiZ/wjTlwdWHv1RvWWkNLau89od0HrKs
-oON2mgVh8q4f71RpE3Yr3FZNBgTfscUtf+dxKA0jSGWTJFnZowudqcbH8E8S+Mhm
-BL8CH1getT7ymWW745+6psqG/bUvKtG12LbV03Lo9JxVR0n8YMa4jVfD/NRw4y2O
-Flz/77fpCPLzObp6+2BF+pIavPGpzO10Z28v7HN3qxiHMliuLPYOVwVvF8OjmUDD
-9j7gr8fIsWAHnSP6fLQw5oknfvDkBYL09w1Q6XOlRmH+b6RCBb7Njzk49OWdL/4y
-7jSs8w/ds/4CGJJO4cTo4zMp8/kOWvhiXroojw6mhGXUzvxa51li0RxyfMKK1Sqh
-o7Ue+QdVTHEO785lOiAK8LrBhAJegi6Hr+5aELYy4lF23A0drRBZyTsOI/Zv2cJx
-gdX1ZZd0RrGf/XaRO1fvV90Xupalb5sTm6X3YJ4xmzHXLyX2zidJJyxPqEveeFNP
-84oZ42WtvgRi4SIzM1/tqQkdIrjB+K4pv8795qsnwNEXIMLOR+lValpKvndNHlVn
-eq16VCCTF6S3mPtYUa0+KylthQdy6qGAW4Z1CtZZeJk4C369ZonrzD5LXOK8f5QD
-9quP5pAQUgqy3k+CQRNGjPl+pddTVuaEjRTI5DgyrNtuH6tzR1c89V9lpQabOlF+
-Sg8/wK2NQt43cSsmjBVVkdn3aY2YaZE+HZcKW1P52ZyeL3NVarGBAnRUp8XnwX8L
-nPPcdaigsMbzkroQxDIvVmwZ3brMew0LJVh0hQU0tuDnr6xxv2B6sPIHCgOaWrDh
-XghctjTnSb2guoc0qQTDMNYW5e/twBTYGiKPxYfvy8X5MKCBRI7mFmtfOpaMkIvX
-3tMu+3l/xhTS2t4yIRaW24nKIO7u8IA4QR1lPfsvnulNhgnbQZ5E4XsNA4yqTFl1
-Gdmcc3hS+b7OTJkZLwMDsj0grDnoUHZ6/xpYcwE3/WvLa0PcnN3m4uR+tWDafL9N
-8BfgFb79wrF/pMgwyN95NZMK9hzJYJoA6HtAQ4dqjgoJ6DtxK5xVaDmNiyCS5S3k
-OIItmlb+KJy77tFXFxxxNv9x92YIHOz+2jT06E2VYCBL5/xFY3KHJa1rI928gfRT
-x+wUgDlwiHptC3Jihqxuyb50IHegxHYe8/Ua7VG5pEOQf6FSljweGnlkt1o8bPO4
-aQ1Q+pRlJiM1gkIWpm4pvxqTwmQl5Dmp+/4c/bIs3bpdMTkdmhqDShbz3A1pJGi1
-Hw1+X17+Qz192jpS14Nj6oKo8nAE3lGpnP5A5gl6EKJt9RYHhBBvr9ZZrhcb2q4T
-xta24YPXgaz/ftgRsJkiFvLpuABOnMOqq8aK8fRiaYRdSNXWA0xwDJvl4lcLkAXV
-hth1tuHJO67QnqHpjkgVcRUIcZsD0Seiu8Ws6UqSeIPjdF+s5LnuRo6hFiyhaYC7
-zxIK9iipfsbdp7eYaP5JZybeKwPRE4b06NjP4PEup8fNUP6Sdfgf7Ym0OwU1DQkR
-G/PlGcWCdIkJRNbMl9q8PcyR+RBcyz39tTGNAD3+CmWjDZjcF7yZM3DmtJ2WTeaI
-H8Etx1MT2CZQeQfhCjrVpHs1RzbLMOXd0EqAIj0VjNdOibBVi1d1VBiiYuSOmjZr
-H4+OKzVRo9ZjhesFIRkk7UpatuZ4w2QWxwh4kFSzdibhSnxPpHpdWX9de9bDEJXk
-a5GxB4yPjLTcbPKnpXCEzrGa4CZ4p1cfnTMWLgtUCZQOLB+rPpYtd5X/xj8CTl++
-5p5jx8YrxvDGxCGqaRqoP1HplgsbxRzigzC4hKs7TxwKYk6nqjmszcJC7JrYiPUa
-z7YKamvIckbI+Yb1LQYiS8oChrnkGeBaB9PUFq2FJcuNxX+jirqAa2zO1/Jbjs3d
-5HcKe249gg4AJEvvtEsI4AorkNl/2E+GO8zhme+Ft6tb5bjPZyhcLBGJaLMJy6vD
-9oUiTKZkHJVImesv3Rr0RyaYzZAn1xmnolghBc+KvVUdMXrmKMlEJsCGpy7cUGcm
-qu82GexZgNITMOQ6ZzvipdLEUDfs/K9PHGIgthrHyi0a2cmQqi4HY9Ysw6bgSmAP
-lQeaY7IHuC8ffX1R3WmiHeXlyQu9vc4AYMJ1xgecNLVwjHUFL6Mj62AEToZnzdPA
-sIpbfD2hzapuoszCe0Vb/unIhqBbEmnXJgBQ+QYFUq3cRo0h9K1guh4CuQjcTmik
-vf/W+vU1ewd4zjXoybg/bTfDIqrAbbzbf7dtIlfoAIrLr28Ybt8sNX+hwkNau9mD
-ZpayDApr9y+jGN8ibhTq+ZEuS7gPjC0Xn/HD00P/WQ2RkqiXZ6uWx+tJQsIFGbO4
-lL9vJgsjcMxvKhxCc3jX6TXk74Z/l+Mgwr4zB4uMGx5JtehcjqgT1szf96eWAn9k
-/PQR+PjqN1Q27aQXRqYQY5GbCWpnpNydROWa/2Ou5rBtb2NIFtZyPaJd04+WTNz/
-weIeu0U+nw7OMekbaq8Q1D1xy7/jsGTkDfSqIn9l9KI8nMWGoGxUdPQGKYPQLDGO
-isVGU1zdTr3PhPXmSwPZTIXiPhLAAas3Y2IGaa8lmqqlAK2K4QTcE2jqlTLct6d9
-SmbRjHd0Ll3zR2AkquYAKRZF4aDvVIgMrN8L7en2cIP8MYOoFNJRRqasjHrUJw2E
-ZUnx8VUOoMB0/VxulPzvNfbIGkENcIzV6JzsTaFxQ0wQEw5m85gvQEEt4obar+vF
-iJzZFq08qJMYW9X21TlKY8Cib3C672QwFmcktfE4m2zkPasgCcodE7wdsP8RyLzZ
-jIjvY75f8iU4Fuw3gb4lw9jsmYoCs7m7MuqiL4AWIYTZQ0YgbZu/HhN5do86pp2l
-0cI4gx0Jg1OF0G5UfkJ4ULutLC8T+jhpx4w7PDedDK1LPAjtBRkzTuo4WP2xnCr/
-u8NTvSGsXd0I7KVkHf2XKO5VKyrxQ9HRIHcGILXLLklDAeKpDbgOytG1IWeAyMDw
-OyWSShXK049nnKQP8z+6u45NGgt1xpLJZHO2D81RvT9WmOvOT2ODjDWrK1gN7xYN
-816XXgiLHR9zrxgty86kkmU4L1owxW47tl2jK6Git7ER96EpMOZOmnYh0xRB8bQN
-8hZHrXPUsssYELgcmT98lKNf18wlqh8i1inEMM3+LQICncFCtxapvG9mPUlw+jdf
-f5p4nrdw9xAVTOYgqsKgCZz94TUo5D/s2uOe/o2+XgPbJhX1EtGjXy9NO6IqigBI
-cv+rrslIXpIkJmC93jkHOboeoHeLZOd2OSIOY7/Vc4D/NQn4jN569QFcRmi7AlcF
-+1wY4IX2Dm31+GOTy2oEpA2nqegtXxCydzVxt9Z6UgicMGHGMpQezDeF5JFz3EhN
-DtUic2dNtkkfbnVpOn5LAwEbZKf/HrA8U/S1ahRfYjf7dfON7RuW5gUJTgLv9j0O
-fMJOwShZ1vqYsDCUmRk5cyKO4Vqdet8PZ9vraP/SnZa0AZhf3wqQe+oa+jZT8bp7
-JGt+wjd1OFNwdzKsDWQDq1m2XgYDj5st8Bx6cp+ifLBrUdQiIasx72MsDQK613Kk
-wgJX+4ikZLwNU6A/RkBTdumws6+//DuGsxqxnwbLUTYinTWyuvyC56Hyi5FkO5ce
-D8tJY5VfNznUD8bvyBf2W/Qy3Ix+dMPHIwB48wqz2Tt0aPElrzJZyfpbqmF7xQsQ
-jvuP0rUVR4Q07I+0wy4uqvtivTvLrd/svW2rpVtsgobPOZf9Y9sygLnHy7xueFfl
-T2UXtucpVjgW6d095TOiV6mVvcr7yfzAQP+ur0d8nnycB2x0ofoYgbW6Dr2VzYM6
-KyVxDR6IxbFhtQPfecyNVN7nBWQSpDiQSBO/dyjF3/wD6HNps/pLBKvkPiwgM0j2
-s3F2ISQQP2OdMjvePrrpWePp/xlHB6ZJi10vhSQSosup3vmcB+WKI6X30ip98QhF
-5igfM9jJc9dhN1CrtKu/ou1O/opouRlIdPKW+Lz81P4da8n+52Bey09QAtQxPYAF
-WxCzlpNtJNjK+n8rJPFVTWb7bsQ0X7+W0wqo3CpImUzJ4kt8ZpEfFdgWJuOfx3dt
-pZUXoRnyWgKp7/Otq016/1nt/TPQLgHutCm1YS17neXC+nJcvw2knfJ0sm2GMBfB
-e6dT6xjB3luV+hpc4uHrApz1oL0wMtId88VuFzE6MwHNhk4A+ITXCtLn3bUzTgTg
-MRwgrvgrLlWuxzl/Pqyaix8ICjsMYTwkf/7bkv92A9/qDgvorLg7wI20RS0ESFDb
-i/5ZY0atu8726+Pm7mxHGQQ6eWirm7Exd+zuYr09UQ09/XJlVfBq9EEMhVvRHUHb
-1mwoRNIPGNeLReCDDUN2iCnHS9/6SMgBJC2zuznBQzD7fnlnD2+Fc4TT7K9H0d9j
-TlPmLqLeoAw5eTSO/zdhMGknRCjf2I+jPkpeJa5nhPpWBfAxKbfEhZJlQQ/AFKu1
-mjFy3AzV6bt6zOBeC27aoNpy/0A+FU8HUGCFj4EOah4iflNpPkolTG9+elIeVA9u
-ndwfs7o/aOPeVeiugB8Fajvi4AEnfibCewx2WpAmeemmMTUN57rnCOX9nPefkV6c
-SCS55gu61A/cbpiepnZ+bstllsz2jBnp6CdazyGVYioH8xM1GJ8gJeJLPG2Empjp
-1TEYWJ97BAqsP8If2TrJglFY5UjgTFWYfMlVelMuE/9zpFnHmvfgBP4f2qe5THuy
-MPqyJajhYPlmtqxD0bp5InLmwrViwCdsSKV/l2BQhOUw/mQwAyL4/s8/q17Kn2u8
-wqb3Q99oVl3gAwUwqW/OPrSabKttW8mtD18xoM55WouHGFrnPyCHmF4onf7hbPXu
-3qYMIxI8vq2JPLD+HvFSGV62yupddStUBTPEqZWsaAbuuPGqNd2x3siCazyfb01H
-xvGSUqELwAnSiP03qbi6E+JZU0nCBgMfCFiCQofaIBRWeovEpBPt7dN1PnDeP8ub
-8hLBgf8bsSPSUASXw2NFBRT/H3Ch/3TvJDYQ2uKKal4Y8cKBxfJH8O+X4MzaZ7CZ
-G6Cw+LCocPoCMMgplmdd4/DXsiLF3ktRSzgalUH23IFbzAp4xrfpvKYk4nZpNYf/
-7ItL53cDE5yBT3G0AXja6Bm8Rf6IHo5uBffy162FpDEmjGZap5u7mdDE+/QH7L5d
-W97ATtv/sh2Q2sbVqnYR6LEtsERaB1wOlg8mhQvLv2j5Z+/bkE/qB2j7ZYCW9AR9
-xWBTXB8BXqs2rHiLACbopdpV/BXloVnlNAOPOfbQBeEO9bNO60N0gUn/QpakPaP7
-KNHgJ4QlbvQisPa2mEuSEokKzpW7t9HM1o3iV9rMV0MYOpCHnVYObIPX3a9+zFGa
-XyjXi8Y7Znzq/4xLwRi4Rh9IDL1anzr4qhKGoRmsU8RJgeTnU7+288OjCtqlmedI
-MX4lbch6yV5krCr2Bxqzx7fLaTMDNlDRf9FKnwJiGXf2rcnr2Qp0LkznGWMWxQPy
-umLO10BLSRfdLNCWmN7OjIVIz1CTtCMdiEfUf7bWbyQwnb+kiMAmbHMVZY/4eECQ
-mDb9pI+vpnLNobhQuDMYlJq5wNYQHUmp87pQtVEtlzEqWw9hxo/ofdNyOH/xOxAJ
-xvcoBdH9Ii3moJEmhGUC6lOhaCf6tPzpdJumkDBSMhzG+T5cS55Dgz4RrMi78PFA
-bTQvwPujGB7rJf/aFU4AA4TpAJhnA6jbvWhqMkFg7Gw5jbhoDxCEidHhqYGXxEk/
-cz4e8q0XbU8ouLNm9szJrgbeFPjOVqgwn60dqv78hEifchkUpe6qgORszbUQ79BH
-O+/Sy4CKr3h1ur7jIxAUWW43yBIsKuhpvZ1xCq+UZXcZhNJ5LnbF2H0SgldGj9Zn
-mVDgANRAB3UKkNR2KMuPVXvGd50MvEii7+ryTH4Jui83dTdUspVbiZ25Z2nRADPP
-jNFZ1/XJOmQxjZeppV9NjzDpQDEcRuLvPbKkRFoxatQqyeQwhCIGroD0sEl0QL87
-d/oauPMGjkGm1rb99DKwqDfx6CymMmszbuHLNqXsmgyz729NGLt3YKRePl8AsjMR
-ZrdBZb972sigZaPO3aXoMrMd0OWcSbt6/B/0Q+sXLhqeb257qXZMptISJeDPJK/1
-ym28DQVPv0bp305G2YdmUqLAO4rQKQx6j58DkqdVI+Z2SWyXEzQs0c33db/xkSqn
-GhyuELVDYPpvQPNp4f8GqfNymtVpKaxiiQ0vXJNjM4SFi/EoBIq4sSEWAToXt4vq
-4cNwHsKbL7R5dsuOER84AGSUVVKFHBscroejOC2W/j9R1ucgxGab/DVVBF9FpbTv
-dzQvNdaMtuLCkzQcY/3QJafHxOzRveDKdmS4r01B/wIG0vaIlo1M0h06+s9gGoSh
-7sbMb1UBGAFBu8UNCLMnwBCFmzN28SnDxaqTYDzBEhrsNc5G+PsZg4b6ypm70kPX
-UqhpO6J6dDomlrUOzHkKPR3oNdbmDh6JPPe6vL7C7FS4xAegWp7bmgFpdyeJPWCk
-fbBD5vIZI/WiGuxQojAoY8iD4M+g0uF5Zrgpxrlueaq2SKhWDfBXgflLdFTUMrQU
-gZsbUZtTEEagYjgZEr6GbW2bx6JjAHLRhRFf1oTu6T8oaQs5/IL94g3JyX3uF3TU
-WkTv5bi2hw6vCfFSmgDSNA72SPjigLiC0nxGWWT5eONUf0yBQ1yvcTFN756KlicI
-O5gWAn2pUYK0lCPh4lJvYi+tTe1RKBozUdBoemBgblPHfBqRCHhth9fJ0Jkj4BhX
-RO6y1QbAiu7JVTGvynh6cfQlQ1iMsU0RivA753Dn6uScHvRs15gKpIT5QUJTMV/5
-XVSCvsUdz+P0D7GIZ0WopTy65zJsUbwJRNfCYdfolIVqiBYseN9z4rN1OVKHRh+l
-UdVZrp/Hs7aoTvDK5biM+zMCPRQP3g3KWA1DppNMfJuHFL19chrewZ8ZinR9LsU1
-BmP6sY80F4q0qfKyKwCvCfHgTLcAPtR1p1X/xJ65I8KgknyKqqMG5vss9DL7F/Tz
-r92zChXeFJLrW4885aaz/JtlERTmLDf09hKjHnC9/DtWrWbrrb9O7yG3uF9kmTGR
-+kOZ+iSr7Oo79xmzzLW8JqZDeF941KUY3a3Bza1z0QvE+SnH3UbycFv4pp7bWXWb
-3GHU+kkf3Vi8UugmLkY3vLibMVl7vkBYYOYJzI3ZztsKAUtVr0BYa0dkQX3jLApk
-Yzwbcvcz6s6gCQK+3D37Vfz+D2TVPOEPeFmxz3UseMP4Pmqa4a+oMJhsCt5cDPSw
-UA8cpDHHg/cNvBSkAWE0uov7X/K476V/1yGK9mk8G9KaGSogKZWBLFnv7Q+ZFFvX
-tlCSELIgDVFm0JI6AJC2e+w8B8jB5pDDNhz0CDi4emKbWcin2/rdyp7r/C9XEvO2
-V22H0AnRFG/aNo/EQA12gFKnIIU3UlFVXXIetw2GAX2AfUfaWpjMYFa5tH1uAmis
-WDqgmGs9/LyQFBNnxQbyZtV8p5txU041VAWg8RRGRWuKWev0HQR9scorjEMB8lKp
-2docpPlAfSpyOvFm/d2dK/hTN8+JtAASTrMV9/YYK+qoQp+E9Ip04po4CiWyHgfP
-p9YCnsYgObJA3NZsUgdxPuF7FcLB/rirEPyT3xXUTOkERb0uwVxnrjgSESkT/dFY
-9uQU6yjt1/h495fplyZrhDf+J+lV+xDSNJf77GFnsQawHX6R9VxAFWqbFz1JmPIA
-9yPqcmCFXGE0M3yTDPmhvox/6eHC7xcIvJrt0gaInT0OjwaXVvnJHWa1GhoLmetw
-+C4nf79I22dRU7JWWQKGXOdK7c7TBlQ2UJyNgpYwJkNgfAxkNYGC2xM1j0DqmtAH
-AxVN+iJCm6qSXW+JipJwwRaqf3b+W/5gj2gMNb2UEHJlZpZkGBSO9aUOZecXQZZm
-OKlU53Sf5JhQKoVgSZLjabSesDiljZPTUccih4c11/cPhX8MDcMkuCCzK7ZM8mu5
-NsNc7sGd5r2EeXqJ4WDjUuRquSsFK/w/sN5FhwcPdJ5G3jyoPnRHo3GHlGvx8sJl
-xtg8ukm82F0359ACpesW7X37OjvTaSZV2TSk5TwWNyGw4oV2avcGVCsH94yo2csD
-geShWPV8A+WYUIXuwM5kIj/knLqXBVtlLk/FUoflizs1a2zCcNzVnqERWebjNt+D
-I4koV1MnbeCuttk0dLeOF+Vp9eFdiPZ4RavZmnYnkn170GXwAKVAsLgqBsT5J9hH
-24yVMmbMx/85N9BfIDMiXaUtythdEUMb+LonNGFxAPTOWM3wU76nflK+2Gu9DhQ3
-k3nG9p2bg8bV1RJbMiM6IJ1WnOZqV+2yu+7oNj33O14JcViyG+Mahn2Yn/kc4BzO
-VusI3hOWrsmcg/oekSyU/ViWznOBdX+I0iUnwhIVBqM+8YgqJJVWnzsn+Y0S1/d0
-lHqopR745brk7DgFcJ/npv9YcJ+WfUW2lfA6RQbtcTNcJymEhwqKUD4Y5xJGpSb5
-SluEapa2C3CIuCkroywdIIWCrbfTENlpVCqUkG3NcbRNHEDAE9ecuwKWQu6qTIk3
-VFMoSl2+C7EC6EzvIKN002eCxsWtUi1hXYA1M3z1XW/yF9cZkWDwkKDZrkgk3IuX
-1ijq/XvXms4O90Z6rivYdyQhtfTUxW2wSxds0lwv6FW/oJcR2mfjAYzPu6qJu6Oj
-AJM5va9EaQF6KUE2YW0WrWljxERNxOUdPuTgwqV4GdHn7Uetu/5kwqKYKEI+nOuh
-7tLaDJchA1Xe3qMwaM5sWZdvR93lMdjrCAAl2QNid6CZdfNxSn/q1JFqmCRnhlLN
-DYJofqG5jZ2TTCJ+0CHA4U94Po7SUUpTf8oT5unlwmQ3x/NL6vBOnkbdKaR+9Bl2
-DeqC16Ike1ciiwG3FUnUF/eEPyd+CcBTny8k+GtJzT8ZjK7PFmiA0ztcrWCGh1O5
-LMlk8K6a1ge7DqW2AzgD5n9f8TfFPRDjFoPOz+TFbewrAIoMnuC+wygIfKSz+ppP
-xDs8Gg8pJFSi1htZp1F9uMhxdIHRPD2KBR6CB/Bmm7LB+Pv6ZDeoyFkK9SGOIYtp
-BfRE96JQAzcitSATUdZ3/YFCmSFZERrwdRGaAk42w/WBD0rot9V6GJrt+26+q2pp
-d4x1Vcdyn3w8fbwdN+pVX9ckLoZPQyyOQiTstCTbcEPAgB8utx7yvb8wiHBFBDHm
-WAbmsfBKXx0qNtZmCMGGrwJ5uUyy8byi8vcrgEJ0jHDhlisYLIcd+SbgxEJGoNwk
-zE4mIoFsZb4NHAdZRtsE2AhU+Vq9W2BCOM9QGZ/XAJdJK0v/0RTNJn2zGO3uII0/
-4nFSClFBqk0nkr5ONzm8OSYg8sOOHhvWLAOMHzhxMzAfMwc6Txy9OdF8a5+Z0s4E
-CunVYSQa5dWqO+alAIqKLQwSPY5mgBH5U1tUtha0fF585i5qAJKYcAAflGTkXmoh
-vbVFl9cvewKEl3fkHkRAEHnJiRTq8RDV/CR9yEr+SJV0yEYpX3TpyGnrFroAQbop
-BdTz3O1m4N6l2JKjKAiBNTwFlXDFm4QRsy5DTFzuiSDSslfoEfiSE3zR9YLCYukx
-8QGN4tCfFAI+i0QFr5R2NxzfFoVyQDo7aePH9RPTqKfhs6G0OHKecrlmdBWJuwVd
-TjtN7FFIRMW+fP69aEtWHFB4Q0WTr9FAix3mdXSG+Ob198HaeySVJdYuzhUsFqoP
-itiLwSfpKat3o3Y3zHntMPhBF0vqsDT1ZW9v5lAQ9sYKo2PNQ5M2geiRfpUfQ7V+
-jpQT8M1VULc+wZu37otydVhKptjgfzoOq2bJ0Ef+Css0M2MHnqrrfCnZ94GjtGp/
-L4aNvvZ1THsKIuuk0+lyZRre7cJ59O59/CBrxZwIeZodEcSdXujeNAV4nRcEpfsB
-cwVsnQ2ez2nFmLkjb6T1GV9vrOO/10N/d4aNymEBgrK8zgimTpJOLznOCOqGjr2X
-K1AYCqDsR7TR/+AjKZtNP8HEKtlefpOwaiPMxs4/2/H3Pg+pthrDlawdoFbalEcx
-n7nGU2OscopcdMAtUc9konirOcP8b6tmqpkgQ/ORNwkMpkKvC/aebOcI/wb5hOP9
-5WpMsSYmnAsrwoDWrY/PJF0UZ6voFLdgomUUXRmOUkjySZLLKGKy6Nd89t2yDY0D
-Ou4MURpxKORb1ZenuoKH2uRBHBrgENB2d/s+JHxXMyZg+rtZTYG00LMuEUc5dkB1
-P4P3sMPd6AdCB5AC+Q0KTspzmDx2rR9OXChEsGgzGmSimQwLHt7+nRsG+KWqyHNZ
-bBQQRkk0we8fjKRp6bNu8eklKiavYBm/2J2vG07w7tuisKjMKCEcd4kvfJnXiRwb
-v2X9Yol1nrcevlu+mfHvL9EI57Uvd+B8UTni9JXVXVqvkximwhchTATBwPATg2vt
-zie3oCA3oQE15aCtFdkaznsuYKIaypIylWK3ihQPHCe7wY8owa0DFP9kOqCK+vfM
-amEQ7CCZcG/Skl7MLR/YjmdMUtIocv9DaMroSj/8jEF2QmRle4oo83oaFbymD//i
-LNydC1vca+/Fgh0N6XfljJE8TO658ym03yEHHJmGBzCyj0YpOryQ2+lICebO2Crc
-2agLVROKl9+CCbgNDz6epXA8gWvSG2CCPd585bX1Jag+PQ0+8jngR/Zvop8ssLv9
-V2Nz3Zf563jGfZ43Bw21arRXBORbvMvhuOThPRoAELXBPM6bM1JamO2sAQE7r5fk
-wh9L09PylWek0NrxeofIDJ6SZB4kn6sh0J5IzaJhHuJTxbMcw0iuhx5FAIAtbWgz
-wOSHaLmyY55hYYShbcHGc3BSWoPA0Q5YV7zZ3xY5cY9AwEmLR0isYBToQ9nYXKJh
-5rUUOGbG5/VM4xRgcOYxcClGfG2u0I6UQeJEmytLy5RZUhfESzgqkk6VqjFfP6N4
-siCjGn0KbR+Uum9P1l4wRksYfUjMtRquVPBzQm3/ojjX85sHiDR5N2mdHFsXlXT3
-pIilk5IIDBNNPzo1CzH/2dQWN8S96wlQ+iA2Yj9KEDP38V5akfGPgo/bphtfj5Nk
-VXY6C/QTHruhtqX5wOGFFI6x0fzFJHrRNzV7LYgrhoFHt1F+k82qAdIstzP/VW1G
-3DqngTaVDQeCfl2ADM/iuOhTkKWzKXwMa8W1oUDrVD5PXEKJKizoDpRsfF8w8p7C
-ZlhU+aYlgYZ1zsecjL18cw3bpJ3/hZzaSQXiIod6OecnEdcuzKaPOE2MDgcTbHDJ
-2iztgTjfZbjHc/Wi8Qo5zsYD8xf3RBpGbltunfec/MHNe/l8j+OYGK1CWsIpm2v+
-9Dp6LiW4WX+492G5QjWyd7UtHT/xn5ncNtNCebIih5EP0YPF7PLVdzQUaWbn6hJQ
-fxiD5DVQmpZ7KhDxjKFtAiDg/E4tm6Tso0b+ohLcLbCBEWYje2tL8jKNRlj/BVHU
-YFYeKG2naxkgjChtowbTgW2A7TLymkWwNhfaIiaVCUqAgvNSGGEM5h/jBvpL7L00
-3t+pMEUHjMCYu+eQNY+KHFMHnzTfz4uzbV9gHp2nmeTeeSQDt1EfHTY0+TJNNDJ2
-Tm0wTSRmLr0/5qqUfsZ3Gh/kd+gvLI/gzb/Tu7lPz8dffQdKLYJciqh3/Varcrn6
-P6sDBGk+Ng4dDf361X6QuCw0xqFS7aCnMRwQtGl1Gzg+YPoJ9+E6EyyNS0zkY8Ee
-eqDj/0cJq/oXCADByHUMCIvekoTIaO+du6qtVfBwP5lpQCdaKW4AGIB7LiJWXFkC
-PVLzk+tiAw9exX1cjl2SQyKfS3u485CwbXhgGjoqc7d3m/pmxF3CSgnmRY/0KlPW
-NPdFwS31+94J1kFU9dWWJ03xpQwuD63/bho4YTcq/+MUMtAeFCpZ2eoFVYdhgrUY
-08zB4m5k2Kanz7lO2QpdonDuseG/ELceU4ZZKe+4M8+r/dBw5t5sonDBHuJsmAHC
-DogT26NWZqjFMms1okGTNwHR8OmE+V/PbB+LOIEANw4bcRUNq8B6ZlBznn63iasR
-BkVDyfwjXYPA1pezt/9dDKH2L6snx2gdeYhZxuioZukS28BbInpaUUdFwozpXqf/
-jjVC8w3Wp8MvbkDN9YBbzsAQpwfCBINjwmqkYd5WoWxJW00Bvb56Aw8776wQvMjp
-Atc1uQ5jNvSjvSv2ogKcduTBkYnNUgVFN8gfJ6UnYP/wkx1cVd7+5Zeae/1mo8vE
-UgyVkyIgdtiR4/Ss4C00Hnx6EGSG6X2607OAsUQk2qx3DmOGMQRCqboBqMQvlTBm
-1imZ/HdQ+XNletTovV/G0yHDqxVEwW2wZyh45vLJHjxfOutGX45VHvAjvjTmWmwX
-dPyHPGvzCXEsA5IbVpMvebu3omlG9g2ZcsmXXJiUfb3xhmYh3UxuETHmmLvuKhLp
-3UrWA86ljnrZqn8asrNrB+knOYmrNON+mqePh5hNOhv2tIS6VZNRmC2tBX54fGPU
-EiuFmFuaPziwFUTuChcFIgcvSm4uVXwYQKyaSrtLwnOaTiMUrmoPPpPvIyNPGpqq
-UwyCfh+iiGWqaftjChpeSqjyZ04aE0o68nIPkyxjlE5OQL8pFw+PnuKZ61eCnv0L
-6VYYEfo1wnOMkSqPul7e/EruKs9rbZTTAt3N3MS2yuct8BZDwd4rydOd0Nq2LV5H
-/iorQ0p6ZMWSYzNIGVP5qOfiMgSHlnMQdk1PwHWnEVLHF9OGkQXSrM1NDZN6eHxj
-1VHLkbwRGLwYyD/zuxq5hOSPt27vMUzjymuJeOyzECrRU8h2HFF/IFnGgB4akIaR
-Y/Mq3+/1kJo76awqphUOgRpX0WrkMSmHfuDavMYFcxnlsdrOOFV0ibTNTZZJXnuP
-uJ7uOMKYp6lyri3kE4bGoTq74gA1RPLob5WmGdVC8LhSMatIdcWTELpBIn0/Lukk
-pqA3Sn2vN19Ujgjt2AIEDPHDgepV+BDCfZMfQqfuiyYYm6nlrAYFpaF+ndntG7HJ
-YClFfh1uk7YUxKMv4rxPFGBhnTnLzcaCmIWDp7YLoRpBnwMD20T4/+1inmfqxdKi
-eV97INlVs1kWUEXhvPRkLXhDnSBDEmhm6B7VUefrqpx+m3SAGJCJxgBFrWQVQUnA
-yalkHpk51GTb1J+TbqRY7bLKpw42pnboDqWN18mwgn+2gZvu3TV56kfqW1jMrh8i
-cKYVR589RpYM1B6xKpKR4tA9rBzLL+mW3GSI8etUv2pMJA6yYbejFNHIAYL+SXEc
-PD1B7xMmPGMwCefPwX41QKaKpuaj3FhnK9n03S7yXEiGlR7vQDeQvbk02UZ2TZBT
-6Kn1U2WOogAMCTmZABCpo8VTrMeAZmteO/0fJedoaqnV+t1VHw67/hVoznn+O/ll
-TAZK0poQD/LoVxwEI/fc8yzpLchKK5zbhFJaobF4ZuOXFziw5HSIrFOozbtpygGe
-PYX9Xo7pq11m6+8VlNjBEdYUDjcBCpRfiQqPVUae6iv9MSt3iKocJAAgTbFdIpTk
-eJGlisTwjwB8sbZ/WyTiJEDQll9st0ln+GcFi2lUB6ijOqATnme/Ub9eCBnhFJjv
-s7dSDhx9KUSbb1a60sLrGWOmZvMyV1v9zQWrq6zr8TrOD9ZqH7gLs4s5DrUMeWoE
-/twr39PHSvnLR7YR8uG1LdSX1TCnkpuEJFnbr1IpGort2OQtVy9eOYEh7utPkOwr
-EZptDVaC3ugOAXOXeZj5VqAG0OoBnKipTnzsx7Z+u+gxdXpZRaGOOuhwrR3i8xdP
-pIxVQYLKl6sPenSGFQVqjk9+/FcvSU/Zw0l/hczjJUXIU+sAZzQuhkt+jEHezAOE
-jKiuH9CpU1ImU/GWao9R2XO696Mtb48peCkwYwE6imADMi/rzI1ERAqCEtgGcoNE
-c/ROEfJjzTxx3IXVwN52paIt+zkFD8P4PsjRJdKsRJERWaWGdGHxwba0c3JIHPkE
-r4J9vkbbfqvt9zZ+Qo2jYX4ALuVDOHored/G5W3+I2WKBmfHCvJgRqkITZBgwITl
-dA4AVLzEpRdJGflBAgnrTPmzNnBEYXo8NpgRvtosyvkGWU083xavc6mQm6gFoqyv
-Ox5ZzrwTGtBbOko3Fv3UaCaNsSviHTkYOCMgL5L5mYZSNKyVap00v5weVuz/mOOr
-ni6p5kFchnhM/Wjm/0a0YoVQodOEJCm1Y4aNeWJX8gEOZ7ElIzRpfeOOaZO8PsIs
-k3liz264i1TibtlIWlGfoT4vD0FIZFUJc/9vRqdWcD3f+rdtCULfc4//jTdzvZEq
-WPRQSIL89Nq9DzGNVynKvjVMIv9y0JURUawAIj6gWppQw/8X7XVyX3ibUBXkalDp
-Fn922xYoEYH72oH/gj6xqtr0aPL0W0IWkRoY2c3H0tzKcQ4966dZ65IPX4yJZ2cR
-qfl0hW6+0yyLE5l4QAcW+wbmE4kpRS67Zn/cJzacsTR4pB9mGTYkKJICPSw3MPu2
-Uo0qlZtnX04hIvYnU0PK1LP4lxd5YFnFFBnLyraDcAT86YOZhIpovXHpX5vK9rwR
-wwZwKj9WRYp0/xmY2rd6b1n2sdVLqkN49qAj/UkN+vMHA4ceQ6GU0ykeFl7UZpTy
-z3uXlleYpVt/io74rQBzVUC4QUkxS268nHQGBaAT4aWSc6ZF+NI/+jqVIyG5ISxG
-5dXo5xJrFsbZJw48HCKL7MxUIntdChlt7FUJoyDxT4P0Is2dJsYIpkfg84gU+1hr
-L9DMY8V6Li7DLX1ghciq7aMeaY+VcHC54Ik/zMzdNsjag/ZQbgvFomC1WGOKJsEo
-2YR3QFeDBI1K6HQZBc+HNoU1dhPKsyu+iQPxAkcfeWRtcGR7Q26SajwbMjaeTons
-r8nIg59HjABKy5x78WC4tcdhrOB3Fmh+6picyp8q1m4dqJBfrMOK3i+mR4DXG5Hb
-18p/0/rz5LnY2lGr/qvZ2ITYCDpd2AdSDZeXfuXI7FVboWosq8OlxfJYn8PGSyeC
-iwDfVI25yDpLCjxBfJMWpi+bzHspnc4AUlCdeDeMiMi3R6nVXnpRt7FGz2yimO5o
-UdzmrFBQH6y+yrCapyjwDVBNom4wVNRN+8luHM/HKhsK3NdXqLyjoqXWeBziTqlj
-Dk3yMs/jLEKBG65UXUH+uWVSz/mXCKLJMLpFttTwtMZDeLBZ39HeO8UN/HnzhgMB
-oCnM8w4BWtAMcVKD0vcyOcb9Bkh5R6Nu5GV0mOGL36KAU4PP3F1iXPfUqfIl28Tl
-ywiPfuGOBbRe7XouoSkOhlEs7SCCb3aZHLSBVi4VLNxXJV/tCLElI8974khLF304
-qK7P0DEQCsh3fXQ9mfjLP9A/UW1f8alHJYQUVGVMVQEkQ/iVwWcRnDih8+fBankr
-1u/PuQS3dylI5yV+qoHi6fIcLJwXwdwRq2HWsnnzM6i0BVuDZlglfMCXX1TVHc0J
-8VPA2LZSHTaILv7lLcUBIXFM4JV/i9VBzx/yUiZ+Peu4mdgrXVZZpyhhovqft7o3
-LD4Idn02z2AjEcovnDnVB+ePJvsQ/pSNiPjyjBDIYPEvbaEBj+MAobG6tjk451S8
-fDDazjdXmkVh7IyeNGCFj31uE5dBcdhjNu58s1KBwGgr2kVLmui2up6RvSW0PYcv
-Y6jTCRQC4qnTX/KwZcpryx6R0pVgsJSdDwpHtjrWjGYJeLSf348DMkT55uieFYid
-lCEjQntRd+arCt44dYJqA2QphB73K5x9yCoyul58Benc4vXGT3JwW7J3hy87nycU
-cTIBEDNgZ1a8mNkiDc4l2TGgEvpRN4g0GJDtAzn5MSccfnSq50TphPDNy49JVH93
-hzax+VbhHA+/MKFohkgLH80vNyPIjbwRXMswDPEL01uL5+nrM11G26AxXsRhl3zc
-1RzQTRDgVpPqtlBxhbCurt2Xa5aow773k1OAWCXVg9xkHWmcl0aNMN+p+vD1HEY/
-Zy0AZPplNSsZN0fT5nvB71zhYPiS4ORRLDTiJXm8MZCJ1HJoV7RnWePPg0njm2kL
-5aQOSlm+gnBS2aMOwxHXZbZorrt7CfPa4SV9sikX6aq/0l7UfGT9U32IkETEz93F
-Hkh3QbfY6rAMTh4hzFDPaLMtds4KT7FA/bQWk6Xd9wcSJ1b8D0s5G3iTFnjAAPCV
-geC7MD3V6cBX4d8+0o9MPAPTsg0eNfXbryXUU6DSEvzADGfIANhc1FDEcYIByraA
-bZ0t1N/QVoY1atd/Ws6aMUTByNF5YGL3tRb2TOuIB2TdQeSfUmjtyfeGdoSOMWjb
-jX5FisjGW0h+YxPTOIVMIE6m2xfSlYcisFDSapOkAT3ZkL4Q2kxqyRFQI7oNRe2m
-0V+96kSS+IAi1C7mmurTryIeL1FtSki8hgam6TUYmNQo74aloQNxP0RsKN5bDZZ3
-U8fLAJ0zeASF8O6odU9rS18Q6r4O0zDLKtKwMaM14uMM2HcTjiKG0ofgl/wk8U0W
-n7dEfEWKDpmC9hguA6oPc7FZIk5iaJ8pPSouf/rfzOH6qB7VFx/1dOB39241rs8v
-0edDb2q3URhn5CSKEo90at/fLlFsz5FLh8FZh8OVjiDAPHhb/ctXDqWHFmoId3zs
-Xo26iFo6euG3Q1YHX3fcwuS7eUcJBT0ASw3ShNhAv5xKfMRI+8qX8sdcfmW4J1cD
-wqesuXJ20HUfosOWBZY9YQW1U+Th7Qucn5IMTXwOn9voAsOOTFKbhCweYGV+xMCn
-ZgFe2MGblcRoPecJ7ipgyzCEHmrOkZTgKZdsfrCFtIA82moKUR9NeKSPjXQ5Qo/p
-yuKpduMU5eV28GzYe/n0wzgKk5urbjFZB89Pr92FR4oy0R/6lk8YJFXOv0uQonvh
-Rdj24asmn/3i2JcworBx3mCwo974nG73K6PeovV1LMlW7gmckL4Vv25V6H8Buw/A
-O4dpYLKE9u/1higdYgRYwUG+/BPEy2jQVkevY/EJFyTZyO3graW5eb5IdoKIVL+H
-BCoV7emEsvzv0pfJXj3R+AjMF/HZo5453aurdB8eCMcTRAJjXB62ZBMrOAHnxECe
-r2yJXbvkkepGzrzLIqvilyBunAXWsdzjoGt2fSeNEdZLVqnAd6jnPZqJeU5xiygo
-6Jr/Yd5OjgviGBG4EUXzaZhaFb/2163e995YlyN1BfLpJp9lVLZdLMTSfe+Kogma
-MnUV9oiIhk0ZFEvk7gqDhoC9qG3pOZStbHtmYPYs0s1jNxin2wTbQR4JvCfGMCgg
-NNnT9T1s2PPM3TeC+R3D4yNA0+PY8VPTwyuXuCzNQ+4+I+O+ASY72Xrg4KycvTNm
-1XCVoY0y1VePy7fzbKn/SwcfFa6/2uMxu4KYIYtneMcSRwDmIpepS4rvdAlRngSr
-z47sTZuhaTEjSGwZzyLLqwcT6GAgaJEx+FiY3ZIc4OZwISekLSTeT5BL8bTuzi6t
-0n9CD2l3U8LGe0RdeU99lo2jcNMvEGmDt+qTCM/MYL0Z690/lVDC4fSfqEHqZHZr
-MlQVMq307eyqg4sSo8GGXAuz2uN5iMl18CvWP9CruOpk/yhya2z0ZV6bL/apiHfv
-zs3LWmaBUl/T4R9+yo89hCv4y9MUK9gFStktXcEZPvpYPYyiy7P+rSca4GLcbXO5
-O189AUJLfUjAuOS5x/dDyh3mR4kY5XTNszxr5mgmfvZcknGaeVNidq5O+SGqkR2v
-nfvy2JRwQzEBwJ6Ban5cBzotsMAowgNurOCUDBbhjcJUfixvMezlSylg29Im0tSi
-gslCLB95lAhwimUil+i6ETDqSLceCcGNMXvwJYZXomtp/3eggqhWO3M+Q8BixIGF
-oZ1Q1t73kCsvhkP0YW7qokjucVwlJb2WAfnJfiD+pUD0M9c1NJ/RvVBaodd6o9YG
-+b2YIX4T0Oq2wJN6t1kt+Xr0JwIia9II4tkihPDUEgkZcNUYm8+eF9HZO9hZ4OEM
-ssV0iMjntUK/x1IgC+sHMO3uCyeKAe2lj0JkkpxjJoHsjfjvFb5YfUWRhz+B1Mg/
-OXsBmK5IA1UK+0HLrGgaTvJM9dIOkvBY+6eK76dB6/6ia73hIDFsOupRevGNYx18
-PqYZjg5Ap2I4XE4lUqmlTZK16FxprR6hEwYD5VwK/CPCVyqOPS9yUhpv/YyfynQt
-UvOuaBHtyyxVT3TIIQ73dbRaudW/8ZLC43v3eY2DAr/P4KyHgjh6ub1OeLKRa6Gj
-WdPmiM89KttVKYxqcne4uirlhT98vjzfqoNScO+BoVxUZ5rBp5y1nmBqy9GFiHRO
-JCrKjzXWwbH2f8eCZ7EXnwm0pIl0rMR3Gn57dEPhImRbksVoVqEh7rSe4BYGcYtu
-exdtSVRueeIjBszPtmzq+OZEzR6INA7uY2V3NSS0K8N4M6wWwZLRR7e9myfkJdb6
-3r/aGvJTy7dTjbPZdfCiy/NSL5eAGP3kuf4oUpWcyR/9/p5U3z/7cL2pGgfGRORF
-E7uTKzbPhL5D07vrWNsIH9X4cokUB+BtDYK8K6UAd79NsnzpjkbW1u9qD6Pc3MNO
-srmi8jeAzUKalrHc9IF5OF4gXFGdz0x9/TwjygyoTxW2bQQOy19i9OTGvR+SccKr
-8dowqbZCid6796CqloLSE9dwLg7YNexVZO2Lbfrt1Ah0vVsV3DU0qoOlXorg92eK
-hqbJkFsUDN4pfaLa74jaUP4TEe6ODgpscUzUvgkXWPpNFUVst01ZGHeP4S2KkDDt
-KaP58yJjyuY5xhdwFpZxsBw9pl/jzZkOaMFNrW5YgWa9IwyJM0mC3Hx6lAD/YEmV
-EVBCsTOoV90XMNb1YvnMzzGE2RdvSrfpSqOJq5O6EfDmfXPumRL/em2jHb1r3hLB
-rfT1+r1vyZTOVDe5RcpM3YBRV6H3fGMcT6igzGBLO1Au6U0dSHCUNfWS9wisl6qR
-jOUgtZUrNjeaofpVZy97/v2QygkZwEwuDUNnWVOfT+Kc85q7ks5pwW0HHnRjsc4R
-1PBx8xV7PjgCkVyLj+SVlDRlzjXdlVSuPoXy6o0u/MPouHJCqmQPiyCImrQMX7mF
-WRlaI7fLISpY3OF+1y78vfcWAJ43/hQEdK9vyAUf97HNzrE9XVDaNOKL5s9fOxbm
-Gq5yAn6zZ7EyE0cUtalIiqLWbaNlT+bt3UOVg3xJkuqWjxdWKhj3obBG713Artqt
-DfDMB3xHitx8r3ooJNq2bvp415AxZqubVjP4y/gPK2DCKudmnfbcZFtuSOGLl57u
-oq7lQw3nlsGjJAZ6YsWRKhvgNFtzYEkiYoZCkF1IFda8dimINsBQBDs6txgmNCJD
-5UM0kVqNNFZuRTOb24FsUj8+EbcRz7964Fc/8mb2i1W0Bm5N7CbJ3dQdyqDRhKyg
-yf6Li/V0OGfWn8cw05uTXwZKui7NeMlXsOsA+xqUtziSCNtGQQJT3sSAdZ5LVGnZ
-p2dKD59kS5sfYnjX/nmg+B11HL/K7SWykcufPAxdKDuKY/Oc8iUH8VIWuPzZO+1r
-x92VEjsM6GZYXPd6tGD2VOzDxjBjpTe6ecu+Y8zo4NsJyQrcYHpEmgQbvr6zwB0a
-kiWcAUwR5vfugEI7X9pbdQviPfNbv53GaeJNOMCN3dSsLmIBhWisLXB2/h0CFFqK
-GEHNy/bYE9prRhrypZyLSWPkuCN+riurNNTxovbhpBIX/toeYGhJ8fz1EELkx9iV
-UcbGFbju0/Lf5WPmHzIIGofO0PQQ16bjBlMCSuCnvIdcADcsD7ECCPHJzuolAZDH
-Hh+hlMhP/WIUjV5yWqfG0oE9TO4q4Jfs3uYf5snkWV0Wg0sFXgoWaATPlk70vDUx
-L0d8VBBm4NncvhgqklhLRb4ZZzFpl2mHIEC+3qWLaRKHpF/CVvNSV6kugJF3cDyg
-ToJ2dGhZSSah2BI8gd3Ao40NN+ISZZBmbEzC6/IyXmK07X5A2vLYLr3GwlRk5K6w
-gl3YWAWJUsOE5cvKmpmI/RDwTfMkoEUo9e5EUzUXl1PyW9/45N0pnVWGZuAt1yDY
-QKIpYRbr22e9NiDC9E/oyaFGLqqZgzOK0Fz5W7w0TbuyAKDaOF9ElVvzCzJPmi5n
-FRPfUn5TBU5U9zT89BvxPFko+xwbSDT6hkaI7wur8BOAhQy0bm0/48xPqns4AGBT
-NTIyg6oXsW8cDXvePugV4KYEdvo6ur/C+n64ZunLFB6N4VG9LRyUEGRret2rqUt5
-f3n5/yj/Ys5MgD49zGuYRnINAL28Gi+SIG9t2Q/cLBV+dnjAcQVVWX8iz7BGDM+C
-ubTvvsPWf4iVSER3dR98rWhE7cRGj6c1gguNITYg28lbwbciEE8p6N1i1uPZo94P
-Qqkxk1NaT8YPqEUz/cWKaJK9//w4QbOb17Pbkw5IsFNZ5y6awe+Y9ITHC15bhDa6
-kDnskbR5Ba97EzoV7sXGuUMGmdm+4bwSr/5W1RX4zbzvmDldDozlNhH1huu+4eBO
-K8RLfVU/lari5FK52qSlOD++RrYTJVznhbTIIbWZJAQiUHxDYmzNeqvLEeXk5vJg
-APRNCaG0/6WlLL1Mu47zYZgk3CyQXdcQTP7VNRboHBuh3FVo3iGuifcaY9UmBkMu
-6ELnrdhC4rLQz94L3EpHAvaZqy5sr0JjQE6VXdL645czgZ07JqNDZtNxehTfYzGY
-mHCC097oJoSIBkqy5VaCf+eVhAKJP5eOjnkhWED3dUFPuTskzbHrIdHB+vhPpLmm
-Y6L5YnXIMjhdIDO2w7nG9OA388xrucVuJx4+sJq+YtWQbja5WcgjxOvGrc/5QUm7
-lfIruiKvVRqVdIrZ/YgXtZRp5alTuunBv+odSNv0QAV7wuFEaGJeq4Mab7Dqi4vh
-P3eXTsOS8KgfJuee4p44OcanYcEVqioe7k57lmoVxSfscJ+YyOVVh/pethgw6vA3
-sNJyS5dfyR6OM3zSQaqnLzobeiiXFva3jwxqFxmQ5glkSPaSePfQ6S6KuHk4G06w
-myHfxXo20TYpbmXI45ZhkdM6rtkS10EqVgShhQVpocWJ3uRNMODomKHp3nrhkEi3
-gQ8/IRQe7fqrHLxrbUqziC60sKvmSc0k4xjKYNb1YPXI4gWHFgP0YY1MmCAsHemD
-Qeqil6xi0RsLgDjogaRui9JanZtpo18tCmfkC4NpGL7s0YLa0TR5r24jHeC1VIe2
-6vABc7urLCsZ9/kSIwTAL5ot2ByW4o9dJi+YR7jqChTQpcMX8VLOkRFcwBJURaAu
-bDkjzEA+xLGec2c9mjDjASSBcyQn8i3BWcZjI6BjoUcr8s53F441GFobPdm+3Wwr
-Pl+gIXDXvTPrAH/KqmEomoC+c3aWqO19FdiOpsqm+2wqUKuq5L/0iW+mglnA3W8X
-GrHn1b1becht8/cbT7xRY4IvSdxT0/dOapW2/wE1hXNPTbnbbCrNpVO2A73hGz9o
-91QmNrAJyTmHu/Exvmef7JdNF0bafZgQPwU++gIbMcQCiF78v3sf2sj3WDBRlS3t
-4iuFZxIGrzH2zYslAFtsdheFtLMglDK+8gTBHEuih3lst5kEwDpVUTKZgoHhwoJp
-O2DEirziF8S6g8dfAMB4q9527xuqFLfKLM0PKT0UZY1ZV1LTHFJhtLTH80gSj4Pa
-RLDvQlci7qHPTwXewluiq99I31I+8Jno/tOw9ByHzmzA5/jJU3I7bH9yMUy9Bo4U
-HYF565mruMOms08088oQA8kBYTmBPIW74knVGDyAbh6iEmmUzLWWnDcQnsqEAz9/
-ElLYyeS+7KaceWRv7GJkxecpE5ExWuMgcETSCRQeyB6GOrmDX5gtxBl/sGMtuRMZ
-qKnGbmtFqFQ9h24Sp9VBdavsrjIDVAw4crMDpA/z18hFw1avCakoIkeGVHy+F1wk
-vXluiiX2+mdh+/KIEBJ7PFY1h873eJhUzfv8v4Jx6xOPNE01wlkb4ZEsZtdwpVEf
-NFkeU+yhoP0mGmZzoD7HO8r+sGUWber9dqCWocL/Rh9wJd2zkOuZqRRWsnZuJDix
-fVXUcc1DHpdcQsigVEND82g09q/zQBvU3x8aQETBuzPVPn08sB3xJykGqU+dPBfR
-HYxyDBVDFj6+xlAJiOWMHLvWeL43AuNIp69TrDaDkZRGdOSGdsql60gin1mW+5NC
-rG/ektwEzGK4uzkdOJitY1ibeUQHhIv+VzPIf4bsI/5dHCPPzYj7pnODY5bTAYgm
-jgDpTAPD1hvhxW3dHVAcJA5HS7EJAOl/Jl0aJcLzhkIWVZilaeXVhgCxcm4DUOg+
-a7HstxG1ynabmZ/tbWdvhZQv841G7OjExAPY15ONar1HFH+il/w4pTqg5qMC8WZ9
-ASS1YWNpw94FIonGpYAwfpwuOxqgT+9Y9txRywN1HJykjga7geNJDVryP9aqH0Ud
-6u63FfRq3bfFUQACzKyJQ3G+y6QDjshvJzQuABDcopvY3yXqJfq+s3hpfLnMuDtU
-eZmtsYZILT+V9HN9C4aj8JLgx7+ymEYym8Je62t7cHAMu4Xfs64ArcjwMxLpnNu9
-4Bg2NQ1F3rB/TPue3btpXR75OJceMlyphnTS+ra5/P61vRxlr2i24CeEgjOB2ItK
-S5kHdknJc33gGPNjvdUG4niFasB6rIQrAgisuS8yhbAr2rkfk82KLll8DjQednnA
-F/I+g4HDaeoftdNnw/BlQtcmh0ndUKHKZIm569FZQuZL/nE85h7ljlOvr/g0F0y5
-ifemkjEH7PciAkckIUL/8OcdN9e08DyP5qTPXdxBxCp7iO11VJKUrh8O5zSb7U++
-6vtb85s0jFsErekAppcbKuJVCHEjkoXHOsDJ+YdeW555RtCBrvRprRp1wc1VIx+C
-awLFmSEhOvsMmIgU5TTWoJsY9YOgokAKQGyT/FblvFehs708Fg48NMWA8Su1Fldh
-2WV1WCUnI0hzX2N4Vql67I54R9cjgN1ML3wKCCDNqbcpUv003o4clO8jz4pTenmP
-apwPjIgYv0hzdxM3XeoD9CEeTsMT7NZI5eRtTTwnCFnhNfFbatlBdK4MjrNQLYkU
-JWBSmnjaTijMb1AtQVJq5kk6gqqtlY+3aceD/Ndzf/R3Wf5+3wyJmy35eFa4QBPy
-K7uSFu9lBAldHbmuTlz9gJNxIqRNCRgqBJKEa0AJbyHGvYuZz2qFoj+tEqY0t16D
-uOYWRD8OJNYnKVcbUxCEexAJHjIlHcgX89b4ETJBLxdYAjTre6b5JcwoP64OEoNH
-3EJ+U+0hUMsKkaikEJBNx0I0dI+csa7yuv+bX3Sqz1kz7wM/6t2yb8re42KxoNcN
-cFqlM5knh1Pz8sf4EqwKNC6AaHnMZU2bQ0Y1NTqeVKGXRwRVYM4lYHvaqySXCjR8
-mLR3Ma3OpU1/UGV2KhsGPPCIcrLE0KL2J8GvsDZE+kTRiOvgSNmeDmTw/0NTSg1k
-Q2KoI+RIqdjvaAxq0Mc965AX8rvZGb2//GZyodBWB04HW6Gy0kE7hOnlGddmA42Y
-TXgceQRBjUQc8sopM11YOE6dd3jjo19hSoQJ9cRGqJTcrOci1id0t9iT3oMke3Sr
-HapjnfPtBtKjRDHKRPKLhWNR8ga8EqLwPEMwWCRs9umGFBBcj3nwxjOgPJPQTqQX
-WWzr26VT/mQq+2TJ+cEiZi7SwjJ279q17IJvFZgsO457XsGIB8nHF+R+qEkRk4pJ
-37a9JwUa6bfjTJQEU8q+3Gc17MxlBwW8MdGxZwYhPeWJYefd82Viy5awC4jRdYDa
-3sgWOQo3YNebkscEDXW+OeUErHsUBJWVD+5C94ALHVviFVDQG0osCQzF6UuhFvTF
-o9RbdLbMBt7rCjJRt5LWa4TzOR/B2mlzT4HVguBOJs72fthqqMd+9FFDB4Fq5EmA
-WCk5tkNPLG3ckh+Ar1wDSWwPz5kG3wu6pXwDYGD5YjvFjOXqRSM2aARSFjjbAGig
-Er0uJqPQWR+aNbJ9zswm/fJABt4vDLd6opnFmA0Lgu1hd4mpvfRMTuVRaKqNeKMg
-1q9fP2BfSDshjznDRDmIM8Gyb0V5szQ8MSrY4vcuQt6k/qAnmpWcljKefhsw+Qop
-P2+hoa0le8iFCHHuErgsTlulmCceG83N3eXg7GBfHmxFPQhWXI+3rKWTEF8OkLDU
-JD9/ycoZC32gDI1rqCy2hjkei6oaNAVdfv0fAiBvpYs7XCD81r1nPttMnMHwXKf3
-l8mXoZ1TiOTMwIp1g9HRaD8FOQdn3YS9hUYSPXoQDyAYae3hNCILn8B8g0/pKcBk
-9sqW+m6yj/CbpvFHI8DjQhm/r853/8QgAEd1eGBHV3SKRePZk5YmNwf92mAGZUco
-sm2HHmrySjfhpWRcg20mTwcN/eZQ6bEGyTB0RmDfDEdTvtrh1rPtGbm6t+pf38iN
-TbuyXCJK2jphBxcKltN51EwJvdVBs2G/fDWyJY8FGI7xvbyb8OI68ERSiYiSu9mt
-rAq+EpBSa2qEzqJc9iT1AHjGCW6J85gHl3rBjpctit1fO/znhnsv1scuaoo76ppH
-0uci1utGjlho3iLrCfdtAYiv9iVNWjA0kT+IMQcOyNsv1fnvD1+GVK83IOMB5DrI
-oGwEJmMtlwqyeyTJpNmm0DwhFjC1c/cYciSwQkCX2gBvqfYCGACW6c5Um9nzIQER
-5mEaHWqsn90qeprQseYZNkVQe7R1zzFRphXIL6r1scDJ2vmogOmN0cBeSIPq0pDD
-4pVqLWCiVxP64bf5+61yEKu0fPiCX4sUIdpuB/RUc4QbJV+q35Of7T9Ng8ScbCYc
-Vki06KDBEWldr7K2Gj8/1PhwQhGz4wO9NMUNVt1Ya/s6OUgl0OPSP5INKiQvTU8n
-WeimjjEhL8SwIjMT979hVcm3FGnCoWAaomREs+as7R2wv3iHZjklRgp1OWtAFAvu
-glJYZyQEBzcCf4329wmiG1+7x+1XlSPe4QVbLDJjLbTE4KFyZkiD4KlzHaHlYXM/
-QqTX62VUFxVBMkOuRgoIes1Rfi2rgW6Hq8zxLOYh60eRuK60yEoLuyh9K22HsEN4
-iCD2tlU5ICw7quo3USMFfIFN5MJvr2CYCcQOQTc07HeInbuEE2/gmFctEKIbinXg
-i61uWsYuy15LIdRg13vO+BiVvyWPCBRxYs/Rf12fy4Cjsdz6mkLSUGgFp8b2fRJD
-N4L3Oqqy88xM2jFvT7RnLZ3bxd1kX/h4n9H4530OI4EDGaQCvu1m5p9JHaa9N32H
-sXgl9eieSp4CkfAFmLTZideRXWgXj7mxDXGSBn0Pt77EJNMSR7S3Z6wvgWFruaY7
-pkpa/YAwQvZFO2LN0CDsv06csWqKpkOc5aWcJ+AHsHdmCJ2wZaVuJTjiPbQPcRcc
-ktyObdkV/xNMkhv1wxEubzEhCQfAgOe8GMScbFEhKfJ/RLVo3qGi2hDfvOvfdmIi
-7eVU8Za958k6z1h1Cr/azmV7YKaqmnJPsTNu3TIMihruubreF1ija4TkHgQtBFjs
-0k5xYgSp0D0MJA5hwH6/Wjnreng7rSDTz9/tuqIY2hPqkgGe5JOaTC9DaNmvX3aG
-WC/i7A5YRkmleU7Zw5bf9EjTT6wN3r5LoK7ic9GAiKOGXaH+oqZb4I9nYGQpuvUB
-TSUWUG4L1GULdc4pfE2PG12XN6fRi0zBCqElrXwJH2yQs9sX1/J9pxPqZ82zJtNL
-3Lq2ZKC+w35AFPAMY9KsZ5Mg8ozOUng7eLwuoPH7TdGq6EHCzeb8HEyFvn5wMvN7
-M+qfW0I41Dv8RAbdqmElx7fS8TgNeLH3uhg8hxos1xDSfDVEQhoo1cjKqFU5xhJ8
-fa0HuvX6XDhIvecQWPbSZdeMESpOSZGYDkDr4YOBKxUXacWJVRk+pTn2uwJUD4fZ
-Xlb7TfFsMVlPHyocnK949/b0MTBF7X5ysj15BRhYyvpyeWvmkyb9F/e0vznuNmaj
-U47panbPkf8rc5jkdr828Gs6Mwu+F0ccO2rGStTkH4vmEC/ymTKZMAry5cluK7Xp
-dYJZUt3NoypkqjJ6q11x4g48R8m5p8/5rToAMquXFnnCKsmkprb+Pu2HQp3Cb8Us
-BHsdIp1QDOZWuc5yN8RHpI4fmBPXxfd3aPzXOFZPQbZmgT9X6k5VmkCRgE4EoBjj
-cLWzdcOwo185TZmJVfe8VkGP/u15gszO3Q9TYTXsFsnsgSwLW6IgfIanrv/Mbjhf
-KrJKsoHFjK/FzBu7UsPcGOkRutoKLKUJxXVkgh6kffekcXM9or0nSfEEhIEMb8jM
-qq6pui9SOxdwSplQgIei46h8UksA2r816QmIfB8RG0mRBElG+bIr7zANwxEpiJoP
-8y1Xstl3y9Oq65bEkGIU/AGVL7b1So4n5w5BaaKl3BBOaNuisVum8swtwrfMg7IR
-k302SsC0FHmEay5P56oL+DKePQZtK2XV5p8HWkC2nICTMZNEPolyNewXIbYHpDRF
-OD0zN8S0ND/MsrJv0PxuV4JosQhXWCTC+0pTqHW8MdH8J2yr+Mw28Y1OVyHrzVAO
-55bnSc2xb9urqyjOXUjANWbCMfC7oJkeEIEk+VKOBZPu3UwKBFLwFKdG5E9Ro0kU
-2Qjoh/tdplbIHogLB+y2sOlk5MH9RFa5ekH7CDSprnQ+3SWkoKThSx2itBbJJ5kI
-PQaVG5JwUBOEiwiqeh05/6QXaAyPRB1JVsJhhaIaR5lNaPRz0iE05quQYCRarYPR
-um+d3/dhpRtToiSOQ/Rch5+oB/sW/fPefEAHm5xMCLJzxTdXYI+Fss5sV9iLzyep
-U3PW5zK5VzMVbp6yLC9PulKGGJYTi4OXkXN2RLaUQ3Uze3G+cEiIYVzcoyopnIoy
-d3a2/nI1XM0nTeO9bTGmGFrsR3UBE28Nh0IJR1Xf6sFFhamf3HoXCN3b6GBf0OcS
-gwhpZAj1U6IepzzDEKBH9eRyBWZT5jI9J9MXdsEgq6D5E1IMY5AATNu0E6AkOwFr
-7p+uX7abqIROnmBm4UuBE1AP4T0N7SVv2x3rLkpawzSXHopEpnSf6HnRIsjfmhFV
-bm0pN6oUSj0bmXMmOL2ZGu98DomPL7RiQbl/po4HnYGO8hlJ0+Bw0UJNbMXxCOtI
-NL6+lotNBv7XL4Yl/BjVwPW6CeB9o9wJK1mkrcmlxGBEmCowcNWFcnh62i30hLo2
-VuFBkPjWOBoYGCQkQbdISB7Yj7vxIgF9PfLIj6HBJ1wcgrDyDeuZuo43kWRND1Aw
-LeKKj8P15OtRHiOavMrCwristEdrJbTvWHPex1KxxLDXeaOBxuYZr1lHI57Q+arc
-InKRBjiLO0YeA+iyPL0ddZzS06XIYWnjR+09gyY7f8cOrGQ40MZN01L6nqMU0DvT
-YgKiqBXCZsb2l2ophtcA2BLDkKL4RC8ILkvB0saGbo38YfhgEPbA0GG5+aF8NolV
-0h9jx4XgYY+efmMZYOO5Exyta9FpJjg8ZtBfcNCqfb3kbvfdBNGOM+id4usrkhwG
-6QqDF+IxBQ1gJCpd/oLYfoangG71WWD8snMQsKWx3eh/PfbH1q7/vkL8try5r2Ws
-4RhBTVN+qJL0RojgPvFdP5XXUpOLL7uPC/zD2rKlr3wR9rV6Qpbgb0I4tjeBu4qL
-P3Ny1tQEyFDv1Q685FzvQeflzXCzMb3am90KDr68MBBphdmtKhU6cW8uGMjd13V4
-D9Tdg+97U+f4RdM85LS/Qu9F1ehADKPtuBJUYIUIiwLiC++lF54gFv3A7EBaaGUD
-ONTAGAoxr5Lu2SJSZQgATEaMMjKxj2s+PDcJ7J9+jfml616kGBtWlaM7hziXaiml
-Rer7YLCmQuR3pl3GPdtUq8EbheKvYSjmcDruSY5jFr9F33O12G16kWXAw6dWeSJW
-RhVjoM3hTYeE8Um5LpZdb68fFEokIOn9ta2ruW1D4EpcNwL8T7W4T/ERuJoP5dQB
-WEuv/vrimjBspvc98MDe3dSeVoUt7tVlYmjPsiMfnQvVMo15T7zFkKQtsKRQvZNz
-GXbfr0qYRNSiDSZD81qe4+w4AckbCY7bKjfJkHhRaVtnxaue/uMGohyNfu+zuP/9
-47EvEhp9QnjKQeEy2+FfgmRtw/EwNkm3uiOZKeZIIoUXYVzjZEnng8h1h+wuP8RH
-oub01JerLxxyDogOSiESR+Fvvf/bnsrMciYuwpiqq3d9ewy1F+zKFGHXB1+Vinjr
-11yoEPNz3TLQwvSk2svjO9XUooLcCoDEzmVDaD0uug3jRCQspJYjj9/yGphekE/Q
-KL887vtCR8uQ1vXByGHqte4pI+QJlRVi1nxBDOmSO1hP8HRRf0TznW2pCAVDxIKG
-WP8YxWQOIQfshtN+8zJoPKYQVlajBOEyRP9phyRWt/5wXOvBlBS0uBt2b7ETpkiQ
-2fhTNfXJ/Fe9e8ld3eUvMgM9CQ8dCaDv9tLEBOjarA5PsBb9I2tYAUG8P2DWgIAj
-NDwIXZRCB06ugmQgx85pjJ453PPH4DPhAM6QLZZHxAh3ywWXf+8sCp8dQYkg4rvn
-qclpTlQL05bLTL49IkwjdLSyHZX2inUqFqlymHCWyGU4CugL5In0Tv7h5AQu9bFx
-lvmMc2/fwKmQGNfIvK6vviEyWWXe1Pf/LgL8UFhA277fqR5B69XN3FdMvEFRkwtF
-IiNTJI+6esRFCzAFZWMi4YNutYKkGHhlcsAbpJdCFVxlyGTnmyk48DEnWyaTggkI
-3U57lIC/3NGGi7ztBI+ldTwqDwlBKHtygVN39UVwfN/JOP+mrt9gjZRZhG2iiuFy
-ypZA8GsO6/6AZgA3MBRlC4TpPr+CbdaDWNhhoDueiiUECd55e46ILNtldm9HAvAd
-+dK7I/j+pLcC8yOA2zvpWntqd9qmATRsReGUcxjJeabWXVxHaYZbn/iHzFiL2NmK
-xcaZe8T+8IR3zflL0E9KIEa0TTIA0CwIYyYaJ/hnXkjowfXNq10aw5yUovd6Svfi
-1vrS1FiK2aWvY76XJ+35EfBioAJ24vpDndDxB/AmnApVzNcGIZ82T8XeL/MbKOcG
-qaPEl4uCoedR3TlsGrBbBS5kJnNn5u4SsZaDVX9gaUbebfpSO7f1oEb+IFN60r7U
-PEqxWbOWdtOHDRxEqLIADYLdJcbcNDjdWH50DDvFqbA+WJXIAxIr+NtWTKyXRs7j
-TFI0jYb6PnvQGqW+Ls7oKebU6xtAjXS3jlafxp6oPdXk9fADPtq17gqeAgZKViHW
-v0rj0DImedPAwB67r2oOdDAdVY/Ka8U2cuM/1/JB79SOrX6wHIsKhmdpAGM6eU+t
-vJZA1BS2C5hKbTViRyJnPW09FgWaFl7kGC+VyB+6ELZc7aNjZDC0o1O1RdLW9a4q
-3DkanODqPA2RCc1kgfVAySPQJq/nCQ9gakKlDmSSUZczrElpOC4LISe6srbKriCk
-z6NP2b4SVra2ac/ELgbCxFCdzMYC5V3pGfki4uKd51bCmopq1E891CVb65saqhqP
-2zXyGfz28ctNwGB4QRQgoZ7U/p+5Qew3lkH7O3HaNU5f2Oy560LEbLI1Sbr7WQ7W
-c3JOsLlChnMheVjNQLh0gvXey8oKmQWQiJHRxFFWNHJeArUdbqJMKxilkLaBVUn+
-ozRhYQRQva7KgwAeHjJuWSuLVzTnuEb2Ii0P4C437EruOF9ugh61j0t0WMLQCLNC
-5L1Q/CND37TcGCx5r+wFMANc7CdfAeKVm/CgHrdjqzVxgTsy9NtoQstI23lKybYu
-lj4qgnQy0AEHWAN8npt0Z4vTaxhBIufpgX62XJKmshUueKzJJX87QC6a2rzEQv3K
-REfANpYuIk+LjUG01aDwl7tx0SF7D+zKpG/3TWzsnXkhvdMzh7GfHQNoQYEtpgN6
-0/nvhLqbAdLQ4BKC+WOq56OR5oA5B//r98HR20c/RzkpwiFvrC3ClAh4HjwqYxcx
-JqneYF8A8i0L7SaxKbEIANYikZrvZtP5uIzG8qrCfPkQk5/Mdm3aR+QTe4R+a09J
-PI0H6pBWncVDBFGcYabL9yuwTXh98Z4kGk0IGNocGoB9QJfLcKsGUC4qthswKS5/
-kAvHyo54+2BMg/TcE3RGvz4HL8dn0fKInrNNUH5ewnfOzCv/QwyiEFuC/Afrb57w
-ZGRC+US+C3p6AHlv0uwrsNi2saxXsBTzWlGdFt4vgYroMFdQUE17PEveBNIOJ6ju
-oywU4dB5GhV/cDbC1HW4jjFR/btFQiY06g2peY1nGVd+jCJRErjv8VhHijjkNWfA
-GwcXT25nsgRhyJkB/1OOMAgOkB01VTjwN1Hn5ohsLL1/83Obtft005l6zjHdPm1h
-7pSGzbRyzVMapy/AuCzy3Wawq2UMaFRpu63N3HQ4nBcZ9Qx89yLNS/mSEfUD/www
-xRub2wpHRihlrvDmz8QTRpGbhxLFyI+gksjDtlnr+DuzlLTgC1487qofSVYjhKLu
-YGR+l5HGgLA3g8kiZqR9tr03aXC6Bk8EcoPzFI5DEThBkt5nEDW83plAK5o24+3U
-m5/wtklBvBVRnZqcRFU7MR16P27N5Mu5xmd8vbjKowzjttqc7IM4us+YoYFd2tuu
-nsQdYxja4Awu/9bOuqvw8/WvD8a5uSNaoHJtrjP8P6mXO5N8NVeXh/zmNCqLLQ3T
-mILJWSon2fpYwnxk3mt+7NNusysgI7HOuwRWtnmwI4hZWU15HtAm5axge9C5nUrO
-t7okJHJi/EgZTd4bsP/sEYKK1ZGWYoqkb10sIxg79z97+gmOPzS/Xm/UOnwIDGkh
-hNOuasuwrPB0WI/tdrarT/yMQkjNr6UZMFyvqOggsaSECsNT26eCtPFv6APWo9rz
-ytiDMwRKFhzqlRqDmW74o2E2TkctA28QJC1uQYgmwTiHu3zWVPYjtQ8rzBle4RsX
-hl7MNGejNQR6cWEVmtRXVRLtHwEh+ny+W7MeCMNI3iCm/STFNsW8L9Bm78bwFx3J
-xO/myCmg/C52q95t92Kbnm1RWkGj4mgxtxSEyix1XgJfqQmkTLc0BEHHpHrJwCUx
-8c8BTOq9W7gSSVCDIa2x3hkatyx6gky40dnpWVJ/qMUlU74ndbNk1hAKy/E0XEP6
-qdXbtGfxyVmecTdRhQnPySl45/9xQs08SZWJi/2mTJCl5ApA6zm8Wg0n8Fe0JxtG
-Goj/Kr7OrspDz4J9q4MDqQWeIrfbR8SIswyhSP86i5Z3a3ChRYS26SjDvm/hPGYA
-gkMnSLjxkSJ2hlL+0emoJzC679GyR2oy3UyrjASzAzd9mdt9wjeeyXWNwCAts4Fr
-23ZFxNX+BKJ/LAWgyk7t+3LnoTnV0vcJLJHQvrMCkX12TDz+Ei4slrYQmR6eNGiJ
-5nNKmrKSuhiIm6K3867bNM9saUdG+O7FW5SUSNkOu4oESWD/G94YJRjupoVw/Oux
-HYVzr+biKMT178+xb48Be+hcwx8I/GAR6WG/LAnzXibcbtQ67as7qIQG0c/3P488
-+dp4Oc+d1CVtNnvTgGJyMDMyy3KJ2vbYu93ruAg5vnPFSx5BZskJZHJWPBx5tkHb
-Qf+tC6ikCaKmfbWt8d1pz4EN+999oPb7jtL1IJJgWHxWjPqBoYAAAMip9QBMMYHQ
-2O7hV+I3cDNbf/r1YXEziKFm2nrkjyFWg2EzkBGOxqM/ytr68EP5gVHR84eQmiKh
-Vo7emX9055GLocL056/PaDeTK8UEg3T6BaZIJ1wq941y8lG7yyP7w4UsxXTMQtRv
-wY2Y/SAG+sQFr/hk38FJHOC424aGGlLPtp+pXhKXIXrZYMaY6hMsUTateOY/MXmH
-i1Mur5OGV5HE39DiC7XEZIWh1tlWwwMSlXQVAMWPHhjfD025RqTaNSCTqVJVALt3
-n9KmqVqvUIcLSRdrP2f6Bjt+eJPTld12TIgKba62UihVE3is+IZH+LqDVsBtT6kj
-m7OOHsEKtnO5+8AcRxkMHxlPfi9SJPrm9JfdTvpsdLcOwdwMcnqKegKkXjlNKync
-jKy3bb0r3e88lU1wuvo/JsS1v5me/1oYn2OB25gpQtU62U4T2nSedFHaqrJicbY8
-2ZCtbSiGyoWeOEsAVDPUnL3QQn4YlRKqPIkQZ9kwtHKnVW/+uxqtUpoKtb9lJEJy
-bRhZu8Ad7gM4bcONEHPxyNYj34J0E7uHtA/tZAZlIzp2kgb1ohXsCwhDf+JkLnw2
-puZzKc+kayLj4vyVeUCohFD2HLjoO3C8U4OoZ6sh4Gt4Hwm97NpKKV19X8d9/vJg
-K/uHPQu1osPd1hzdd8SgAqsuiaAc/B02VJBz5B9AuDnGqM8C0M3onyOEBaokOTnQ
-Tskin8PMhn6m40+EC1H7hFdfjiwjY3ZLTDKewwqlHNxJknX+gEAp4nbt21w4khij
-kTaNflrAe0BwCbhj1TxFDYkQcWfcJGEBUS0Oq85cx1KFZJYvLqFOwpI7RupCEF1T
-771pv5Dn9shOkDjn5LxwlLfxkWP9zbAehz8yhmEg6FFUb6OsF5sEcFsQ2aTHm0WQ
-9HbsT855gVHykBsXeozA1Q34CAwr6uLqnu6un7gfbieJqgJaMjT8RI0A76EZMqtB
-94+ezjSUJ5MJL6p/sQDNw0SmmfSl+0/p2FSaDIzIGsphy13St/VEFayKSissP6XP
-y/EfCCg18K9tc5uajwRWWjYsztoVZPnBG0hIGqfIU0wxmf6zFAXc13B8lWJiKvHb
-z9gmn546qUkzYZcyBjKvApFUzPUAqplsTupT9xPKgWRH7INuT3KuSvmF00EZRqWa
-KbUGCDKa2/Rmz4g1Liepg6MBDxyLD0k63LnvZJqlu+PR5PTbLLa8qMnrUG7njoMg
-JRmZqCmljQrTDuGzaevtK4+2RYMt2nqYwuq8HyBRDptFGxNOi1NZKi3cu82s59GK
-4pewz+akZ+p7NfrO5npNPfusK4Jb+kPOrlw71ERrtB0rZa6JOgVrS6DX6+rDe4DX
-3u+sE9Kax7wiUTKEZuVmw0fZrlGRE9jwivDZRHFWQYlec22LadnVxNT3SQnK2/RG
-5Eo5dK0/sgtOlsdK0NI+l/AmvnTqqoEqLOZVITqiAlI3zp3Xix0KbK96o50fsh2w
-yEWxT3wDndQbJ4UrpajbHyTtnnG9ULgLsATEDIgV
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRNEtEc1ZFL3doSStQOWl6
+VnMrNEU1ZEgxZTZmbVBGOEV1NkxNendyREVFCjJIVlhTa2MxZmZMNjlLR2dBZ0d4
+aFd5R3NVZHM0cUk3SmhyY3BLajhXMlEKLS0tIGpWbUpyalFQNjYwM2crb0FDd25p
+NUFsNGtORjJidlc3V1c1dDhrMFh6WEkKgJ8xKYzM+fuvTXglfE02krO5zUjulMM9
+wDi+qW88W27CM1JaMrHnGACJyn6uJCb5Atpi0nLaiDHD4+1IqvemlGvxqT/CF8vV
+gTERKVqfuOBmfmxNwAQ6eKhcmvXnrLGINYESZMnwkIapFL7i/PL/ldn618qDQIas
+xn78Ebby3iVQD0ObPK60tOLB+x6f6PlAdQIyDLYRXRNJq88hD3YWgsR9LJNXdJdf
+v+dKovOZqNC0GCjGTw1QQsZg0qSBvKR5r1+nsPcnFpJD9LdhV4NwqoDpjTqPTo0b
++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
 -----END AGE ENCRYPTED FILE-----

From d36e804ebd63b60066fc0e987a58594b0a59627c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 11:21:57 +0000
Subject: [PATCH 925/973] Remove ~/.claude.json, it's ephemeral.

---
 chezmoi/encrypted_dot_claude.json.age | 851 --------------------------
 1 file changed, 851 deletions(-)
 delete mode 100644 chezmoi/encrypted_dot_claude.json.age

diff --git a/chezmoi/encrypted_dot_claude.json.age b/chezmoi/encrypted_dot_claude.json.age
deleted file mode 100644
index 00ba92bc..00000000
--- a/chezmoi/encrypted_dot_claude.json.age
+++ /dev/null
@@ -1,851 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRNEtEc1ZFL3doSStQOWl6
-VnMrNEU1ZEgxZTZmbVBGOEV1NkxNendyREVFCjJIVlhTa2MxZmZMNjlLR2dBZ0d4
-aFd5R3NVZHM0cUk3SmhyY3BLajhXMlEKLS0tIGpWbUpyalFQNjYwM2crb0FDd25p
-NUFsNGtORjJidlc3V1c1dDhrMFh6WEkKgJ8xKYzM+fuvTXglfE02krO5zUjulMM9
-wDi+qW88W27CM1JaMrHnGACJyn6uJCb5Atpi0nLaiDHD4+1IqvemlGvxqT/CF8vV
-gTERKVqfuOBmfmxNwAQ6eKhcmvXnrLGINYESZMnwkIapFL7i/PL/ldn618qDQIas
-xn78Ebby3iVQD0ObPK60tOLB+x6f6PlAdQIyDLYRXRNJq88hD3YWgsR9LJNXdJdf
-v+dKovOZqNC0GCjGTw1QQsZg0qSBvKR5r1+nsPcnFpJD9LdhV4NwqoDpjTqPTo0b
-+IMcZTqXs68/miPzPompA1Q8XPqdWAmS4DErhvV16TLyCQC5omKi5lrSyqnEWXbi
-bGl/596gTVAsENqMNH3WMvY9Ql/1qWtcW4E6D76Xl3+2pVFnAjgLcLZ0H+SWdYB9
-W9DBwAM/SK6+m34yyGJeipBEfOwPqAAA597WBvN3yfDAV+SgX0mB+4leAFez6dZk
-pTmvBVnE/E/edEFAayUHA6P+SJgwd1qbfuAHLh0I/t6KX+5OsdKjVWih22Gxv3AV
-y2VFvn63KNqcXTq9CqVRqNz4GUDfCNlS5OFxZCZSHUDjQqrWTjiozDkue6HcYXz/
-mCcFkJwu7P9ITRedqtdT6GfVsnvz604t7W/ziZCz8acot3lHFMQy49kDT8r8rLx2
-gpGIUhz5GBgnc6vcy0Mc9EFINQBT9DXauP6LGGGY5mZKj94TuOmDzRP/8zzX2lpX
-AcNrgE+Zf1WW99umyQo4LP3acsaMXTydMXNjrMYmsMU1VyEaySf/iqGSHj3C8rSg
-vx2+6x8Q/vTlIXgzFWEMmVsTjSOoWVpSOHZad9zZXJk7ophuzrfBG1cYXvxg6HHu
-Em/CIwUPUXB9bZ17rm/VPU6JpSH3D5ydLD9YS5VhBVHi5wfy2O6ImPPQaU5mqZd4
-RyhDlTrN/Prsq5uM1ZP3ZKZf30hQULbTnPKakd2R/NSth7LdwIMfyy5/M90jz4ZB
-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
------END AGE ENCRYPTED FILE-----

From a5da5f6735b2a8c3180cef132fe3495b3a07f2cc Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 11:23:09 +0000
Subject: [PATCH 926/973] Add Claude status line script.

---
 chezmoi/dot_claude/statusline-command.sh | 53 ++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 chezmoi/dot_claude/statusline-command.sh

diff --git a/chezmoi/dot_claude/statusline-command.sh b/chezmoi/dot_claude/statusline-command.sh
new file mode 100644
index 00000000..6d02f7ca
--- /dev/null
+++ b/chezmoi/dot_claude/statusline-command.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+input=$(cat)
+cwd=$(echo "$input" | jq -r '.workspace.current_dir')
+model=$(echo "$input" | jq -r '.model.display_name')
+model_id=$(echo "$input" | jq -r '.model.id')
+used=$(echo "$input" | jq -r '.context_window.used_percentage // empty')
+total_input=$(echo "$input" | jq -r '.context_window.total_input_tokens // 0')
+total_output=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
+
+# Git branch
+git_part=""
+if git -C "$cwd" rev-parse --git-dir > /dev/null 2>&1; then
+    branch=$(git -C "$cwd" --no-optional-locks branch --show-current 2>/dev/null || git -C "$cwd" --no-optional-locks rev-parse --short HEAD 2>/dev/null)
+    if [ -n "$branch" ]; then
+        git_part=" $branch"
+    fi
+fi
+
+# Context usage
+ctx_part=""
+if [ -n "$used" ]; then
+    ctx_part=" ctx:${used}%"
+fi
+
+# Cost calculation based on model ID (prices per million tokens)
+case "$model_id" in
+    *opus-4*|*opus-4-5*)
+        input_price="15.0"
+        output_price="75.0"
+        ;;
+    *sonnet-4*|*sonnet-4-5*|*sonnet-4-6*)
+        input_price="3.0"
+        output_price="15.0"
+        ;;
+    *haiku-3-5*|*haiku-4*)
+        input_price="0.8"
+        output_price="4.0"
+        ;;
+    *)
+        input_price="3.0"
+        output_price="15.0"
+        ;;
+esac
+
+cost_part=""
+if [ "$total_input" -gt 0 ] 2>/dev/null || [ "$total_output" -gt 0 ] 2>/dev/null; then
+    cost=$(awk -v ti="$total_input" -v to="$total_output" -v ip="$input_price" -v op="$output_price" \
+        'BEGIN { cost = (ti * ip / 1000000) + (to * op / 1000000); printf "%.4f", cost }')
+    cost_part=" \$${cost}"
+fi
+
+printf "%s |%s%s%s\n" "$model" "$git_part" "$ctx_part" "$cost_part"

From 28dc6ea994929b6c16d530a4b8f3a846095e1b6d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 11:24:58 +0000
Subject: [PATCH 927/973] Re-add Claude settings as plain file.

---
 chezmoi/dot_claude/encrypted_settings.json.age | 12 ------------
 chezmoi/dot_claude/settings.json               | 11 +++++++++++
 2 files changed, 11 insertions(+), 12 deletions(-)
 delete mode 100644 chezmoi/dot_claude/encrypted_settings.json.age
 create mode 100644 chezmoi/dot_claude/settings.json

diff --git a/chezmoi/dot_claude/encrypted_settings.json.age b/chezmoi/dot_claude/encrypted_settings.json.age
deleted file mode 100644
index f894a223..00000000
--- a/chezmoi/dot_claude/encrypted_settings.json.age
+++ /dev/null
@@ -1,12 +0,0 @@
------BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLd1IxekxGVUtka05PcEd5
-OEFyeGtBc21GdlhXOGVJMWFGZWJKVk0zdUZNCmcwRHltWm56cTF2VEcvUWI3WWFK
-alFVZVlWLytNTGw3REJrdGtvcmhHVGsKLS0tIC8rUEVrSENSeXFWVmVhZVd4UnAv
-eVRoeE5xaW5KRWVMSTRrWEVxWGZTbTAKDHkVGthhNdxI5I8oGIQVTlgbykQ5uN07
-ItkE5pynsjrlRiZjVPbbQjerLp2mgUfr1KXF6+369IV7cSS4DDW1GXa6iG+kMK3g
-UBxPTYt/ae05fxg1qVzvjzvpYlDG+tYobozn8BmTeg1FVJvyouotADDKqHlS3L0f
-k6da7uPQqimuHDb88a3VqzA5MpG+KKWebh6Q7hdB2vkX+Ke6osNs7YC2DghCRLyR
-gNgPKfi10jvKzXnVd0ImBmsI+26Yv5+QSiJQ9J5W7D0RL/kixRC2t/L82b9oA8eI
-5rVeVvpE3HJIWCrypdWpx9xTjVKEJn4Q6EkRZcy+LKGmie2+ymNx7wHCY+Yo7Hne
-dx5SQhqyDBWPKeorQWl4MLh1
------END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/dot_claude/settings.json b/chezmoi/dot_claude/settings.json
new file mode 100644
index 00000000..24f7bcb4
--- /dev/null
+++ b/chezmoi/dot_claude/settings.json
@@ -0,0 +1,11 @@
+{
+  "model": "opus[1m]",
+  "statusLine": {
+    "type": "command",
+    "command": "sh /Users/james.lawton/.claude/statusline-command.sh"
+  },
+  "enabledPlugins": {
+    "rust-analyzer-lsp@claude-plugins-official": true
+  },
+  "effortLevel": "medium"
+}

From e9501a79475a4bb0068a316f34da98ba160973d7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 16:14:01 +0000
Subject: [PATCH 928/973] Ghostty: enable copy on select.

---
 chezmoi/private_dot_config/ghostty/config | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config
index cd410862..aee50d53 100644
--- a/chezmoi/private_dot_config/ghostty/config
+++ b/chezmoi/private_dot_config/ghostty/config
@@ -48,3 +48,7 @@ quick-terminal-position = bottom
 
 # Shell integration for SSH:
 shell-integration-features = ssh-terminfo,ssh-env
+
+# Enable auto copy of selected text
+copy-on-select = clipboard
+

From 7b6dc63b02861bcd061efd44ea2a7fc5d41de66c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 16:15:11 +0000
Subject: [PATCH 929/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 28 ++++++++++---------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 6146413b..db9f8a9c 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,15 +1,17 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNTGpkckh6Yit5ZW81cUNt
-amdEOG5qOG1JMDkyQWZoek1mZDVZeWRvcmlnCmdQaFhXN0YzK2dNNlAvbTFDY0VG
-aElqRWRoWG94S0o4UTVtTnpIQXE3UWsKLS0tIFVxNWZMY1RCYXBRdWcvVkw1ZlBW
-c3h4RXZOWFZHZFk2M0tqYVFBMnovZVEKDncaO1MK5BLXCuNirPWtA4KBBImE1zLV
-N0ABQ5ncMoySgEszK6oHdo2pRYH25Q5MOgtmyhdAYxn4HoPOzD/SdVsQOiJ8/V0b
-Gvut56E0w4ajDCZu2KZmExspp9gHC/FXzaSn57KSMlnPDUAgFYaqAhMYaPpX5gA8
-EPAnMzlIZF4pm9MzOMZmz5ZY9KNePCS6DiETvcaLE2CpWoWo1/7155Mzbp9+y68o
-yawoqMVCZijjyR6i39E5Y3//73HQ+kPqmufL1az83bxIot3ylcU0LaR46BY+ouRC
-VNxexhls7SHGvsW+a2XVTTk+U65mEhuJHdg8Tn88CIlEjjQ4IHYs03j9lRCFNm8c
-rfnQZ66+d27Wqo2g8bwkCRDvm7KZ/tD62U+3ZrZMLxXalV5w3F//153H4Lxe6UdP
-ygEzBJ8MBNFMACUrqBPDS3ziu7WEfKksa0/tiwMGEdZFkSWeBLBhZyIFl2SJgI5F
-zIx+v96/tJunxaudqT92ZCqc4DyeVmwaVhYPKOp1TczdcJepOdAzHoJZcU6qGRSR
-4WMqdVYxRQut/ZZLoHE5OOB8HdidRlmSyJm6Kai+UUFQ6MRFFs0MSsDsaEA=
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYS2llUWgzZFhqZno1RFlO
+WUtrcEloN0F1RDh2emhQcmN3d3JqSERNdFdVCmgyU0xIMHNZTlBYN3NMdlVhaDFj
+akdRL3NlZVRFdStibWlPNnRqZTRVSHcKLS0tIGlNTitYU0pIa0ZBTUM0Qi9aeW16
+dE9XZnVXV2Z5dHVRNENSWG9YeWFlTEEK2cXTFNGMrOcRzpcW6aWghe1LdEXsgiZN
+2owlB/+s4BCqlS/uxITsTrvjtNFfJQLr0x75Fdd3j8z2WlJi0u8qnCOVTR22E0f4
+zKo5pd5mb6fH/F8OjLe0nkqbO/S5WlEuWufQuja8+k3/tSSNTMJMBQHoa6jiNRF5
+fedtx1YJHhiOcgtlSYmJaalbcRLWlMcg3PlAB9T3IS6Ts6yKpsJCrazeJrRkwCXB
+cv+ri23nDj0TABetrYOi3NH4gPOIqM3O619IkZX4DPs+XFk8hhWOCvktcaPCj2vS
+FFm34n5ItlbXKjPup17+eh7kwlDc0Wys1u4bBVBJglsMbpe+T2AiQfqkWxqct2lj
+jCrZ/cUtc6Hb0bErezoPqsJanxOXrUKKtZQdqyp2/NTXoLm7+ufImn3lMo7jhVa6
+6OuvYOdaFu+FBNKpJiP1hRWZb9MYfUtsNkO+4nRxIKxeJBTU0uDPtviVWr5o/AWm
+WS21gUf27IfY/ZNuXueyYZljcEj+eIgFHmr/sp3tJ3zO56nBbvxNCVHgdrXBT6F+
+z9vMTeBTSAXp906oxvYhr0wmljvr83y6JRb5tjxOWGxpMuSLTNhyHrVHcnq3s13k
+d9azLvTAMw6i4e6BIgrLGJT9ee0S+bWEwt+6dAW8rwe5YwT1EiS0k8xZifqz8GGY
+vA==
 -----END AGE ENCRYPTED FILE-----

From 8bd6b1ed759304f7c083a3be5c0ce5a50f43cd9d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 19 Mar 2026 16:18:27 +0000
Subject: [PATCH 930/973] Ghostty: enable ctrl/option left/right nav.

---
 chezmoi/private_dot_config/ghostty/config | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config
index aee50d53..3b7b3fb0 100644
--- a/chezmoi/private_dot_config/ghostty/config
+++ b/chezmoi/private_dot_config/ghostty/config
@@ -52,3 +52,7 @@ shell-integration-features = ssh-terminfo,ssh-env
 # Enable auto copy of selected text
 copy-on-select = clipboard
 
+keybind = ctrl+left=esc:b
+keybind = ctrl+right=esc:f
+keybind = option+left=esc:b
+keybind = option+right=esc:f

From 508f2609a3d85408be9a313c8ee7c47955e30522 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 20 Mar 2026 10:11:50 +0000
Subject: [PATCH 931/973] Add key bindings for Ghostty.

---
 chezmoi/private_dot_config/ghostty/config | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/chezmoi/private_dot_config/ghostty/config b/chezmoi/private_dot_config/ghostty/config
index 3b7b3fb0..aee50d53 100644
--- a/chezmoi/private_dot_config/ghostty/config
+++ b/chezmoi/private_dot_config/ghostty/config
@@ -52,7 +52,3 @@ shell-integration-features = ssh-terminfo,ssh-env
 # Enable auto copy of selected text
 copy-on-select = clipboard
 
-keybind = ctrl+left=esc:b
-keybind = ctrl+right=esc:f
-keybind = option+left=esc:b
-keybind = option+right=esc:f

From 4ac03cb08a6f3fdba5ab623d89d66d4fbd45767c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 20 Mar 2026 10:12:02 +0000
Subject: [PATCH 932/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 48 +++++++++++++------
 1 file changed, 33 insertions(+), 15 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index db9f8a9c..a6ad3f1d 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,17 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYS2llUWgzZFhqZno1RFlO
-WUtrcEloN0F1RDh2emhQcmN3d3JqSERNdFdVCmgyU0xIMHNZTlBYN3NMdlVhaDFj
-akdRL3NlZVRFdStibWlPNnRqZTRVSHcKLS0tIGlNTitYU0pIa0ZBTUM0Qi9aeW16
-dE9XZnVXV2Z5dHVRNENSWG9YeWFlTEEK2cXTFNGMrOcRzpcW6aWghe1LdEXsgiZN
-2owlB/+s4BCqlS/uxITsTrvjtNFfJQLr0x75Fdd3j8z2WlJi0u8qnCOVTR22E0f4
-zKo5pd5mb6fH/F8OjLe0nkqbO/S5WlEuWufQuja8+k3/tSSNTMJMBQHoa6jiNRF5
-fedtx1YJHhiOcgtlSYmJaalbcRLWlMcg3PlAB9T3IS6Ts6yKpsJCrazeJrRkwCXB
-cv+ri23nDj0TABetrYOi3NH4gPOIqM3O619IkZX4DPs+XFk8hhWOCvktcaPCj2vS
-FFm34n5ItlbXKjPup17+eh7kwlDc0Wys1u4bBVBJglsMbpe+T2AiQfqkWxqct2lj
-jCrZ/cUtc6Hb0bErezoPqsJanxOXrUKKtZQdqyp2/NTXoLm7+ufImn3lMo7jhVa6
-6OuvYOdaFu+FBNKpJiP1hRWZb9MYfUtsNkO+4nRxIKxeJBTU0uDPtviVWr5o/AWm
-WS21gUf27IfY/ZNuXueyYZljcEj+eIgFHmr/sp3tJ3zO56nBbvxNCVHgdrXBT6F+
-z9vMTeBTSAXp906oxvYhr0wmljvr83y6JRb5tjxOWGxpMuSLTNhyHrVHcnq3s13k
-d9azLvTAMw6i4e6BIgrLGJT9ee0S+bWEwt+6dAW8rwe5YwT1EiS0k8xZifqz8GGY
-vA==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSK1J3dDFmNnRiajVqVW5a
+VVFUTzlLNXI1bTZpYWNsRnFsbFZrVC9yQVV3Cm9Ta0VDSm82cmtkd3hHYlVjYmlO
+RDJmd3pPbkdaUWhGY1M3TTJuMmRvMEkKLS0tIGVMazl2K2tnS3VJQ2JadW9hQnRx
+RG4zK3pzYWNJYzJrMUVnTmw4c0dybG8Kdx3NLzxxpLXqyr5Kj5w6DHYOwlpIQVuY
+v/Va+tW/pxddn1p+L+CxfDRfzgFxtkpPm2DUWe6Ci6E1lznT4GP6q6CjI88p8gfI
+Ok1wvIaHuGbADoPNA3DhNK3hpvXpRbl9jgiWY470Rzs//M0hy3VO3qHPc0NU5TdW
+AAD585TLJtdScznJJP1dXhaBIU1ob9MjdJ/EQxdqRna6zNyV25xtHbPnvuPhN8kU
+c/dxI4B+fVIVqF9E3Cp/z2dVP0+H75VqdG97iphum9lN/W9hjZI1wrWjHVarnCki
+hsT49s878D6rD3M2/uBD7+KwKBNNTz3KgdM88OZ5d8ftzSa6DoEzn6HwyFLQZgGY
+NW8QFp3dvGXypWu/mzXz8mBYF1OVb63Sefm0YMtfgN6tiy98nPNbIAsKRewQ+MkA
+7PJs5dlrkWb+FogihV0nwmFyWK9LfycYHZbDUOusM0dlL64gUOF1qZkzL1kUFMy6
+bUDq0wzEr8IiayLpcGSGQ6DB70vFsoY/uX/By1IekEEm/iCYowIltxr2/bw3ApxF
+QW3WcphSTjeM/KtpMrZyA5jn7q0aaYiCs8GCOVw8h6unXJRvyYiAefREl4HIqi6C
+/mbnJb8KnLNMSFC+iEud1BJW/0NhW54qcgmIFYPxDbu3mKV1AD9Ppk3e3dVn+pOo
+Xtb/rkHfVpfIxPA4Y9pvbFQKUzLADyhPx5VYeHoAL4sdpvyXqBAXt6e++5Yd3Zqj
+i7SPM6aJkWW4nfks4v1NK3Cim1Btp8Ur5u/Lq7SbwLOLTCqNyL7NPx0gXOVP6BcT
+UPyvpnHYsbnGcjZYwGZwjxtYmcYbR99kDKY7Cn66vEhvUU7k0rwD3XjaNJlp1280
+xhxAOFV/GocJy82PQ1GfilSjxkE8M7dCuFoK2qJZAuV+qInxmMZq+7ZEGEykz5fV
+eFS1fODum/qiatm1tZxwwsjUoiPPBWJER4ouSlgXnWKgShBfNNFeE5L0L0ht/+nS
+O2GEJ1pdBODfHyua41jH1JvQ9V7SjhyxsEJmrHG9bWSEROfk7XRL7znNlK2Bzm/Y
+sSjk6uotMkQMzn5HbmYRQN0/si03RrUTX17dr9JHnntWo/iTBV+Qy5lV/LKtdj+N
+Ww93yRAj/AzND5MdkQOGr7N7eW5ofIXUbXoonuQy3remZT0ushRy+mnJBu95dIgz
+T4fuy7fme4/QPRa2toQoAAbAfEwsPsWJrtbyDLHkxsFT/yy2/9TPVhqoniPZJmvf
+GWgKETAYG/bxy76KanlThU7kF3e5vhzU8O3+KtSFUBVx637pTdRRE2DOykBXzb+4
+ZTxI8JEK1PE4zLr8AYOC30EPtWb0SRDIiw9BeKw+dKcgKxYjUSI6VfSayLMIn8m4
+DK+ztroJKE7EOFM/Ks4rPJtAAKAnU/vX6L77IAfPPpBcmWn7H0GWREUxL//z9T9M
+0cOb7RKDFDl02ap7tp+F7/dqxlV/iWPS1inuDuOnj3lOFZeGNwcS39Eky0+TYHLE
+fvRFuQn2Be2+DYvmdYt8gvDzSxHzjl6d7qe91VnmcSxeinCjdy1X0OKO52s5N7DY
+bajilGjfbpW25uwtfnm3L6ESGxHPfNzBRiEUFflJrFhiWGXS6htU6iRAsNhd5k39
+PGe32mCFwpx3WR8nTU+GxL6cnSnsA0ovMl9k2Nc2dXhtRY+AyNHBr3sVfdgcSgXf
+MjFd06eVUYDk7hiRrnJHqUAsb3+wnHr4xbeQlfyXfkPvc9zVG8KO3BT9FcoEj6HD
+Ydh0sJavwozXeneGe++VBh5jEZ0UHF9zd30hJTMTYzCTkMEepui4rzz00L2M897v
+KAGdubC3/A==
 -----END AGE ENCRYPTED FILE-----

From c6d044861ebeb00319ee1662cdb181056220d748 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 20 Mar 2026 13:04:30 +0000
Subject: [PATCH 933/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index a6ad3f1d..c943926d 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSK1J3dDFmNnRiajVqVW5a
-VVFUTzlLNXI1bTZpYWNsRnFsbFZrVC9yQVV3Cm9Ta0VDSm82cmtkd3hHYlVjYmlO
-RDJmd3pPbkdaUWhGY1M3TTJuMmRvMEkKLS0tIGVMazl2K2tnS3VJQ2JadW9hQnRx
-RG4zK3pzYWNJYzJrMUVnTmw4c0dybG8Kdx3NLzxxpLXqyr5Kj5w6DHYOwlpIQVuY
-v/Va+tW/pxddn1p+L+CxfDRfzgFxtkpPm2DUWe6Ci6E1lznT4GP6q6CjI88p8gfI
-Ok1wvIaHuGbADoPNA3DhNK3hpvXpRbl9jgiWY470Rzs//M0hy3VO3qHPc0NU5TdW
-AAD585TLJtdScznJJP1dXhaBIU1ob9MjdJ/EQxdqRna6zNyV25xtHbPnvuPhN8kU
-c/dxI4B+fVIVqF9E3Cp/z2dVP0+H75VqdG97iphum9lN/W9hjZI1wrWjHVarnCki
-hsT49s878D6rD3M2/uBD7+KwKBNNTz3KgdM88OZ5d8ftzSa6DoEzn6HwyFLQZgGY
-NW8QFp3dvGXypWu/mzXz8mBYF1OVb63Sefm0YMtfgN6tiy98nPNbIAsKRewQ+MkA
-7PJs5dlrkWb+FogihV0nwmFyWK9LfycYHZbDUOusM0dlL64gUOF1qZkzL1kUFMy6
-bUDq0wzEr8IiayLpcGSGQ6DB70vFsoY/uX/By1IekEEm/iCYowIltxr2/bw3ApxF
-QW3WcphSTjeM/KtpMrZyA5jn7q0aaYiCs8GCOVw8h6unXJRvyYiAefREl4HIqi6C
-/mbnJb8KnLNMSFC+iEud1BJW/0NhW54qcgmIFYPxDbu3mKV1AD9Ppk3e3dVn+pOo
-Xtb/rkHfVpfIxPA4Y9pvbFQKUzLADyhPx5VYeHoAL4sdpvyXqBAXt6e++5Yd3Zqj
-i7SPM6aJkWW4nfks4v1NK3Cim1Btp8Ur5u/Lq7SbwLOLTCqNyL7NPx0gXOVP6BcT
-UPyvpnHYsbnGcjZYwGZwjxtYmcYbR99kDKY7Cn66vEhvUU7k0rwD3XjaNJlp1280
-xhxAOFV/GocJy82PQ1GfilSjxkE8M7dCuFoK2qJZAuV+qInxmMZq+7ZEGEykz5fV
-eFS1fODum/qiatm1tZxwwsjUoiPPBWJER4ouSlgXnWKgShBfNNFeE5L0L0ht/+nS
-O2GEJ1pdBODfHyua41jH1JvQ9V7SjhyxsEJmrHG9bWSEROfk7XRL7znNlK2Bzm/Y
-sSjk6uotMkQMzn5HbmYRQN0/si03RrUTX17dr9JHnntWo/iTBV+Qy5lV/LKtdj+N
-Ww93yRAj/AzND5MdkQOGr7N7eW5ofIXUbXoonuQy3remZT0ushRy+mnJBu95dIgz
-T4fuy7fme4/QPRa2toQoAAbAfEwsPsWJrtbyDLHkxsFT/yy2/9TPVhqoniPZJmvf
-GWgKETAYG/bxy76KanlThU7kF3e5vhzU8O3+KtSFUBVx637pTdRRE2DOykBXzb+4
-ZTxI8JEK1PE4zLr8AYOC30EPtWb0SRDIiw9BeKw+dKcgKxYjUSI6VfSayLMIn8m4
-DK+ztroJKE7EOFM/Ks4rPJtAAKAnU/vX6L77IAfPPpBcmWn7H0GWREUxL//z9T9M
-0cOb7RKDFDl02ap7tp+F7/dqxlV/iWPS1inuDuOnj3lOFZeGNwcS39Eky0+TYHLE
-fvRFuQn2Be2+DYvmdYt8gvDzSxHzjl6d7qe91VnmcSxeinCjdy1X0OKO52s5N7DY
-bajilGjfbpW25uwtfnm3L6ESGxHPfNzBRiEUFflJrFhiWGXS6htU6iRAsNhd5k39
-PGe32mCFwpx3WR8nTU+GxL6cnSnsA0ovMl9k2Nc2dXhtRY+AyNHBr3sVfdgcSgXf
-MjFd06eVUYDk7hiRrnJHqUAsb3+wnHr4xbeQlfyXfkPvc9zVG8KO3BT9FcoEj6HD
-Ydh0sJavwozXeneGe++VBh5jEZ0UHF9zd30hJTMTYzCTkMEepui4rzz00L2M897v
-KAGdubC3/A==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVmlETWRvY3BqZFA3aDha
+Vy9yazdzU29RdGVKcmFWZU5Rc3RIOU8vVlIwCkpBdW54RHczNjdvWXc4SDhaaDE0
+dEdsYWJNK0dpR0FPTFNSMHkxTmEyb3cKLS0tIHo4c1pGcDVseGd3S0d4dE1zb0VF
+QmpFKzFhTVdUZjBVZGdNQnE0UmRSNmMKsNr+VGlcPIOu3rCxpGRfPJy3pXCPWy95
+WMJXyk4x3s6e3kUSJNWg7zhbTPBNNKi6e5ZO/7eqQT1Uu5LTpQfqrSvhh3YjSjdc
+BjoieCHDvLks8h59an/WWwc3s2RnRJllBL2b0AKmbDd4PR0kD0NyY+60ABNzM1tx
+05h7KgFHfbbkIYCGJZGaBimO2iLJ6gWO3xCjCA2bMKiuBCjjxXp6fTXJ5uvU9fZA
+RQ2398zYjW+7XnlqBz98CXBrMRqMwoF+wdaCmqcuSIaTbIQhwXemA0YrQqFEn/MP
+xexERMyEUJoCZFraOKauqu7awIX8le8S8rEe22JxVHb6S09OmI860ogKiQI8bmyF
+Gcxa0rbO6mjST3CjFggcMLQAtJvcUBRH7/m0OEkRU0y7bPDiIidn6aA4OAf6XTRo
+mkA7M1tWytMDvNe154pmViAiHYM31niv+QyTpqdjSVtvbItGb8uu5Sst0+/Q5C1O
+Ujs/U/PIxdm/Ayr1UK1tN6ArSeR/RlKZg/lr440iPhPwUc9Vnlov4tykT4ZtsKzI
+lKPIyQInb8UTFGis9I0sCTY8e+afkJlcBqTcDChCOhyd093sXeqIvJgdDqZQ5FMV
+O8csfJ0V8AjUwRugDHb4aIsjc9oHgniGtn125jjrNX2GwTsvJxXuzlcAzSMir6pC
+Rs4HEGsrQBmfCyHwzN2Y486KIfDEUgVpsr/yU8+1KgfO6NT8nCrvqQqFN7CBv8o1
+xB3iI55f1oyGqhHNrCJm5dXnqu/edq5UD8KQm/9rVSFvKmyopgJQ8AiAQMCqo3aM
+wxshbXyrMCaNyeRKM2he3QQDWq6l+tzRRfLuxCC0T4tRwWhLfY7jdBRXyBX5k+oU
+k5v3Pw0X0Udh0Jbruv2vJr9+tUa+l+a8HMmwU+CYz4KE8iZjwSFN+CsuPQvkFUHS
+ThEQP1tB3jDTMjRf+/mC1iwJXhL4cU0FA7xOL8ZmUeu2H7yWmPU963+4/MX2Vi2t
+yql4KheZ4AJeRged1CwUbbMql+ulNmEGfnUfclQfKC9tIZC/i2NIhpY70p2mlafu
+zdPRm4zH/HCukU0QFc1ogGWRjocZBqGOghKcm7QhTsogrYSKp9VOViR6of3iqml0
+P/IN+fGljshMXp7+NJW50rfA9Fk7RYWqrUMeNgN1KBq9wtpXER2O1iPJkEXIxIPN
+3XC04NLBa3VFlb+XfYxiy35LGuPV5LqxNsDwbjlsc54smknGNkO9D2uLin3Nu6Rh
+1cEuRVjn++qpxGpc8LTtflEgqgc7vrPpa0kl1UD+X1//ooR74iRrB/xk2musN/6H
+ORXi7Y9WctwLEV/BKFd02iAYapql+WHNlonNavmGKrGrGMBypyGO9AHN0yWOCIZN
+LjJPZy+Dfy5Rhd6fgV+ku7DTZ++0uZAQOAcFNl7NWysY1UoxOqNAsnc+7iJK/F7i
+0p6xUxr9ZCRg/EBIhtHH+2q3YIPH/iq/YVeMBKrH+7WiKxpLvwS1yPrmP5YcWAbd
+3Wwu24JoZ/V65EviiO2qqgP+EsP6MUgsLyHVQ3SjZW7Az+AIkA3NUwogifspo3Qm
+WjvjOUy1kaQBNo4icvFuiY9uO2EYUydIKpehs3Sh+V7kgxUJTD6ZBUkgMrcCp8O8
+g1YbtqeJEjcv/vyI8BIsJaCeDnYNVVfpSu0Bewkcuq9rsQB3BvDNclYJph10CMAs
+o8XPr4Cjy67CiuIZYJ/r2hUkkJj1+RfEdpC2wtui0fas8rB2DWZjQAvzs4j5B/ri
+AFX3yZ7KlASiNOErE3E1hRsRjRAJI98Gk+OwLTNn0U5u3U4bgv9FTRaTSrNAYufS
+2EgNR/Mzzw==
 -----END AGE ENCRYPTED FILE-----

From 475a93a8231f09d37895560ca1eb766b0fae65e6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 23 Mar 2026 12:10:16 +0000
Subject: [PATCH 934/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index c943926d..44223291 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVmlETWRvY3BqZFA3aDha
-Vy9yazdzU29RdGVKcmFWZU5Rc3RIOU8vVlIwCkpBdW54RHczNjdvWXc4SDhaaDE0
-dEdsYWJNK0dpR0FPTFNSMHkxTmEyb3cKLS0tIHo4c1pGcDVseGd3S0d4dE1zb0VF
-QmpFKzFhTVdUZjBVZGdNQnE0UmRSNmMKsNr+VGlcPIOu3rCxpGRfPJy3pXCPWy95
-WMJXyk4x3s6e3kUSJNWg7zhbTPBNNKi6e5ZO/7eqQT1Uu5LTpQfqrSvhh3YjSjdc
-BjoieCHDvLks8h59an/WWwc3s2RnRJllBL2b0AKmbDd4PR0kD0NyY+60ABNzM1tx
-05h7KgFHfbbkIYCGJZGaBimO2iLJ6gWO3xCjCA2bMKiuBCjjxXp6fTXJ5uvU9fZA
-RQ2398zYjW+7XnlqBz98CXBrMRqMwoF+wdaCmqcuSIaTbIQhwXemA0YrQqFEn/MP
-xexERMyEUJoCZFraOKauqu7awIX8le8S8rEe22JxVHb6S09OmI860ogKiQI8bmyF
-Gcxa0rbO6mjST3CjFggcMLQAtJvcUBRH7/m0OEkRU0y7bPDiIidn6aA4OAf6XTRo
-mkA7M1tWytMDvNe154pmViAiHYM31niv+QyTpqdjSVtvbItGb8uu5Sst0+/Q5C1O
-Ujs/U/PIxdm/Ayr1UK1tN6ArSeR/RlKZg/lr440iPhPwUc9Vnlov4tykT4ZtsKzI
-lKPIyQInb8UTFGis9I0sCTY8e+afkJlcBqTcDChCOhyd093sXeqIvJgdDqZQ5FMV
-O8csfJ0V8AjUwRugDHb4aIsjc9oHgniGtn125jjrNX2GwTsvJxXuzlcAzSMir6pC
-Rs4HEGsrQBmfCyHwzN2Y486KIfDEUgVpsr/yU8+1KgfO6NT8nCrvqQqFN7CBv8o1
-xB3iI55f1oyGqhHNrCJm5dXnqu/edq5UD8KQm/9rVSFvKmyopgJQ8AiAQMCqo3aM
-wxshbXyrMCaNyeRKM2he3QQDWq6l+tzRRfLuxCC0T4tRwWhLfY7jdBRXyBX5k+oU
-k5v3Pw0X0Udh0Jbruv2vJr9+tUa+l+a8HMmwU+CYz4KE8iZjwSFN+CsuPQvkFUHS
-ThEQP1tB3jDTMjRf+/mC1iwJXhL4cU0FA7xOL8ZmUeu2H7yWmPU963+4/MX2Vi2t
-yql4KheZ4AJeRged1CwUbbMql+ulNmEGfnUfclQfKC9tIZC/i2NIhpY70p2mlafu
-zdPRm4zH/HCukU0QFc1ogGWRjocZBqGOghKcm7QhTsogrYSKp9VOViR6of3iqml0
-P/IN+fGljshMXp7+NJW50rfA9Fk7RYWqrUMeNgN1KBq9wtpXER2O1iPJkEXIxIPN
-3XC04NLBa3VFlb+XfYxiy35LGuPV5LqxNsDwbjlsc54smknGNkO9D2uLin3Nu6Rh
-1cEuRVjn++qpxGpc8LTtflEgqgc7vrPpa0kl1UD+X1//ooR74iRrB/xk2musN/6H
-ORXi7Y9WctwLEV/BKFd02iAYapql+WHNlonNavmGKrGrGMBypyGO9AHN0yWOCIZN
-LjJPZy+Dfy5Rhd6fgV+ku7DTZ++0uZAQOAcFNl7NWysY1UoxOqNAsnc+7iJK/F7i
-0p6xUxr9ZCRg/EBIhtHH+2q3YIPH/iq/YVeMBKrH+7WiKxpLvwS1yPrmP5YcWAbd
-3Wwu24JoZ/V65EviiO2qqgP+EsP6MUgsLyHVQ3SjZW7Az+AIkA3NUwogifspo3Qm
-WjvjOUy1kaQBNo4icvFuiY9uO2EYUydIKpehs3Sh+V7kgxUJTD6ZBUkgMrcCp8O8
-g1YbtqeJEjcv/vyI8BIsJaCeDnYNVVfpSu0Bewkcuq9rsQB3BvDNclYJph10CMAs
-o8XPr4Cjy67CiuIZYJ/r2hUkkJj1+RfEdpC2wtui0fas8rB2DWZjQAvzs4j5B/ri
-AFX3yZ7KlASiNOErE3E1hRsRjRAJI98Gk+OwLTNn0U5u3U4bgv9FTRaTSrNAYufS
-2EgNR/Mzzw==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvKzZDYWswZjFaeGlXbFRM
+WXE1dUwxMUZhRlJlZ0Fpa0tLeHZ6ZHdzRmowClc4R0c4ZVFaOW9lbGVHM0VmTTNq
+OHNENENOSUcvSjlTb2h2T0I2K2JkZEEKLS0tIE0rRjA4SGF0Wm0zNkFyYmE0NDFX
+UEk2Vmw4eTNSVnJ2MkJVOVVmN2FoWGsKG2QrwANJpKbyv+xHhI6v9x9+8KsEYx9v
+oGWUdpgdgvKHdoBZB+TLKojdQds0hh75d+KBdhMvipuIWFmNnJoWuu584jtUKftD
+VpVBVTTLCR8jKrZuxa4N9XYDDI66659Tl5BE7G23+VBTphjF5qn6hWx+ubEVhj+5
+66+bn2yzONq7X40mEdGwK15A+kZQqY98YCawrsjCFPkec9kvYnIaTq4p9epCZQI5
+/JA7+/9LBvkAeDdVDJNYZG7BVGBdBqPH0OsvODp0QJFqkhMCkr4glpGiiNIh91Rl
+yWRF0rYl9wThnYqhBlEnCSeccL0RauFnSNOT4WwX/auwI6ibn22XCtQi+VMO9nHD
+RKACUObGV8nfW3kcSFXJlyixfekfCtRd1/Lg+7uOYXPwSCoohpwcGmo+5kAx8KOF
+5wb7qUxWCRojv14Xa8QdCEP2PlPMVwJ89jVkgnk6T91oHMh/B6lhyhaKJQFfCn5t
+Vg9eXQoEG1ijEipQqPBoyQLz/GVNnIMOjW83FwA68xC9NmA/HOuuRCduSV1kCQHB
+AG8NgS3ajCqYD0nRNEQeaKoZkelz4NcNQ/MxDpQAyZLkL1gzIThnNiYb0FDMRhtV
+cv5YdybVTGzZoy2F9o7Tvf6R3YI2BzwZZ38wql5ND4zL1OoVgGNSXpsS/riCnD5r
+DYa6QeE+eaqvl71Ka4+3pGrZ0Koy2/t9QQ3sqSaN9LF0tCJgC3JPV6h+ah2GDxIC
+yDW3l6mPCO7IVALqz79scjasDQmE8ViwUTJHZS8C+Oe8nHfADb6ras02wSkD+EtW
+v+KIPT9hNVV1bD0di+eKjyc1imPFCv+TPuDiZC882MkL1MUk/sMShl2zc/WqNieo
+EmkEgAlFMBBhiHJGHuZDtkyKRMomlWPNwC0R8MxAzhQxFssCN+Yv3URs6Rk52SYj
+/wgahs/0lVcxPz2lHnJO9MLyrbHEjSHXWii3DiQOzryED5QH0oxGucwk9jZWtkQ9
+TKD32mcjU00AH2IzbEO+GdgVnSdJwI2Z+GUxr0c1yB7u0H6X0KxT5+jlWsi2flfo
+fivyUukq/vN4wPzARl6JngDzmHovvdojMmuOAD9tiHAdHbs9IuelLPNHlJdWgw5T
+e0DVRaGkM9i4BXIKILjKiqxe1m/w+suRclA+o3322eUwjVKRHEteqCeo2obq4cOe
+MLTrm/wJ3fmCVrxgFDkx7r8QJJcF8ZcHSyn1pGEfA3BmSvDQiLgfjZMn60kceRp0
+Dwujy+AzwWl/imbOph2zpDdcO9sH+c2OqzGMhJOSwAx+AS0Rf8aE7RYgSNrMWBCN
+dqrHSsvajrfZMMhT6p7DMJYVi1YqClqQETkG8l04+NTMQod3igE+lyhLRGqi5UkM
+rs+lhPqoHO/fqpPq7vgeFn/RQutJvk+w55lmV85Ifucsu1j2UxqwO6KSWLjnbnRF
+E5JFjfhV2w9bwfCzAiNmHPNRueygcmmEp+9oqnvWxjJADEEu5QIZWOvr7JvFQVMV
+sBn3U1OtcBp52yNtZBie/gvqCfnPkcAeO8lp4fVFC9QcY5zlxfUsnkreEd20cwOO
+Xtb91uXuVu2tWjWU64mzVdlES3F1mLv425RI4R8NE0SFE09MTErDI/zC8mNdDPKC
+i6Y9NSBBtU9bg7FgiI0GH32ynUsHmTAaJFfQyGUBTHx1QGzL1LcEVFW7WWAAZubI
+XxwI/fl/ouY0hNBB0oOvPFm3cuNi9yyfCtJCqjg5Bk97uVuKFSsuQwW5QHf0SNxV
+6AuuEwVMd2H0V4Nw4btVrxal0liQVIeAHzT/jxn2PMqQ3/ACryEberhHggv0XSDr
+I7Cp/7PQEQ==
 -----END AGE ENCRYPTED FILE-----

From 39242a524138bd1ca2968c39eef1d49322afca41 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Mon, 23 Mar 2026 12:10:35 +0000
Subject: [PATCH 935/973] Enable Claude auto-prompt.

---
 chezmoi/dot_claude/settings.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/chezmoi/dot_claude/settings.json b/chezmoi/dot_claude/settings.json
index 24f7bcb4..b374c98e 100644
--- a/chezmoi/dot_claude/settings.json
+++ b/chezmoi/dot_claude/settings.json
@@ -7,5 +7,6 @@
   "enabledPlugins": {
     "rust-analyzer-lsp@claude-plugins-official": true
   },
-  "effortLevel": "medium"
+  "effortLevel": "medium",
+  "env": { "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "1" }
 }

From 214ad47c93f3a03878b68dbcde194e61b7214dbc Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 15:16:07 +0000
Subject: [PATCH 936/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 44223291..f4bc8f46 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvKzZDYWswZjFaeGlXbFRM
-WXE1dUwxMUZhRlJlZ0Fpa0tLeHZ6ZHdzRmowClc4R0c4ZVFaOW9lbGVHM0VmTTNq
-OHNENENOSUcvSjlTb2h2T0I2K2JkZEEKLS0tIE0rRjA4SGF0Wm0zNkFyYmE0NDFX
-UEk2Vmw4eTNSVnJ2MkJVOVVmN2FoWGsKG2QrwANJpKbyv+xHhI6v9x9+8KsEYx9v
-oGWUdpgdgvKHdoBZB+TLKojdQds0hh75d+KBdhMvipuIWFmNnJoWuu584jtUKftD
-VpVBVTTLCR8jKrZuxa4N9XYDDI66659Tl5BE7G23+VBTphjF5qn6hWx+ubEVhj+5
-66+bn2yzONq7X40mEdGwK15A+kZQqY98YCawrsjCFPkec9kvYnIaTq4p9epCZQI5
-/JA7+/9LBvkAeDdVDJNYZG7BVGBdBqPH0OsvODp0QJFqkhMCkr4glpGiiNIh91Rl
-yWRF0rYl9wThnYqhBlEnCSeccL0RauFnSNOT4WwX/auwI6ibn22XCtQi+VMO9nHD
-RKACUObGV8nfW3kcSFXJlyixfekfCtRd1/Lg+7uOYXPwSCoohpwcGmo+5kAx8KOF
-5wb7qUxWCRojv14Xa8QdCEP2PlPMVwJ89jVkgnk6T91oHMh/B6lhyhaKJQFfCn5t
-Vg9eXQoEG1ijEipQqPBoyQLz/GVNnIMOjW83FwA68xC9NmA/HOuuRCduSV1kCQHB
-AG8NgS3ajCqYD0nRNEQeaKoZkelz4NcNQ/MxDpQAyZLkL1gzIThnNiYb0FDMRhtV
-cv5YdybVTGzZoy2F9o7Tvf6R3YI2BzwZZ38wql5ND4zL1OoVgGNSXpsS/riCnD5r
-DYa6QeE+eaqvl71Ka4+3pGrZ0Koy2/t9QQ3sqSaN9LF0tCJgC3JPV6h+ah2GDxIC
-yDW3l6mPCO7IVALqz79scjasDQmE8ViwUTJHZS8C+Oe8nHfADb6ras02wSkD+EtW
-v+KIPT9hNVV1bD0di+eKjyc1imPFCv+TPuDiZC882MkL1MUk/sMShl2zc/WqNieo
-EmkEgAlFMBBhiHJGHuZDtkyKRMomlWPNwC0R8MxAzhQxFssCN+Yv3URs6Rk52SYj
-/wgahs/0lVcxPz2lHnJO9MLyrbHEjSHXWii3DiQOzryED5QH0oxGucwk9jZWtkQ9
-TKD32mcjU00AH2IzbEO+GdgVnSdJwI2Z+GUxr0c1yB7u0H6X0KxT5+jlWsi2flfo
-fivyUukq/vN4wPzARl6JngDzmHovvdojMmuOAD9tiHAdHbs9IuelLPNHlJdWgw5T
-e0DVRaGkM9i4BXIKILjKiqxe1m/w+suRclA+o3322eUwjVKRHEteqCeo2obq4cOe
-MLTrm/wJ3fmCVrxgFDkx7r8QJJcF8ZcHSyn1pGEfA3BmSvDQiLgfjZMn60kceRp0
-Dwujy+AzwWl/imbOph2zpDdcO9sH+c2OqzGMhJOSwAx+AS0Rf8aE7RYgSNrMWBCN
-dqrHSsvajrfZMMhT6p7DMJYVi1YqClqQETkG8l04+NTMQod3igE+lyhLRGqi5UkM
-rs+lhPqoHO/fqpPq7vgeFn/RQutJvk+w55lmV85Ifucsu1j2UxqwO6KSWLjnbnRF
-E5JFjfhV2w9bwfCzAiNmHPNRueygcmmEp+9oqnvWxjJADEEu5QIZWOvr7JvFQVMV
-sBn3U1OtcBp52yNtZBie/gvqCfnPkcAeO8lp4fVFC9QcY5zlxfUsnkreEd20cwOO
-Xtb91uXuVu2tWjWU64mzVdlES3F1mLv425RI4R8NE0SFE09MTErDI/zC8mNdDPKC
-i6Y9NSBBtU9bg7FgiI0GH32ynUsHmTAaJFfQyGUBTHx1QGzL1LcEVFW7WWAAZubI
-XxwI/fl/ouY0hNBB0oOvPFm3cuNi9yyfCtJCqjg5Bk97uVuKFSsuQwW5QHf0SNxV
-6AuuEwVMd2H0V4Nw4btVrxal0liQVIeAHzT/jxn2PMqQ3/ACryEberhHggv0XSDr
-I7Cp/7PQEQ==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKdDVNek5BL0orRnppRDN1
+a1crSjUvc0xHM3ZNSGpQOUVCWW5ZTFM4NVRVCm9mbHNBbDUzVHZQcEV0TUNwSjdZ
+OWVSV1E4aXc3eXFtQzMyNGwvZDBhQk0KLS0tIGtUeFRhSTlGUS8zWHFTZHl0b2FG
+UVBPMTZIZ0NXaVBMekZhdko3eGhwTlUKQK7Z/kxuZt1Hfe6vLW7XSajl5jY9D5cq
+7Y5GBCDA+M59em6GeYE+By772S1Z+lDYiNKYaYeES7kZt0+Xu1Kd87ndBCX1ye/c
+i3xlvCi1hCbBMYruDydv2h/BTp36nW4GqR92PTSiyO1e0oNooojg4HKOBuA37mK1
+uC1sjMJ+TJs14orA+OPXrdgigNTc938WF/02YkzlPATTcQUjjo4cqUCwWWgmhxA5
+7gnoUSlkF+8AajeO1O8U0cHPyas3JThUsEC+SxalqMuRZNu/G4t90bt2F0N3ATpP
+P/QiKv4QOJnLzxNamC+hurR/6sdS4f7eZWRWAzmvczhckZuR4I+ystYf2S5Z2+cQ
+oUqRjZcYFcB+hI+J3cHASBUVsDbVytgyWxyZp7AUZzkJHlujfWahmjNVIoB2ek3K
+5wZFct0t8ROG5iOLMiT/qCnHxsiQ1MfHkWNXLYR2IAvnqHC14R3oa/nf7XbWlXyM
+zzimD7Gotar0aJHoaO6FjQMgzrXhinhZWwoPYpBWttmz4QlPrtRr+pg78Wjh7R4H
+QduJhdROCitBAFw/POrvB5HlPqJPYZmRO4XvBghS0PvSv+j+P2+wBLG4tQCxisBn
+1xmW7ggRJpCcOo0fQXBzci1jyQxV8YdR+a/9NulAvgHs/uP/BUWSexA2H00QRDy2
+/0/4fGgau56Z+67U3fstWOd0jNqYAVOXcAahrKAUTp/gadRbw2nS39kR0Ns+FRbb
+mo4Lc03FSRQXs1qbcLXpKgZnVLq6CVldUDbr8KRJRLmLb562XCAVth0txwZCEMJF
+4a8mpGgK+KfXgYV5sq659Ojc4Uf22x/2qp489+MKMvvSZSOLLLO844tS5WC6HuOR
+gcvzCjZFChs0CFWOKaK8FzJ4CSts22pYqrd7R4EoU4sWRNdzjq5hrShIjjACxil8
+j7Gg6foLFAwCIKfwBrYr9wEGNKwR71odYur0Ms0oR8zYBYLljbR078eyN7V8pjUR
+eASpmmhIMCK1YVAedhADc5YaSfboQWn0g9WxQc03zCDtQ9+3+eli5hki0rP2ZUZU
+PVUawwatNDLoo5lxj8js0XvKbKXXrpmUVu6CGO7YdkWP2GXxPwYVEInfHZ4af8Hn
+E5w2C3gusq3UQcKEovG/a730ATp8zIS63zvA+zL6m7TtPR15bzQ1GWZA1wuGlX5/
+vGH33wvXigpL31UBH0PYYdp0i3btfzUmW3DRGOU4CqJOHsRl81H4PC+8P2wVl70X
+qrDoaAfSzQ5IlWI01vY0ZSC3i2SLqdu9bcZ45jzoix8+ksZBKm9h4ODv9aCGJTi/
+N2iuPD5Xmhvdpobkyip1v1GFrtAqgTGWr772hTauPQr5D2Gemn9OT177pzqeOVpk
+PUBEdH1qRqQFrnQiRkDzxtMEAz5ekoccNHCuPk1UrYCkC2/2m/PsoAc87R4peb2C
+M5PfTFCPTVtw8p5hwo7STfOAOhLV1H2l4qHFXAJmu4/TdF8F39VeYHRmNMYDtG1o
+cAeqTm51wIieG45WCEPkLqHYoxSO3smijgVmfyMxBVWTbfZBnqV3lnDw10faYg4n
+KOmTQFCzkSRIjzaNJds7VK3fM1K1GmTQmaFOxMFJ0XSmJ3Ywujl06/cZdISy/vAk
+gzEAr7Wpak1PKIaG1dpAFBJ86JPFkif5KsFPgB8IeoPdKFcaVn6fXB2HENPA3Scw
+diX9cdN3fdeM1irlU7ctDL+5W/XD5WpR4or8HhhbkC545PnVnIsQqS8NJCI7Avhg
+w7DLeaBov48qBYoJNWrv8CXjzFjbdvM92nHP/3rzlCAIhAwZdsa3FeU9rgs1+h1Y
+Gb4lcO6V1A==
 -----END AGE ENCRYPTED FILE-----

From b1f82f1582b4f62a040186d91a006f9e16110b53 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 15:32:03 +0000
Subject: [PATCH 937/973] Add bootstrap sequence to readme.

---
 README.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/README.md b/README.md
index 01152cc8..56d90fc8 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,14 @@ These are installed whenever the packages.yaml has changed and a `chezmoi apply`
 
 ## Usage
 
+### The easiest way
+
+```
+$ curl https://raw.githubusercontent.com/jimlawton/dotfiles/refs/heads/master/bootstrap.sh -o bootstrap.sh
+$ chmod +x bootstrap.sh
+$ ./bootstrap.sh
+```
+
 ### Install XCode Command Line Tools if necessary
 ```
 xcode-select --install

From 2420d65caba4a60ac2acc6674e59012c2eea06c5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 15:46:48 +0000
Subject: [PATCH 938/973] brew: update git-spice from formula to cask.

---
 chezmoi/Brewfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index bfe31e86..74b55fd7 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -255,7 +255,6 @@ brew "zig"
 brew "zlib"
 brew "zoxide"
 brew "zsh"
-brew "abhinav/tap/git-spice"
 brew "ankitpokhrel/jira-cli/jira-cli"
 brew "anomalyco/tap/opencode"
 brew "bufbuild/buf/buf"
@@ -300,6 +299,7 @@ cask "font-ubuntu-mono-derivative-powerline"
 cask "funter"
 cask "ghostty"
 cask "git-credential-manager"
+cask "abhinav/tap/git-spice"
 cask "hammerspoon"
 cask "iterm2"
 cask "jupyter-notebook-ql"

From bebf030b506a352f6e8ced13e03aa1c8bf5bab93 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 16:08:20 +0000
Subject: [PATCH 939/973] fish: add gs abbreviation for git-spice

---
 .../private_dot_config/private_fish/conf.d/abbreviations.fish | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
index 2e452f3d..87516d54 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/abbreviations.fish
@@ -48,3 +48,7 @@ abbr --add cat 'bat'
 
 # Use ls replacement eza to list the directory tree
 abbr --add ll 'eza -lhT --git'
+
+# gs abbreviation for git-spice
+abbr --add gs 'git-spice'
+

From f7547af866e72f2a5c6deab1b991d9788b78648c Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 16:11:52 +0000
Subject: [PATCH 940/973] fish: add env var to quieten homebrew

---
 chezmoi/private_dot_config/private_fish/conf.d/variables.fish | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
index df8f4248..bcab4a28 100644
--- a/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
+++ b/chezmoi/private_dot_config/private_fish/conf.d/variables.fish
@@ -22,4 +22,6 @@ set -gx GOENV_ROOT $HOME/.goenv
 
 set -gx TSRC_PARALLEL_JOBS 8
 
+set -gx HOMEBREW_NO_ENV_HINTS 1
+
 source $HOME/.shellvars

From ddc75d1290b05e6f475dc26805faec2607c2a9db Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 16:13:58 +0000
Subject: [PATCH 941/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index f4bc8f46..888732bd 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKdDVNek5BL0orRnppRDN1
-a1crSjUvc0xHM3ZNSGpQOUVCWW5ZTFM4NVRVCm9mbHNBbDUzVHZQcEV0TUNwSjdZ
-OWVSV1E4aXc3eXFtQzMyNGwvZDBhQk0KLS0tIGtUeFRhSTlGUS8zWHFTZHl0b2FG
-UVBPMTZIZ0NXaVBMekZhdko3eGhwTlUKQK7Z/kxuZt1Hfe6vLW7XSajl5jY9D5cq
-7Y5GBCDA+M59em6GeYE+By772S1Z+lDYiNKYaYeES7kZt0+Xu1Kd87ndBCX1ye/c
-i3xlvCi1hCbBMYruDydv2h/BTp36nW4GqR92PTSiyO1e0oNooojg4HKOBuA37mK1
-uC1sjMJ+TJs14orA+OPXrdgigNTc938WF/02YkzlPATTcQUjjo4cqUCwWWgmhxA5
-7gnoUSlkF+8AajeO1O8U0cHPyas3JThUsEC+SxalqMuRZNu/G4t90bt2F0N3ATpP
-P/QiKv4QOJnLzxNamC+hurR/6sdS4f7eZWRWAzmvczhckZuR4I+ystYf2S5Z2+cQ
-oUqRjZcYFcB+hI+J3cHASBUVsDbVytgyWxyZp7AUZzkJHlujfWahmjNVIoB2ek3K
-5wZFct0t8ROG5iOLMiT/qCnHxsiQ1MfHkWNXLYR2IAvnqHC14R3oa/nf7XbWlXyM
-zzimD7Gotar0aJHoaO6FjQMgzrXhinhZWwoPYpBWttmz4QlPrtRr+pg78Wjh7R4H
-QduJhdROCitBAFw/POrvB5HlPqJPYZmRO4XvBghS0PvSv+j+P2+wBLG4tQCxisBn
-1xmW7ggRJpCcOo0fQXBzci1jyQxV8YdR+a/9NulAvgHs/uP/BUWSexA2H00QRDy2
-/0/4fGgau56Z+67U3fstWOd0jNqYAVOXcAahrKAUTp/gadRbw2nS39kR0Ns+FRbb
-mo4Lc03FSRQXs1qbcLXpKgZnVLq6CVldUDbr8KRJRLmLb562XCAVth0txwZCEMJF
-4a8mpGgK+KfXgYV5sq659Ojc4Uf22x/2qp489+MKMvvSZSOLLLO844tS5WC6HuOR
-gcvzCjZFChs0CFWOKaK8FzJ4CSts22pYqrd7R4EoU4sWRNdzjq5hrShIjjACxil8
-j7Gg6foLFAwCIKfwBrYr9wEGNKwR71odYur0Ms0oR8zYBYLljbR078eyN7V8pjUR
-eASpmmhIMCK1YVAedhADc5YaSfboQWn0g9WxQc03zCDtQ9+3+eli5hki0rP2ZUZU
-PVUawwatNDLoo5lxj8js0XvKbKXXrpmUVu6CGO7YdkWP2GXxPwYVEInfHZ4af8Hn
-E5w2C3gusq3UQcKEovG/a730ATp8zIS63zvA+zL6m7TtPR15bzQ1GWZA1wuGlX5/
-vGH33wvXigpL31UBH0PYYdp0i3btfzUmW3DRGOU4CqJOHsRl81H4PC+8P2wVl70X
-qrDoaAfSzQ5IlWI01vY0ZSC3i2SLqdu9bcZ45jzoix8+ksZBKm9h4ODv9aCGJTi/
-N2iuPD5Xmhvdpobkyip1v1GFrtAqgTGWr772hTauPQr5D2Gemn9OT177pzqeOVpk
-PUBEdH1qRqQFrnQiRkDzxtMEAz5ekoccNHCuPk1UrYCkC2/2m/PsoAc87R4peb2C
-M5PfTFCPTVtw8p5hwo7STfOAOhLV1H2l4qHFXAJmu4/TdF8F39VeYHRmNMYDtG1o
-cAeqTm51wIieG45WCEPkLqHYoxSO3smijgVmfyMxBVWTbfZBnqV3lnDw10faYg4n
-KOmTQFCzkSRIjzaNJds7VK3fM1K1GmTQmaFOxMFJ0XSmJ3Ywujl06/cZdISy/vAk
-gzEAr7Wpak1PKIaG1dpAFBJ86JPFkif5KsFPgB8IeoPdKFcaVn6fXB2HENPA3Scw
-diX9cdN3fdeM1irlU7ctDL+5W/XD5WpR4or8HhhbkC545PnVnIsQqS8NJCI7Avhg
-w7DLeaBov48qBYoJNWrv8CXjzFjbdvM92nHP/3rzlCAIhAwZdsa3FeU9rgs1+h1Y
-Gb4lcO6V1A==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSV0FNeVVvOUVuTGlBdTRW
+Z1ptenFWK2hRNk5idU8rSTgrRDlHOVhTTFdRClc5VzRDNFpORUFWL2JhazhDdGF2
+d1NpNlV2T3VsNHNjQ0tkdnVHb3JRRUkKLS0tIHlRVlRxMWdlcHp4NnJDR1ZIRk9E
+VDBFT2F2WFdoR01RdlVkc25hbHhvSzAKWY1uLc9SbjDc7PiDkz9wZ+Uv+5r3V7+I
+UCvNwIz1PwTZ23TlMyeiHRgT9PXOjJ16jrXXkDuwG2/yL7ZzDDwoCiDY3H0f+2t3
+2lEZ8TZdhwqCofhyyAepGGBZUHzxS/ZtVMPjufkRl5J5QLjun/dtVN87pfqvi9pT
+RaHsnpPGO6hJueGUHxT4i1OoYg5j0wgzvyiiKJzlcnLoxZWvhl8ozn1fWPknKYst
+Mzofg/zsywDwQrm1W6bV28mLef468sW9VsMtaxqXiEBZJf4WBIeLqaE46pbp5CWZ
+D/028wrkNNieD24QggDssDjai+EP3cZtdntz1G6ccDDb2pSdT1qPWO9Wc8rWCj7c
+C0vqVGHoq4Wx/mSR3L/UU7CNLDF+rRKPZhILi8HZdk6aJ9hNRFduvDTf/S1ycfip
+AR4KlWHuC/yzCJV+V1IDKOnv2H0Nfa47K6EDUvmwElh87/FSd6rfMvcUJeXFoAN9
+9VKqQgigmndYe3TAiHqDpJLmDr/bt/lvd3FnTiFnabl/N1/i6K+IPJkX98hO0HVI
++x7BH4hiheAiEMElAfIPd9qcD+6laqVN7RsLsBr9MqGRx9Nm7g9I3gmk2a9j6PIZ
+pVdqljacxyVnK0ah+OOX1T1rYkpyBcxF4+5UOu4zZ17YOO8oCxDJ6sN0zuVfSQb0
+rQqjumbc7vYzVieYMYus2H7CoIHlivJRwa7Y+F5IzXWe3MB8HwSa6bFtqyXXwyAG
+CII+11opMLcCwOW9qbeaCI9qWJ6yxDxyX9Z7QBYw1KCfwLqVbHuJXK+efgfkmOo2
+FSpywZ6SKDDnhB1/SKc0N9Y0n+eao2iSsHP32oMk4G0Kzu3tk14JcjVRUlasYf7A
+9AxzuclzEHre6vxrmQaonPFmckSY5cS6devSNlpFufOj8N+GT4QUZ0215XN2BdiB
+MvhOWQg6wYDWaBuxy9a5BivQvmQJlHNndVlPg2N5l59oasdDr5b9XlEZh9k5Wq5h
+UriQOoVXxf1T/gFM2EApfPi9u8ubKNuNiZlMzBw6T1+sbRvR5fXZeClmXbCpibX1
+/kZMkX8V3KrpDp76nD6cL9/cLf+kcyBZj2fKVE0vu6yoSTSC4ED+Kp4imngmhfNs
+0zk8RzpPbqxN0iRUoYhC1qYC+QwPcv67rkGIT1mmddva4pc7wt3poMpzQBWNUe7L
+BZJlYr38gOUO4hrKZ5e9sFJLRDikbrl1znKtx45kvQTSfMt5wxaugrPUyrawcCrV
+zYBL4lnz8bWRD3WtrrRtsCKypgCTcCUHO5JQL72Nh4gUj5kE4ap6z7rOOgHsPOmA
+IF3Jn4Q7LpnEhd1EjAH+ge5sjMXdHBepZPZKWeWEbL2daJeeOocFyYXpANFUvL2t
+V3EsD3u5emHi6UDpKc8FfScAyMNftsOlf9EfIFM/+v6MlxIwI463P1KjubG10TCZ
+QpvKtb+B5XTzHuhqQqYYtiaOZy6UXV9eUChg3EHJoEccv5kgW5gktskeplOCaWar
+pp4WTpGD8gDdMTLzUHxMJwk5iPDegpgq84QbkjwiwOeluRoy9C+dzdLILFjgBVkE
+wYxGpYWbIJ61R1Js6PZcyJM79j94uHj58X476S3/6qvp+asJOYsUnUzzFPOdMNI1
+TiUtdcB+ZRlRqf1hg1BHPJCVU6TObpM338PR3JM/EbTgYxLJnqLtyka0G7qy2Uqp
+fAp60UQnHkNAAQj7s1CuM19wfmXfqW4Rp62kMMuVn8S0KqV7U9oXYBTEQxlKBU+V
+/KBh76elDoAyJ2kJDhnxp3kp9Gb36SU2XXqKRoL+/G8TUPiypGUap3cMVUfbyZKY
+iOmgtEwYUA==
 -----END AGE ENCRYPTED FILE-----

From 19a4a5865bc4b423c8176e29eaff2f0d6165ef18 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 16:58:18 +0000
Subject: [PATCH 942/973] brew: add brave-browser

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 74b55fd7..51d2e20f 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -268,6 +268,7 @@ cask "bartender"
 cask "beardedspice"
 cask "bitwarden"
 cask "block-goose"
+cask "brave-browser"
 cask "yuuichieguchi/calyx/calyx"
 cask "claude"
 cask "cmux"

From c321dd7e86e88aeea3ada48794dbaefc5326b7d8 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 17:25:38 +0000
Subject: [PATCH 943/973] Remove SublimeText and SublimeMerge.

---
 chezmoi/Brewfile | 2 --
 1 file changed, 2 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 51d2e20f..709e7e87 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -314,8 +314,6 @@ cask "obsidian"
 cask "opencode-desktop"
 cask "rectangle"
 cask "steipete/tap/repobar"
-cask "sublime-merge@dev"
-cask "sublime-text@dev"
 cask "temurin"
 cask "visual-studio-code"
 cask "vlc"

From 7f8d3b7bbd7079a4d39f5c5a462d5ebba9fb419b Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 17:25:56 +0000
Subject: [PATCH 944/973] Remove vscode and extensions.

---
 chezmoi/Brewfile | 53 ------------------------------------------------
 1 file changed, 53 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 709e7e87..536b11d7 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -315,7 +315,6 @@ cask "opencode-desktop"
 cask "rectangle"
 cask "steipete/tap/repobar"
 cask "temurin"
-cask "visual-studio-code"
 cask "vlc"
 cask "yt-music"
 cask "zed"
@@ -341,58 +340,6 @@ mas "TestFlight", id: 899247664
 mas "The Unarchiver", id: 425424353
 mas "Xmind", id: 1327661892
 mas "Yubico Authenticator", id: 1497506650
-vscode "aryanahire.sublime-monokai"
-vscode "atlassian.atlascode"
-vscode "charliermarsh.ruff"
-vscode "codezombiech.gitignore"
-vscode "davidanson.vscode-markdownlint"
-vscode "davidbwaters.macos-modern-theme"
-vscode "docker.docker"
-vscode "donjayamanne.githistory"
-vscode "editorconfig.editorconfig"
-vscode "fabiospampinato.vscode-diff"
-vscode "giovdk21.vscode-sublime-merge"
-vscode "github.copilot-chat"
-vscode "github.github-vscode-theme"
-vscode "github.vscode-pull-request-github"
-vscode "golang.go"
-vscode "grapecity.gc-excelviewer"
-vscode "gruntfuggly.todo-tree"
-vscode "humao.rest-client"
-vscode "janjoerke.jenkins-pipeline-linter-connector"
-vscode "jebbs.plantuml"
-vscode "joffreykern.markdown-toc"
-vscode "mechatroner.rainbow-csv"
-vscode "meezilla.json"
-vscode "mrmlnc.vscode-duplicate"
-vscode "ms-azuretools.vscode-containers"
-vscode "ms-azuretools.vscode-docker"
-vscode "ms-python.debugpy"
-vscode "ms-python.isort"
-vscode "ms-python.mypy-type-checker"
-vscode "ms-python.python"
-vscode "ms-python.vscode-pylance"
-vscode "ms-python.vscode-python-envs"
-vscode "ms-vscode.cmake-tools"
-vscode "ms-vscode.cpp-devtools"
-vscode "ms-vscode.cpptools"
-vscode "ms-vscode.cpptools-extension-pack"
-vscode "ms-vscode.cpptools-themes"
-vscode "ms-vscode.makefile-tools"
-vscode "pdconsec.vscode-print"
-vscode "peterj.proto"
-vscode "redhat.vscode-yaml"
-vscode "rust-lang.rust-analyzer"
-vscode "ryanluker.vscode-coverage-gutters"
-vscode "solomonkinard.git-blame"
-vscode "streetsidesoftware.code-spell-checker"
-vscode "tadayosi.vscode-makefile-outliner"
-vscode "takumii.markdowntable"
-vscode "tamasfe.even-better-toml"
-vscode "timonwong.shellcheck"
-vscode "tomoki1207.pdf"
-vscode "vscode-icons-team.vscode-icons"
-vscode "ziglang.vscode-zig"
 go "github.com/maxmind/mm-geofeed-verifier"
 go "github.com/lasorda/protobuf-language-server"
 cargo "cargo-audit"

From eaa249c61622fbffb0603d1f09e77264cbb641ab Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 20:32:12 +0000
Subject: [PATCH 945/973] Update Claude app settings.

---
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 888732bd..81dbc009 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSV0FNeVVvOUVuTGlBdTRW
-Z1ptenFWK2hRNk5idU8rSTgrRDlHOVhTTFdRClc5VzRDNFpORUFWL2JhazhDdGF2
-d1NpNlV2T3VsNHNjQ0tkdnVHb3JRRUkKLS0tIHlRVlRxMWdlcHp4NnJDR1ZIRk9E
-VDBFT2F2WFdoR01RdlVkc25hbHhvSzAKWY1uLc9SbjDc7PiDkz9wZ+Uv+5r3V7+I
-UCvNwIz1PwTZ23TlMyeiHRgT9PXOjJ16jrXXkDuwG2/yL7ZzDDwoCiDY3H0f+2t3
-2lEZ8TZdhwqCofhyyAepGGBZUHzxS/ZtVMPjufkRl5J5QLjun/dtVN87pfqvi9pT
-RaHsnpPGO6hJueGUHxT4i1OoYg5j0wgzvyiiKJzlcnLoxZWvhl8ozn1fWPknKYst
-Mzofg/zsywDwQrm1W6bV28mLef468sW9VsMtaxqXiEBZJf4WBIeLqaE46pbp5CWZ
-D/028wrkNNieD24QggDssDjai+EP3cZtdntz1G6ccDDb2pSdT1qPWO9Wc8rWCj7c
-C0vqVGHoq4Wx/mSR3L/UU7CNLDF+rRKPZhILi8HZdk6aJ9hNRFduvDTf/S1ycfip
-AR4KlWHuC/yzCJV+V1IDKOnv2H0Nfa47K6EDUvmwElh87/FSd6rfMvcUJeXFoAN9
-9VKqQgigmndYe3TAiHqDpJLmDr/bt/lvd3FnTiFnabl/N1/i6K+IPJkX98hO0HVI
-+x7BH4hiheAiEMElAfIPd9qcD+6laqVN7RsLsBr9MqGRx9Nm7g9I3gmk2a9j6PIZ
-pVdqljacxyVnK0ah+OOX1T1rYkpyBcxF4+5UOu4zZ17YOO8oCxDJ6sN0zuVfSQb0
-rQqjumbc7vYzVieYMYus2H7CoIHlivJRwa7Y+F5IzXWe3MB8HwSa6bFtqyXXwyAG
-CII+11opMLcCwOW9qbeaCI9qWJ6yxDxyX9Z7QBYw1KCfwLqVbHuJXK+efgfkmOo2
-FSpywZ6SKDDnhB1/SKc0N9Y0n+eao2iSsHP32oMk4G0Kzu3tk14JcjVRUlasYf7A
-9AxzuclzEHre6vxrmQaonPFmckSY5cS6devSNlpFufOj8N+GT4QUZ0215XN2BdiB
-MvhOWQg6wYDWaBuxy9a5BivQvmQJlHNndVlPg2N5l59oasdDr5b9XlEZh9k5Wq5h
-UriQOoVXxf1T/gFM2EApfPi9u8ubKNuNiZlMzBw6T1+sbRvR5fXZeClmXbCpibX1
-/kZMkX8V3KrpDp76nD6cL9/cLf+kcyBZj2fKVE0vu6yoSTSC4ED+Kp4imngmhfNs
-0zk8RzpPbqxN0iRUoYhC1qYC+QwPcv67rkGIT1mmddva4pc7wt3poMpzQBWNUe7L
-BZJlYr38gOUO4hrKZ5e9sFJLRDikbrl1znKtx45kvQTSfMt5wxaugrPUyrawcCrV
-zYBL4lnz8bWRD3WtrrRtsCKypgCTcCUHO5JQL72Nh4gUj5kE4ap6z7rOOgHsPOmA
-IF3Jn4Q7LpnEhd1EjAH+ge5sjMXdHBepZPZKWeWEbL2daJeeOocFyYXpANFUvL2t
-V3EsD3u5emHi6UDpKc8FfScAyMNftsOlf9EfIFM/+v6MlxIwI463P1KjubG10TCZ
-QpvKtb+B5XTzHuhqQqYYtiaOZy6UXV9eUChg3EHJoEccv5kgW5gktskeplOCaWar
-pp4WTpGD8gDdMTLzUHxMJwk5iPDegpgq84QbkjwiwOeluRoy9C+dzdLILFjgBVkE
-wYxGpYWbIJ61R1Js6PZcyJM79j94uHj58X476S3/6qvp+asJOYsUnUzzFPOdMNI1
-TiUtdcB+ZRlRqf1hg1BHPJCVU6TObpM338PR3JM/EbTgYxLJnqLtyka0G7qy2Uqp
-fAp60UQnHkNAAQj7s1CuM19wfmXfqW4Rp62kMMuVn8S0KqV7U9oXYBTEQxlKBU+V
-/KBh76elDoAyJ2kJDhnxp3kp9Gb36SU2XXqKRoL+/G8TUPiypGUap3cMVUfbyZKY
-iOmgtEwYUA==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2bjQ5VFBvalNPZThGc1Zp
+Mi9VK3RlRHdNcnB5dVU2Kzcya2I1bXF2R1RZCmNyL05ldnYzdFd3bXNoS29CNDY1
+aGpsZTNXdXZaY08rbVdwZUluRHVraFEKLS0tIFk5cnNOaGpQS2pyS3NvYkxhZWdE
+dXpZMUJsb3RneFdrR0haU01jOVdlUFkKS7xNJ5fu+PRj8ENO6PJumne2aKHKp0h+
+WvqQEjxScXqZ9IoJOUJPu+V9yJ7h9Rlz6cUTgfrIOdtaO2DJ1Lkt52SgG+Z/Mw7e
+re/V+Uzdx6n8Q/zo4NW7cRiIf8h0EIPj/AnpvXb4lOOAiH7BtorpNuP3mmNzexqx
+NdA++hqKTSCuD3Ywx9QRe6FPeeEfgwfJNPBSxvXeXQ+BJgDHys2dgqoGOhRqSVB/
+Cu09qknXzNJXrjyqNZFh2IOBkVgDC+FLvNeypA1nxxGyeCmiOyGmX/DKlvExzNq2
+g99Y+0wlv1iD97yIyt0o1FYCrORSjXxJxPFZyoaRJRVpekPq+q4Hnq4ZWmFpY2sB
+wtdK7na6hELH52HdCx2wAwUilYQ5D1thZmJuMbfdCgVEYWIxSw0jpnl/yUfyiqeo
+hPZcx1cWVkE2QqDOHD8So88pbhp3Qbl4aH29Bni8yw/LxJ7scbinjOCs2VWAVFh0
+AOX15xVM4uFcCcdFXKUEGjVZX12K3CIL0mNmbHw2zKjsyp6u/ayp2TncUu7W9baI
+jp5LkPAoN7ktkcWbqbt4VIcIe5gG5p900G8KiKRv7RPhcR4htj9syqBp32xnricB
+f+eAOmGqYTFw/izliudhwxfL2u3mZtLItG5Yr7gIH/bk31A+/DhWMC670GJ6gOGi
+Wfo+KOHFCBgZHRcjl7ji6/AZyCuAsogke+MVRXgb7grl+DQUUMCWxL8glJ0ukBJH
+FvYHZT1mX/Ch9df4Q/MBHnmJ79g5HdnQRVxBjqBnJkbAjKKsEJXhKalZws2MXQCf
+BTMXsnwSe5Z0TBRuvIQjHVcLyCXeVYJUlVOfW2X877qWlfmiK7Jg87aUgPb6+dXV
+GEcqB6gi/dZ5852ZEkP0eQ/yvG6GlcTSckyI4GBOVtoc59bfr6wxA1Z37PxlOBQT
+XfW1fEI5XEumIZGRvCeQwZHthsL+BDEfm/YYsOZ59MyrqY4nswLlx3M/BR+smJQh
+otnH3+5qUlNLkZ4kKJJU39XUpCGhEEe3SK6uH+JsSdmg12G+6ytMF+GdbGMN5b35
+yQbCJKglygZV0gGgH+dxMXmNGL7aqOm6myoReAa7vZbh70IeJ4oMkeTG8wGXx16c
+qt5cgST/e4kM11aEuJxjT0gj260PJYK0HZcKYRBdobGcvXxykxuKwLaphaLW3uBD
+QcTr3fPr12LCJbTU8fAfSl0ulQlp+NPVqF+VPbNt9+tJAn7tEcI4Lu5nHOyhmcmY
+3XjnFDNPe7AB/L4ar2pl1qBYymYOOl3yEQzKsAt2nmvz+aQPShv+w40leHaqrnHi
+U2Un7OIjIyIwUQAF5oerf68rJqDzzF2dNPPAGTbQ/Dbcf1LZz2Kq/Rv9AHbXF4Zl
+cQZTTqDIVjzwNYXrehnw5NvJiTNwCaHl3ZMR53dXrwiZSNqV4eXroFWEw1mc/gKE
+sXPRnECdZ7W+rXZvHT4mUCnXSdvvspceroh2L9mNIayvYzvJ/QThwbiVxb9WDuQR
+EY73FBEWadUnGRSXTw2HmU0vDU5BmU9TDdL4BWEa14ThruuemV9ubf6IN9ukyagm
+nO4LtdEmujYMQ9Oy+5SfPnJQlS+U1soNn8pkphGYwe21LOaK72TvDETW66WPn5KG
+bFP4bO1/A+tAKjEuF6tWNjc1v3WSnGNLij0FAnFrjG2VEjiTIXf/uZu3oR6P3w+R
+o6SVY5LBlnE2+5t4aRxiNYbHsUpe9jCKH4fi8BPW9mCPp3Fxq65Ril+NSioM8FAY
+uAnxfsnue1J9/RLhhuuuWjqxFHL6hjnofS5kqY9TS6IU4rUADfcOIK0GYDBDFe/k
+xOE9HgfW0w==
 -----END AGE ENCRYPTED FILE-----

From 89b4d3fe0c46bed6e5d3e7666e345b9eb2a67e15 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 20:39:34 +0000
Subject: [PATCH 946/973] brew: add beyond-compare.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 536b11d7..89bb8c04 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -266,6 +266,7 @@ brew "taiki-e/tap/cargo-llvm-cov"
 cask "alt-tab"
 cask "bartender"
 cask "beardedspice"
+cask "beyond-compare"
 cask "bitwarden"
 cask "block-goose"
 cask "brave-browser"

From 07b25e36f2184536da959d1a3b9c728605dc9e0d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 20:43:08 +0000
Subject: [PATCH 947/973] brew: add claudebar.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 89bb8c04..3ac5b84d 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -272,6 +272,7 @@ cask "block-goose"
 cask "brave-browser"
 cask "yuuichieguchi/calyx/calyx"
 cask "claude"
+cask "claudebar"
 cask "cmux"
 cask "copilot-cli"
 cask "doll"

From 01eae8ca9b9434fd26b2168377f4713a4f2eecfc Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:03:03 +0000
Subject: [PATCH 948/973] brew: add docker-desktop.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 3ac5b84d..e1a5a854 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -275,6 +275,7 @@ cask "claude"
 cask "claudebar"
 cask "cmux"
 cask "copilot-cli"
+cask "docker-desktop"
 cask "doll"
 cask "drawio"
 cask "firefox"

From f0fde88e46c9908b2fec6f798ba4d192caa3fa02 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:08:33 +0000
Subject: [PATCH 949/973] brew: add ddpm.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index e1a5a854..40362ef6 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -275,6 +275,7 @@ cask "claude"
 cask "claudebar"
 cask "cmux"
 cask "copilot-cli"
+cask "ddpm"
 cask "docker-desktop"
 cask "doll"
 cask "drawio"

From 013b36b5341359ecdfb0fb16cef178cf921df2db Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:12:15 +0000
Subject: [PATCH 950/973] brew: add fork.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 40362ef6..664d13ff 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -301,6 +301,7 @@ cask "font-roboto-mono-for-powerline"
 cask "font-sf-mono-for-powerline"
 cask "font-source-code-pro-for-powerline"
 cask "font-ubuntu-mono-derivative-powerline"
+cask "fork"
 cask "funter"
 cask "ghostty"
 cask "git-credential-manager"

From 065a5d6a421b9a7b51f8c324323b08817988c196 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:12:39 +0000
Subject: [PATCH 951/973] brew: add pocket-casts.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 664d13ff..9a7fdc7a 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -317,6 +317,7 @@ cask "monitorcontrol"
 cask "notunes"
 cask "obsidian"
 cask "opencode-desktop"
+cask "pocket-casts"
 cask "rectangle"
 cask "steipete/tap/repobar"
 cask "temurin"

From 86fef9ab9b1d5326d2a18d8a5b80aae227019dc6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:15:34 +0000
Subject: [PATCH 952/973] brew: add slack.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 9a7fdc7a..ba9cafb2 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -320,6 +320,7 @@ cask "opencode-desktop"
 cask "pocket-casts"
 cask "rectangle"
 cask "steipete/tap/repobar"
+cask "slack"
 cask "temurin"
 cask "vlc"
 cask "yt-music"

From d9be00d6ffbfb1c0def2037adb9d4d92172c02ab Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:21:16 +0000
Subject: [PATCH 953/973] brew: add UTM.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index ba9cafb2..bc065d74 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -322,6 +322,7 @@ cask "rectangle"
 cask "steipete/tap/repobar"
 cask "slack"
 cask "temurin"
+cask "utm"
 cask "vlc"
 cask "yt-music"
 cask "zed"

From 1dae8dffa76e39d33ce7212cdcd911e26c3924e6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:21:37 +0000
Subject: [PATCH 954/973] brew: add Wireshark.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index bc065d74..dcf38eec 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -324,6 +324,7 @@ cask "slack"
 cask "temurin"
 cask "utm"
 cask "vlc"
+cask "wireshark-app"
 cask "yt-music"
 cask "zed"
 mas "Bitwarden", id: 1352778147

From 07328e8d9383b1e5c1c8cc0ba7f732454faede91 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:21:56 +0000
Subject: [PATCH 955/973] brew: add Wispr Flow.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index dcf38eec..22e35eea 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -325,6 +325,7 @@ cask "temurin"
 cask "utm"
 cask "vlc"
 cask "wireshark-app"
+cask "wispr-flow"
 cask "yt-music"
 cask "zed"
 mas "Bitwarden", id: 1352778147

From a51f59879c7dc2807ac87da49e1718e110ab98e5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:22:11 +0000
Subject: [PATCH 956/973] brew: add Zoom.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 22e35eea..c4b96e61 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -328,6 +328,7 @@ cask "wireshark-app"
 cask "wispr-flow"
 cask "yt-music"
 cask "zed"
+cask "zoom"
 mas "Bitwarden", id: 1352778147
 mas "Elisi", id: 1406239881
 mas "GoPro Player", id: 1460836908

From 006ea9d1374309f360394379fdb4c72d2bd5b480 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:25:27 +0000
Subject: [PATCH 957/973] brew: remove powerpoint.

---
 chezmoi/Brewfile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index c4b96e61..eff7d26a 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -337,7 +337,6 @@ mas "Keynote", id: 409183694
 mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766
 mas "Mattermost", id: 1614666244
-mas "Microsoft PowerPoint", id: 462062816
 mas "Notability", id: 360593530
 mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473

From 2cc4de3ebe98a5e9fbf6b8de4c985f9f759e3761 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:29:44 +0000
Subject: [PATCH 958/973] bootstrap: install Rosetta.

---
 bootstrap.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/bootstrap.sh b/bootstrap.sh
index c4f3327a..32cc9a01 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -6,6 +6,9 @@
 # Install XCode Command Line Tools, if necessary.
 xcode-select --install || echo "XCode already installed"
 
+# Install Rosetta.
+sudo softwareupdate --install-rosetta || echo "Rosetta already installed"
+
 # Install Homebrew, if necessary.
 if which -s brew; then
     echo 'Homebrew is already installed'

From 167d6b406369d1b27e622993d3ed52c93250ff21 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:32:25 +0000
Subject: [PATCH 959/973] brew: remove temurin.

---
 chezmoi/Brewfile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index eff7d26a..2b28f4be 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -321,7 +321,6 @@ cask "pocket-casts"
 cask "rectangle"
 cask "steipete/tap/repobar"
 cask "slack"
-cask "temurin"
 cask "utm"
 cask "vlc"
 cask "wireshark-app"

From 43acc5ce86e04b42d600a49ad4eef629d0beef85 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 21:33:23 +0000
Subject: [PATCH 960/973] brew: remove Proxy.

---
 chezmoi/Brewfile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 2b28f4be..9617d5f8 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -341,7 +341,6 @@ mas "Numbers", id: 409203825
 mas "Okta Extension App", id: 1439967473
 mas "Okta Verify", id: 490179405
 mas "Pages", id: 409201541
-mas "Proxy", id: 0
 mas "rcmd", id: 1596283165
 mas "Speedtest", id: 1153157709
 mas "Tailscale", id: 1475387142

From ee74335ba93dafba552ab0974bf7ddef0865a437 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 24 Mar 2026 22:59:39 +0000
Subject: [PATCH 961/973] Update Brewfile.

---
 chezmoi/Brewfile | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 9617d5f8..75bc20b4 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -86,14 +86,6 @@ brew "figlet"
 brew "fish"
 brew "fribidi"
 brew "fzf"
-brew "libidn2"
-brew "p11-kit"
-brew "unbound"
-brew "gnutls"
-brew "leptonica"
-brew "tesseract"
-brew "xvid"
-brew "zeromq"
 brew "get_iplayer"
 brew "gh"
 brew "gimme-aws-creds"
@@ -110,6 +102,10 @@ brew "gnu-indent"
 brew "gnu-sed"
 brew "gnu-tar"
 brew "gnu-time"
+brew "libidn2"
+brew "p11-kit"
+brew "unbound"
+brew "gnutls"
 brew "libgcrypt"
 brew "libksba"
 brew "libusb"
@@ -146,7 +142,9 @@ brew "jq"
 brew "jsonlint"
 brew "jsonnet"
 brew "pandoc"
+brew "zeromq"
 brew "jupyterlab"
+brew "leptonica"
 brew "lftp"
 brew "libcaca"
 brew "libffi"
@@ -214,6 +212,7 @@ brew "rlwrap"
 brew "robot-framework"
 brew "rtmpdump"
 brew "ruff"
+brew "rust"
 brew "rustup"
 brew "scc"
 brew "sccache"
@@ -231,6 +230,7 @@ brew "staticcheck"
 brew "telnet"
 brew "terminal-notifier"
 brew "terraform-docs"
+brew "tesseract"
 brew "tfenv"
 brew "tflint"
 brew "tfsec"
@@ -246,6 +246,7 @@ brew "vim"
 brew "wget"
 brew "witr"
 brew "xpdf"
+brew "xvid"
 brew "yaegi"
 brew "yamlfmt"
 brew "yamllint"
@@ -307,6 +308,7 @@ cask "ghostty"
 cask "git-credential-manager"
 cask "abhinav/tap/git-spice"
 cask "hammerspoon"
+cask "insync"
 cask "iterm2"
 cask "jupyter-notebook-ql"
 cask "karabiner-elements"
@@ -330,8 +332,10 @@ cask "zed"
 cask "zoom"
 mas "Bitwarden", id: 1352778147
 mas "Elisi", id: 1406239881
+mas "GarageBand", id: 682658836
 mas "GoPro Player", id: 1460836908
 mas "GoPro Quik", id: 561350520
+mas "iMovie", id: 408981434
 mas "Keynote", id: 409183694
 mas "Kindle", id: 302584613
 mas "Magnet", id: 441258766

From 86f727643ac7bf29f4942a1f0d646d33e87db5b0 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 26 Mar 2026 12:22:16 +0000
Subject: [PATCH 962/973] claude: add superpowers skills.

---
 chezmoi/dot_claude/settings.json | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/chezmoi/dot_claude/settings.json b/chezmoi/dot_claude/settings.json
index b374c98e..bcbe025c 100644
--- a/chezmoi/dot_claude/settings.json
+++ b/chezmoi/dot_claude/settings.json
@@ -1,12 +1,15 @@
 {
+  "env": {
+    "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "1"
+  },
   "model": "opus[1m]",
   "statusLine": {
     "type": "command",
     "command": "sh /Users/james.lawton/.claude/statusline-command.sh"
   },
   "enabledPlugins": {
-    "rust-analyzer-lsp@claude-plugins-official": true
+    "rust-analyzer-lsp@claude-plugins-official": true,
+    "superpowers@claude-plugins-official": true
   },
-  "effortLevel": "medium",
-  "env": { "CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION": "1" }
+  "effortLevel": "medium"
 }

From 375319dcdb6284e316ffa98b24fee8a026e98a63 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 26 Mar 2026 15:47:14 +0000
Subject: [PATCH 963/973] claude: enable auto-dream.

---
 chezmoi/dot_claude/settings.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/chezmoi/dot_claude/settings.json b/chezmoi/dot_claude/settings.json
index bcbe025c..dd616c80 100644
--- a/chezmoi/dot_claude/settings.json
+++ b/chezmoi/dot_claude/settings.json
@@ -11,5 +11,6 @@
     "rust-analyzer-lsp@claude-plugins-official": true,
     "superpowers@claude-plugins-official": true
   },
-  "effortLevel": "medium"
+  "effortLevel": "medium",
+  "autoDreamEnabled": true
 }

From 89ad49e27d775784ea151ee6418d53cc95877ceb Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Thu, 26 Mar 2026 23:31:30 +0000
Subject: [PATCH 964/973] brew: remove packer-completion.

---
 chezmoi/Brewfile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 75bc20b4..3149e850 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -176,7 +176,6 @@ brew "openjdk@11"
 brew "ossp-uuid"
 brew "osv-scanner"
 brew "p7zip"
-brew "packer-completion"
 brew "parallel"
 brew "patchutils"
 brew "peco"

From bed8ab9a704dd59ec6deabd0dd5d46a29566e852 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 13:22:50 +0000
Subject: [PATCH 965/973] Add instructions about avoiding App Store logins for
 free apps.

---
 README.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/README.md b/README.md
index 56d90fc8..9d05aef2 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,14 @@ These are installed whenever the packages.yaml has changed and a `chezmoi apply`
 
 ## Usage
 
+### App Store password setting
+
+macOS asks for an App Store username/password by default, which makes unattended installs impossible. 
+If you are installing only (or mostly) free apps:
+
+- Go to `System Settings` > [Your Name] > `Media & Purchases`.
+- Under `Free Downloads`, change the setting to `Never Require`.
+
 ### The easiest way
 
 ```

From 06a7af66a8518008aeb99edb4993b3444e86e05d Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 13:37:38 +0000
Subject: [PATCH 966/973] brew: add whatsapp cask.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 3149e850..e80c13b1 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -324,6 +324,7 @@ cask "steipete/tap/repobar"
 cask "slack"
 cask "utm"
 cask "vlc"
+cask "whatsapp"
 cask "wireshark-app"
 cask "wispr-flow"
 cask "yt-music"

From 732e5dff0d7d6bb54c169c437b82991835c9881a Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 14:52:14 +0000
Subject: [PATCH 967/973] brew: pin cargo-semver.

---
 chezmoi/Brewfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index e80c13b1..9669f61c 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -360,7 +360,7 @@ cargo "cargo-fuzz"
 cargo "cargo-license"
 cargo "cargo-llvm-cov"
 cargo "cargo-outdated"
-cargo "cargo-semver"
+cargo "cargo-semver@1.0.0-alpha.3"
 cargo "cargo-tarpaulin"
 cargo "cargo-udeps"
 cargo "cargo-warloc"

From 56b7da2acd54cceccfcb90c4b02663c17a4da619 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 15:04:23 +0000
Subject: [PATCH 968/973] brew: add google-drive.

---
 chezmoi/Brewfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 9669f61c..1889d945 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -306,6 +306,7 @@ cask "funter"
 cask "ghostty"
 cask "git-credential-manager"
 cask "abhinav/tap/git-spice"
+cask "google-drive"
 cask "hammerspoon"
 cask "insync"
 cask "iterm2"

From d8ae1d7b8072eb3dc66dbc84069637dd14fe2bc5 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 15:04:45 +0000
Subject: [PATCH 969/973] brew: remove insync.

---
 chezmoi/Brewfile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 1889d945..9e698573 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -308,7 +308,6 @@ cask "git-credential-manager"
 cask "abhinav/tap/git-spice"
 cask "google-drive"
 cask "hammerspoon"
-cask "insync"
 cask "iterm2"
 cask "jupyter-notebook-ql"
 cask "karabiner-elements"

From 0da0071a2108e69e8dec9de2ffa66834bdd08ea6 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Fri, 27 Mar 2026 17:54:46 +0000
Subject: [PATCH 970/973] Update hyper-hacks submodule.

---
 hyper-hacks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hyper-hacks b/hyper-hacks
index 220ee5d8..1f507504 160000
--- a/hyper-hacks
+++ b/hyper-hacks
@@ -1 +1 @@
-Subproject commit 220ee5d8d05d4c414533953bdc18dc6bf7ca89c5
+Subproject commit 1f507504c80756063286118423c6995f8a46c74b

From 75f85d645787004c38d2053fdf809b748fe83230 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Sun, 29 Mar 2026 21:16:20 +0100
Subject: [PATCH 971/973] Update Brewfile.

---
 chezmoi/Brewfile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/Brewfile b/chezmoi/Brewfile
index 9e698573..760555da 100644
--- a/chezmoi/Brewfile
+++ b/chezmoi/Brewfile
@@ -315,6 +315,7 @@ cask "maccy"
 cask "meetingbar"
 cask "mitmproxy"
 cask "monitorcontrol"
+cask "nordvpn"
 cask "notunes"
 cask "obsidian"
 cask "opencode-desktop"
@@ -322,6 +323,7 @@ cask "pocket-casts"
 cask "rectangle"
 cask "steipete/tap/repobar"
 cask "slack"
+cask "transmission"
 cask "utm"
 cask "vlc"
 cask "whatsapp"

From 879f27e6fd7628b8be37bc4bb2a540aa13b8aee7 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Tue, 31 Mar 2026 22:40:19 +0100
Subject: [PATCH 972/973] Update from local.

---
 .../dot_iterm2/iterm2_shell_integration.fish  |  0
 .../encrypted_dot_gitidentity-personal.age    | 20 +++---
 chezmoi/encrypted_dot_gitidentity-work.age    | 26 ++++----
 .../private_Claude/encrypted_config.json.age  | 66 +++++++++----------
 4 files changed, 56 insertions(+), 56 deletions(-)
 mode change 100755 => 100644 chezmoi/dot_iterm2/iterm2_shell_integration.fish

diff --git a/chezmoi/dot_iterm2/iterm2_shell_integration.fish b/chezmoi/dot_iterm2/iterm2_shell_integration.fish
old mode 100755
new mode 100644
diff --git a/chezmoi/encrypted_dot_gitidentity-personal.age b/chezmoi/encrypted_dot_gitidentity-personal.age
index b6e72e58..8f39a8e6 100644
--- a/chezmoi/encrypted_dot_gitidentity-personal.age
+++ b/chezmoi/encrypted_dot_gitidentity-personal.age
@@ -1,12 +1,12 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQTllxeVE4RDh2cUZmTENJ
-UlFUT0VKUXVQL2FiRXVwNzE0UFBxSXk1bEdvCmdKYUVwZlZHTEJGdGxlRGtNclRE
-VWZwdDJRaFhyZlJ2Yi9VSW5IeFFVUzAKLS0tIEhoVmIzTW84Wm94bUVBVENnS0o5
-RmJ0WEsxZmEraVJDaFNCVFZRWTFaakUKY0ZJOU2FI/q4cKqYaUz8CmCwxrU4/+wG
-yMtAx9pTIwCdZx5rZVZdt2+MQnfEYHU9/dgmiSTFjnO50fP29ifK1HB1e6lcXE7K
-zA+Wc5qv4+6hfSOyDuegWz6tTqHde3U0xjDD2AuQIybuJlvWtceBPEZkJ6OSpuUh
-tVAs32t8vYUklSdrCN3lQB7A5+wl0NPQdxtZa1+3STFl1gwMr4vg20V0VEPWQhgu
-AecC0jFaHCPH1cqPbu/emu7x6S4nxGO/F1vLXG+HsjRfW6oH20C8wwodOU4k2XGq
-ul9DcKABxzA6doXENl47kRLADt8NnrvNAF3HhUkxhMPNwU2gQJ6v6wJ++5a0T4dH
-fLwVK0FbMkxyS55OVdfOqsbYpC6XpVA03xANurDeXuvNWEXWgOryMQ==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4dGZvSkJuQ24yYjU5SXZa
+S2VhUTF1MDJMb3cyMWorOXpTcHZTY1pHSUdFCmtES3hLbHJiNmFjTE5FRnlqWGlU
+OVF0cTBWTnZuMlVrY1FUUXVQQ3dwMVUKLS0tIEFVSFM3cHJYd1FMMXY1RDdaZ1pE
+QnRCTUx1cE5KOTVOSWJSMmE0OUF6ZG8KkhH7YVDyKfZuNDsEo7xdz6IWTmmFKxaC
+EAvAMVWk/R4+nn120KU8cL/gS9t2Pgf5PtwMx1biTioP38ufueLHvT3i7DNeoiuP
+mkQOq06j9vqcqx0uRjxDiksG2SVbrpHmFskDyngB36119/+puH4y6dihczxxDmBf
+Qv4qbcx8Tox7WI/NPziO/XctznZ3eJI5Rtcwgz12fdS6eZI02MT4GoRjEuMSb/BD
+xon13nvd+bIUVnpy5ZmiykxTrK6Fj58g3ca7YE8yK+7yZsWautd70un0jtCqCloG
+SvWxN7R0BoVRryB0yGauzbWv/qRZCACVLSXjY8fOnVHNAq3nnV5eyjfOnObT/yAa
+bg9c9jMpaGT9WfkzWHO/YHbK1hfv/JWDKM1rxsXJMkf45Ck6NjUxZA==
 -----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/encrypted_dot_gitidentity-work.age b/chezmoi/encrypted_dot_gitidentity-work.age
index 8dbdcf4e..771259c0 100644
--- a/chezmoi/encrypted_dot_gitidentity-work.age
+++ b/chezmoi/encrypted_dot_gitidentity-work.age
@@ -1,15 +1,15 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwR3ExdVAxTzMvWEpkdmt6
-ME5WUmFWVi8wTm9IeUtBRm5FRkdHeldJcmcwCjZ4ZVh1enZ0ZEo3ZWZBcEhxYzM2
-bk9xMUVCazBhRHltYWUyOW9uNEIzNWcKLS0tIHNEVmV4VGFrMzh2bUptekl2UWYr
-Ujk2aGxRN1ZmRWxKcktmV1ZKa1ljdDAK5Qz3Y7juI6ZIoojT51fiMdADK6ZV3WIR
-lDETtXbG4XrjTaBbVS8Ma2rCup5j8l6lDV4FdQPVhf/x4ilgLZIP3lrTimFdSStf
-o5R+Fu/6bbE++XMslefMl5oGPsu17uu+tC4X9yLWkBE5mwOZXvHONZSpXm0e2lL0
-gu8/fA/cFhugRWTaCDb6i/WGwR5BWBCRy6wJT0CmlCj1Nr8Dh/NazZfuTVf5c9KU
-tfccPC6JJYbl8uiqAe1MQWAj3nBnFER383K5UtKSfbdcjsLRt0ZgsO+9QDnmoD3w
-eflnho+Z2m8zjS9eFMuOYr5tesIM6LaaJA5Bh9EeLhCJX6FaCa+pzxR0zk1EPqyx
-Uuj9AeM+TEMdoe+2wxBmU57RuH/PbbwDu4HTiV5ggxci4WCagcry3xtkNiVlqWoM
-GleuSC7CPK5Z77m0fe77xg6e4fMQZoLkW1/uXPiV+p80rfZMFztyLsAqrxU1ArNu
-k+UUGopGfUprWpsTiD0u3LA3PU3sACHPE4Go3boI7GPNyEswj8a/YBg36HhL3z1R
-jNKjPucctCJt97USWwamQchV72neQtjnNsRd+jAd+yZsvgsdtEqhzg==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVKy9kemZaWVFFL2lVN0w1
+RGlEOTgwWWY2d2NoQjlQZnBXSVFtWnJVajFBCkx3YVVhbm9Ic1NWRGtSNENFQ3U1
+Y3ZCbjBxem1GNU1VZlFDNEVXTmIweFUKLS0tIHRldWNMQlNaZFJHOGYreDkvNnN1
+OUM3NzNIMXh3VTVENStDeG4rK3BMU1kKnU9UwwwZcFTSRXtGuap749PhzF6smfYO
++jbk8Q+LnGZOzK6VkhPLFQGGN7ZYb05NSVf8QuBEVLjFsmWnlxWUrITaRhP3DZK1
+/y5Nl8nyqfKCcdYdw3mU3chZj715fW0l5/qr+GSqo/+Iwg4st7hjKtJRFt9IN1Ra
+gWA0ecrK6hLeuEzzyJuYCmwQSF/bHm3mnhRyN2MN4o6cgQ4WwHGbpCHqybQlZdgn
+Am3Vlhlxsld8JzPpo88TW2g486Y1JomLCvzGpHb7qXyXsXYCgemSkh86SSjVyNuu
+xCPQjH/a5WXH0WNs5mhv75UqjY40qXDoN94G9PVoJlYk04B2ZPKDAQAe81z63GC6
+gTQsKS7JMkjd4VDF2b8Byv2Q1Nc+JFlTu7Pl3XOEDArKxeiqhJNw0ZKN9nq21okL
+GLXwNyj/tNPBc1d7yQh9Nt+U1tfYITZfAIwHBPeZw+85pBrKXm4eh9ZFUFMdQdBn
+INGzD8EDuxwLARIyvU2e8Xic4B8hs7kmz+AN1n3KZ6b1Licx72LxRTKrgjwZ727c
+GWmMl2bANtN0Uv8al4kZ1mlanUoWvtr7duNHgZ4A2AV3/bO1pwKgbg==
 -----END AGE ENCRYPTED FILE-----
diff --git a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age
index 81dbc009..a1f2e94e 100644
--- a/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
+++ b/chezmoi/private_Library/private_Application Support/private_Claude/encrypted_config.json.age	
@@ -1,35 +1,35 @@
 -----BEGIN AGE ENCRYPTED FILE-----
-YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2bjQ5VFBvalNPZThGc1Zp
-Mi9VK3RlRHdNcnB5dVU2Kzcya2I1bXF2R1RZCmNyL05ldnYzdFd3bXNoS29CNDY1
-aGpsZTNXdXZaY08rbVdwZUluRHVraFEKLS0tIFk5cnNOaGpQS2pyS3NvYkxhZWdE
-dXpZMUJsb3RneFdrR0haU01jOVdlUFkKS7xNJ5fu+PRj8ENO6PJumne2aKHKp0h+
-WvqQEjxScXqZ9IoJOUJPu+V9yJ7h9Rlz6cUTgfrIOdtaO2DJ1Lkt52SgG+Z/Mw7e
-re/V+Uzdx6n8Q/zo4NW7cRiIf8h0EIPj/AnpvXb4lOOAiH7BtorpNuP3mmNzexqx
-NdA++hqKTSCuD3Ywx9QRe6FPeeEfgwfJNPBSxvXeXQ+BJgDHys2dgqoGOhRqSVB/
-Cu09qknXzNJXrjyqNZFh2IOBkVgDC+FLvNeypA1nxxGyeCmiOyGmX/DKlvExzNq2
-g99Y+0wlv1iD97yIyt0o1FYCrORSjXxJxPFZyoaRJRVpekPq+q4Hnq4ZWmFpY2sB
-wtdK7na6hELH52HdCx2wAwUilYQ5D1thZmJuMbfdCgVEYWIxSw0jpnl/yUfyiqeo
-hPZcx1cWVkE2QqDOHD8So88pbhp3Qbl4aH29Bni8yw/LxJ7scbinjOCs2VWAVFh0
-AOX15xVM4uFcCcdFXKUEGjVZX12K3CIL0mNmbHw2zKjsyp6u/ayp2TncUu7W9baI
-jp5LkPAoN7ktkcWbqbt4VIcIe5gG5p900G8KiKRv7RPhcR4htj9syqBp32xnricB
-f+eAOmGqYTFw/izliudhwxfL2u3mZtLItG5Yr7gIH/bk31A+/DhWMC670GJ6gOGi
-Wfo+KOHFCBgZHRcjl7ji6/AZyCuAsogke+MVRXgb7grl+DQUUMCWxL8glJ0ukBJH
-FvYHZT1mX/Ch9df4Q/MBHnmJ79g5HdnQRVxBjqBnJkbAjKKsEJXhKalZws2MXQCf
-BTMXsnwSe5Z0TBRuvIQjHVcLyCXeVYJUlVOfW2X877qWlfmiK7Jg87aUgPb6+dXV
-GEcqB6gi/dZ5852ZEkP0eQ/yvG6GlcTSckyI4GBOVtoc59bfr6wxA1Z37PxlOBQT
-XfW1fEI5XEumIZGRvCeQwZHthsL+BDEfm/YYsOZ59MyrqY4nswLlx3M/BR+smJQh
-otnH3+5qUlNLkZ4kKJJU39XUpCGhEEe3SK6uH+JsSdmg12G+6ytMF+GdbGMN5b35
-yQbCJKglygZV0gGgH+dxMXmNGL7aqOm6myoReAa7vZbh70IeJ4oMkeTG8wGXx16c
-qt5cgST/e4kM11aEuJxjT0gj260PJYK0HZcKYRBdobGcvXxykxuKwLaphaLW3uBD
-QcTr3fPr12LCJbTU8fAfSl0ulQlp+NPVqF+VPbNt9+tJAn7tEcI4Lu5nHOyhmcmY
-3XjnFDNPe7AB/L4ar2pl1qBYymYOOl3yEQzKsAt2nmvz+aQPShv+w40leHaqrnHi
-U2Un7OIjIyIwUQAF5oerf68rJqDzzF2dNPPAGTbQ/Dbcf1LZz2Kq/Rv9AHbXF4Zl
-cQZTTqDIVjzwNYXrehnw5NvJiTNwCaHl3ZMR53dXrwiZSNqV4eXroFWEw1mc/gKE
-sXPRnECdZ7W+rXZvHT4mUCnXSdvvspceroh2L9mNIayvYzvJ/QThwbiVxb9WDuQR
-EY73FBEWadUnGRSXTw2HmU0vDU5BmU9TDdL4BWEa14ThruuemV9ubf6IN9ukyagm
-nO4LtdEmujYMQ9Oy+5SfPnJQlS+U1soNn8pkphGYwe21LOaK72TvDETW66WPn5KG
-bFP4bO1/A+tAKjEuF6tWNjc1v3WSnGNLij0FAnFrjG2VEjiTIXf/uZu3oR6P3w+R
-o6SVY5LBlnE2+5t4aRxiNYbHsUpe9jCKH4fi8BPW9mCPp3Fxq65Ril+NSioM8FAY
-uAnxfsnue1J9/RLhhuuuWjqxFHL6hjnofS5kqY9TS6IU4rUADfcOIK0GYDBDFe/k
-xOE9HgfW0w==
+YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1WkViSW1UNituSTdYV0cr
+ZXZvZUcya3NMQ0NiZFFxcWhlVUtuZjMzWFNrCkRkM1NyZHQ0MDc3R09PTk9CclN4
+MU54cDE2eU9mNjJwb1NCYWU5S0VXOE0KLS0tIE9tWkNvMWxLSVprYjBMVVY1enh3
+MG5teVJsV1l3ZGQzK1prc2JwaDB5LzQKwUmoLrXitbJY08jJ/3/2mvvwZ7ngR7Zg
+D3yTiaISqwyAHu4vvWA6FNxe/rogWLxxfozy7OJgrRjn/ky9TbYckB/uKXwNO/81
+24Tb88Iq8g7LJ4Ag6rgIR7xQ86EHeC7BkA/r0hYLWLpQCUb2KDSaD7L7069ZMKAQ
+iUjZc+qIUyyrdIJdgExV08zs5+jsw5zlPmDVPlg3fci3C3+RkM5lO+8LGivX2POc
+ef27bsfERb7ZJcA6KwqZ4vB0886iBZ/ew2NrFKbWsm3RMfK3Im+LT2L9szt5uR95
+95fe1kVzoMoaMtr6ags0YEdG7iecMspULKd44KVYX05DK2QQae+PpnA2kqKSqDCQ
+CneodJox0eahkbMfsFc2VkUr8uSlPhpe+WJq0bkmgGQdYljP1NNNqHvj9rYeoTMf
+KZxNLzXRbE5cs8rZ7Anksv4FQ1S3iJj7f+c0ddLkKJUw2A3GewSTrQPTkfsHsxOO
+T/g0m4s1Q23OX9A4lyZzn0h0YTKuKrQhP5nPlzDPNK3ulCxru3ELecsby7mX2brf
+iIecP9Ed/toER/5DjOqVidYQts82t+i66WvVKfrnJntmokde02XnmhYxaDvsgY2L
+yO+zWy/TmEy+hWOvLMzdWlQ4rerikNMTmuxHKq3tDdP8hw+qqSqIUZuj5rTA17vP
+RJtObipwfjn0ceUZWsC3CB1jANDnaFWui+JQxJcLFAXqcCf/PVFpomxsdw8AxvDb
+id7JPEAP9rzh2tk193U3LtGvjNvupQAbh5dBwYVeMRPA0zOkH3xXartZHNjfurG1
+rKVGR4nNoFaMAyr8a2fWgwt46zIIQsUSoYhfJLdVy6eplYKSQ+JaksASfUnJAbgA
+PINQqal4VzyGlE2ZRqZHtfDDujfbw3xpCLhLf55bU9xpmD+HOqABcBbw7+U42aKz
+Pq2BlFbO+jTUzLLonI3GK32JStmaga7cayxFxDgjcf4tXzz0IkJAsFLHhsqcl23s
+jmyTni91j7WuLlexDpsJo5cqaD8bRdtw/jEvZceB+B3dFA/QiQtaVtvdCHRAeaeO
+k3r0AEFLeE1Ji5tr0kohzw0pCOQ8iXj0tVZnfOaiAIV5KJIMuYQ7E0SX+P97yD47
+Bsf7zMHL4HjnuDdLzvT81BzHXBxD6MHZvdvJ1WNSfyFwfKVFNwLoSfhDTyTc7WvE
+WafK8KcJ9IqVVHM++r9CxScMfXDEmVl9ZBebxLmxpa/WKs3eXiysYIl/7gISxkB/
+5vw9rHMLdqUwRpNt14ETXEto9+xxl46lVhcf+ps8RyJw1O4aTxKlargCVPOZboTs
+//7Ba/EGu4sBTgdW8nDW/vJJaSgviBdzkIXzlrcNqr07lJplbD3Q2a+Xxw5ZUZck
+3lnXUY/6yZNIAl8W2pkcMyHZT+YgQ097WBPjrr/O853MoDYObzDZH6192d4TzTDm
+PhBUoZXRRFjjSy43+TkVLgDidyqEg2oajG49F1wEbbuAYEiDwZraFxEBxrmv3ukx
+X5guh1yTMM7THv5VMusCttLU2Z0QGrLaEdz7LZOeRrdrLydRrQtD2P0SSnzb57qK
+tgGeFg4dILDykM7hJmkBqftO3HqonGHWzz3NlUx3BZgxPG1+6PIQQy0uN4/rCPFX
+hhxUp+acES7PWrqPtwuLXm42//rOCeRB24KYJ+G8mHqGyV6OVGlDdcS+Fyf7o5Ra
+nvdJAvTWfVZu09BX1uxsejWEHEcVwd9F8O2r3uC0fj6niCxkIfFBJLKfrQa7PtDR
++BBtdClOvJVpwLImJA8hjqsRRCdQRyvf9QRo2OZ1cqIeGDlzgY1/Rk0Ym4hpUB6I
+e9why+Jrzg==
 -----END AGE ENCRYPTED FILE-----

From 1c98f3121f47b81ed18b10f9283858abebdbeda4 Mon Sep 17 00:00:00 2001
From: Jim Lawton 
Date: Wed, 1 Apr 2026 00:17:37 +0100
Subject: [PATCH 973/973] chezmoi: ensure umask is correct

---
 chezmoi/.chezmoi.toml.tmpl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chezmoi/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl
index 9050e81d..b7752971 100644
--- a/chezmoi/.chezmoi.toml.tmpl
+++ b/chezmoi/.chezmoi.toml.tmpl
@@ -1,6 +1,8 @@
 {{- $email := promptStringOnce . "email" "Email address" -}}
 {{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}
 
+umask = 0o022
+
 encryption = "age"
 [age]
     identity = "~/.config/chezmoi/key.txt"