apps
Overview
This directory acts as the central hub for application-specific integrations within the Talon voice control system. It provides a robust, modular layer that maps spoken voice commands to specific application features, controls, and workflows across macOS, Windows, and Linux.
Rather than defining a fragmented vocabulary for every program, these integrations frequently leverage Talon's system-wide behaviors (represented as tags, such as user.tabs, user.file_manager, or user.pages). When you focus on a specific application, the python scripts in these directories override global Talon actions and map them to that application's specific keyboard shortcuts, APIs, or terminal commands.
How It Works
The system utilizes a structured, context-aware routing architecture. The typical integration is split into three main parts:
- Application Identification: A Python script uses Talon’s
ModuleandContextAPIs to declare and match an application across different operating systems. This matches bundle IDs (macOS), executable names (Windows/Linux), or window titles. - Tag and Capability Activation: A corresponding
.talonfile activates standard system-wide capabilities (e.g., standard browser actions, terminal commands, or page-navigation controls) whenever the specified application matches the active window. - Action Implementations & Overrides: The Python script overrides Talon's abstract actions to send the specific keyboard shortcuts or programmatic commands expected by the application.
For complex applications, integrations extend beyond basic keypress simulation to interact with local development servers, process registries, or OS-level IPC mechanisms.
Categorized Application Directory
To help navigate this extensive workspace, the integrations can be grouped by their functional roles:
IDEs and Text Editors
These integrations provide robust navigation, refactoring, code execution, and panels controls for major developer environments:
- vscode: Integrates with Visual Studio Code (and derivatives like Cursor) using a high-performance, file-based RPC command server to trigger native actions directly, falling back to the Command Palette if the extension is missing.
- jetbrains: Controls JetBrains IDEs (PyCharm, IntelliJ, etc.) by communicating with a local REST HTTP server exposed by the "Voice Code Idea" plugin, enabling reliable command execution independent of hotkeys.
- eclipse: Overrides generic coding and navigation actions to map key sequences to Eclipse's IDE shortcuts.
- emacs: Features an extensible table-driven command lookup system mapping Emacs Lisp functions to key combinations stored in a CSV file.
- positron: Targets Posit's data science IDE, using the VS Code command API to control specialized data panels, plots, and notebooks.
- obsidian: Connects voice inputs to Obsidian's note-taking tool using either local CLI commands or the internal Command Palette.
- rstudio: Provides voice controls for RStudio on macOS, detailing specific R-operator and chunk-execution bindings.
- notepad++ and notepad: Enable standard editing, tab controls, and line commands for popular Windows text editors.
- apple_notes: Standardizes text styling and sidebar management in macOS Apple Notes.
Web Browsers and Web Applications
These directories enable general-purpose web browsing controls (back, forward, reload, tab switching) and streamline web-specific hotkeys:
- chrome, firefox, edge, opera, arc, orion, vivaldi, and brave: Integrate popular web browsers across different operating systems, translating universal browser actions into native keyboard shortcuts.
- github: Maps global navigation, repository tabs, pull requests, and CI/CD operations to GitHub's native web keys.
- gitlab: Handles repository, issue tracking, and merge request navigation using sequential keystroke simulations on GitLab.
- protonmail and outlook (Web): Optimize email composition and mailbox triage workflows inside web-based interfaces.
- twitter: Bridges timeline navigation and action shortcuts on Twitter's web interface.
Note: As detailed in the main README.md, web application integrations that rely on browser.host matching require a browser extension (like "URL in Title") on certain operating systems to write the active URL into the window title.
Terminal Emulators and Shells
These integrations bridge Unix shell utilities, path tracking, and tabbed interfaces within terminal applications:
- powershell: Extracts working directories from the Windows title bar and automates dynamic title updates.
- wsl: Discovers local WSL installations from the registry, parses active paths from terminal windows, and leverages the
wslpathutility to translate paths between Windows and Linux. - mintty: Standardizes command-line interactions on Windows (Cygwin/MSYS2/Git Bash) and parses paths using the
cygpathbackend. - windows_command_processor: Drives the legacy Windows Command Prompt (
cmd.exe) in standalone or Windows Terminal windows. - windows_terminal: Maps splits, panes, tabs, and environment controls in Windows Terminal.
- apple_terminal and iterm: Support macOS terminal development, providing path extraction, tab jumps, and Unix shell utilities.
- gnome_terminal, kde_konsole, guake, terminator, termite, and xfce4_terminal: Map standard terminal shortcuts (like Ctrl-Shift-C/V for copy/paste) and window layouts inside Linux terminal emulators.
CLI Tools and Utilities
These modules activate specialized vocabulary groups for standard command-line programs:
- git: Uses capturing rules and dictionary mappings to generate complex command structures (such as
git commit -m) and provides single-character hotkeys during interactive patch staging. - gdb: Implements debugger workflows and maps commands for memory hexdumping and register inspection under a toggleable debugging tag.
- kubectl: Enables shorthands prefixed with
"cube"to manage container resources dynamically. - anaconda and terraform: Expose lifecycle management commands for Python environments (
conda) and infrastructure-as-code deployments (terraform). - tmux: Maps standard tab and split window commands to tmux windows and panes using its CLI commands or keystroke prefix strings.
- taskwarrior: Facilitates task management, modification, and lists from the terminal.
File and Window Managers
Integrations designed to manipulate the operating system GUI or layout:
- windows_explorer: Standardizes Windows Explorer and File Dialog behavior, including OneDrive normalization and opening terminals in the active directory.
- finder: Exposes macOS Finder controls, view modes, and folder history, utilizing AppleScript to spawn terminal windows in the active folder.
- nautilus and dolphin: Support the primary file managers on Linux (GNOME and KDE Plasma).
- i3wm and amethyst: Drive the i3 window manager (using
i3-msgIPC calls) on Linux, and Amethyst tiling window controls on macOS. - dock: Interfaces with the macOS Dock to trigger App Exposé, Launchpad, or show the desktop.
Document Viewers and PDF Readers
These modules wire standard page-turning and document-navigation commands to applications:
- adobe, nitro_reader, and foxit_reader: Support major Windows PDF viewers.
- evince and atril: Enable hands-free document reading on Linux.
- sumatrapdf and okular: Provide cross-platform PDF viewing wrappers.
- kindle: Drives Kindle reading layouts on Windows.
- calibre: Integrates Calibre's document and E-book viewer.
Messaging and Productivity Tools
- discord and slack: Map navigation, sidebars, media drawers, and call states for communications platforms.
- teams and signal: Integrate video meetings and private messenger controls across operating systems.
- thunderbird: Uses fine-grained context routing based on localized window titles to isolate the mail list, message editor, calendar, and address book views inside Mozilla Thunderbird.
- evernote: Adjusts keyboard delay tuning on macOS to allow reliable note editing.
- 1password and keepassx: Deliver global auto-fill and secure credentials database management.
- meld: Provides visual comparison, file merging, and patch execution shortcuts.
- dunst: Controls notification daemon parameters and allows you to dismiss system notifications on Linux.
Talon Inspection and Testing
These configurations target internal development layouts of Talon:
- talon/talon_debug_window: Detects the beta Talon Debug Window, exposing voice commands to filter actions, settings, and tags easily.
- talon/talon_repl: Integrates with the interactive Talon REPL console to run input simulations and inspect system registries.