From 2b5f3020f9499cd649ca22b140b80f0bf7b6b776 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:40 -0400 Subject: [PATCH 1/6] Update for new Mac --- brew/Brewfile | 5 +---- brew/install | 2 +- zsh/darwin.zshrc | 3 --- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/brew/Brewfile b/brew/Brewfile index b9d494c..7d6c9b7 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -1,6 +1,3 @@ -tap "homebrew/bundle" -tap "homebrew/services" - brew "bat" brew "coreutils" brew "dateutils" @@ -36,5 +33,5 @@ cask "font-iosevka" cask "font-iosevka-slab" cask "gimp" cask "karabiner-elements" -cask "nikitabobko/tap/aerospace" +cask "nikitabobko/tap/aerospace", trusted: true cask "vlc" diff --git a/brew/install b/brew/install index 08366e3..5621a46 100755 --- a/brew/install +++ b/brew/install @@ -6,7 +6,7 @@ CURDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" brewfile="${CURDIR}/Brewfile" bundle() { - brew bundle --file "${brewfile}" "${@:-}" + brew bundle --file "${brewfile}" "${@+"$@"}" } bundle check || bundle diff --git a/zsh/darwin.zshrc b/zsh/darwin.zshrc index 079dcc4..fcbc612 100644 --- a/zsh/darwin.zshrc +++ b/zsh/darwin.zshrc @@ -8,6 +8,3 @@ alias date='gdate' alias awk='gawk' source ~/.profile - -[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && source "/opt/homebrew/opt/nvm/nvm.sh" -[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && source "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" From 90a6cc0e1f72a3750e6b01c3e8351c2acdcc9c29 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:40 -0400 Subject: [PATCH 2/6] Replace alacritty with ghostty on Mac --- aerospace/aerospace.toml | 3 +-- brew/Brewfile | 5 ++--- darwin.conf.yaml | 2 +- ghostty/.gitignore | 1 + ghostty/config.ghostty | 4 ++-- ghostty/darwin.ghostty | 3 +++ ghostty/linux.ghostty | 1 + linux.conf.yaml | 2 +- 8 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 ghostty/.gitignore create mode 100644 ghostty/darwin.ghostty create mode 100644 ghostty/linux.ghostty diff --git a/aerospace/aerospace.toml b/aerospace/aerospace.toml index c84a55b..276e189 100644 --- a/aerospace/aerospace.toml +++ b/aerospace/aerospace.toml @@ -96,8 +96,7 @@ alt-shift-period = 'move-workspace-to-monitor next' alt-shift-r = 'mode resize' -# -n: Always open a new instance because I want it to open in my home directory. -alt-enter = 'exec-and-forget open -n /Applications/Alacritty.app' +alt-enter = 'exec-and-forget open -na Ghostty.app' alt-shift-x = 'exec-and-forget sh -c ~/bin/pbclear' diff --git a/brew/Brewfile b/brew/Brewfile index 7d6c9b7..69dd516 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -27,10 +27,9 @@ brew "tree" brew "watch" brew "zoxide" -cask "alacritty" cask "firefox" -cask "font-iosevka" -cask "font-iosevka-slab" +cask "font-input" +cask "ghostty" cask "gimp" cask "karabiner-elements" cask "nikitabobko/tap/aerospace", trusted: true diff --git a/darwin.conf.yaml b/darwin.conf.yaml index 46c372a..e62d274 100644 --- a/darwin.conf.yaml +++ b/darwin.conf.yaml @@ -5,8 +5,8 @@ quiet: false - link: - ./alacritty/os.toml: alacritty/darwin.toml ./git/config-os: git/config-darwin + ./ghostty/os.ghostty: ghostty/darwin.ghostty ./zsh/os.zshrc: zsh/darwin.zshrc ~/.config/aerospace: aerospace/ ~/.config/karabiner: karabiner/ diff --git a/ghostty/.gitignore b/ghostty/.gitignore new file mode 100644 index 0000000..7388a70 --- /dev/null +++ b/ghostty/.gitignore @@ -0,0 +1 @@ +os.ghostty diff --git a/ghostty/config.ghostty b/ghostty/config.ghostty index 95f1de0..b15ed91 100644 --- a/ghostty/config.ghostty +++ b/ghostty/config.ghostty @@ -1,10 +1,10 @@ font-family = Input Mono Narrow font-style = Light -font-size = 10 - theme = light:jdkaplan-light,dark:jdkaplan-dark resize-overlay = never window-inherit-working-directory = false + +config-file = ?os.ghostty diff --git a/ghostty/darwin.ghostty b/ghostty/darwin.ghostty new file mode 100644 index 0000000..f7b78cd --- /dev/null +++ b/ghostty/darwin.ghostty @@ -0,0 +1,3 @@ +font-size = 12 + +quit-after-last-window-closed = true diff --git a/ghostty/linux.ghostty b/ghostty/linux.ghostty new file mode 100644 index 0000000..12ad5e4 --- /dev/null +++ b/ghostty/linux.ghostty @@ -0,0 +1 @@ +font-size = 12 diff --git a/linux.conf.yaml b/linux.conf.yaml index 8962d39..9d1f7bf 100644 --- a/linux.conf.yaml +++ b/linux.conf.yaml @@ -1,5 +1,5 @@ - link: ~/.config/user-dirs.dirs: etc/user-dirs.dirs ~/.profile: etc/profile.linux - ./alacritty/os.toml: alacritty/linux.toml + ./ghostty/os.ghostty: ghostty/linux.ghostty ./zsh/os.zshrc: zsh/linux.zshrc From 34a509a9e7c228d8de9ec293e33675e14634b169 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:41 -0400 Subject: [PATCH 3/6] brew: Install new tools --- brew/Brewfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/brew/Brewfile b/brew/Brewfile index 69dd516..bedadfc 100644 --- a/brew/Brewfile +++ b/brew/Brewfile @@ -12,7 +12,9 @@ brew "gnu-time" brew "gnu-units" brew "gnupg" brew "gsed" +brew "helix" brew "hexyl" +brew "lazygit" brew "imagemagick" brew "jq" brew "moreutils" @@ -24,6 +26,7 @@ brew "sd" brew "shellcheck" brew "syncthing" brew "tree" +brew "tree-sitter-cli" brew "watch" brew "zoxide" From ae38f04a2c4734cb40552d12e262097be7d3ebda Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:41 -0400 Subject: [PATCH 4/6] zsh: Set EDITOR and VISUAL by presence --- bin/hx | 3 --- etc/profile.linux | 1 + zsh/.zshenv | 3 --- zsh/darwin.zshrc | 3 +++ zsh/linux.zshrc | 3 +++ 5 files changed, 7 insertions(+), 6 deletions(-) delete mode 100755 bin/hx diff --git a/bin/hx b/bin/hx deleted file mode 100755 index a04d6ed..0000000 --- a/bin/hx +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -command helix "$@" diff --git a/etc/profile.linux b/etc/profile.linux index e7df60a..f3fb2d0 100644 --- a/etc/profile.linux +++ b/etc/profile.linux @@ -26,6 +26,7 @@ path_if "$HOME/.local/bin" unset -f source_if unset -f path_if +unset -f has if has gnome-keyring-daemon; then eval "$(gnome-keyring-daemon --start)" diff --git a/zsh/.zshenv b/zsh/.zshenv index 83cf06d..af59a4a 100644 --- a/zsh/.zshenv +++ b/zsh/.zshenv @@ -1,8 +1,5 @@ #!/usr/bin/env zsh -export EDITOR='hx' -export VISUAL=$EDITOR - if [[ -a /usr/bin/virtualenvwrapper.sh ]]; then export WORKON_HOME=$HOME/.virtualenvs source /usr/bin/virtualenvwrapper.sh diff --git a/zsh/darwin.zshrc b/zsh/darwin.zshrc index fcbc612..a8c6e4a 100644 --- a/zsh/darwin.zshrc +++ b/zsh/darwin.zshrc @@ -3,6 +3,9 @@ alias ls='ls --color=auto' export LSCOLORS='Exgxbxdxcxegedabagacad' +export EDITOR='hx' +export VISUAL=$EDITOR + alias units='gunits --verbose' alias date='gdate' alias awk='gawk' diff --git a/zsh/linux.zshrc b/zsh/linux.zshrc index 1cafecd..7e6a8b5 100644 --- a/zsh/linux.zshrc +++ b/zsh/linux.zshrc @@ -2,3 +2,6 @@ alias ls='ls --color=auto' export LS_COLORS='no=38;5;244:rs=0:di=38;5;33:ln=38;5;37:mh=00:pi=48;5;230;38;5;136;01:so=48;5;230;38;5;136;01:do=48;5;230;38;5;136;01:bd=48;5;230;38;5;244;01:cd=48;5;230;38;5;244;01:or=48;5;235;38;5;160:su=48;5;160;38;5;230:sg=48;5;136;38;5;230:ca=30;41:tw=48;5;64;38;5;230:ow=48;5;235;38;5;33:st=48;5;33;38;5;230:ex=38;5;64:*.tar=38;5;61:*.tgz=38;5;61:*.arj=38;5;61:*.taz=38;5;61:*.lzh=38;5;61:*.lzma=38;5;61:*.tlz=38;5;61:*.txz=38;5;61:*.zip=38;5;61:*.z=38;5;61:*.Z=38;5;61:*.dz=38;5;61:*.gz=38;5;61:*.lz=38;5;61:*.xz=38;5;61:*.bz2=38;5;61:*.bz=38;5;61:*.tbz=38;5;61:*.tbz2=38;5;61:*.tz=38;5;61:*.deb=38;5;61:*.rpm=38;5;61:*.jar=38;5;61:*.rar=38;5;61:*.ace=38;5;61:*.zoo=38;5;61:*.cpio=38;5;61:*.7z=38;5;61:*.rz=38;5;61:*.apk=38;5;61:*.gem=38;5;61:*.jpg=38;5;136:*.JPG=38;5;136:*.jpeg=38;5;136:*.gif=38;5;136:*.bmp=38;5;136:*.pbm=38;5;136:*.pgm=38;5;136:*.ppm=38;5;136:*.tga=38;5;136:*.xbm=38;5;136:*.xpm=38;5;136:*.tif=38;5;136:*.tiff=38;5;136:*.png=38;5;136:*.svg=38;5;136:*.svgz=38;5;136:*.mng=38;5;136:*.pcx=38;5;136:*.dl=38;5;136:*.xcf=38;5;136:*.xwd=38;5;136:*.yuv=38;5;136:*.cgm=38;5;136:*.emf=38;5;136:*.eps=38;5;136:*.CR2=38;5;136:*.ico=38;5;136:*.tex=38;5;245:*.rdf=38;5;245:*.owl=38;5;245:*.n3=38;5;245:*.ttl=38;5;245:*.nt=38;5;245:*.torrent=38;5;245:*.xml=38;5;245:*Makefile=38;5;245:*Rakefile=38;5;245:*build.xml=38;5;245:*rc=38;5;245:*1=38;5;245:*.nfo=38;5;245:*README=38;5;245:*README.txt=38;5;245:*readme.txt=38;5;245:*.md=38;5;245:*README.markdown=38;5;245:*.ini=38;5;245:*.yml=38;5;245:*.cfg=38;5;245:*.conf=38;5;245:*.c=38;5;245:*.cpp=38;5;245:*.cc=38;5;245:*.log=38;5;240:*.bak=38;5;240:*.aux=38;5;240:*.lof=38;5;240:*.lol=38;5;240:*.lot=38;5;240:*.out=38;5;240:*.toc=38;5;240:*.bbl=38;5;240:*.blg=38;5;240:*~=38;5;240:*#=38;5;240:*.part=38;5;240:*.incomplete=38;5;240:*.swp=38;5;240:*.tmp=38;5;240:*.temp=38;5;240:*.o=38;5;240:*.pyc=38;5;240:*.class=38;5;240:*.cache=38;5;240:*.aac=38;5;166:*.au=38;5;166:*.flac=38;5;166:*.mid=38;5;166:*.midi=38;5;166:*.mka=38;5;166:*.mp3=38;5;166:*.mpc=38;5;166:*.ogg=38;5;166:*.ra=38;5;166:*.wav=38;5;166:*.m4a=38;5;166:*.axa=38;5;166:*.oga=38;5;166:*.spx=38;5;166:*.xspf=38;5;166:*.mov=38;5;166:*.mpg=38;5;166:*.mpeg=38;5;166:*.m2v=38;5;166:*.mkv=38;5;166:*.ogm=38;5;166:*.mp4=38;5;166:*.m4v=38;5;166:*.mp4v=38;5;166:*.vob=38;5;166:*.qt=38;5;166:*.nuv=38;5;166:*.wmv=38;5;166:*.asf=38;5;166:*.rm=38;5;166:*.rmvb=38;5;166:*.flc=38;5;166:*.avi=38;5;166:*.fli=38;5;166:*.flv=38;5;166:*.gl=38;5;166:*.m2ts=38;5;166:*.divx=38;5;166:*.webm=38;5;166:*.axv=38;5;166:*.anx=38;5;166:*.ogv=38;5;166:*.ogx=38;5;166:' + +export EDITOR='helix' +export VISUAL=$EDITOR From 03cf93f810526ea11f4f5a928cc68be19b9298e2 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:41 -0400 Subject: [PATCH 5/6] macos: Set key repeat settings on install --- darwin.conf.yaml | 4 ++++ macos/key-repeat | 6 ++++++ 2 files changed, 10 insertions(+) create mode 100755 macos/key-repeat diff --git a/darwin.conf.yaml b/darwin.conf.yaml index e62d274..2dc03f7 100644 --- a/darwin.conf.yaml +++ b/darwin.conf.yaml @@ -3,6 +3,10 @@ stdout: true stderr: true quiet: false + - command: macos/key-repeat + stdout: true + stderr: true + quiet: false - link: ./git/config-os: git/config-darwin diff --git a/macos/key-repeat b/macos/key-repeat new file mode 100755 index 0000000..ca122ec --- /dev/null +++ b/macos/key-repeat @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -exuo pipefail + +defaults write -g InitialKeyRepeat -float 13.333 # ~200 ms, GUI minimum is 15 = 225 ms +defaults write -g KeyRepeat -int 1 # 15 ms/char, GUI minimum is 2 = 30 ms/ch From ff7d16b67d411932a4fb21a316bd6ace9b67c352 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 30 Aug 2026 13:23:41 -0400 Subject: [PATCH 6/6] bettertouchtool: Save default bundle --- bettertouchtool/Default.bttpreset | 114 ++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 bettertouchtool/Default.bttpreset diff --git a/bettertouchtool/Default.bttpreset b/bettertouchtool/Default.bttpreset new file mode 100644 index 0000000..9734b90 --- /dev/null +++ b/bettertouchtool/Default.bttpreset @@ -0,0 +1,114 @@ +{ + "BTTPresetCreatorNotes" : "", + "BTTPresetInfoURL" : "", + "BTTPresetName" : "Default", + "BTTPresetColor" : "30.600000, 36.720000, 153.000000, 255.000000", + "BTTPresetUUID" : "DDBEFB60-C981-410F-9EE3-45B875586367", + "BTTPresetContent" : [ + { + "BTTAppBundleIdentifier" : "BT.G", + "BTTAppName" : "Global", + "BTTAppAutoInvertIcon" : 1, + "BTTAppSpecificSettings" : { + "BTTDisableGlobalTriggers" : false + }, + "BTTTriggers" : [ + { + "BTTLastUpdatedAt" : 1788110777.1631141, + "BTTTriggerType" : 173, + "BTTTriggerTypeDescriptionReadOnly" : "2 Finger Tap", + "BTTTriggerClass" : "BTTTriggerTypeTouchpadAll", + "BTTUUID" : "F0868C53-CB16-473F-AA2A-9E850D8B110A", + "BTTOrder" : 0, + "BTTActionsToExecute" : [ + { + "BTTLastUpdatedAt" : 1788109280.5100489, + "BTTTriggerParentUUID" : "F0868C53-CB16-473F-AA2A-9E850D8B110A", + "BTTIsPureAction" : true, + "BTTUUID" : "28A8A911-8543-45AC-9118-6CE919E8B36A", + "BTTPredefinedActionType" : 4, + "BTTPredefinedActionName" : "Right Click (At Current Mouse Position)", + "BTTOrder" : 2 + } + ] + }, + { + "BTTLastUpdatedAt" : 1788110777.1631088, + "BTTTriggerType" : 174, + "BTTTriggerTypeDescriptionReadOnly" : "2 Finger Click", + "BTTTriggerClass" : "BTTTriggerTypeTouchpadAll", + "BTTUUID" : "B10652D0-F140-442D-926C-C9B6776D1370", + "BTTOrder" : 1, + "BTTActionsToExecute" : [ + { + "BTTLastUpdatedAt" : 1788109280.510026, + "BTTTriggerParentUUID" : "B10652D0-F140-442D-926C-C9B6776D1370", + "BTTIsPureAction" : true, + "BTTUUID" : "7850E782-CB3A-4826-8838-11B426A5231F", + "BTTPredefinedActionType" : 4, + "BTTPredefinedActionName" : "Right Click (At Current Mouse Position)", + "BTTOrder" : 2 + } + ] + }, + { + "BTTLastUpdatedAt" : 1788110777.1631021, + "BTTTriggerType" : 104, + "BTTTriggerTypeDescriptionReadOnly" : "3 Finger Tap", + "BTTTriggerClass" : "BTTTriggerTypeTouchpadAll", + "BTTUUID" : "DF5B6844-C4F2-40C6-ADAB-2C1242B84A1E", + "BTTOrder" : 2, + "BTTActionsToExecute" : [ + { + "BTTLastUpdatedAt" : 1788109280.510036, + "BTTTriggerParentUUID" : "DF5B6844-C4F2-40C6-ADAB-2C1242B84A1E", + "BTTIsPureAction" : true, + "BTTUUID" : "51CF8319-5A95-496B-A6AE-4C33BA205C46", + "BTTPredefinedActionType" : 1, + "BTTPredefinedActionName" : "Middle Click (At Current Mouse Position)", + "BTTOrder" : 1 + } + ] + }, + { + "BTTLastUpdatedAt" : 1788110777.1630909, + "BTTTriggerType" : 112, + "BTTTriggerTypeDescriptionReadOnly" : "3 Finger Click", + "BTTTriggerClass" : "BTTTriggerTypeTouchpadAll", + "BTTUUID" : "C4157608-A49E-4F70-9871-DB6C20148689", + "BTTOrder" : 3, + "BTTActionCategoryPressDown" : [ + { + "BTTLastUpdatedAt" : 1788109304.261627, + "BTTTriggerParentUUID" : "C4157608-A49E-4F70-9871-DB6C20148689", + "BTTIsPureAction" : true, + "BTTUUID" : "5BA761B0-95B6-4818-B8FE-963A6CCD9D5D", + "BTTPredefinedActionType" : 1, + "BTTPredefinedActionName" : "Middle Click (At Current Mouse Position)", + "BTTOrder" : 3 + } + ] + } + ] + }, + { + "BTTAppBundleIdentifier" : "BT.L", + "BTTAppName" : "Recently Used", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + }, + { + "BTTAppBundleIdentifier" : "com.apple.finder", + "BTTAppName" : "Finder", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + } + ], + "BTTPresetSnapAreas" : [ + + ] +} \ No newline at end of file