MacOS Ricing Setup

Screenshot of my macOS 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.

This setup is ever evolving and the contents of this blog post might get outdated pretty quickly if I give too much details. That is why I will share a high level detail of all the fundamentals, plugins and extras I am using. For the complete up to date configuration, you can reference my dotfiles at manishprivet/.dotfiles.

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:

Basic Requirements

Before we begin, ensure you have:

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:

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:

Please also make sure to hide the Menu Bar by default by setting System Settings > Control Center > Automatically hide and show the menu bar to Always.

The configuration is modular, with each component in separate files for easy customization.

Third party apps:

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:

5. Starship Prompt

Starship provides a minimal, blazing-fast, and customizable prompt. My configuration (.config/starship.toml) includes:

6. Neovim Setup

My Neovim configuration is built on top of LazyVim, providing a full IDE experience. Located in .config/nvim/, it includes:

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:

Customization Tips

  1. Theme Consistency: The Tokyo Night theme is applied across all tools. To change themes, update:

  2. Keyboard Shortcuts: Most shortcuts are defined in:

  3. Adding New Tools: Simply add them to .Brewfile and run brew 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.