* fix: add TranscriptionState to prevent race conditions & add debounce
* refactor(transcription): replace state machine with actor coordinator
* some cleanup
* format
* minor cleanup
* format
---------
Co-authored-by: CJ Pais <cj@cjpais.com>
* feat(linux): add KDE Plasma 6 Wayland support via kwtype
On KDE Plasma 6 Wayland, existing input tools have limitations:
- ydotool type: cannot handle German umlauts (ö, ä, ü, ß)
- wtype: doesn't work (KDE lacks zwp_virtual_keyboard_manager_v1)
- ydotool key: key combos don't reach native Wayland apps like Kate
This adds support for kwtype, which uses the KDE Fake Input protocol:
- Properly handles Unicode characters including German umlauts
- Works with native Wayland applications (Kate, Dolphin, etc.)
- Requires kwtype to be installed: https://github.com/Sporif/KWtype
Changes:
- Add is_kde_plasma() and is_kde_wayland() detection in utils.rs
- Add kwtype integration for direct text typing on KDE Wayland
- Add wl-copy integration for clipboard operations on Wayland
- Skip wtype on KDE (known not to work)
Recommended: Use PasteMethod::Direct on KDE Wayland for best results.
* add -- to make sure input is good
---------
Co-authored-by: CJ Pais <cj@cjpais.com>
* fix: unload model on cancel when immediate unload enabled
adds model unload check to cancel_current_operation() to match
the behavior in transcribe(). previously, cancelling with escape
would leave the model loaded even with "unload immediately" enabled.
fixes#479
* also fix model not unloading if there is empty transcription
* refactor to util function
---------
Co-authored-by: CJ Pais <cj@cjpais.com>