community
The community repository provides a comprehensive, community-supported configuration for the Talon voice control system. It includes a wide array of features, from basic text manipulation and keyboard shortcuts to application-specific commands and advanced code editing tools.
The repository leverages several key dependencies:
- Talon: The core voice control system which provides the framework to execute voice commands, manage contexts, and interact with the operating system. All the files in this repository extend and customize Talon's functionality.
- Python: Used extensively for implementing core logic, actions, and UI elements for Talon extensions and language support.
- Skia: Used by Talon, particularly for drawing custom UIs such as the mode indicator and mouse grid.
- imgui: A cross-platform UI library that is used by Talon to create custom GUIs, including help windows and command pickers.
- cubeb: A cross-platform audio API that provides support for microphone selection in Talon.
- pre-commit: A tool that manages and runs code linters and formatters.
- pytest: A Python testing framework that provides the ability to test Talon functionality without launching the full application.
- Various external libraries and command line utilities: Some features rely on external tools or APIs to operate (e.g.,
i3-msgfor i3 window management,wslpathfor path translation in WSL, andcurlfor remote procedure calls).
Here's a breakdown of the most important and interesting subdirectories and files:
-
The
coredirectory contains the fundamental functionality of the Talon community configuration. It manages aspects of Talon such as text manipulation, code snippets, vocabulary, key bindings, application switching, and many other core systems.core/abbreviatedefines a system for expanding abbreviations based on a dictionary and a CSV file.core/app_switcherprovides functionality to switch between and launch applications using voice commands, using platform-specific CSV files to manage application names and overrides.core/editimplements core editing functionality for Talon, including actions for navigation, selection, and text manipulation. It includes platform-specific files and advanced editing capabilities.core/file_extensionenables users to speak file extensions using a Talon list populated by a CSV file.core/formattersdefines text formatters, used to format text based on surrounding context.core/helpprovides a help system for Talon, including an ImGui window, and support for showing the current Talon scope.core/homophonesimplements a GUI for selecting homophones using a CSV file and actions.core/keysprovides configuration files for mapping spoken words to keyboard keys, including platform-specific definitions and a phonetic alphabet.core/menu_chooseallows for selecting items from menus using voice commands.core/modesdefines and manages different modes of operation, such as "sleep", "command", "dictation", and various language modes, including platform specific handling for Dragon and Wav2Letter.core/mouse_gridcontains the code for the mouse grid system.core/navigationprovides context-aware navigation with different keybindings for browser, macOS, and other contexts.core/numberscontains logic for parsing and representing numbers using voice commands, including prefixed and unprefixed numbers, and ordinal numbers.core/screensmanages and displays information about multiple screens.core/snippetsmanages code snippets, including logic for parsing, inserting, and managing language-aware snippets stored in thecore/snippets/snippetssubdirectory.core/textdefines how Talon handles text input and formatting, including lists of words, phrases, and core logic for text manipulation and dictation.core/vocabularymanages custom vocabulary and word replacements, using a CSV file and a Talon list for user customizations.core/websites_and_search_enginesallows users to quickly navigate to websites and perform searches using voice commands.core/windows_and_tabsmanages windows and tabs across different operating systems, including support for snapping windows to different screen positions.
-
The
appsdirectory contains configurations for a wide variety of specific applications, including terminals, IDEs, browsers, and messaging apps. It often uses a combination of.talonfiles for voice commands and.pyfiles for implementing the underlying logic and actions. The files are often platform-specific. - Many of the subdirectories provide their own
README.mdfile describing how they work. -
apps/vscodeprovides particularly comprehensive support for VS Code using a file-based RPC system. Its subdirectory,apps/vscode/command_clientprovides the details of that RPC system, andapps/vscode/command_client/rpc_clientprovides the core implementation for the file based communication. -
The
plugindirectory contains a variety of extensions to Talon, ranging from basic text manipulation and command repetition to complex desktop management and custom UI elements.plugin/macroimplements a macro recording and playback system.plugin/desktopsenables cross-platform virtual desktop management.plugin/mouseprovides comprehensive mouse control.plugin/talon_draft_windowimplements a dedicated text editing window using word labels for voice-driven manipulation.plugin/repeaterenables repeating commands and phrases.plugin/datetimeinsertprovides a plugin for inserting date and time formats.plugin/cancelprovides a way to cancel a spoken command using a specific phrase.plugin/subtitlesdisplays subtitles of speech input on the screen.plugin/are_you_sureimplements a confirmation dialog before executing potentially destructive actions.plugin/talon_helpersprovides helper utilities for debugging and working with Talon, and an action to create new app contexts.plugin/gamepadprovides gamepad support for Talon.plugin/text_navigationimplements advanced text navigation.plugin/thenprovides a "then" command to chain otherwise ambiguous commands.plugin/microphone_selectionprovides a microphone selection UI.plugin/draft_editorenables using a text editor as a draft editor.plugin/symbolsdefines commands for inserting and wrapping text with symbols.plugin/mediaimplements basic media controls.plugin/command_historyadds command history functionality to Talon.plugin/screenshotprovides screenshot functionality.plugin/mode_indicatordisplays a graphical mode indicator.plugin/listening_timeoutimplements a timeout for speech recognition.
-
The
tagsdirectory contains a collection of subdirectories, each representing a different tag used to group related commands and functionality in Talon. These subdirectories provide reusable components for adding common features:tags/messagingimplements commands for controlling multi-channel messaging applications.tags/file_managerprovides a way to interact with the file system.tags/browserdefines common browser actions.tags/command_searchallows searching for and executing other Talon commands by name or description.tags/chaptersprovides a way to navigate chapters in a reader application.tags/pagesprovides commands for page navigation.tags/splitsmanages window splits.tags/findimplements a simple find functionality.tags/line_commandsprovides a set of line navigation and manipulation commands.tags/emojicontains functionality for inserting emoji, emoticons, and kaomoji.tags/find_and_replaceprovides advanced find and replace functionality.tags/debuggerprovides voice control for debuggers.tags/multiple_cursorsadds support for multiple cursors.tags/terminalprovides support for interacting with terminal applications.tags/addressprovides a way to navigate to locations using an address such as a file path.
-
The
langdirectory contains support for a variety of programming and markup languages, including Python, Rust, Lua, Terraform, R, SQL, Scala, Protocol Buffer, PHP, C#, CSS, HTML, Java, C, Batch, Ruby, Elixir, Kotlin, Typescript, Talon, Javascript, Vimscript, and Markdown. Each language subdirectory typically includes a.pyfile defining core logic, lists, and actions, and a.talonfile for voice commands. Thelang/tagsdirectory provides a reusable set of rules that can be included in other language modules. -
The
testdirectory provides tests for the community repository, with stub implementations of the Talon APIs for use in automated tests.- The
test/stubsdirectory provides a stub implementation of the Talon API, allowing for isolated and faster testing, using python files in thetest/stubs/talonsubdirectory.
- The
-
The
migration_helpersdirectory provides functionality to convert CSV files into.talon-listfiles, a more robust method of managing Talon lists. -
The
core/snippets/snippetsdirectory stores.snippetfiles that define code snippets, and the core logic for handling snippets is located incore/snippets. -
The
core/vocabularydirectory defines how custom vocabulary is loaded, modified, and used by Talon. -
The
core/keysdirectory contains configuration files for mapping spoken words to keyboard keys, with platform specific lists for special and modifier keys. -
The
core/websites_and_search_enginesdirectory defines lists of websites and search engines and allows for using them through voice commands. -
The
core/edit_text_filedirectory allows opening commonly edited text files using a preferred text editor. -
The
core/modesdirectory defines and manages different modes of operation for Talon. -
The
core/formattersdirectory provides functionality for formatting text within Talon. -
The
core/navigationdirectory defines actions for navigating forward and backward, using different keybindings based on the context. -
The
core/numbersdirectory provides files for parsing and representing numbers using voice commands, including prefixed and unprefixed numbers and ordinal numbers. -
The
core/helpdirectory provides a help system for Talon, using ImGUI. -
The
core/menu_choosedirectory implements functionality for selecting items from menus using voice commands. -
The
core/homophonesdirectory implements a GUI for selecting homophones. -
The
core/windows_and_tabsdirectory manages windows and tabs across different operating systems. -
The
core/mouse_griddirectory implements a system for moving the mouse using a grid. -
The
core/file_extensiondirectory implements commands for inserting file extensions. -
The
core/screensdirectory provides functionality to manage and show information about multiple screens. -
The
_githubdirectory contains configuration files for GitHub features, such as workflows (in the_github/workflowssubdirectory) and Dependabot.
In summary, this repository is a complex and comprehensive configuration for the Talon voice control system. It provides a large number of features for text editing, code writing, application control, and system management, and all of these pieces work together to provide a cohesive and highly customizable experience.