Skip to content
C.W.K.
Lesson 02 of 04 · published

The Editing Preset — Where the First Job Came From

~12 min · presets, origin, final-cut, hide-not-quit, watchfire

Level 0Idle Hands
0 XP0/39 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Apps remain running. Apps already hidden stay hidden when this preset is restored." — the caption under every preset in Tinker Settings

A Concrete Session, Not a Platform

Tinker did not start from a vision of general Mac automation. It started from one recurring moment: Dad sits down to cut video in Final Cut Pro on a Mac that is also running a chat app, an AI coding tool, his own browser and an image library. None of those windows matter for the next two hours, and every visible window is something the window server has to keep compositing. The wish was a single key press that clears the field and a second press that puts everything back exactly as it was.

That wish became the edit preset. Its seed lists four apps by bundle identifier — Claude, Grok Bot, Voyager and Eagle — measured on the first Mac Tinker ran on. Two sibling presets, broadcast and draw, ship empty: they are shapes waiting for Dad to fill them. Firekeeper, the family's dictation app, is deliberately kept out of the seed. A preset is data, not code, so changing the list never means rebuilding the app.

Hide, Not Quit, Not Minimize

Each of the other moves would have been easy and wrong. Quitting an app destroys state that no receipt can give back: unsaved work, scroll positions, a half-finished chat. Minimizing touches individual windows, not the app, and leaves a trail of Dock thumbnails that Tinker would then have to own one by one. Moving windows to another Space depends on Mission Control settings Tinker does not control. Hiding is the one operation that is whole-app, instantaneous, lossless and reversible with a single call — the same thing ⌘H does. The architecture states it flatly: never launch, quit, terminate, minimize or move an app.

One Command, Three Verbs

Every preset gets three commands automatically: toggle, apply and restore. Toggle is what a single key wants — press once to prepare, again to finish. Apply and restore exist for the cases where state matters more than convenience: a Stream Deck with separate "Prepare for Final Cut" and "Editing done" keys, or Pippa who wants to be sure editing mode is on, not merely flipped. Applying a preset that is already active is a no-op, and restoring one that was never applied says so instead of failing.

Claims Are Measured, Not Promised

Does hiding four apps actually make the Mac lighter? Tinker does not claim it. Around every command it reads Watchfire's snapshot of the Mac before and after and prints the comparison in the status line: WindowServer CPU as before → after, plus the live simulators, Spotlight and iCloud state from the after-sample. A missing value reads unknown, and a comparison of one cached sample with itself says so; track 8 has the details. The benefit of the preset is something Dad can watch, not something the app asserts.

Tinker Settings on the Presets tab. At the top, the version line and a Stop and restore everything button. Below it, the status line: "Final Cut editing restored (8 changes) · WindowServer 112.9% → 100.2% · simulators 0 · Spotlight 6.4% CPU observed · iCloud 0.0% CPU observed". A Watchfire card reads Current WindowServer: 82.9%, sampled 0s ago, refreshing every 5s. Then the tabs Presets, Shortcuts, Activity, Access & Recovery and Configuration. On the left, the presets Final Cut editing, Broadcast and Drawing. On the right, the selected preset's name field and its apps to hide (Claude, Grok Bot, Voyager, Eagle, with more below), each with a remove button. Under the list: Add a running app, Choose from Applications…, the caption about apps remaining running, Save preset, Apply, Delete, and the line Stream Deck: tinker://command/edit.toggle.
The editing preset in Dad's Settings. Its name, Final Cut editing, is only a label: the preset's ID is edit, and the Stream Deck line and every command use the ID, so renaming it never breaks a key. Dad's copy has grown past the seed's four apps. The button reads Apply because the preset holds nothing right now, and the same button reads Restore while it is active. The status line records the last restore, measured: eight changes put back, WindowServer CPU before → after, and simulators, Spotlight and iCloud from the after-sample. The card above it is a separate, live reading, refreshed every five seconds.

Code

The seeded presets and their commands (trimmed from the bundled defaults)·json
{
  "schemaVersion": 1,
  "presets": [
    {"id": "edit", "name": "Final Cut editing",
     "steps": [{"capability": "applications.hide",
                "input": {"bundleIDs": ["com.anthropic.claudefordesktop",
                                         "com.anysphere.sand",
                                         "com.cwk.voyager",
                                         "tw.ogdesign.eagle"]}}]},
    {"id": "broadcast", "name": "Broadcast",
     "steps": [{"capability": "applications.hide", "input": {"bundleIDs": []}}]}
  ],
  "commands": [
    {"id": "edit.toggle",  "name": "Toggle Final Cut editing",
     "operation": {"toggle": {"preset": "edit"}}},
    {"id": "edit.apply",   "name": "Prepare for Final Cut",
     "operation": {"apply": {"preset": "edit"}}},
    {"id": "edit.restore", "name": "Editing done",
     "operation": {"restore": {"preset": "edit"}}},
    {"id": "release", "name": "Stop and restore everything",
     "operation": {"releaseAll": {}}}
  ]
}
Hiding is one AppKit call on the running application·swift
import AppKit

// Find a running app by bundle identifier and hide it — the whole app,
// every window, process untouched. unhide() is the exact inverse.
let target = "tw.ogdesign.eagle"
for app in NSWorkspace.shared.runningApplications
    where app.bundleIdentifier == target && app.activationPolicy == .regular {
    print(app.localizedName ?? target, "hidden before:", app.isHidden)
    _ = app.hide()      // a request; the next lessons explain why the
                        // return value alone is not proof
}

External links

Exercise

Design a preset for one recurring session of your own — recording a screencast, a deep-work block, presenting. List the apps you would hide, the apps you would deliberately leave visible, and one app you would keep out of the list even though it is distracting. Then decide: does this session want a single toggle key, or separate prepare and finish keys? Why?
Hint
Separate keys earn their place when the two moments are different events (you prepare before a recording starts and finish after it ends, possibly from a different device). A toggle is fine when the same hand presses the same key twice in one sitting — but a toggle pressed twice by accident flips you back.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign in — Please sign in to comment.

No comments yet — be the first.