Guides🎤Voice commandsControlling apps by voice
Intermediate5 min readPro

Controlling apps by voice

Open, focus, hide and close applications — and an honest account of what works on which platform.

Six of the ten action types target applications: open, close, force close, bring to front, send to back, and hide.

!
Support is genuinely uneven, so check this table before building a workflow. macOS is the only platform where all six work.
macOSWindowsLinux
Open appYesYesYes
Close / force closeYesNoForce close only
Bring to front / send to back / hideYesNoX11 only

On Windows, everything except Open app currently logs a message and does nothing. On Linux the window actions need wmctrl and xdotool, and under Wayland they cannot enumerate windows at all, so they quietly no-op — force close still works.

The same limitation means "use the focused app" as a target never resolves on Windows, because the focused-app lookup is not implemented there either.

How an app is identified

Each platform uses a different identifier, which is why a command bundle is not portable between machines running different systems:

PlatformIdentifier
WindowsThe path to the Start Menu shortcut
macOSThe bundle identifier, e.g. com.apple.Safari
LinuxA desktop entry name, window title, or process name

In the editor you can pick from installed applications, type an identifier by hand, or let InkSpoke resolve it from your speech at runtime against your favourites.

Prefer picking from the installed list. A hand-typed identifier that looks reasonable — a bare executable name on Windows, say — often will not launch.

Voice favourites

Favourites are the list {app} matches against, and each entry can carry aliases. Adding an application here is what makes "open my editor" work, and it also feeds the recogniser the words it needs to hear the name at all.

Links and files

Open URL accepts only http and https — other schemes are rejected. Open file hands the path to your operating system to open with its default application.

!
Open file performs no validation on the path. Treat a command that opens a file the same way you would treat a shortcut that runs one.
Next in this track

Keep going.