This is my personal collection of dotfiles for my macOS setup, which is focused on a minimal, elegant, keyboard-driven workflow.
Here’s an overview of my current setup:
- Operating System: macOS Tahoe
- Window Manager: yabai
- App Borders: JankyBorders
- Hotkeys: skhd
- Status Bar: Sketchybar
- Terminal: ghostty
- Shell: fish
- Prompt: starship
- Resource Monitor: btop
- Colot Scheme: Rosé Pine
These dotfiles aim to recreate a tiling WM workflow on macOS, closest in spirit to dynamic tilers on Linux like Awesome and xmonad.
For the sketchybar weather plugin to work properly, you have to create an account and get an API key from OpenWeather. After signing up, go grab your API key here and paste it into ~/.config/sketchybar/sketchybar_env. The contents of the file should be like the following:
export API_KEY="your_api_key_here"Note
After creating your account, your API key might not work right away. Wait about 20-30 minutes for it to activate.
- System/Interface Font: SF Pro
- Monospace Font: Jetbrains Mono Nerd
Additionally, my sketchybar config uses sketchybar-app-font for the app icons on the left of the bar, and SF Symbols for the icons on the right.
I highly suggest binding capslock to control + option + command using Karabiner-Elements, since that combination of keys is used as the modifier key for my yabai/skhd config. After installing, go to Complex Modifications -> Add Your Own rule -> And paste the following:
{
"description": "Caps lock key -> hyper key without shift (⌘⌥⌃), Escape when tapped",
"manipulators": [
{
"from": {
"key_code": "caps_lock",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "left_command",
"modifiers": ["left_option", "left_control"]
}
],
"to_if_alone": [{ "key_code": "escape" }],
"type": "basic"
}
]
}
Additionally, pressing capslock normally will register it as the esc key, which is useful for vim users.
Below is an overview of the most important keyboard shortcuts.
| Shortcut | Action |
|---|---|
capslock + h / capslock + j / capslock + k / capslock + l |
Move focus left / down / up / right |
shift + capslock + h / shift + capslock + j / shift + capslock + k / shift + capslock + l |
Move window left / down / up / right |
capslock + 1, 2, 3, ... |
Focus space 1, 2, 3, ... |
shift + capslock + 1, 2, 3, ... |
Move window to space 1, 2, 3, ... and focus it |
capslock + q / capslock + w |
Focus monitor 1 / 2 |
shift + capslock + q / shift + capslock + w |
Move window to monitor 1 / 2 and focus it |
capslock + u / capslock + i / capslock + o / capslock + p |
Resize windows left / down / up / right |
For a complete list, please check out the skhd config file.
Clone this repository to ~/.config, then run the setup script:
git clone https://github.com/gloceansh/dotfiles.git ~/.config
bash ~/.config/setup.shThe script installs all dependencies via Homebrew, sets fish as the default shell, configures the yabai scripting addition, and sets up the dark-notify LaunchAgent for automatic theme switching.
Note
SIP must be partially disabled for yabai's scripting addition to work. See the yabai wiki for instructions. After upgrading yabai, re-run the sudoers section of setup.sh.