Switching from Linux to Mac: what replaces what

Updated · by , maker of Ribbon

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 LinuxOn a Mac
i3, swayAeroSpace (free, i3-style) or yabai. See i3 for Mac
niri, PaperWM, scrollRibbon, OmniWM, Paneru or PaperWM.spoon. See niri for Mac
HyprlandAeroSpace or yabai for tiling, Ribbon for scrolling. See Hyprland for Mac
rofi, wofi, dmenuRaycast, Alfred, or Spotlight
waybar, polybarSketchyBar
sxhkd, sway bindingsskhd, or your window manager's own shortcuts
xmodmap, keyd, kanataKarabiner-Elements (kanata also runs on macOS)
apt, pacman, dnfHomebrew, or Nix with nix-darwin
clipman, cliphistMaccy, or Raycast's clipboard history
Alacritty, kitty, footAlacritty, kitty, WezTerm or Ghostty (all run on macOS)
flameshot, grimBuilt 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:

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

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.

Keep reading