Repository navigation
Feature Request: Flexible Post-Processing Profiles with Hotkeys and Voice Commands #2442
BinaryRider
started this conversation in
Ideas
Replies: 1 comment 1 reply
|
Quick update: Due to an unexpected formatting issue when I originally submitted this discussion, several important sections were accidentally omitted. I've now restored the complete proposal, including the detailed voice-command workflow, fallback behavior, and clipboard/selected-text integration. Apologies for the confusion, especially to anyone who may have read the incomplete version. The discussion is now complete, and I'd be very happy to hear your thoughts and suggestions! |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
First of all, thank you for developing Handy! I've been using it on Windows 11 and really appreciate its lightweight, local-first approach and the experimental LLM post-processing functionality.
Having previously used SuperWhisper, I've been thinking about a few improvements that could make Handy's post-processing workflow more convenient, flexible, and powerful.
Some related suggestions have already appeared in other discussions. I'd like to bring these ideas together into a more comprehensive concept while keeping Handy's existing functionality as simple and familiar as possible.
The main idea is to preserve the current post-processing system as a "Default Profile" and introduce a separate, optional system of independently configurable "Custom Profiles".
Additionally, I'd like to suggest a few improvements to prompt context handling.
1. Preserve the existing post-processing functionality as the Default Profile
Handy currently provides two basic keyboard shortcuts:
These two fundamental shortcuts should remain unchanged.
The existing post-processing configuration would become the Default Profile.
The name "Default Profile" would be fixed and could not be renamed, making its special role immediately recognizable.
Importantly, the Default Profile would retain Handy's current behavior:
In other words, existing users could continue working exactly as they do today.
Improvement: Switch the Default Profile's prompt through the system tray
Currently, switching between saved prompts requires opening Handy's settings and selecting a different prompt.
It would be much more convenient if users could simply right-click the Handy system tray icon and choose a prompt from a submenu.
For example:
Selecting a prompt would only change the active prompt within the Default Profile. It would not start a recording.
The user would then press Shortcut 2 as usual to record and process speech using the newly selected prompt.
This preserves the existing workflow while eliminating the need to open the settings whenever a different prompt is required.
A related suggestion already exists in discussion #2064.
2. Introduce independent Custom Post-Processing Profiles
In addition to the Default Profile, Handy could offer an optional system of Custom Profiles.
Unlike the Default Profile, which retains the existing shared LLM configuration and multiple selectable prompts, each Custom Profile would have its own complete post-processing configuration.
Each Custom Profile would contain:
For example, users could create separate profiles for:
Each profile could use the LLM best suited to its task.
A lightweight local model might be sufficient for basic corrections, while a more capable local or cloud-based model could be used for complex editing tasks.
Custom Profiles would operate independently of the Default Profile.
Executing a Custom Profile must not change the Default Profile's LLM configuration or currently selected prompt.
Similarly, changing the Default Profile's prompt through the system tray must not affect any Custom Profile.
This separation would keep the system predictable and avoid unexpected changes between workflows.
3. Selecting Custom Profiles using keyboard shortcuts and optional voice commands
This is probably the most interesting part of the proposal.
Every Custom Profile would require a keyboard shortcut.
That shortcut must be different from Shortcut 1 (regular transcription) and Shortcut 2 (Default Profile).
However, multiple Custom Profiles could share the same shortcut if they use different spoken command words.
Example configuration
Shortcut 1 for regular speech-to-text is configured separately and is not shown in this table.
These shortcuts and command words are only illustrative examples.
How spoken command recognition would work
From the user's perspective, the workflow would be straightforward:
The user starts recording with the keyboard shortcut assigned to one or more Custom Profiles, speaks the desired command word followed by the text to be processed, and finishes the recording as usual.
Handy would first transcribe the complete spoken input. Only after transcription would it determine which Custom Profile should process the text.
For example, suppose the user presses Ctrl+Alt+H and says:
"SPANISH I am looking forward to our meeting."
Handy would perform the following steps:
In this example, Handy would identify the command SPANISH and select the Spanish translation profile.
The text passed to the LLM would be:
The resulting translation might be:
The important detail is that the command recognition would happen inside Handy, before any LLM request is made.
There would be no need to ask an LLM to interpret the command or select a processing mode.
This approach could reduce unnecessary processing, simplify prompts, and improve responsiveness, especially when working with local LLMs.
Command matching should ideally be case-insensitive, recognize complete command words rather than arbitrary prefixes, and tolerate normal transcription punctuation.
Profiles without spoken commands
A Custom Profile could also be assigned a shortcut without any spoken command.
For example, pressing Ctrl+Alt+S would directly execute the Summarization profile after recording.
No spoken prefix would be required.
Fallback behavior
If multiple profiles share a shortcut, I would suggest the following selection logic:
Case A: A matching spoken command exists
Execute the corresponding Custom Profile and remove the recognized command from the transcription.
Case B: No matching spoken command exists, but a profile without a command is assigned to the same shortcut
Execute that commandless profile using the complete, unmodified transcription.
Case C: No matching command exists and no commandless profile is assigned to that shortcut
Output the original transcription without LLM post-processing, just as regular speech-to-text would do.
This avoids silently discarding dictated text and does not require any mandatory global fallback profile.
The fallback profile is therefore simply the commandless Custom Profile assigned to the same shortcut.
Configuration rules
To prevent ambiguity, Handy could enforce a few simple rules:
These rules would allow flexible configurations while keeping the selection behavior deterministic.
4. Extend prompt variables with clipboard and selected-text context
Handy already supports the
${output}placeholder, which inserts the recognized speech into a post-processing prompt.It would be extremely useful to introduce at least one additional placeholder, preferably two:
${clipboard}– The current clipboard contents.${selection}– Text currently selected in the active application, where supported.These placeholders should work in both the Default Profile's prompts and Custom Profiles.
A. Clipboard context:
${clipboard}Imagine that a user has copied a paragraph to the clipboard and wants to translate, summarize, or rewrite it.
Instead of creating separate fixed prompts for every possible operation, the user could configure a general-purpose prompt:
Then the user could simply say:
"Translate this text into Spanish."
Or:
"Summarize this in three sentences."
Or:
"Rewrite this in a more professional tone."
The recognized speech would become the instruction, while the clipboard contents would provide the text to process.
This would effectively turn Handy into a voice-controlled text-processing assistant without requiring users to dictate the entire text again.
B. Selected-text context:
${selection}An even more convenient option would be to make currently selected text available to the prompt.
For example:
The user would not need to copy the selected text manually.
Ideally, this could work without modifying the clipboard.
I understand that reliably accessing selected text may be platform-dependent and could require different implementations on Windows, macOS, and Linux.
Therefore, I would consider
${clipboard}the simpler initial enhancement, with${selection}as a possible subsequent improvement.Privacy considerations
Clipboard contents and selected text may contain sensitive information.
I would therefore suggest that these values should only be read and included when the executed prompt explicitly references the corresponding placeholder.
They should not automatically become part of every LLM request.
This would be particularly important when using cloud-based LLM providers.
5. How the three workflows would coexist
The intention is to keep the overall design understandable and avoid interfering with established functionality.
The system tray would only be responsible for switching between the saved prompts of the Default Profile.
Custom Profiles would not appear in this prompt-selection submenu and would not replace or modify the Default Profile.
This is an intentional separation.
Users who only need Handy's existing functionality would not have to configure any Custom Profiles.
Users with more advanced workflows could introduce additional shortcuts and spoken commands as needed.
6. Related GitHub discussions
I found several existing discussions addressing parts of this proposal:
The intention is not to disregard or duplicate these contributions.
Instead, I'd like to explore how these ideas might fit together while maintaining a clear distinction between Handy's existing post-processing workflow and the proposed optional Custom Profiles.
7. Feedback and alternative suggestions are very welcome!
This is a conceptual proposal based on my experience using Handy and SuperWhisper, not a rigid technical specification.
I don't know enough about Handy's internal architecture to judge the implementation effort, and I certainly wouldn't expect all these features to be implemented at once.
The different parts could potentially be developed independently.
I'm especially interested in hearing what the developer, contributors, and other Handy users think about:
There may be simpler, more elegant, or more intuitive solutions.
I'd be very happy if other users contributed their own experiences, suggestions, or alternative approaches.
My main goal is to make Handy even more convenient for everyday use while preserving the simplicity that makes it such a great application.
Thank you for reading, and thanks again to everyone contributing to Handy!
All reactions