A cross-platform terminal + desktop development environment, managed with GNU Stow.
One init.sh sets up a consistent setup across macOS, Ubuntu/Debian, and iSH (Alpine on iOS):
zsh, tmux, vim/neovim, and — on macOS — a tiling window-manager stack (AeroSpace + JankyBorders + SketchyBar).
- Fast zsh — oh-my-zsh with
nvmandpyenvlazy-loaded (shell starts in ~0.18s instead of ~0.45s). - tmux — Rose Pine Moon theme,
C-aprefix, windows and sessions numbered from 1, session persistence (resurrect/continuum). - AeroSpace (macOS) — tree-based tiling WM with a discoverable layout mode and an in-bar cheatsheet.
- JankyBorders (macOS) — Rose Pine active-window highlight.
- SketchyBar (macOS) — a modular, notch-friendly status bar with toggleable "extension" modules, a control-center popup, zen mode, and multi-display awareness.
Each top-level directory is a Stow package that mirrors its target path under ~:
| Package | Target | What |
|---|---|---|
zsh/ |
~/.zshrc |
oh-my-zsh, lazy nvm/pyenv, ~/.zshrc.local for machine-local config |
tmux/ |
~/.tmux.conf |
Rose Pine Moon, TPM plugins, session helpers |
vim/ |
~/.vimrc |
vim-plug + CoC (JS/TS) |
aerospace/ |
~/.config/aerospace/ |
AeroSpace tiling WM (macOS) |
borders/ |
~/.config/borders/ |
JankyBorders active-window ring (macOS) |
sketchybar/ |
~/.config/sketchybar/ |
Modular status bar (macOS) |
Plus setup/ (per-tool setup scripts), packages/ (per-OS package installers), and utils/.
The Neovim config is not in this repo —
setup/neovim.shclones an external kickstart.nvim into~/.config/nvim. This repo manages classicvim.
git clone https://github.com/dominic-righthere/dotfiles.git
cd dotfiles
bash init.shinit.sh detects the OS, installs packages first, then symlinks the Stow packages and runs the
per-tool setup. On macOS it installs Homebrew (if needed) and everything in
packages/Brewfile via brew bundle — or run the packages step on its own:
brew bundle --file packages/Brewfile # or: ./packages/homebrew.shThe Brewfile is a curated set (toolchain + the window-manager/status-bar stack), not a full
dump — edit it to taste, or brew bundle dump to re-sync from your machine.
Manual steps that can't be scripted (macOS):
- Grant Accessibility permission to AeroSpace (System Settings → Privacy & Security → Accessibility) — required for tiling.
- In tmux, press
prefix + Ito install the tmux plugins. - Optional:
smctempfor tmux-temp,macismfor the input-source indicator,switchaudio-osxfor audio device switching.
Requires Hack Nerd Font +
jqfor SketchyBar, and theFelixKratz/formulae/nikitabobko/taptaps forborders/sketchybar/aerospace(all in the Brewfile).
AeroSpace is a tree-based tiler, so there are no fixed grid presets — you build arrangements. Two aids make it easy:
-
Layout mode — press
⌥⇧Tto enter (the bar shows aLAYOUTindicator), then single keys:Key Action h j k lfocus window ⇧ + hjkljoin (build a split — makes 1|2,3/ grids)ttoggle horizontal ↔ vertical bbalance sizes (even grid) rreset (flatten) escexit -
Cheatsheet — click the
glyph at the far left of the bar (or press?in layout mode) for the full reference.
Workspaces: ⌥ + 1/2/3, q/w/e, a/s/d. Focus ⌥hjkl, move window ⌥⇧hjkl.
A flush-black, notch-friendly bar (Rose Pine Moon) where each feature is a toggleable module: workspaces, layout, input source (EN/한/あ), CPU, audio (volume + AirPods battery), battery, clock, lyrics.
- Control center — click the
⚙(far right) to toggle modules on/off (persisted). - Zen mode —
⌥⇧Z(or the control-center row) hides everything but the essentials. - Multi-display — workspace pills group by monitor when more than one display is connected.
- Prefix is
C-a. Vim-style pane navigation (prefix + h/j/k/l). - Windows and sessions both start at 1;
prefix + gopens a 1-based session menu (prefix + skeeps the default tree).
Machine-local or private config (secrets, service URLs, per-host PATHs) goes in ~/.zshrc.local,
which .zshrc sources if present. It is gitignored — keep it out of the repo.
- Ubuntu/Debian —
source ./packages/apt.sh(zsh, git, stow, tmux, vim, build tools, nvm, pyenv). Install Neovim manually (the apt version is outdated); kickstart.nvim is cloned bysetup/neovim.sh. - iSH (Alpine/iOS) —
source ./packages/apk.sh. Generate a GitHub SSH key withsetup/github-ssh.sh. - macOS —
./packages/homebrew.sh. On a notched MacBook, tune the window/bar gap via AeroSpace's[gaps] outer.topif needed.
Themes and tools by their respective authors: Rose Pine, AeroSpace, JankyBorders, SketchyBar, oh-my-zsh, TPM, vim-plug.