使 macOS 更易用
Making macOS Bearable

原始链接: https://seg6.space/posts/making-macos-bearable/

这位用户追求无缝的计算机体验——一种思维的延伸,而非阻碍。 多年来使用 Arch Linux 实现了这一点,但切换到 macOS 由于其依赖于视觉密集型导航(如 Mission Control)而中断了这种流畅性,导致注意力分散。 为了恢复效率,用户对 macOS 进行了大量自定义。 他们实施了 Aerospace,一种平铺窗口管理器,以创建确定性的工作区,通过键盘快捷方式即时访问应用程序,从而在空间上编码应用程序。 Tmux 被定制了根绑定,用于快速切换窗口,并构建了一个名为“ws”的自定义工具,用于快速启动具有预配置环境的项目。 进一步简化包括使用模式编辑(如 Vim)进行文本操作,以及 Vimium 和 Homerow 等工具进行“看键入”导航,从而最大程度地减少鼠标使用。 核心原则是用语言命令和肌肉记忆代替视觉搜索,旨在消除意图和行动之间的延迟。 最终目标不是成为高级用户,而是获得真正直观的计算体验。

## 让 macOS 为你工作 最近 Hacker News 上的一场讨论集中在定制 macOS 以达到最佳生产力。发起者分享了他们个性化的设置,引发了关于窗口管理和应用程序启动的对话。 许多评论者同意 macOS 的默认设置很强大,能够使用 **Alfred**、**Raycast** 和 **Spotlight**(使用 Cmd-Space 等快捷键)实现快速工作流程。有些人更喜欢这些启动器而不是 **Mission Control**。虽然提到了平铺窗口管理器,但意见不一——有些人认为它们是不必要的“繁琐操作”,而另一些人则依赖它们(或 **Phoenix** 等工具)来实现精确的窗口定位和通过键盘快捷键的快速访问。 一个关键主题是希望对常用应用程序进行一致的、基于肌肉记忆的访问,无论它们是否在专用工作区中。最终,讨论强调了“最佳”设置非常个性化,专注于最大限度地减少摩擦并最大限度地提高个人用户的效率。
相关文章

原文

Ideally, a computer system should feel like an extension of your body. When you pick up a cup of coffee, you don't consciously think, "I need to engage my bicep, extend my forearm, and grasp with my fingers." You just think "drink coffee," and your body complies.

I've spent the better part of eight years on various flavors of Arch Linux, and over that time I settled into a local minimum: a system configuration where I can enter a flow state, forget I'm using a computer at all, and just focus on the work. The machine disappears.

Recently, I started using macOS (my workplace issued me an M4 Pro MacBook, and I can't yet put Asahi Linux on it), and with this change, that neural link was severed. Stock macOS gives me something like motion sickness whenever I try to accomplish anything. There's just too much friction in Spaces, Mission Control, window management, all of it.

So I set out to fix this for myself.

Apple wants you to use Mission Control. They want you to swipe up with three fingers, see a scattered mosaic of every window you have open, and then use your eyes to scan for the one you want.

mission control

This is terrible!!!

Visual search is the most expensive cognitive task you can perform while focused on doing something. Every time you have to scan the screen to find a window, you are breaking context.

My hierarchy of navigation is as follows:

  1. Shortcuts: I know exactly where something is. I press a key, and I am there.
  2. Fuzzy Finding: I know what I want, but not where it is. I type three letters into Raycast, and it appears.
  3. Visual Search: This is the fallback I try to never use.

The default macOS window model is "floating." Windows pile on top of each other, you drag them around manually, and Spaces lets you swipe between virtual desktops that have no enforced structure. It's flexible, but flexibility without constraints is just chaos.

To fix this, I use Aerospace. It's a tiling window manager that replaces the native "Spaces" concept with rigid, deterministic workspaces.

aerospace

Aerospace allows me to spatially encode my software. I don't need to "check" where Spotify is. Spotify is on Workspace 9. Always. My browser is on Workspace 1. My terminal is on Workspace 2.

[workspace-to-monitor-force-assignment]
7 = 'secondary'
8 = 'secondary'
9 = 'secondary'

[[on-window-detected]]
if.app-id = 'com.mitchellh.ghostty'
run = 'move-node-to-workspace 2'

This turns navigation into muscle memory. Cmd-2 is not "Switch to Terminal"; Cmd-2 is just the physical reflex of "I want to code." I don't look. I just hit the key combination, and the active workspace changes.

Inside Workspace 2 lives Ghostty, running Tmux.

But standard Tmux keybinds are too clunky. The default Ctrl-b prefix doesn't spark joy to use. I use root bindings (-n) to bypass the prefix entirely where I see it fit.

I don't use panes; I use full windows as "views." Alt-1 switches to the first window. Alt-2 switches to the second. But here is the logic that makes it flow:

bind -n M-1 if-shell 'tmux select-window -t 1' '' 'new-window -t 1'

If window 1 doesn't exist, it creates it. I don't "manage" windows; I just go to where I want to be, and the system accommodates me.

To glue it all together, I wrote a custom Rust tool called ws.

ws session switcher in action

When I hit Alt-s, a fuzzy finder pops up over my current work. I pick a project, and ws instantly attaches to that session or spins up a new environment with my editor (helix) and file manager (fx) ready to go. It maintains a stack-based history, so I can jump to a project, fix a bug, and hit "Back" to return to exactly where I was.

Humans are incredibly good at language. We are hardwired for syntax, grammar, and structure. We are not hardwired to hunt for pixels on a glowing rectangle.

This is why I use modal editing. It stops text manipulation from being a manual labor task, e.g. dragging a mouse, holding backspace, and turns it into a conversation. If I want to change the text inside some quotes, I don't drag a cursor; I speak the command: ci" (change inside quotes). It is linguistic. I am speaking to the editor in a language we both understand.

The problem with modern OS design is that it abandons this linguistic efficiency for visual clutter.

Of course, I still use the mouse. I’m not a zealot. But for 90% of web browsing, lifting my hand to the mouse is unnecessary friction.

I use Vimium in the browser.

vimium

When I want to click a link, I don't aim; I just look at it. Two letters appear over the link, I type them, and it clicks. It feels telepathic. I look at the element, and the element activates.

I recently added Homerow to the mix, which brings this same "look and type" navigation to the entire macOS UI. It allows me to click system dialogs or toolbar buttons without ever leaving the home row.


By layering Aerospace, Tmux, and modal editing, I’ve tried to replicate that "extension of the body" feeling. The goal isn't to be a "power user" for the sake of it. The goal is to remove the lag between thinking "I want to do X" and the computer actually doing it.

The dotfiles: https://github.com/seg6/dotfiles

联系我们 contact @ memedata.com