v1.0 — Now available for macOS · Press ⌘ Space to launch
← Back to blog

A day in a keyboard-first macOS workflow

CmdSpace Team·

This post is a literal walk-through of one day at a keyboard-first Mac. Not a list of tools, not a configuration guide — a play-by-play of how a person who has internalized keyboard shortcuts and a launcher actually moves through a workday…

This post is a literal walk-through of one day at a keyboard-first Mac. Not a list of tools, not a configuration guide — a play-by-play of how a person who has internalized keyboard shortcuts and a launcher actually moves through a workday. The point is to show the cumulative effect: the small per-action savings that compound into hours over a year, the muscle-memory patterns that emerge once trackpad-reaching stops being default.

The setup behind it: a 14-inch M3 MacBook Pro, Lume as the launcher, Rectangle for windows, Maccy for clipboard, Neovim and Zed for code, Ghostty for terminal, macOS Focus modes for notifications, Espanso for snippets. Everything keyboard-driven. The full stack is detailed in A keyboard-only macOS dev setup and A Mac focus stack for deep work.

The day below is Tuesday, May 12, 2026. The work is a mix of coding, communication, and admin. Pseudo-realistic; the shortcut sequences are exactly what I press.

08:50 — Open the lid

Lid up. Mac wakes. Touch ID, in. Last night I left it with the editor in a workspace, the terminal in a second Space, and Slack quit. macOS restores the editor and terminal exactly.

08:52 — Triage the morning

⌘Space, type mail, ↩. Apple Mail opens. Five new messages. I read each, archive (⌘⌃A) the ones that need no response, flag (⌘⇧L) the two that do. Two minutes total. No mouse used.

09:00 — Focus mode activates

A small banner: "Work focus is now on." Slack, browser notifications, Messages are now silent until 12:00. I do not see this happen; I notice an hour later that nothing has interrupted me.

09:01 — Open the project

⌘Space, type lume-spot (the launcher matches on partial words). ↩. Zed opens to my project. Side note: ⌘Space → three letters → ↩ is roughly 1.2 seconds. The Finder version of this (open Finder, ⌘⇧G, type path, ↩, double-click folder, double-click file) is roughly 8 seconds. Saved 6.8 seconds.

I do this ~12 times a day. 82 seconds a day in just project opens. 5 hours a year. Not the biggest number on this list but real.

09:02 — Open the terminal

⌘⇥ (App switcher) to Ghostty. ⌘D splits the terminal into two panes. cd ~/code/lume. Already there from yesterday — the terminal restored to the right directory.

09:05 — Start the timer

⌘Space, timer 50, ↩. The menu-bar timer starts a 50-minute count-down. First focus block of the morning begins.

09:05–09:55 — Code session

Inside the editor, the keyboard work begins:

  • ⌘P to file-switcher, type three letters of a filename, ↩. Open the file in under a second.
  • ⌘⇧P to command palette, type "format", ↩. Format on save.
  • to terminal panel inside the editor.pnpm test --watch. Tests start running. ⌃ again to hide.
  • ⌘D to multi-cursor select next instance of the word under cursor.
  • ⌃R in the terminal — fzf-backed reverse search. Type "pnpm dev", ↩. Server starts.
  • ⌘⌃F in the editor for find-and-replace.
  • ⌘B to toggle the sidebar when I genuinely need to see the file tree. ⌘B again to hide it.
  • ⌃G to "go to line N" when a test failure points me at line 87.

The pattern: every action a shortcut. The trackpad sits unused. Time inside the editor flows uninterrupted because nothing about the editor's chrome demands attention.

A small pattern from the morning: I need to test an API endpoint. ⌘Tab to Ghostty. ⌃⇥ to a fresh terminal tab. curl -s localhost:3000/api/health | jq. Response in the terminal. ⌃C to copy the relevant field. ⌘Tab back to the editor. ⌘V. Done. Four context switches, all keyboard, total time about 8 seconds. The mouse version would involve dragging windows, scrolling, and several second-loss moments.

09:55 — Timer ends

The Focus timer's gentle ping. I stand up, walk to the kitchen, refill coffee. Ten minutes. The editor is still on screen but I am not in it.

10:05 — Second session

Same shape as the first. I'll spare you the play-by-play. 50 minutes, second feature task, mostly the same shortcut set.

10:55 — Need to look up an unfamiliar acronym

In the middle of reading a PR comment that says "OAUTH2_RFC8628 device flow." I don't remember which RFC that is. Cursor over "RFC8628", ⌃⌘D. macOS dictionary card. No dictionary entry for "RFC8628" specifically, but the card includes a "Search the Web" link. ⌃→ ↩. Browser opens to the RFC. Two keystrokes.

For the dictionary shortcut deep dive: The macOS dictionary shortcut you've been missing.

11:00 — Need to share a snippet of code with a teammate

In the editor, select the function with ⌘⇧K (Zed: "Select line"). ⌘C. Switch to Slack (⌘Space, slack, ↩ — Focus mode allows me to open Slack manually even when notifications are muted). Paste with ⌘V. Add context. Send with ⌘↩. Switch back with ⌘Tab.

Maccy still has the snippet on the clipboard, plus the last 30 things I copied. If I need to share it again, ⌘⇧V opens Maccy, type a word from the snippet, ↩. Paste again.

11:30 — Need to kill a process on port 3000

Old dev server from yesterday is still listening. ⌘Space, kill 3000, ↩. Lume's kill-by-port command. Confirmation toast: "Killed PID 12345 on port 3000." 1.5 seconds total. No terminal switch, no lsof | xargs kill.

The full breakdown: Kill a process by port on macOS.

12:00 — Break for lunch

Focus mode automatically deactivates at 12:00. Notifications resume. I close the laptop lid; it sleeps.

13:00 — Back

Lid up, in again. Same restored state.

13:05 — Slack triage

⌘Space, slack, ↩. Slack opens. Eight messages, three threads. I read them top to bottom. Two need real responses, six are FYI. Reply to the two: ⌘K to open the channel switcher inside Slack, type the channel name, ↩. Compose with normal text editing — ⌥← / → for word navigation, ⌥⌫ for word delete. Send with ↩.

For one of them, I want to paste in some output from a script. ⌘Tab to Ghostty. Run the script. Output appears. Select with ⌘A inside the output. ⌘C. ⌘Tab back. ⌘V. Wrap in code fences. Send.

Approx 12 minutes for the Slack triage. Without keyboard shortcuts this is closer to 20 minutes because of the friction of moving between channels and apps via mouse.

13:20 — Calendar check

⌘Space, cal, ↩. Apple Calendar opens to today. Meeting at 14:00. ⌘W to close, but I remember it for the next 40 minutes.

13:25 — Third focus session

⌘Space, timer 35, ↩. Shorter session because of the upcoming meeting. Editor open, terminal open. Coding resumes.

14:00 — Meeting

Calendar notification (Focus mode lets calendar through). I join the video call via the meeting link. Headphones plugged. ⌘⇧Tab to cycle apps until I find the video call. ⌘D to mute. Listen.

During the meeting, I take notes in a plain Markdown file in Neovim. ⌃in Ghostty to expand the terminal.nvim ~/notes/2026-05-12-meeting.md. Type notes. ⌃-Z to suspend Neovim, run a quick shell command, fgto resume. Save with:w, quit with :q`.

Meeting ends. Notes saved. Pushed to my notes folder, Syncthing replicates them to my desktop.

14:45 — Email response

A reply I had been putting off. ⌘Space, mail, ↩. Mail opens. ⌘1 to focus the inbox. Arrow keys to the message. ⌘R to reply. Compose with the same readline shortcuts as everywhere else: ⌃A for start of line, ⌃E for end, ⌥← / → for words. Send with ⌘⇧D.

Email closed with ⌘W. Back to the editor with ⌘Tab.

15:10 — Fourth focus session

Another 50-minute block. Same shape. By this point my fingers know the shortcuts I will use for the next hour: editor shortcuts in the editor, terminal shortcuts in the terminal, launcher shortcuts to switch.

16:10 — End of focus blocks

End-of-day cleanup. The blocks of code I wrote today get committed:

  • ⌘Tab to Ghostty.
  • gco -b feat/something (alias for git checkout -b).
  • gst (status), look at the files.
  • ga . (add all).
  • gc -m "Add the thing" (commit).
  • gpu (push to upstream).
  • ⌘Space, open pr, ↩ — Lume's open-pr command opens the GitHub PR for the current branch in the browser.

End-to-end: about 30 seconds. The browser opens to the new PR page; I fill in the description and submit.

16:30 — Communication catch-up

Slack, Mail, anything that piled up during the second half of the focus blocks. Same pattern as the 13:05 triage. Approx 15 minutes.

16:45 — Plan tomorrow

Open ~/notes/2026-05-13.md in Neovim. Three bullets for tomorrow morning. Save. Close.

17:00 — Done

Close the lid. The Mac sleeps with the editor open, terminal in its second Space, Slack closed. Tomorrow morning it resumes exactly where I left it.

What the day looked like in aggregate

Approximate counts for the workday:

  • ⌘Space presses: 28.
  • ⌘Tab presses: 41.
  • Editor shortcuts: ~150 keystrokes worth of navigation, palette, and selection.
  • Terminal shortcuts: ~80 keystrokes.
  • Trackpad / mouse usage: ~6 minutes total, almost all of it in the meeting video call.
  • Notification interruptions: 3 (calendar reminders, two from approved Slack contacts).
  • Time spent looking for a file: under 1 minute total.
  • Time spent "where was I?": roughly zero.

The keyboard-driven shape of the day is not faster because any individual action is faster — it is faster because the cumulative friction of switching, finding, and reaching is lower. The Mac stays in the background of the work instead of competing with it.

What this is not

Not every workday looks like this. Days with lots of design work, with lots of meetings, or with research-heavy reading depart from the pattern in places. The keyboard-first shape adapts; the discipline does not require every minute to fit the same template.

Also not: a productivity contest. The aggregate keystroke count above is not an end. It is a description of what a Mac feels like when the trackpad has stopped being the default input device. The actual outcome that matters — work shipped, attention preserved — is downstream.

How to build to this

The 30-day plan if you want to live in this shape:

  1. Week 1: install the stack (keyboard-only setup). Bind ⌘Space to a launcher you trust. Practice ⌘Tab and ⌘`.
  2. Week 2: add the editor and terminal shortcuts. ⌘P, ⌘⇧P, ⌃` in your editor. ⌃R, ⌃A, ⌃E in your terminal.
  3. Week 3: add Focus modes and a timer. Define one Work focus, schedule it, use it daily.
  4. Week 4: add the small accessories. Clipboard history. Window manager. Snippet engine.

By the end of the month, the shape of the day above is reachable. By the end of the quarter, it is automatic.

The compounding return

A single keyboard shortcut saves you a fraction of a second. Twenty shortcuts a hundred times a day saves you roughly 40 minutes. Over a year, that is more than a working week.

The bigger return is not the time. It is the attention. Trackpad reaches break your gaze; keyboard shortcuts do not. After enough months of this, you notice that you have not "lost the thread" of what you were doing as often. The work stays in your head instead of being interrupted by the act of operating the computer.

This is the real reason people who have moved to a keyboard-first workflow rarely move back. The mouse remains useful for specific things. The trackpad remains useful for gestures. The home row, however, is now home.

Companion posts