Repository navigation
Releases: jonochang/voxput
Release list
v0.3.7
What's new
Toggle mode
A new Push-to-talk switch in Settings → Keyboard Shortcut lets you choose between two recording modes:
- Push-to-talk (default): hold the shortcut to record, release any key to stop
- Toggle mode: press once to start recording, press again to stop
Configurable via home-manager with gnome.pushToTalk = false.
Fix: push-to-talk key-release on Wayland
The previous implementation listened for key-release-event on global.stage, which is not delivered when an application window has keyboard focus on Wayland. Push-to-talk now uses Main.pushModal() to temporarily grab keyboard input to gnome-shell for the duration of the recording, ensuring the release is detected reliably.
v0.3.6
Fix: Super+D shortcut unresponsive after an error
After a gnome-shell crash (e.g. from the Clutter virtual keyboard in v0.3.3–v0.3.4), voxputd could be left in `error` state. The push-to-talk shortcut silently returned early for any non-idle state, so pressing Super+D did nothing — while the menu Toggle still worked because it calls the Toggle RPC directly.
The shortcut now only blocks during active transcription. Starting from `error` state is allowed; the daemon resets cleanly on a new StartRecording request.
Auto-paste: ydotool daemon required
If auto-paste is enabled but the shortcut types nothing, the ydotool daemon is likely not running. Add to your NixOS system configuration:
```nix
services.ydotool.enable = true;
```
Then rebuild and log out/in. The transcript is always copied to the clipboard as a fallback (Ctrl+V to paste).
v0.3.5
Fix: auto-paste no longer crashes gnome-shell
Clutter.VirtualInputDevice.notify_keyval() (used in v0.3.3–v0.3.4) routes events through gnome-shell's own Clutter event pipeline. Injecting a full transcript as hundreds of rapid key events destabilises the shell, causing gnome-shell to crash and the GDM login screen to appear.
Auto-paste now uses ydotool, which injects keystrokes via the kernel's uinput subsystem — completely outside the Wayland compositor. This is the correct approach for programmatic text input on GNOME Wayland.
Required: enable the ydotool daemon
Add to your NixOS system configuration (not Home Manager):
services.ydotool.enable = true;pkgs.ydotool is added to your user packages automatically when gnome.autoPaste = true in the Home Manager module.
Clipboard fallback
The transcript is always copied to the clipboard first. If ydotool is not found, the clipboard is still set and you can paste manually with Ctrl+V (or Ctrl+Shift+V in terminals).
v0.3.4
Fix: auto-paste no longer types into the lock-screen password field
Clutter.VirtualInputDevice events are processed within gnome-shell's own Clutter scene. If the screen locked (idle timeout) during transcription, those keystrokes were delivered to the lock-screen password field.
This release adds a Main.screenShield.locked guard — checked immediately when the transcript arrives and again after the 300 ms dispatch delay — so keystrokes are silently dropped whenever the screen is locked.
The 300 ms delay before injecting keystrokes also gives Mutter time to finish processing the stop-recording keybinding, which should improve reliability.
v0.3.3
Fix: auto-paste now works on GNOME Wayland
wtype (used in v0.3.2 for auto-paste) relies on the zwlr_virtual_keyboard_manager_v1 protocol, which GNOME's Mutter compositor does not implement. This caused auto-paste to silently do nothing on GNOME.
Auto-paste now uses Clutter.VirtualInputDevice.notify_keyval() — Mutter's own virtual keyboard API. It types the transcript directly into the focused window with no external tools required. wtype is no longer a dependency.
v0.3.2
What's new
- Auto-paste — transcript is typed directly into the focused window after transcription (requires
wtype). Toggle in extension preferences or setgnome.autoPaste = truein the Home Manager module. - GNOME Shell 49 support added to extension metadata
- Push-to-talk fix — keyboard shortcut now reliably works on Wayland by using daemon state (idle→start, recording→stop) rather than depending on key-release events
NixOS / Home Manager
services.voxput = {
enable = true;
gnome = {
enable = true;
autoPaste = true; # adds wtype and enables auto-paste
};
};v0.3.1
Fixes
- Push-to-talk keyboard shortcut: hold to record, release any key to stop
- Integration tests now skip gracefully when
GROQ_API_KEYis unset (fixes Nix sandbox build failures) - Nix package builds from flake source directly — no git tag required for flake users
package.nixaccepts optionalsrcargument, eliminating duplication withflake.nix
NixOS / Home Manager
inputs.voxput.url = "github:jonochang/voxput";
nixpkgs.overlays = [ inputs.voxput.overlays.default ];
services.voxput = {
enable = true;
gnome.enable = true;
};v0.3.0
What's new
- Daemon (
voxputd) — background D-Bus service with push-to-talk support - GNOME Shell extension — top-bar indicator, push-to-talk shortcut (hold to record, release to stop), configurable via preferences
- Clipboard output — transcripts are automatically copied to the clipboard
- NixOS / Home Manager module — single flake input wires up the daemon, D-Bus activation, and GNOME extension
Installation
See the README for full instructions.
NixOS / Home Manager
inputs.voxput.url = "github:jonochang/voxput";
nixpkgs.overlays = [ inputs.voxput.overlays.default ];
# In your Home Manager config:
imports = [ inputs.voxput.homeManagerModules.default ];
services.voxput = {
enable = true;
gnome.enable = true;
};