Prometheus Dotfiles
Minimal, fast macOS setup — Tokyo Night themed from terminal to taskbar. One install script. Everything symlinked. Always in sync with git.
Quick Install
Paste one command — no cloning, no setup. It handles Homebrew, packages, symlinks, and shell config.
curl -fsSL https://dotfiles.rafay99.com/install.sh | bash
Manual install (git clone)
# Clone git clone https://github.com/rafay99-epic/dotfiles.git ~/dotfiles cd ~/dotfiles # Run installer chmod +x install.sh ./install.sh
./install.sh --dry-run
./install.sh --help
Applications
Every tool used across the Zsh and Fish shell configs. All installable via Homebrew.
brew install starship fastfetch bat eza fzf thefuck rbenv nvm fish lsd scrcpy openjdk@17 brew install --cask lm-studio windsurf flutter # Claude Code (cc alias) npm install -g @anthropic-ai/claude-code
CLI Tools
| Tool | Purpose | Install |
|---|---|---|
| starship | Cross-shell prompt (Zsh and Fish) | |
| fastfetch | System info on every shell open | |
| bat | Syntax-highlighted cat replacement | |
| eza | Modern ls with icons | |
| lsd | Alternative ls replacement (Fish aliases) | |
| fzf | Fuzzy finder — Ctrl+R history, Ctrl+T files | |
| thefuck | Corrects previous mistyped command | |
| scrcpy | Android screen mirror / recording | |
| fish | Friendly interactive shell |
Runtime Managers
| Tool | Purpose | Install |
|---|---|---|
| rbenv | Ruby version manager | |
| nvm | Node version manager (Zsh) | |
| bun | Fast JavaScript runtime and package manager | |
| openjdk@17 | Java 17 (required for Flutter / Android builds) | |
| conda | Python environment manager (Anaconda) |
GUI Apps
| App | Purpose | Install |
|---|---|---|
| flutter | Flutter SDK — cross-platform mobile / desktop | |
| lm-studio | Run local LLMs — CLI via lms | |
| windsurf | AI-powered IDE by Codeium |
Manually Installed
| Tool | How to install |
|---|---|
| claude (cc) | |
| nvm.fish | |
| opencode | Install from opencode.ai |
| kiro | AI IDE — install from kiro.dev |
How Symlinks Work
The dotfiles repo is the source of truth. Every config file is symlinked from ~/.config/ back into this repo — so edits are instantly live and automatically tracked by git.
~/.config/sketchybar → ~/dotfiles/sketchybar/ ~/.config/aerospace/aerospace.toml → ~/dotfiles/aerospace/aerospace.toml ~/.config/ghostty/config → ~/dotfiles/ghostty/config ~/.config/starship.toml → ~/dotfiles/starship/starship.toml ~/.config/lsd/config.yaml → ~/dotfiles/lsd/config.yaml ~/.config/fastfetch/config.jsonc → ~/dotfiles/fastfetch/config.jsonc ~/.zshrc → ~/dotfiles/zsh/.zshrc ~/.config/fish/config.fish → ~/dotfiles/fish/config.fish
readlink ~/.config/sketchybar readlink ~/.config/aerospace/aerospace.toml readlink ~/.config/ghostty/config readlink ~/.config/starship.toml readlink ~/.config/lsd/config.yaml readlink ~/.zshrc readlink ~/.config/fish/config.fish
SketchyBar
Floating, notch-aware menu bar replacement. Two frosted-glass pills sit on either side of the MacBook notch.
brew tap FelixKratz/formulae brew install sketchybar brew services start sketchybar # App font (workspace icons) curl -fsSL https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v2.0.28/sketchybar-app-font.ttf \ -o ~/Library/Fonts/sketchybar-app-font.ttf # Symlink + reload ln -sf ~/dotfiles/sketchybar ~/.config/sketchybar sketchybar --reload
sketchybar --reloadbrew services restart sketchybarbrew services list | grep sketchybarColor Scheme
| Variable | Color | Use |
|---|---|---|
| BAR_COLOR | #1a1b26 | Bar / pill background |
| ACCENT_COLOR | #7aa2f7 | Active space · Wi-Fi |
| PURPLE | #bb9af7 | Calendar icon |
| CYAN | #7dcfff | Volume icon |
| GREEN | #9ece6a | Battery full · AI low |
| YELLOW | #e0af68 | Battery mid · AI mid |
| RED | #f7768e | Battery low · AI high |
AeroSpace
i3-inspired tiling window manager for macOS. Vim-style keybindings, workspace-based layout. Supports dual-monitor profiles via aerospace-sync.
brew tap nikitabobko/tap brew install --cask nikitabobko/tap/aerospace mkdir -p ~/.config/aerospace ln -sf ~/dotfiles/aerospace/aerospace.toml ~/.config/aerospace/aerospace.toml
Multi-Config Profiles
AeroSpace has no per-monitor gap support, so two separate config files handle the different setups. The aerospace-sync script auto-detects your monitor count and applies the right profile.
main when docked. This is required for workspace-to-monitor assignments to be consistent.macOS manages the notch offset automatically. Minimal top gap keeps content flush to the bar.
Top gap of 35px clears SketchyBar (height 36 + margin 10, bottom at y=46) on external monitors.
Three Ways to Switch
Run either alias from Zsh or Fish. Both call the same script.
dock # or undock
Works from anywhere — no terminal needed. Bound directly in AeroSpace.
The script counts connected monitors and picks the right profile every time.
aerospace-sync
How aerospace-sync Works
# Counts monitors via aerospace list-monitors # 1 monitor → copies laptop.toml → outer.top = 8 # 2+ monitors → copies docked.toml → outer.top = 35, workspace assignments ln -sf ~/dotfiles/bin/aerospace-sync ~/.local/bin/aerospace-sync chmod +x ~/.local/bin/aerospace-sync
alias dock='aerospace-sync' alias undock='aerospace-sync'
alias dock='aerospace-sync' alias undock='aerospace-sync'
Ghostty
GPU-accelerated terminal. Tokyo Night theme, JetBrains Mono Nerd Font, tabs, splits, clipboard.
brew install --cask ghostty mkdir -p ~/.config/ghostty ln -sf ~/dotfiles/ghostty/config ~/.config/ghostty/config
| Feature | Value |
|---|---|
| Theme | Tokyo Night (built-in) |
| Font | JetBrains Mono Nerd Font · 13pt |
| Background | 95% opacity + blur radius 20 |
| Working dir | ~ on every new tab/window |
| Scrollback | 10 MB |
| Copy on select | Enabled |
| Key | Action |
|---|---|
| ⌘ T | New tab |
| ⌘ W | Close tab / split |
| ⌘ ] / ⌘ [ | Next / previous tab |
| ⌘ 1–8 | Jump to tab |
| Ctrl + Tab | Next tab |
Shell Tools
lsd · Starship prompt · Fastfetch · CodexBar AI tracker
brew install lsd alias ls='lsd' alias ll='lsd -la' alias lt='lsd --tree'
brew install starship eval "$(starship init zsh)"
brew install fastfetch fastfetch # add to .zshrc
Install from github.com/steipete/CodexBar, then log in to Claude and Gemini via the menu bar app.
Zsh
Default shell on macOS. Starship prompt, fzf fuzzy finder, lsd/eza aliases, git shortcuts, and fastfetch on open.
ln -sf ~/dotfiles/zsh/.zshrc ~/.zshrc
What's included
| Feature | Details |
|---|---|
| Prompt | Starship — cross-shell, fast, Tokyo Night compatible |
| Fuzzy finder | fzf with custom Tokyo Night colour scheme |
| ls replacement | eza with icons — ls alias |
| cat replacement | bat — syntax-highlighted output |
| System info | fastfetch runs on every new shell open |
| Runtime managers | nvm · conda · rbenv · bun |
| Plugin | zsh-autosuggestions |
Aliases
| Alias | Command |
|---|---|
ls | eza --icons=always |
cat | bat |
cc | claude (Claude Code) |
dock / undock | aerospace-sync (profile switch) |
gs | git status |
g | git |
gc | git clone |
ga | git commit -a |
brew install fzf eza bat starship fastfetch zsh-autosuggestions
Fish
Friendly interactive shell. Starship prompt, lsd for ls, git aliases, conda, and fastfetch — same workflow as Zsh but with fish's autocompletion out of the box.
brew install fish mkdir -p ~/.config/fish ln -sf ~/dotfiles/fish/config.fish ~/.config/fish/config.fish # Set as default shell (optional) echo $(which fish) | sudo tee -a /etc/shells chsh -s $(which fish)
What's included
| Feature | Details |
|---|---|
| Prompt | Starship — starship init fish | source |
| System info | fastfetch on every shell open |
| ls replacement | lsd -al — ls alias |
| cat replacement | bat — cat alias |
| Runtime managers | conda · bun · LM Studio |
Aliases
| Alias | Command |
|---|---|
ls | lsd -al |
cat | bat |
dock / undock | aerospace-sync |
gs | git status |
g | git |
gc | git clone |
ga | git commit -a |
Useful Commands
SketchyBar
sketchybar --reloadbrew services restart sketchybarbrew services stop sketchybarAeroSpace
aerospace reload-configdock # or undock
aerospace list-windows --allmacOS Tweaks
The install script can apply system preferences via defaults write so you don't have to click through System Settings. These are split into required (always applied) and optional (prompted individually).
Required (always applied)
| Tweak | What it does | Why |
|---|---|---|
| Auto-hide menu bar | Hides the native macOS menu bar so it only appears on hover | SketchyBar replaces it — having both visible wastes screen space |
| AeroSpace at login | Adds AeroSpace.app to your login items so it launches at boot | Tiling WM needs to be running for keybindings and workspace management |
Optional (prompted individually)
| Tweak | What it does | Command |
|---|---|---|
| Dock: no auto-hide delay | Removes the default delay when showing/hiding the Dock — it appears and disappears instantly | defaults write com.apple.dock autohide-delay -float 0 |
| Finder: path bar | Shows the full directory path at the bottom of every Finder window | defaults write com.apple.finder ShowPathbar -bool true |
| Finder: status bar | Shows item count and available disk space at the bottom of Finder | defaults write com.apple.finder ShowStatusBar -bool true |
| Finder: show hidden files | Makes dotfiles and hidden folders (like .config) visible in Finder |
defaults write com.apple.finder AppleShowAllFiles -bool true |
| Finder: full POSIX path | Shows the absolute path (e.g. /Users/you/dotfiles) in the Finder title bar |
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true |
| Finder: list view | Sets the default Finder view to list layout instead of icons — easier to scan file details | defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv" |
| Finder: open to home | New Finder windows open to your home folder (~) instead of Recents |
defaults write com.apple.finder NewWindowTarget -string "PfHm" |
| Trackpad: tap to click | Registers a light tap on the trackpad as a click — no need to press down | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true |
| Screenshots: PNG format | Saves screenshots as lossless PNG instead of the default (which may vary by macOS version) | defaults write com.apple.screencapture type -string png |
| Screenshots: no shadow | Removes the drop shadow from window screenshots — cleaner for docs and sharing | defaults write com.apple.screencapture disable-shadow -bool true |
| Screenshots: save location | Saves all screenshots to ~/Pictures/Screenshots instead of cluttering the Desktop |
defaults write com.apple.screencapture location -string "$HOME/Pictures/Screenshots" |
| Mission Control: fixed Spaces | Prevents macOS from automatically reordering your Spaces based on recent use — keeps workspace order stable for AeroSpace | defaults write com.apple.dock mru-spaces -bool false |
| Clock: show seconds | Displays seconds in the menu bar clock (useful for timing and debugging) | defaults write com.apple.menuextra.clock ShowSeconds -bool true |
| Battery: show percentage | Shows the exact battery percentage next to the battery icon in the menu bar | defaults write com.apple.controlcenter BatteryShowPercentage -bool true |
Dock, Finder, SystemUIServer) — no reboot needed. To revert any tweak, run the same command with the opposite value (e.g. -bool false or defaults delete) and restart the process.
Manual (GUI only — not scriptable)
These settings have no defaults write or pmset equivalent — Apple only exposes them through System Settings. The install script prints a reminder after the automated tweaks finish.
| Tweak | What it does | Where to find it |
|---|---|---|
| Disable True Tone | Stops the display from shifting colour temperature based on ambient light — keeps colours consistent for design and development work | System Settings → Displays → uncheck True Tone |
| Keyboard backlight: auto brightness | Lets macOS automatically adjust the keyboard backlight based on ambient light — brighter in the dark, off in daylight | System Settings → Keyboard → toggle Adjust keyboard brightness in low light |
| Keyboard backlight: off after 15s | Turns off the keyboard backlight after 15 seconds of inactivity — saves battery without disabling the backlight entirely | System Settings → Keyboard → Turn keyboard backlight off after inactivity → 15 seconds |
| Optimize video streaming on battery | Plays HDR video as SDR while on battery power — reduces GPU workload and extends battery life during streaming | System Settings → Battery → toggle Optimize video streaming while on battery |
Gallery
Screenshots of the live setup and downloadable wallpapers. Generated wallpapers export as 4K PNG (3840 x 2160). Click any screenshot to view it full size.