macOS
Window, tab, display, and app shortcuts for daily Mac work.
tmux manages panes inside the terminal. macOS manages everything around it: app windows, browser tabs, full-screen spaces, displays, and the links you open all day. The best setup here is native macOS plus Raycast, Anybox, and BetterDisplay.
#The mental model
| macOS | Owns apps, windows, tabs, spaces, full screen, Mission Control, and system shortcuts. |
| Raycast | Owns ⌘Space, launcher, clipboard history, snippets, quick commands, and normal window snapping. |
| Anybox | Owns saved links, reading material, project bookmarks, and quick link recall. Open it from Raycast or its own hotkey. |
| BetterDisplay | Owns display resolutions, refresh rates, brightness/DDC, display presets, and external-monitor fixes. |
| tmux | Owns terminal panes and project sessions after Ghostty is open. |
Use the apps shortcut convention: typed aliases and Quicklinks first, global hotkeys only for daily actions. This page only names the macOS window/display hotkeys that fit that pattern.
The full rule lives in What Groundwork can configure: stable files/defaults belong in the repo; Raycast, Anybox, BetterDisplay, password managers, and per-device app state stay with their own sync/export or local settings.
#Developer settings and profiles
macOS uses the word "profile" for several different things. Keep them separate:
| Command Line Tools | Groundwork checks for these and opens Apple's installer when they are missing. They live at /Library/Developer/CommandLineTools and give Homebrew, Git, compilers, headers, and normal terminal build tools. |
| Full Xcode app | Optional and large. If you answered yes to the Xcode setup prompt, Groundwork attempts the App Store install with mas; if that does not go through, get Xcode from the Mac App Store manually. Use it only when you need app signing, simulators, SwiftUI/iOS/macOS builds, or Unity Apple-platform builds. |
| Xcode first launch | After Xcode is installed, open it once, let it finish component setup, accept license prompts, then run xcode-select -p to check the active developer directory. If it still points at Command Line Tools, switch to full Xcode with sudo xcode-select -s /Applications/Xcode.app/Contents/Developer. |
| Apple Developer account | Only after full Xcode is installed: sign in manually in Xcode Settings → Accounts. Certificates and provisioning profiles belong in Keychain/Xcode, not dotfiles. |
| Provisioning profiles | Use Xcode's automatic signing when possible. If someone gives you a profile file, open it with Xcode/Finder; do not commit it to this repo. |
| Configuration profiles | .mobileconfig files are device-management settings. Install them manually or through MDM. Treat them like admin/security policy, not normal dotfiles. |
| Developer Mode / debugger privileges | Leave this manual. If Xcode or Instruments asks, approve it then. DevToolsSecurity -enable removes repeated admin prompts for Apple-signed debugging tools, so it should be an intentional local choice. |
This repo applies safe developer conveniences: file extensions and hidden files visible, Finder path/status bars, ~/Library visible, fast key repeat, press-and-hold disabled for Vim, Safari's Develop menu enabled, Chrome password manager disabled when a third-party manager is configured, and the terminal/editor/toolchain setup. The app-specific boundary is summarized above and explained on Apps & browsers.
Package managers stay manual in Groundwork, but OS security is different. In System Settings → General → Software Update → Automatic Updates, turn on Apple's security responses and system files option. That keeps macOS security patches on Apple's supported path without adding a background Homebrew or mise upgrader.
Do not automate Apple Developer certificates, provisioning profiles, MDM/configuration profiles, Gatekeeper changes, reduced-security boot settings, or debugger authorization prompts in shared setup repos. Those are identity and security boundaries, and each Mac/user should approve them deliberately. Apple betas sit on the same line: opting into the beta channel installs the xcodes tool so you can pull Xcode betas yourself, but Groundwork never downloads them or signs into your Apple Account for you. See Xcode betas.
#Windows, tabs, and apps
| ⌘Tab | Switch apps. Hold ⌘ and tap Tab repeatedly to choose. |
| ⌘` | Cycle through windows of the current app. This is the one people miss when they come from Windows. |
| ⌘N | Open a new window in the current app. |
| ⌘T | Open a new tab in apps that support tabs. |
| ⌘W | Close the front tab or window. In browsers this closes the active tab first. |
| ⇧⌘T | Reopen the last closed tab in browsers and several tabbed apps. |
| ⌃Tab / ⇧⌘] | Next tab in many browsers and tabbed apps. |
| ⌃⇧Tab / ⇧⌘[ | Previous tab in many browsers and tabbed apps. |
| ⌘H | Hide the current app without quitting it. |
| ⌘M | Minimize the front window to the Dock. Hiding is usually cleaner than minimizing. |
| ⌘Q | Quit the current app. |
| ⌘, | Open settings/preferences for the current app. |
#Full screen, spaces, and Mission Control
| ⌃⌘F | Enter or exit full screen in apps that support it. |
| Esc | Exit some full-screen modes, especially browser/video full screen. |
| ⌃↑ | Open Mission Control to see windows and spaces. |
| ⌃↓ | Show windows for the current app. |
| ⌃← / → | Move between spaces/desktops. |
| ⌘Mission Control | Show the desktop. |
Full screen creates a separate space, which is great for focus but can make window switching feel jumpy. For daily development, Raycast left/right/maximize commands are often faster than full-screen mode.
#Window management: Raycast first
Raycast is the default window manager for this setup. It is already installed, it is keyboard-first, and its Window Management commands cover the normal moves: maximize, left/right half, quarters, thirds, center, restore, move to display, move to space, and custom layouts.
Anybox does not manage windows. It manages saved links. If you saw translucent layout zones while dragging a window, that was macOS's native drag-to-edge tiling overlay, not Raycast. Raycast window management is command- and hotkey-driven: invoke a layout or bind a hotkey and the frontmost window moves immediately.
Raycast AI is optional. Leave it off while learning the basics unless you specifically want Raycast's AI chat, AI commands, or model integrations on that Mac. For the extension checklist, run raycast-extensions; it opens the recommended Store entries for Browser Bookmarks, Browser Tabs, Anybox, GitHub, Homebrew, VS Code/Cursor project openers, and optional AI integrations.
| Left half / Right half | Assign direct hotkeys for the focused window. Use these constantly. |
| Maximize | Prefer this to macOS full screen when you still want fast app/window switching. |
| Move to next display | Essential with an external monitor. |
| Restore | Undo the last Raycast window move. |
| Create Layout | Use for recurring setups: browser left, terminal right, Slack small on the laptop display. |
Use ⌃⌥ because macOS leaves that family mostly free and it is easy to audit later. A simple set is ⌃⌥← for left half, ⌃⌥→ for right half, ⌃⌥↑ for maximize, and ⌃⌥↓ for restore. Avoid overriding system muscle memory such as ⌘Tab, ⌘Q, ⌘W, browser tab keys, and Mission Control unless you are making an intentional tradeoff.
Rectangle and Magnet are good apps, but they duplicate Raycast for this setup. Add one only if you want a dedicated window manager with its own preferences, importable presets, or advanced snapping behavior beyond Raycast.
#Displays and resolutions: BetterDisplay
BetterDisplay is the right app for changing resolution from the menu bar, creating favorites, controlling external monitor brightness/input when supported, and protecting display layouts. It complements Raycast; it does not replace it.
| Resolution presets | Save the display modes you actually use and switch from the menu bar first; add hotkeys only for modes you change constantly. |
| Refresh rate | Expose and switch refresh rates that macOS sometimes buries. |
| Brightness / DDC | Control many external monitors with sliders first, then put any daily brightness/display actions into the same ⌃⌥ shortcut family if you need hotkeys. |
| Layout protection | Keep external monitor arrangements from drifting when displays reconnect. |
| CLI and Shortcuts | Automate display changes from scripts, Raycast, or macOS Shortcuts. |
BetterDisplay has a free tier and a paid Pro license. Business use beyond the trial/free terms needs a license, so teams should budget it rather than quietly relying on a personal license.
#Links and web recall: Anybox
Use Anybox instead of turning every browser profile into a private bookmark island. It is the shared link library: project dashboards, docs, research, client portals, reading lists, and reusable references. Raycast launches actions; Anybox remembers links.
| Quick Save | Capture the current page without leaving the browser. |
| Quick Find | Search saved links from the keyboard. Prefer typed aliases such as ab in Raycast before adding another global hotkey. |
| Tags / folders | Organize links by project, team, client, topic, or practice track. |
| Raycast extension | Install the Anybox extension from the Raycast Store, or run open 'raycast://extensions/anybox/anybox?source=webstore'. If Raycast only shows Anybox under Applications, you have the app entry, not the extension. Copy the API key from Anybox Preferences → General, then select the Search Links command row in Raycast Settings and paste it into that command's API Key preference. Turn on Search Tags, Search Folders, Show Tags, and Show Folders; leave icon view off for faster scanning. |
| Browser recall | Use Raycast Browser Bookmarks for bookmarks across installed browsers. Use Browser Tabs for live tabs in Safari/Chromium-family browsers. For Zen, save important tabs into Anybox and search them from Raycast; that is the reliable cross-browser layer. |
| iCloud sync | Keep links, profiles, and Quick Links available on Mac, iPhone, and iPad. This is the supported sync path; do not put the app database or API keys in dotfiles. |
#Daily practice
Switch without the mouse
Open Ghostty, Zen, and Finder. Use ⌘Tab to switch apps, then ⌘` to cycle windows inside one app.
Use tabs deliberately
Open three browser tabs with ⌘T, move through them with ⌃Tab, close one with ⌘W, then reopen it with ⇧⌘T.
Snap with Raycast
Assign hotkeys for left half, right half, maximize, and restore. Put Ghostty on one side and Zen on the other without touching the mouse.
Save and recall a work link
Save a project page into Anybox, tag it, then open it from Raycast or Anybox Quick Find. Do this with real links you use daily.
#Going deeper
- Apple Mac keyboard shortcuts
- Raycast Window Management
- BetterDisplay
- Anybox
- Rectangle — good dedicated fallback if Raycast window commands are not enough