{"id":51132685,"url":"https://github.com/igorjs/omacos","last_synced_at":"2026-06-25T14:30:31.570Z","repository":{"id":363312673,"uuid":"1262612120","full_name":"igorjs/omacos","owner":"igorjs","description":"Opinionated one-command macOS setup with Tokyo Night theme","archived":false,"fork":false,"pushed_at":"2026-06-18T13:59:28.000Z","size":157,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T14:26:46.374Z","etag":null,"topics":["automation","dotfiles","macos","setup","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igorjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING-RULES.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["igorjs"]}},"created_at":"2026-06-08T06:41:12.000Z","updated_at":"2026-06-18T14:00:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/igorjs/omacos","commit_stats":null,"previous_names":["igorjs/omacos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/igorjs/omacos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorjs%2Fomacos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorjs%2Fomacos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorjs%2Fomacos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorjs%2Fomacos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igorjs","download_url":"https://codeload.github.com/igorjs/omacos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorjs%2Fomacos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34780124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","dotfiles","macos","setup","shell"],"created_at":"2026-06-25T14:30:30.745Z","updated_at":"2026-06-25T14:30:31.557Z","avatar_url":"https://github.com/igorjs.png","language":"Shell","funding_links":["https://github.com/sponsors/igorjs"],"categories":[],"sub_categories":[],"readme":"# OmacOS\n\nOne-command macOS setup. Tokyo Night themed. Modular and re-runnable.\n\nOmacOS is the macOS equivalent of [Omakub](https://omakub.org/) and [Omarchy](https://omarchy.com/): a single `./install.sh` that turns a fresh Mac into a fully configured development environment. Every script is idempotent, so you can re-run it safely at any time. Configs are symlinked from the repo by default, so your settings stay version-controlled.\n\n---\n\n## Why \"OmacOS\"?\n\n**Omakase** (お任せ) is a Japanese phrase meaning roughly \"I leave it up to you,\" from the verb *makaseru*, to entrust. In a sushi restaurant, ordering omakase means handing the decisions to the chef: no menu, no choosing, you trust their judgment to serve the best of what they have. It is the opposite of a la carte.\n\nOmacOS applies that idea to a Mac dev environment: rather than making you pick every tool and setting, it ships opinionated, curated defaults that you trust and set up with one command. The name is Omakase + macOS, in the spirit of Omakub (Ubuntu) and Omarchy (Arch).\n\n---\n\n## Prerequisites\n\n- A Mac running macOS Sequoia (15) or later\n- An internet connection\n- That's it\n\nThe installer handles Xcode Command Line Tools, Rosetta 2 (Apple Silicon), Homebrew, and everything else automatically.\n\n---\n\n## Installation\n\n```bash\ngit clone https://github.com/igorjs/omacos.git ~/omacos\ncd ~/omacos\n./install.sh\n```\n\nOr, to copy config files instead of symlinking them:\n\n```bash\n./install.sh --copy\n```\n\n---\n\n## What Gets Installed\n\n### Window Manager\n- **AeroSpace** - tiling window manager with Vim-style keybindings (Alt+hjkl to focus, Alt+Shift+hjkl to move)\n\n### Terminal\n- **Ghostty** - GPU-accelerated terminal with Tokyo Night theme and JetBrainsMono Nerd Font\n- **tmux** - terminal multiplexer with Tokyo Night status bar\n\n### Editor\n- **Zed** - primary editor (`EDITOR=\"zed --wait\"`, `git core.editor = \"zed --wait\"`), Tokyo Night theme\n- **Neovim 0.11+** - terminal fallback editor, configured with lazy.nvim, Treesitter, native LSP, and blink.cmp completion\n\n### Shell\n- **Starship** - fast cross-shell prompt with git status, Tokyo Night colors\n- zsh-autosuggestions - fish-style suggestions as you type\n- zsh-syntax-highlighting - command syntax coloring\n\n### CLI Tools\n- ripgrep, fd, fzf, jq, bat, eza, zoxide, lazygit, gh\n\n### Languages (via mise)\n- Node.js LTS\n- Python (latest, plus uv for package management)\n- Go (latest)\n- Rust (stable, with rustfmt, clippy, rust-analyzer, rust-src)\n\n### Containers\n- **Docker Desktop** - note: requires one manual launch to complete setup\n\n### AI\n- **Claude Code** - Anthropic's AI coding tool (requires a paid Anthropic plan or API key)\n\n---\n\n## Post-Install Manual Steps\n\nAfter the installer finishes, a few things require manual action:\n\n1. **AeroSpace Accessibility permission**: System Settings \u003e Privacy and Security \u003e Accessibility, toggle on AeroSpace. Required for window management to work.\n\n2. **Docker Desktop first launch**: Open Spotlight (Cmd+Space), search \"Docker\", launch it. Accept the license and allow the helper tool installation.\n\n3. **GitHub CLI authentication**:\n   ```bash\n   gh auth login\n   ```\n\n4. **Zed: Tokyo Night extension**: Open Zed, press Cmd+Shift+X, search \"Tokyo Night\", install the extension.\n\n5. **macOS Sequoia appearance tweaks**: System Settings \u003e Appearance lets you set Icon Style and Folder Color. These settings have no stable scriptable defaults keys, so they require manual selection.\n\n6. **Restart your shell**: Open a new terminal window, or run `source ~/.zshrc`.\n\n---\n\n## Theme System\n\nOmacOS ships with the **Tokyo Night** theme. Themes live in `themes/\u003cname\u003e/` and consist of:\n\n| File | Purpose |\n|------|---------|\n| `ghostty.conf` | Ghostty theme line |\n| `tmux.conf` | tmux status bar colors |\n| `zed.json` | Zed theme setting |\n| `starship.toml` | Starship color palette |\n| `nvim.lua` | Neovim colorscheme |\n| `zsh.zsh` | zsh-autosuggestions and zsh-syntax-highlighting colors |\n| `macos.sh` | macOS accent color and wallpaper |\n| `wallpaper.png` | Desktop wallpaper |\n\n### Apply a theme\n\n```bash\nomacos theme set tokyonight\n```\n\n### List available themes\n\n```bash\nomacos theme list\n```\n\n### Add a new theme\n\n1. Create `themes/mytheme/` with the files listed above.\n2. Run `omacos theme set mytheme`.\n\nThe `starship.toml` in a theme defines a `[palettes.active]` block that gets concatenated onto `config/starship.toml`. The base config uses named palette colors (blue, green, etc.), so themes only need to override those color values.\n\n---\n\n## CLI Reference\n\n```\nomacos theme set \u003cname\u003e    Apply a theme to all tools\nomacos theme list          List available themes\nomacos update              Update Homebrew packages, Claude Code, and re-apply theme\nomacos snapshot [label]    Take a macOS defaults snapshot\nomacos export [dir]        Export Brewfile + key defaults plists with a restore.sh\nomacos doctor              Check system health, print pass/fail for all components\n```\n\n---\n\n## Settings Snapshot Tool\n\n`tools/mac-snapshot.sh` lets you capture and diff macOS `defaults` before and after changing a setting in System Settings, so you can find the exact `defaults write` command to reproduce it.\n\n### Take a snapshot\n\n```bash\ntools/mac-snapshot.sh snapshot before-changes\n```\n\n### Watch for changes (interactive)\n\n```bash\ntools/mac-snapshot.sh watch\n```\n\nThis takes a before snapshot, prompts you to change one setting, then takes an after snapshot and shows you exactly what changed, including suggested `defaults write` commands to add to `macos/defaults.sh`.\n\n### List snapshots\n\n```bash\ntools/mac-snapshot.sh list\n```\n\n### Diff two snapshots\n\n```bash\ntools/mac-snapshot.sh diff before-changes after-changes\n```\n\n### Export current settings\n\n```bash\ntools/mac-snapshot.sh export\n# or via the CLI:\nomacos export\n```\n\nExports a `Brewfile`, key domain plists, and a `restore.sh` script.\n\n---\n\n## Language Runtimes (mise)\n\n[mise](https://mise.jdx.dev/) manages language runtimes globally and per-project. Global versions are set during install. Per-project versions are configured in a `.mise.toml` file in the project root.\n\nA sample `.mise.toml` is included at the repo root. Copy it to any project to pin versions:\n\n```bash\ncp ~/omacos/.mise.toml myproject/.mise.toml\n```\n\nmise activates automatically on `cd` into a directory with a `.mise.toml`.\n\n### uv for Python packages\n\nRather than `pip install`, use [uv](https://docs.astral.sh/uv/) for fast, reproducible Python package management:\n\n```bash\nuv init myproject\nuv add requests\nuv run python main.py\n```\n\n### Rust via mise\n\nmise installs Rust via rustup. The rust-analyzer component is included, so it works out of the box in Neovim and Zed.\n\n---\n\n## Known Quirks\n\n- **TPM plugin install focus**: After pressing `prefix+I` to install tmux plugins, the \"Done, press ENTER\" screen requires a mouse click before Enter works. This is a macOS window-focus edge case triggered by TPM's install overlay. It only happens during plugin installation (once per machine).\n\n- **security.sh requires sudo**: `macos/security.sh` (firewall, SSH, mDNS) needs `sudo`. If running in a non-interactive context where sudo isn't pre-authenticated, it will prompt. Run `sudo -v` first or execute it manually: `bash macos/security.sh`.\n\n- **Safari privacy defaults**: macOS sandboxes Safari's preferences. The `SendDoNotTrackHTTPHeader` default can only be written after Safari has been opened at least once. The installer silently skips it otherwise.\n\n---\n\n## Honest macOS Limits\n\nA few things cannot be fully scripted on macOS:\n\n- **Accent color** is capped at 8 Apple presets. There is no stable way to set an arbitrary hex color as the system accent. `defaults write -g AppleAccentColor -int 5` sets \"Purple\" (closest to Tokyo Night's `#bb9af7`).\n\n- **Sequoia Icon Style and Folder Color** have no stable scriptable defaults keys as of this writing. Set them in System Settings \u003e Appearance.\n\n- **Window chrome** (titlebars, traffic lights) cannot be arbitrarily themed system-wide. Individual apps like Ghostty use `window-decoration = false` to hide their chrome.\n\n- **Keyboard layout** changes typically require a logout to register. The `macos/locale.sh` sets the defaults key, but you may need to also add the layout manually in System Settings \u003e Keyboard \u003e Text Input \u003e Edit.\n\nUse `tools/mac-snapshot.sh watch` to discover new scriptable keys as macOS evolves.\n\n---\n\n## Adding Future Themes\n\nTo add Catppuccin, Gruvbox, or any other theme:\n\n1. Create `themes/catppuccin/` (or your theme name).\n2. Add each file following the pattern of `themes/tokyonight/`.\n3. The `starship.toml` in your theme should define `[palettes.active]` with the same color names (blue, cyan, green, red, yellow, purple, fg, muted).\n4. Test with: `omacos theme set catppuccin`\n\n---\n\n## v2 Roadmap\n\nFeatures noted for a future v2 release:\n\n- **Raycast** - launcher and productivity tool (would replace Spotlight usage)\n- **Sketchybar** - custom menu bar with Tokyo Night styling\n\nThese are intentionally excluded from v1 to keep the initial setup minimal and reliable. Uncomment the relevant lines in `Brewfile` to install them manually.\n\n---\n\n## Inspiration\n\n- [Omakub](https://omakub.org/) by DHH - the Ubuntu equivalent\n- [Omarchy](https://omarchy.com/) - Arch Linux variant\n- [Tokyo Night](https://github.com/folke/tokyonight.nvim) color scheme by Folke Vereecken\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorjs%2Fomacos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorjs%2Fomacos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorjs%2Fomacos/lists"}