Voice to Text for Hammerspoon
You're deep in your Hammerspoon config, tweaking window management or building a custom automation. You just wrote a clever Lua function, but six months from now you won't remember why. Typing out comments and documentation means breaking your flow. Blurt lets you speak your config notes, function documentation, and inline comments directly into your Lua files. Hold a button, say what the code does, release. Text appears at your cursor. Your hands stay on the keyboard. Your automation flow stays intact. Works anywhere you edit Hammerspoon configs — VS Code, Sublime, your terminal editor, anywhere you can type.
The Typing Problem
Your init.lua is a cryptic mess to future you
You wrote that window tiling function at 2am. It works perfectly. You have no idea how. Six months later you need to modify it, and you're reverse-engineering your own code. The logic made sense when you wrote it. Now it's hieroglyphics. A thirty-second verbal explanation would have saved an hour of confusion. But typing comments felt like too much effort at the time.
Keybinding notes you never write down
You bound hyper-W to something. What was it? Was it window maximize or workspace switch? You created a dozen custom keybindings and documented exactly zero of them. Every time you forget one, you grep through your config to figure out what hyper-K does. You could have spoken a quick note when you added the binding. Instead you search your own code monthly.
Spoon configurations without context
You configured a Spoon last week. You tweaked the defaults because the standard behavior was wrong for your setup. Why did you change those values? The defaults didn't work — but you can't remember what was broken. The magic numbers in your config have no explanation. Every Spoon setup is an undocumented mystery.
Complex Lua logic that needs explaining
That function chains three callbacks, handles edge cases, and has timing-sensitive code. You understand it now because you just wrote it. But Lua's callback patterns will make no sense later. The mental model is in your head, not in the code. Writing it down means stopping your flow and switching from coding brain to writing brain. So you skip it.
Automation ideas you forget before implementing
You're tweaking your config and think of a perfect automation. You'll implement it later. You don't write it down because you're in the middle of something. A week later, you remember you had a great idea. You have no idea what it was. The thought is gone forever because capturing it required too much friction.
How It Works
Blurt works in any editor where you write Hammerspoon configs — VS Code, Sublime Text, Vim, Emacs, or any app with a text cursor.
Hold your hotkey
Press your chosen shortcut while editing your Hammerspoon config. A small indicator shows Blurt is listening.
Speak your documentation
Describe what the function does, why you chose those values, or what the keybinding triggers. Blurt handles punctuation automatically.
Release and continue
Text appears at your cursor as a Lua comment or documentation. Keep building your automation.
Real Scenarios
Documenting window management functions
You just wrote a function that tiles windows in a 70/30 split when you press hyper-T. Cursor above the function, hold button: 'Tiles the focused window to the left 70 percent and the next window to the right 30 percent. Works best with two windows. If only one window exists, it takes the full left 70 percent.' Documentation done in 8 seconds. Future you will actually understand this code.
Annotating keybinding sections
You're setting up a new keybinding block. Hold button at the top: 'Hyper key bindings for window management. Hyper is caps lock remapped through Karabiner. All window commands use hyper plus a directional key or letter.' Now anyone reading your config understands the pattern before diving into the code.
Explaining Spoon configurations
You configured ReloadConfiguration with custom settings. Hold button: 'Watch these directories for changes and auto-reload. Using a 2 second delay because some editors write temp files first. Excluded the backup folder because dotfiles kept triggering reloads.' The magic numbers now have meaning.
Capturing automation ideas instantly
You're tweaking your config and realize you want an automation that mutes Spotify when Zoom starts. Hold button anywhere: 'TODO: Create a watcher that mutes Spotify when Zoom launches and unmutes when Zoom closes. Could use application watcher callbacks.' Idea captured in 6 seconds. You'll implement it later and actually remember what you wanted.
Writing function docstrings
Your custom function takes three parameters and the names aren't self-explanatory. Hold button: 'Parameters: app is the application name to target, action is the window operation to perform, and fallback is what to do if the app is not running. Returns true if the action succeeded.' Proper documentation without the typing burden.
Noting workarounds and edge cases
You added a 100ms delay to a function because it was firing too fast. Hold button: 'The delay is necessary because some apps report as focused before their window is actually ready to receive commands. 100 milliseconds handles most cases. Slack needs 200.' The workaround is now explained forever.
Describing callback chains
Your automation uses nested callbacks that will be confusing later. Hold button: 'This callback fires when Safari activates. It then waits 500 milliseconds for the URL bar to be ready, reads the current URL, and stores it in the last visited sites table. The delay prevents reading a stale URL from the previous tab.' Complex flow, simple explanation.
Why Hammerspoon users choose Blurt over built-in dictation
| Blurt | macOS Dictation | |
|---|---|---|
| Activation | Single hotkey, instant start | Double-tap Fn or menu bar click |
| Speed | Text appears in under 500ms | 2-3 second delay before transcription starts |
| Technical vocabulary | Handles Lua terms and programming jargon | Struggles with callback, hotkey, and function names |
| Reliability | Works consistently in any text editor | Sometimes fails silently in terminal editors |
| Price | $10/month or $99/year | Free (built into macOS) |
| Free tier | First 1,000 words free | Unlimited but unreliable |
Frequently Asked Questions
Start Typing Faster Today
Free to try — no credit card required
Download Blurt