Switching from Linux to Mac: what replaces what
You can get surprisingly close to a tuned Linux desktop on a Mac. Your terminal, shell, editor and dotfiles mostly carry over unchanged. What changes is the desktop layer, because macOS doesn't let you replace its window server or compositor. Each piece, from the window manager to the status bar, has a Mac tool that runs on top of it instead.
The quick map
| On Linux | On a Mac |
|---|---|
| i3, sway | AeroSpace (free, i3-style) or yabai. See i3 for Mac |
| niri, PaperWM, scroll | Ribbon, OmniWM, Paneru or PaperWM.spoon. See niri for Mac |
| Hyprland | AeroSpace or yabai for tiling, Ribbon for scrolling. See Hyprland for Mac |
| rofi, wofi, dmenu | Raycast, Alfred, or Spotlight |
| waybar, polybar | SketchyBar |
| sxhkd, sway bindings | skhd, or your window manager's own shortcuts |
| xmodmap, keyd, kanata | Karabiner-Elements (kanata also runs on macOS) |
| apt, pacman, dnf | Homebrew, or Nix with nix-darwin |
| clipman, cliphist | Maccy, or Raycast's clipboard history |
| Alacritty, kitty, foot | Alacritty, kitty, WezTerm or Ghostty (all run on macOS) |
| flameshot, grim | Built in: ⌘⇧4 for an area, ⌘⇧5 for options |
The window manager
This is the biggest change. On Linux, the window manager or compositor draws your desktop. On macOS, Apple's WindowServer always does, and a window manager is a regular app that moves other apps' windows using the Accessibility permission. That has three effects:
- Animations are less smooth than niri or Hyprland, because the window manager moves real windows instead of compositing them.
- Windows can't truly go off-screen. Mac tilers park hidden windows just off the edge, so a few pixels may show.
- No root or kernel changes are needed for most of them. Only yabai's advanced features ask you to partly disable System Integrity Protection, which is why many people prefer yabai without SIP or another tool.
If you used i3 or sway, start with AeroSpace. If you used niri or PaperWM, start with a scrolling window manager; the best scrolling window managers for Mac compares them honestly, including the free ones. Ribbon, ours, has a live demo you can try in the browser.
Keyboard: the Command key
macOS uses ⌘ where Linux uses Ctrl for copy, paste and most app shortcuts, while Ctrl still works in the terminal. Most switchers keep it that way rather than remapping, and give the window manager its own modifier (⌥ in AeroSpace, ⌃⌥ in Ribbon) so it never clashes with app shortcuts. Karabiner-Elements can turn Caps Lock into Escape or into a "hyper" key for your own shortcuts.
Dotfiles and the shell
The default shell is zsh. Bash and fish install through Homebrew. Your shell config, editor config and most CLI tools carry over unchanged. Watch out for GNU versus BSD differences: macOS's sed, date and find differ from GNU's. Install coreutils, gnu-sed and findutils with Homebrew if your scripts depend on GNU behaviour.
What you won't get
- A fully replaceable desktop: the Dock, menu bar and Mission Control stay.
- Workspaces exactly like Linux's: macOS Spaces have animations you can only reduce, not remove. AeroSpace avoids them by running its own workspaces.
- One config file for everything: you'll have a few small configs, one per tool.
FAQ
Is there an i3 or sway equivalent on macOS?
AeroSpace is the closest: free, i3-style tree tiling, configured in a TOML file. yabai is the other long-standing option.
Is there a niri or PaperWM equivalent on macOS?
Yes. Ribbon, OmniWM, Paneru, Nehir and PaperWM.spoon all give you a scrolling strip of windows on a Mac.
Can I use Nix on a Mac?
Yes. Nix runs on macOS, and nix-darwin manages macOS settings and packages declaratively, much like NixOS.
Do I need to disable SIP for a tiling window manager?
No for AeroSpace, Ribbon, OmniWM, Paneru and Amethyst. yabai's scripting features need SIP partly disabled; its basic tiling doesn't.