GuidesWWorkspacesAuto-detecting workspaces
Beginner6 min read

Auto-detecting workspaces

How InkSpoke decides which workspace applies, how tag scoring really works, and why your tag might not be firing.

A workspace activates on tags. Each tag is scored against the foreground window title and the application name, and the highest-scoring workspace wins.

Resolution order

Auto-matching is only the third of five steps. In order:

  1. 01
    A pinned workspace
    If you pinned one, it always wins and nothing else is consulted.
  2. 02
    Your overlay override
    If you changed the workspace dropdown on the listening overlay yourself, that choice is used.
  3. 03
    Tag matching
    Scores every active workspace against the current window. Can be disabled with the Smart Context setting.
  4. 04
    The default workspace
    Whichever workspace is flagged as default. This runs even with smart matching off.
  5. 05
    No workspace
    Your transcript is refined with no workspace context.
Pinning is the fastest way to test an entry. Pin the workspace, dictate, confirm the behaviour, then unpin and fix the tags.

How a tag scores

For each tag, InkSpoke tries the window title first, then the app name as a weaker fallback — so a title match beats an app-name match on a tie. A tag scores when:

  • It appears as a substring, case-insensitively — the strongest and most common case
  • It matches a word after the text is split on spaces, dashes, slashes, dots and brackets, with trailing digits stripped — this is what makes iterm match "iTerm2"
  • For tags of five characters or more, it is within a couple of typos of a word in the text

Scores are summed across all of a workspace's tags, and longer tags are worth more. A workspace with zero score never matches.

!
Only active workspaces are considered. An inactive workspace will not match no matter how good its tags are.

Writing tags that work

GoalTag
Match Slackslack
Match your editorcode or cursor
Match a specific projectacme-api — matches the repo name in the title bar
Match Gmail in a browsergmail — matches the page title, not the URL
!
There is no URL matching and no file-path matching. A browser is matched on its window title, which usually contains the page title. That works well for Gmail or Notion and poorly for sites with generic titles.

Short tags are dangerous because substring matching is greedy. A tag of go will match "Google", "Django" and "Cargo". Prefer tags of five characters or more.

Exact application matching

For a tag that must match one specific application and nothing else, prefix it with bundle: and give the exact identifier — the bundle ID on macOS, or the process name on Windows:

example · exact tags
bundle:com.tinyspeck.slackmacgap
bundle:Code
You have to type these by hand — picking an app from the app picker writes its display name as an ordinary tag, not a bundle: tag. It is worth the effort when a plain tag keeps matching the wrong window.

When the wrong workspace fires

  • Check nothing is pinned — a pin overrides everything
  • Check the workspace is Active
  • Look at the actual window title; it is often not what you assume
  • Remember scores add up — a workspace with five loose tags can outscore the one you wanted
  • Use the overlay dropdown to confirm which workspace was chosen for a given dictation
Next in this track

Keep going.