MacOS Ricing Setup
If you're looking to transform your macOS terminal experience into something both beautiful and functional, you've come to the right place. In this post, I'll walk you through my complete dotfiles setup that turns a vanilla macOS installation into a keyboard driven powerhouse development environment with a stunning Tokyo Night theme.
Overview
I have based my macOS setup to make it keyboard driven as much as possible, and a huge part of the UX is inspired by the i3 window manager on Linux. The setup features:
- Window Management: AeroSpace for tiling window management
- Status Bar: SketchyBar for a customizable menu bar
- Terminal: Ghostty with transparency and blur effects
- Shell: Fish with custom functions and plugins
- Editor: Neovim built on LazyVim
- Theme: Tokyo Night across all applications (Ofcourse this is customizable)
Basic Requirements
Before we begin, ensure you have:
- macOS (this setup is tested only on macOS)
- Command Line Tools for Xcode (For git and stuff)
- Basic familiarity with terminal commands
- Homebrew Package Manager
Window Management with AeroSpace
AeroSpace is a tiling window manager that brings i3-like functionality to macOS. It provides a i3 like window management feature where you can switch different windows/workspaces with just your keyboard in an instant without animations. Yes this is possible with Aerospace without disabling animations on the OS level in MacOS. You can install Aerospace using Homebrew, and configure aerospace by editing the file at ${XDG_CONFIG_HOME}/aerospace/aerospace.toml
or ~/.aerospace.toml
.
brew install --cask nikitabobko/tap/aerospace
Setup Philosophy
My setup philosophy is very much inspired by the famous youtuber Primeagen, where every single workspace represents a single application, so that I don't have to remember which workspace to go to for an app. Just watch this clip for reference.
I generally keep my workspace configuration like this:
- Workspace 1: Calendar
- Workspace 2: Terminal
- Workspace 3: Browser
- Workspace 4: Slack on my work laptop, Telegram / Whatsapp on Personal laptop
The workspaces can be configured by adding something like this in the aerospace config for each workspace:
# `q` here is the binding and `alt` is your key through which you control aerospace.
alt-q = 'workspace <WORKSPACE_NUMBER>'
# This is to move any app to workspace
alt-shift-q = ['move-node-to-workspace <WORKSPACE_NUMBER>', 'workspace <WORKSPACE_NUMBER>']
The apps can be configured to open in the designated workspace by adding something like this in the config for each app:
[[on-window-detected]]
if.app-id = '<APP_ID>'
run = "move-node-to-workspace <WORKSPACE_NUMBER>"
You can get the workspace number of an app by running the aerospace list-apps
command while the app is running.
References
My aerospace config
Inspired by: Josean Martinez
Status Bar with SketchyBar
SketchyBar replaces the default macOS menu bar with a highly customizable alternative.
My setup includes:
- Aerospace Workspaces with icons of the apps in them
- The current focused app
- Weather from WeatherAPI.com
- Youtube Music status with Album Art + click to pause/play, right click to skip to next song and middle click to open app
- Custom implementation of Amphetamine to keep the PC awake all the time
- CPU status
- Battery
- Volume (Integrated with BetterDisplay to get volume from Monitor speakers as well)
- Calendar
- Notion Calendar Integration (Shows upcoming meetings + clickable to open the Google Meet link if the meeting is online)
Please also make sure to hide the Menu Bar by default by setting
System Settings > Control Center > Automatically hide and show the menu bar
toAlways
.
The configuration is modular, with each component in separate files for easy customization.
For youtube music, I use th-ch/youtube-music with it's API server plugin enabled, and Authorization disabled.
For the calendar, I use Notion Calendar (previously cron.sh).
References
All the sketchybar plugins I am using are custom made and can be found here.
Bonus: JankyBorders
To give the setup a finishing touch, We can also add JankyBorders that can highlight the current active window by making a nice themed border around it. My borders config can be found here.
Ghostty Terminal
Ghostty is a GPU-accelerated terminal emulator. My configuration (.config/ghostty/config
) features:
theme = tokyonight_night
background-opacity = 0.80
background-blur-radius = 20
window-decoration = false
font-family = JetBrainsMono Nerd Font
font-size = 15
This creates a beautiful translucent terminal with blur effects that integrates seamlessly with the Tokyo Night theme.
4. Fish Shell Configuration
Fish is my shell of choice for its user-friendly features and powerful scripting capabilities. The configuration (.config/fish/config.fish
) includes:
- Tokyo Night color scheme
- Starship prompt integration
- Zoxide for smart directory jumping
- Custom functions and abbreviations
- FZF integration for fuzzy finding
5. Starship Prompt
Starship provides a minimal, blazing-fast, and customizable prompt. My configuration (.config/starship.toml
) includes:
- Custom success/error symbols
- Git status indicators with custom icons
- Directory truncation with icon substitutions
- Language-specific icons for different project types
6. Neovim Setup
My Neovim configuration is built on top of LazyVim, providing a full IDE experience. Located in .config/nvim/
, it includes:
- LSP support for multiple languages
- Treesitter for syntax highlighting
- Telescope for fuzzy finding
- Git integration
- Tokyo Night theme consistency
7. Window Borders with Borders
Borders adds customizable borders to windows. My configuration (.config/borders/bordersrc
) uses:
style=round
width=7.0
active_color=0xff80a8fc
inactive_color=0xff414550
This creates rounded borders that highlight the active window with a blue accent.
8. File Management with Yazi
Yazi is a blazing-fast terminal file manager. The configuration (.config/yazi/theme.toml
) maintains theme consistency:
[flavor]
dark = "tokyo-night"
Additional Tools
The setup includes many developer tools installed via Homebrew:
- Version Management: mise for managing multiple runtime versions
- Git Enhancements: lazygit, git-delta
- System Monitoring: btop, htop
- File Search: ripgrep, fd, fzf
- Modern CLI Tools: eza (ls replacement), bat (cat replacement)
Customization Tips
-
Theme Consistency: The Tokyo Night theme is applied across all tools. To change themes, update:
- Ghostty:
.config/ghostty/config
- Fish:
.config/fish/config.fish
- Neovim: Check LazyVim theme settings
- Yazi:
.config/yazi/theme.toml
- Ghostty:
-
Keyboard Shortcuts: Most shortcuts are defined in:
- AeroSpace:
.config/aerospace/aerospace.toml
- Tmux:
.tmux.conf
- AeroSpace:
-
Adding New Tools: Simply add them to
.Brewfile
and runbrew bundle
Maintenance
To keep your setup updated:
# Update Homebrew packages
brew update && brew upgrade
# Update Fish plugins
./scripts/fish.sh
# Pull latest dotfiles changes
git pull
# Re-run stow to update symlinks
stow .
Conclusion
This dotfiles setup transforms macOS into a powerful, beautiful development environment. The combination of tiling window management, custom status bar, modern terminal tools, and consistent theming creates a cohesive experience that's both productive and enjoyable to use.
Feel free to fork the repository and customize it to your needs. The modular structure makes it easy to pick and choose components or modify existing ones.
Happy ricing! 🚀
Note: Remember to replace YOUR_USERNAME
with your actual GitHub username when cloning the repository.