Skip to content

Port dotfiles to macOS with i3-like tiling WM#1

Open
kifbv wants to merge 11 commits into
mainfrom
feature/macos-dotfiles
Open

Port dotfiles to macOS with i3-like tiling WM#1
kifbv wants to merge 11 commits into
mainfrom
feature/macos-dotfiles

Conversation

@kifbv
Copy link
Copy Markdown
Owner

@kifbv kifbv commented Apr 11, 2026

Summary

  • Adapt Linux bash/git/vim/inputrc configs for macOS (Homebrew paths, pbcopy, GPG/SSH agent paths, macOS-specific commands)
  • Add i3-like tiling WM setup: AeroSpace + SketchyBar + JankyBorders + Ghostty
  • Add app launcher (choose-gui), Bitwarden and GitHub CLI integrations
  • Add install.sh bootstrap script for fresh Mac setup
  • Remove Linux-only configs (Sway, Waybar, Wofi, Alacritty, dockerfunc)
  • Disabled features kept as comments for future re-enabling (see MIGRATION.md)

What's included

  • AeroSpace: vim-style navigation, 4px gaps, window rules, multi-monitor, modifier switch (alt/cmd)
  • SketchyBar: Tokyonight Night theme, dynamic workspace indicators, CPU/memory graphs, GitHub notifications, Spotify
  • JankyBorders: glow effect, Ghostty Blue Matrix color
  • Ghostty: Blue Matrix theme, 85% opacity
  • choose-gui: dmenu-style launcher with Brave profile support
  • install.sh: Homebrew, packages, fonts, stow, GPG setup, wallpaper

Test plan

  • Tested install.sh on local iMac
  • All keybindings working (navigation, workspaces, launcher, resize)
  • SketchyBar workspace indicators update dynamically
  • GPG signing and SSH auth working with GitHub
  • Test on fresh MacBook when received

🤖 Generated with Claude Code

kifbv and others added 11 commits April 10, 2026 18:49
Feature-by-feature review of Linux dotfiles for porting to macOS.
Each item has a checkbox — tick to keep, untick to skip.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adapt Linux dotfiles for macOS:
- Bash: macOS GPG/SSH paths, Homebrew completion, pbcopy, open
- Git: fix excludesfile path, keep all aliases and GPG signing
- Vim: unchanged, create backup/undo/swap dirs in install script
- Inputrc: remove Linux-specific include, keep all keybindings
- Disabled features kept as comments for future re-enabling

Add macOS-specific configs:
- AeroSpace: i3-like tiling WM with vim navigation, gaps, window
  rules, multi-monitor, workspace-to-sketchybar integration
- SketchyBar: Tokyonight status bar with workspace indicators,
  CPU/memory graphs, GitHub notifications, Spotify
- JankyBorders: glow borders matching Ghostty Blue Matrix theme
- Ghostty: Blue Matrix theme with 85% opacity
- App launcher: choose-gui (dmenu clone) with Brave profiles
- Bitwarden and GitHub CLI integrations via choose-gui
- Modifier switch script (alt/cmd toggle)

Remove Linux-only configs:
- Alacritty, Sway, Waybar, Wofi, brave-flags, dockerfunc

Add install.sh bootstrap script for fresh Mac setup.
Add dot-bash_profile to source bashrc on macOS login shells.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
These are required by the GitHub and Bitwarden integration
scripts but were missing from the bootstrap.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On a fresh Mac, /bin/bash is v3.2 which doesn't support ${var^}
for case modification. Use awk instead, and add case-insensitive
grep for app detection in /Applications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The install script now:
- Prompts for name and email at start (supports different
  identities per machine, e.g. personal vs work)
- Generates ed25519 SSH key if none exists
- Generates ed25519 GPG signing key if none exists
- Configures git identity via git config --global

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix typo: signinkey → signingkey in git config
- Update GPG key ID to new iMac key
- GitHub indicator: count all notifications, click opens github.com/notifications

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Scratchpad: alt+minus sends window to hidden workspace S,
  alt+shift+minus brings it back as centered floating window
- Cheatsheet: alt+/ shows searchable keybinding list via choose-gui
- Ghostty: use cmd+n in existing instance instead of open -na
  to avoid cluttering cmd+tab with duplicate app icons

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Clean up vimrc:
- Remove obsolete settings (nocompatible, ttyfast, pastetoggle)
- Remove all commented-out vim-plug blocks (kept as install hints)
- Remove mkview/loadview autocmds (caused errors on special buffers)
- Remove vim-go and vim-hcl plugins (Go dev not needed)

Add plugins via native pack/ (no plugin manager):
- vim-commentary: gc to comment/uncomment
- vim-surround: cs/ds/ys for surrounding pairs
- vim-fugitive: Git integration (:Git, :Gdiffsplit, :Git blame)
- vim-gitgutter: git diff markers in gutter
- fzf.vim: fuzzy find files/buffers/grep
- tokyonight-vim: colorscheme matching terminal/bar theme

Add fzf keybindings: <leader>f files, <leader>b buffers,
<leader>r ripgrep, <leader>l lines.

Update install.sh to install vim plugins on fresh setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix packpath to include ~/.vim so native pack/ plugins load
  when vimrc lives at ~/.config/vim/vimrc
- Transparent background: let Ghostty opacity show through
- Add cheatsheet comment block at end of vimrc with all
  custom mappings and plugin shortcuts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- JetBrainsMono Nerd Font at 14pt
- Background blur for frosted glass effect
- Bar cursor style
- Window padding for breathing room
- Copy-on-select, trim trailing spaces
- Shell integration for prompt detection
- Keep window-decoration=auto for rounded corners

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The AppleScript and Ghostty CLI approaches don't reliably open
new windows on the current workspace. open -na is the only method
that works correctly, despite the cmd+tab clutter trade-off.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant