Skip to content

apps

The community/apps directory contains a collection of subdirectories, each providing specific configurations and commands for various applications. These configurations use a combination of .talon files for voice commands and .py files for implementing the underlying logic and actions. Most of these applications have their own README.md files which provide a more detailed explanation of how to use that particular application with Talon.

Here's a summary of the most important or interesting subdirectories:

  • apple_terminal: This directory provides support for using Talon with the Apple Terminal application. It activates tags for terminal functionality, readline keybindings, and other shell-related features, such as git, anaconda, and kubectl. It also remaps some actions and provides file manager actions based on the terminal's current path.

  • outlook: This directory contains Talon scripts for interacting with Outlook, with separate files for the web version (outlook_web.talon) and the Windows desktop application (outlook_win.talon).

  • terraform: This directory provides voice commands for the Terraform CLI, with a core terraform.talon file and a terraform.py file that defines the application context and the user.terraform_client tag.

  • iterm: This directory contains configuration files for the iTerm2 terminal application on macOS. It defines custom actions and activates tags for enhanced terminal interaction, including terminal, user.generic_unix_shell, user.git, user.kubectl, user.tabs, and user.readline tags.

  • slack: This directory provides voice control for the Slack application on macOS, Windows, and Linux. It uses separate .py and .talon files for each operating system to define actions and commands, such as line_insert_down, workspace navigation, channel navigation, and messaging features.

  • windbg: This directory provides voice control for the WinDbg debugger. It defines actions for stepping through code, viewing breakpoints, and other debugging tasks using windbg.py, while windbg.talon provides the voice commands that trigger those actions.

  • visualstudio: This directory contains files that provide voice control for the Visual Studio IDE on Windows. It defines actions for navigation, code editing, and debugging using the .py files, and voice commands that trigger those actions in the .talon file. It also includes tags to enable additional modules.

  • vivaldi: This directory provides support for controlling the Vivaldi browser. It defines actions for toggling panels, closing tabs, and performing browser functions in vivaldi.py, and it defines platform-specific overrides in vivaldi_mac.py. vivaldi.talon binds voice commands to those actions.

  • wsl: This directory contains files to enable voice control of the Windows Subsystem for Linux (WSL) within the Windows Terminal. The wsl.py file translates paths between Windows and WSL, and the wsl.talon file provides voice commands that leverage that.

  • notepad++: This directory provides Talon bindings for Notepad++ on Windows, including actions for tab navigation, commenting, line manipulation, and find and replace using keyboard shortcuts.

  • gnome_terminal: This directory contains configuration for the Gnome Terminal application. It defines actions for tab and window management, and activates the terminal, user.tabs, user.generic_unix_shell, user.git, and user.kubectl tags.

  • stata: This directory contains files to add support for the Stata application. It provides actions for defining the language for code contexts and executing Stata commands.

  • vscode: This directory provides comprehensive support for VS Code. It includes a command_client subdirectory that provides a mechanism for Talon to communicate with VS Code using a file-based RPC system. It also provides many custom commands and tags via the vscode.talon and vscode.py files.

  • The command_client subdirectory has its own subdirectories, which are also of interest:
  • foxit_reader: This directory contains files to enable Talon control of the Foxit Reader application, including actions for page navigation, and tab management.

  • discord: This directory contains files to control the Discord application. It defines actions in discord.py that are implemented for macOS in discord_mac.py and for Windows and Linux in discord_win.py, and it provides voice commands that map to those actions in discord.talon.

  • opera: This directory provides support for controlling the Opera web browser on macOS, Windows and Linux, including tab management and browser actions. It provides actions common to all platforms in opera.py, and platform-specific implementations in opera_mac.py and opera_win_linux.py.

  • orion: This directory contains files to support the Orion browser on macOS, including actions for opening new tabs, managing downloads, extensions, and the tab overview.

  • nitro_reader: This directory provides support for interacting with Nitro Reader, specifically Nitro Reader 5. The nitro_reader_5.py file provides implementations for opening tabs, and navigating pages, while nitro_reader_5.talon activates the user.pages and user.tabs tags.

  • kindle: This directory provides support for controlling the Kindle application. The kindle.py file defines the app, kindle.talon activates the user.pages tag, and kindle_win.py defines the implementation of those page navigation commands.

  • mintty: This directory provides configuration for the Mintty terminal application, including file management actions, and remapped editing actions. It activates the terminal, user.generic_unix_shell, user.file_manager, user.git, and user.kubectl tags.

  • notepad: This directory contains the Talon files for controlling the Windows Notepad application. The notepad.talon file activates the user.tabs and user.find_and_replace tags, and notepad.py defines the application context and a filename() action.

  • adobe: This directory contains configurations for Adobe Acrobat Reader DC. It implements actions for tabbing, zooming, and page navigation in adobe_acrobat_reader_dc_win.py, and the adobe_acrobat_reader_dc.talon file activates the user.tabs and user.pages tags.

  • keepassx: This directory provides commands for common KeePassX actions like opening, saving, and locking databases, as well as adding, editing, and deleting entries. The implementation is in keepassx_linux.talon, and is intended for use on Linux.

  • kubectl: This directory provides voice commands for interacting with kubectl, the Kubernetes command-line tool. The kubectl.talon file contains the commands, and the kubectl.py file defines the user.kubectl tag, and provides lists that are used in kubectl.talon.

  • evince: This directory provides support for controlling the Evince document viewer on Linux. The evince_linux.py file provides implementations of various page navigation actions, and evince.talon sets the user.pages tag, enabling those actions.

  • evernote: This directory provides a small configuration specific to Evernote on macOS. The mac.talon file sets a key_wait setting that helps with the multiple keypress issues that Talon can sometimes have.

  • windows_explorer: This directory provides support for interacting with Windows Explorer and file dialogs. The windows_explorer.py file provides implementations for file and folder actions, and windows_explorer.talon provides voice commands that call those actions.

  • 1password: This directory provides platform specific commands for using 1Password. The 1password.py file defines the application and custom actions, and the 1password_mac.py and 1password_win.py implement the actions by simulating keyboard presses. The 1password.talon and 1password_global.talon files provide voice commands for those actions.

  • jetbrains: This directory provides support for interacting with JetBrains IDEs. It uses an HTTP-based RPC system to communicate with the IDE, and the jetbrains.talon file defines a large number of useful commands for navigating and refactoring code, using the actions in jetbrains.py.

  • thunderbird: This directory provides support for controlling the Thunderbird email client, including inbox navigation, message composition, contact management, calendar and tasks. It includes OS-specific implementations, and it has specific configurations for different views within the application.

  • gdb: This directory contains files to enable voice control of the GNU Debugger (GDB). The gdb_active.talon file defines the voice commands and the gdb.py file defines the user.gdb tag, which is toggled by gdb_global.talon.

  • windows_terminal: This directory contains configurations for the Windows Terminal application, including support for tabs, splits, and file management actions. The windows_terminal.py file implements the actions, and windows_terminal.talon activates the necessary tags.

  • protonmail: This directory contains scripts for interacting with the ProtonMail web application, including navigation, email management, and composer actions. The protonmail.talon file contains most of the voice commands.

  • calibre: This directory provides support for controlling the Calibre ebook management software and its ebook viewer. The calibre.py file defines the context for the main application, and calibre_viewer.py and calibre_viewer.talon provides the configurations for the ebook viewer.

  • i3wm: This directory provides configurations for the i3 window manager on Linux. It provides commands for managing workspaces and windows. The i3wm.py file provides the implementations of various i3-msg commands, and i3wm.talon binds those to voice commands.

  • tmux: This directory contains files to enable voice control of tmux. It provides basic pane management with tmux.talon and a more comprehensive command set for Linux with tmux_linux.talon, all using actions defined in tmux.py.

  • brave: This directory contains configurations for the Brave browser. The brave.talon file activates the browser and user.tabs tags, and the brave.py file defines a tab_close_wrapper action.

  • anaconda: This directory provides integration with the conda package manager. The anaconda.talon file defines the voice commands, and the anaconda.py file defines the user.anaconda tag which enables them.

  • gitlab: This directory provides voice commands for interacting with GitLab in a web browser. The commands are implemented in the gitlab.talon file.

  • chrome: This directory provides configurations for the Google Chrome browser. The chrome.py file defines the application context, and the chrome.talon file enables the browser and user.tabs tags and defines some additional commands for Chrome.

  • rstudio: This directory contains support for the RStudio application on macOS. The commands are defined in the rstudio_mac.talon file, and provide a variety of actions for coding, debugging, and navigating the IDE.

  • github: This directory provides voice commands for interacting with GitHub in a web browser. The commands are implemented in the github_web.talon file.

  • amethyst: This directory provides voice commands for the Amethyst window manager on macOS. The amethyst.talon file contains the relevant commands.

  • taskwarrior: This directory provides voice commands for the Taskwarrior command-line task manager. The commands are implemented in the taskwarrior_linux.talon file, and are intended for use on Linux.

  • powershell: This directory provides configurations for the Windows PowerShell. The powershell_win.py file implements the actions, and the powershell_win.talon activates the terminal, user.generic_windows_shell, user.git, user.anaconda, and user.file_manager tags.

  • warp: This directory provides support for the Warp terminal application on macOS. The warp.talon file activates a number of tags, and warp.py defines the application context.

  • dunst: This directory provides configurations for the Dunst notification daemon. The dunst.talon file contains the voice commands.

  • windows_command_processor: This directory contains support for the Windows Command Prompt and Windows Terminal, including actions for file management and terminal interaction. The actions are implemented in command_processor_win.py and command_processor_actions_win.py.

  • teams: This directory contains support for controlling the Microsoft Teams application. The teams_linux.py file defines some Linux specific actions, teams.py defines the application, and teams.talon and teams_mac.talon define the voice commands for Linux/Windows and macOS, respectively.

  • finder: This directory contains configurations for the macOS Finder. The finder.py implements actions related to file management and navigation, while finder.talon activates tags and provides voice commands to call those actions.

  • signal: This directory contains configuration for the Signal application on Linux. The signal_linux.talon file contains the voice commands.

  • nautilus: This directory provides configurations for the Nautilus file manager on Linux. The nautilus.py file implements the actions, and nautilus.talon activates the user.tabs and user.file_manager tags.

  • arc: This directory provides support for the Arc browser. The arc.py file defines custom actions, little-arc_mac.talon defines a command for opening a new "Little Arc" window, and arc_mac.talon activates the browser, user.tabs, and user.command_search tags.

  • edge: This directory provides support for the Microsoft Edge browser. The edge.py file defines an action for opening the extensions page, and edge.talon activates the browser and user.tabs tags.

  • firefox: This directory provides support for the Firefox browser. The firefox.py file defines the application context and some generic actions, and the platform specific implementations are in firefox_win_linux.py and firefox_mac.py. The voice commands are in firefox.talon.

  • termite: This directory provides configuration for the Termite terminal application. The termite.talon file activates the user.kubectl, user.git, user.taskwarrior, and terminal tags.

  • guake: This directory provides configuration for the Guake terminal application on Linux. The guake_linux.py file activates the user.git, user.kubectl, user.tabs, and terminal tags, and provides tab management actions.

  • sumatrapdf: This directory provides configurations for the SumatraPDF application. The sumatrapdf.talon file activates the user.pages and user.tabs tags, and the sumatrapdf.py implements actions for tab management, zooming, and page navigation.

  • talon: This directory contains configurations that are specific to the Talon application itself.

    • talon/talon_repl provides commands for interacting with the Talon REPL, and includes commands for debugging and inspecting the state of the Talon runtime.
    • talon/talon_debug_window provides commands that are available when the Talon debug window is active, including commands to inspect internal talon structures, and dictating key combinations.
  • dock: This directory contains configurations to interact with the macOS Dock. The dock.py file defines actions for sending notifications and activating App Exposé, and dock.talon defines voice commands that trigger those actions.

  • git: This directory provides commands for interacting with Git from the command line. It provides a set of commands, arguments and convenience functions, that are implemented in git.talon, and used by git_add_patch.talon, using user.git_command, user.git_argument, and other lists defined in git.py.

  • safari: This directory provides support for the Safari browser. The safari.py file defines the application context and some browser actions, and safari.talon activates the browser and user.tabs tags.

  • eclipse: This directory provides voice commands for the Eclipse IDE on Windows. The eclipse_win.py file implements the actions, and eclipse.talon defines the voice commands that use those actions, and also defines some keybindings.

  • obsidian: This directory provides support for the Obsidian application. The obsidian.py file sets the default code language to markdown, and obsidian.talon activates the user.tabs tag.

  • emacs: This directory provides support for the Emacs text editor. The emacs.py file provides implementations of various actions, and emacs.talon defines voice commands for those actions. The emacs_commands.csv provides data to create short and spoken forms of Emacs commands, which are loaded by emacs_commands.py.

  • meld: This directory contains files that provide support for the Meld visual diff and merge tool, providing tab management and actions for moving between changes. The meld.py file implements the basic actions, and meld.talon provides the voice commands.

  • terminator: This directory provides configurations for the Terminator terminal emulator on Linux. The terminator_linux.py file sets up the application context, and provides implementations of various user, app, and edit actions.

  • kde_konsole: This directory provides support for the KDE Konsole terminal emulator on Linux. The kde_konsole.py file defines actions for tab management and remapped edit actions, and kde_konsole.talon activates the terminal, user.generic_unix_shell, user.git, user.anaconda, and user.tabs tags.

  • okular: This directory provides support for the Okular document viewer. The okular.py file provides actions for page navigation, and okular.talon activates the user.pages tag.

  • vscode/command_client: This directory is part of the VS Code support and provides a mechanism for Talon to communicate with VS Code using a file based RPC system.

    • vscode/command_client/rpc_client: This subdirectory provides the core functionality for implementing RPC using files. It includes a variety of utilities to prevent file locking and race conditions.

The top-level README.md file explains the use of browser.host and suggests browser extensions for non-macOS platforms to populate the browser.host matcher, which is used in some of the web app configurations.

These subdirectories contain configurations for a wide variety of applications, and they use a combination of .talon files for voice commands and .py files for the implementation. They often use tags to enable additional functionality from other parts of the Talon configuration. The README.md files that are contained within each directory provide more specific information.