zoxide Alternative for
Full Terminal Workspaces
zoxide makes cd smarter. But changing directories is only the beginning. son goes further — it opens a full workspace with split panes, your editor, and startup commands, all in one keystroke.
A cd tool vs a workspace launcher
The fundamental difference between zoxide and son is their scope. zoxide replaces cd with something smarter. son replaces the entire process of switching context to a new project.
zoxide
A smarter cd command that learns your habits and takes you to directories with partial matches.
son
A workspace launcher that opens split-pane terminal environments with editors, dev servers, and project-specific commands.
Where zoxide is better
Any directory, not just projects
zoxide tracks every directory you visit — not just project roots. Need to jump to ~/Documents/invoices/2024? zoxide handles that. son focuses specifically on developer project directories.
Shell integration
zoxide replaces cd directly in your shell with the 'z' command. It's seamless — you never think about it. son is a separate command you invoke when you want to open a full workspace.
Minimal and focused
zoxide does one thing: navigate to directories faster. It's tiny, fast, and has essentially zero overhead. If all you need is smarter cd, zoxide is the right tool.
Works in any terminal session
zoxide operates within your current shell session. It doesn't need to create new panes or windows. It just changes your working directory, which works everywhere.
Where son is better
Full workspace creation
son doesn't just navigate to a directory — it creates an entire workspace. Split panes, editor in one pane, dev server in another, test runner in a third. One command, fully productive.
Multi-terminal support
son natively supports iTerm2, WezTerm, and tmux. It uses each terminal's native API to create split-pane layouts. zoxide is terminal-agnostic because it only changes directories.
Project-aware discovery
son understands project structure. It scans for git repos, recognizes project types, and applies appropriate layouts. zoxide tracks raw directory paths without project context.
Startup hooks and automation
With .son.toml, you can define commands that run automatically when you open a workspace — start dev servers, activate virtual environments, set environment variables. zoxide just changes your directory.
Use both together — they're complementary
son and zoxide are not competitors — they solve different problems at different stages of your workflow. The best developer setup uses both.
| Workflow Step | Best Tool | Why |
|---|---|---|
| Starting work on a project | son | Opens full workspace with panes, editor, and dev server |
| Quick directory jump within a session | zoxide | Lightweight cd replacement, stays in current terminal |
| Switching between active projects | son | Creates or switches to the project's workspace layout |
| Navigating to a non-project directory | zoxide | Tracks any directory, not limited to project roots |
| Opening a new project for the first time | son | Auto-discovers new repos, no config needed |
| Returning to a deep subdirectory | zoxide | Remembers paths like ~/projects/api/src/handlers |
The ideal workflow
Start your day by running son to open a full workspace for your main project. Throughout the day, use z (zoxide) to jump between directories within your terminal panes. When you need to switch to a completely different project, run son again to open a new workspace.
Feature comparison
| Feature | son | zoxide |
|---|---|---|
| Frecency sorting | ||
| Fuzzy search | ||
| Zero-config setup | ||
| Single binary | ||
| Split-pane workspaces | ||
| Editor integration | ||
| Startup hooks | ||
| Multi-terminal support | ||
| Shell cd replacement | ||
| Tracks any directory | ||
| Sub-shell integration | ||
| Project-type detection |
Go beyond cd. Launch workspaces.
Keep zoxide for quick directory jumps. Add son for full workspace launching. Install in one command.
$ brew install abdussamet032/tap/son