This guide explains how to update Vocalinux to the latest version.
0.16.1 is a stability patch on the 0.16 series. The feature set is the same as 0.16.x. This release fixes wrong-model startup, leftover tray state after toggle stop, paste into terminals, GNOME XWayland layout after inject, and AppImages that needed a glibc newer than Debian 12. The installer now requires Python 3.11 and verifies model downloads.
| Feature | Description |
|---|---|
| Update checker | Settings → About checks stable/nightly; tray shows Update Available for newer GitHub releases (#631, #645) |
| Right Alt PTT default | New installs default to hold Right Alt (push-to-talk); existing configs keep their shortcut (#648) |
| Searchable languages | Type to filter the Speech Model language list (#672) |
| Delete unused models | Remove leftover downloaded speech models from Settings (#671) |
| AGPL-3.0 | License aligned with other VocaHQ projects (#660) |
| Family mic icons | App icon, tray states, and site favicons use the shared Voca family mic (#704) |
| Tone picker | Settings → Audio: Lift, Flick, Ember, Step, Voca, Soft, Chirp, Scale, Drop, Glass, Off, plus Preview. New installs default to Voca. Catalog uses family preview WAVs (#707, #708) |
| Installer | Justfile, uv lockfiles, distro python3-gi required (no pip sdist of PyGObject). Epic #701 still open (#700, #705, #706) |
- Startup: resolve model size per engine instead of the leftover generic
model_sizekey, so a VOSK save does not make whisper.cpp look for a missing medium model (#684 by @kacperpaczos, fixes #681) - Settings: save the model only after the engine loaded it, so a cancelled or failed download does not leave config pointing at a file that is not on disk (#685 by @kacperpaczos)
- Settings: unused downloads list sized to its real rows so leftover models are not clipped (#686 by @kacperpaczos, fixes #683)
- Config: one ConfigManager for the process so Settings writes are not overwritten by a stale cache (#691 by @kacperpaczos, fixes #689)
- Tray: stay idle after leftover transcription on toggle stop (#741)
- Tray: the missing-model notification can download the recommended model (#687 by @kacperpaczos)
- Injection: Ctrl+Shift+V when pasting into terminals, so Ctrl+V is not treated as verbatim insert (#734)
- IBus: sync the XWayland layout from GNOME after scoped inject (#742)
- Installer: survive a release without a checksum manifest; stop inventing GPUs (#736 by @sesav)
- Installer: leftover engine repair, just
--no-sync, ggml verify from #713 (#732) - AppImage: build against a glibc floor Debian 12 can run; boot tests on six distros (#743, #744 by @sesav)
- Installer: Python 3.11 floor, uv tooling, verified model downloads (epic #701 phases 2.5 and 5) (#713 by @sesav)
- Settings / About: even dropdowns, quieter About, family platform marks (#754)
- AUR:
python -m build --no-isolationworks with Arch extra setuptools 84 (was capped at<82, AUR comment by simona). Skipcontext_paramson AUR pywhispercpp 1.4.x so startup no longer dies withwhisper_full_params(AUR comments by avocadoboat, Masalababa; GitHub #625) - Docs: canonical VocaHQ Discord invite; VocaWin is unsigned beta; screenshots page says v0.16; README family/on-device copy (#749, #733, #735, #737)
See the full changelog.
0.16.0 is a minor release on the stable line. It adds an in-app update checker with tray notifications, defaults new installs to hold Right Alt push-to-talk, makes the language picker searchable, lets you delete unused downloaded models, and adds a family dictation tone picker. The license is AGPL-3.0. The installer is hardened (Justfile, uv lockfiles, distro python3-gi). The app icon, tray states, and site favicons use the shared Voca family mic.
| Feature | Description |
|---|---|
| Update checker | Settings → About checks stable/nightly; tray shows Update Available for newer GitHub releases (#631, #645) |
| Right Alt PTT default | New installs default to hold Right Alt (push-to-talk); existing configs keep their shortcut (#648) |
| Searchable languages | Type to filter the Speech Model language list (#672) |
| Delete unused models | Remove leftover downloaded speech models from Settings (#671) |
| AGPL-3.0 | License aligned with other VocaHQ projects (#660) |
| Family mic icons | App icon, tray states, and site favicons use the shared Voca family mic (#704) |
| Tone picker | Settings → Audio: Lift, Flick, Ember, Step, Voca, Soft, Chirp, Scale, Drop, Glass, Off, plus Preview. New installs default to Voca. Catalog uses family preview WAVs (#707, #708) |
| Installer | Justfile, uv lockfiles, distro python3-gi required (no pip sdist of PyGObject). Epic #701 still open (#700, #705, #706) |
- In-app update checker: Settings → About with stable/nightly channels (#631)
- Update notifications: Tray menu Update Available entry and About badge when a newer release exists (#645)
- Right Alt push-to-talk default: New installs only; existing configs are unchanged (#648)
- Searchable language combobox: Filter the long language list by name or code (#672, fixes #652)
- Delete unused models: Remove leftover downloaded speech models from Settings (#671, fixes #650)
- Disable missing-tray warning: Settings toggle for desktops that false-positive the tray check (#628, fixes #620)
- Family mic icons: App icon, tray states, and site favicons use the shared Voca family mic instead of the old Linux rounded-rect (#704)
- Family dictation tone picker: Settings → Audio dropdown (Lift, Flick, Ember, Step, Voca, Soft, Chirp, Scale, Drop, Glass, Off) plus Preview. New installs and unknown saved names default to Voca. A saved catalog id, including Off, is left alone. Enable remains the master mute; Off skips start/stop only (#707)
- About page: Settings → About groups this app, VocaHQ family sites, and talk-to-us (GitHub issues, Discord, X, email) (#718)
- IBus: Require a restorable engine for scoped injection (#623); restore engine after
register_componentteardown (#643, fixes #558); restore XKB layout after scoped injection on X11 (#665, fixes #664) - Injection: Stop typing
testduring the wtype probe (#627, fixes #622) - whisper.cpp: Skip unsupported
context_paramson pywhispercpp 1.4 (#626, fixes #625); use CUDA device 0 when CUDA-backed (#636); honor bundled GPU libs and skip software Vulkan devices (#674) - Audio: Filter unsafe virtual capture devices (#629, fixes #624); open stereo mics at native channel count (#673, fixes #666); catalog tones are the family preview WAVs, not the synthesized #707 files.
generate_sounds.pydoes not clobber catalog ids (#708) - Tray / Settings: Prefer Ayatana AppIndicator on KDE (#621); reuse Settings/Logs windows (#669, fixes #653); separate Close from Test Dictation (#670, fixes #651)
- Settings: Test Dictation no longer reports no speech when recognition never started (missing model / auto-pause / live engine out of sync) (#702)
- Clipboard: Restore after ydotool clipboard-paste (#588); text-only reads and safer overlapping restore (#646)
- AppImage: Ship transitive GI typelibs for non-Debian hosts (also hotfixed onto the v0.15.0 AppImages on 2026-08-03) (#637); pin pywhispercpp to the version
install.shdeclares so a newer PyPI wheel cannot break the Vulkan rebuild (#718) - Installer: Distro python3-gi is required; pip no longer builds PyGObject from sdist. Unset
XDG_SESSION_TYPE/XDG_CURRENT_DESKTOPno longer crash underset -u(#706) - Installer / downloads / tests: Gate
util-linux-extrato Ubuntu 24.04+ (#635, fixes #526); report failed model downloads (#690); stop the suite from overwriting realconfig.json(#694)
- Website screenshot refresh for v0.15 (#630)
- Prefer Ayatana AppIndicator in Fedora/Arch packaging hints (#638)
- CUDA device 0 note for dual NVIDIA (#644)
- Discord and VocaHQ README shields; VocaHQ URL migration; VocaGateway rename (#695, #696, #697)
- Discord invite and X handle point at VocaHQ (#722)
- vocalinux.com restyled to the Voca family workbench; Open Graph card uses the flat Tux (#728, #729)
- Website copy drops the stale 100% offline claim and marks VocaWin as alpha on the site (#717)
- Codeberg mirror tag force-push (#633)
- Installer hardening, Justfile in place of Makefile, and uv lockfiles with pinned build inputs. Epic #701 remains open (#700, #705 by @sesav)
See the full changelog.
0.15.0 is a minor release on the stable line. It redesigns settings navigation, adds AppImage packages, expands the speech-language catalog (Hungarian and many more), cleans up continuous dictation spacing/capitalization, adds power/GPU controls, and improves Wayland IBus on compositors that ship ibus-wayland, on top of the 0.14 packaging work (Flatpak, AUR, configurable hotkeys).
| Feature | Description |
|---|---|
| Searchable settings | Sidebar navigation with search replaces the seven-tab notebook (#601) |
| AppImage | Self-contained x86_64 and aarch64 builds attached to GitHub Releases (#573, #602) |
| Language catalog | ~33 selectable speech languages plus Auto-detect (incl. Hungarian); CLI choices derived from the same catalog; VOSK hides Whisper-only langs (#616, fixes #565) |
| Dictation polish | Auto-capitalize after . / ! / ?; append a trailing space after each completed utterance (#554, #608) |
| Auto-pause + keep-alive | Unload the model while configured apps run, or after an idle timeout (#592) |
| Vulkan GPU selection | Prefer a discrete GPU automatically; pick a device under Advanced settings (#590) |
| ibus-wayland | Prefer IBus on previously “unbridged” compositors when ibus-wayland is running (#614) |
CLI --version |
Print the installed version and exit (#563) |
- Searchable sidebar settings — Topic pages in a sidebar with live search instead of seven notebook tabs (#601)
- AppImage packaging — Relocatable x86_64 and aarch64 AppImages built in the release workflow (#573, #602)
- Expanded speech languages — Hungarian plus many high-demand Whisper languages in Settings/CLI; official Alphacephei VOSK models where available; Whisper-only languages stay hidden in the VOSK dropdown (#616 by @jatinkrmalik, fixes #565)
- Sidebar dictation controls — Recognition status, mic level, Test Dictation, and Close stay visible in the settings sidebar footer while switching pages (#618)
- Sentence capitalization — Capitalize at the start of dictation and after sentence-ending punctuation (#554, closes #553)
- Trailing space between utterances — Completed transcriptions leave a trailing space so the next session does not glue onto the previous sentence (#608, fixes #605)
- Auto-pause apps + model keep-alive — Optional unload while selected processes run; idle timeout unload for battery/Optimus laptops (#592, closes #445, #591)
- Vulkan discrete GPU auto-select + manual device — Prefer discrete devices; override in Advanced settings (#590, closes #589)
- IBus via ibus-wayland — On compositors previously treated as unbridged, use IBus when
ibus-waylandis available (#614 by @eiseleb47, closes #607) vocalinux --version— Print package version (#563, closes #555)
- Settings: Restore Custom Shortcut entry / Record / Set controls after the sidebar settings refactor (#619)
- Languages: Map English (India) (
en-in) to Whisper codeenfor whisper.cpp / Whisper / remote API (#617) - Audio: Stop Bluetooth mic probing from corrupting the heap — one PortAudio open per capture session, stop-before-close, no stereo probe on mono-only devices (#599, fixes #567)
- IBus: Keep engine teardown correct when parent
do_destroyfails (#613 by @eiseleb47, fixes #606) - Settings UI: Flatten info notices so helper text matches the rest of the dialog (#615)
- KDE Plasma Wayland: Skip unbridged IBus when
ibus-waylandis not present so injection does not silently fail (#577, fixes #574) - xdotool: Preserve input focus after injection (#564, fixes #549)
- Uninstall: Remove IBus data dir; stop the app by PID file; remove
~/.local/binlauncher wrappers reliably (#597, #569) - Installer: Prefer both libgirepository 1.0 and 2.0 when present (#583, fixes #571)
- AUR: Virtual
python-pywhispercppdependency; clipboard/wtype tools as optdepends (#579, #586) - UI: First-run dialog response without
Gtk.Dialog.do_response(#580, fixes #566) - Vosk: Italian and English-India entries in medium/large model tables (#551, fixes #550)
- Docs: Correct ydotool service setup guidance (#560, fixes #557)
- Marketing site redesign with workstation craft (#582)
- Languages marketing page with honest per-engine badges (#616)
- Multi-distro tray icon FAQ (#584)
- robots.txt no longer blocks indexable pages (#610)
- Website CI lint / action warning cleanup (#611)
See the full changelog.
0.14.2 is a stability patch on the 0.14 series. The feature set is the same as 0.14.x; this release fixes IBus reliability and settings dialog sizing.
| Feature | Description |
|---|---|
| Configurable Shortcuts | Bind any modifier combination to a key — e.g. Alt+R, Ctrl+Shift+V, or Super+F10 |
| FunASR / SenseVoice Remote API | Remote-API engine supports FunASR and SenseVoice via OpenAI-compatible endpoints |
| Flatpak packaging | Universal Flatpak (whisper.cpp) with sandbox-aware paths, global hotkeys, and Wayland paste injection |
| AUR package | Official Arch packaging and CI publish path |
| Layout-aware hotkeys | Combo keys respect non-US layouts |
| Wayland / IBus reliability | GNOME and KDE injection fixes, first-dictation FocusIn gate, engine process launch restored |
| Audio / hybrid-CPU | Recording device-index crash fixed; whisper.cpp no longer defaults to all cores on hybrid CPUs |
- IBus: Restore engine process launch after the Flatpak XDG path import change.
start_engine_processand the IBus component exec runibus_engine.pyby path, so the relative import failed withImportErrorand Vocalinux fell back to ydotool/clipboard paste (#534) - IBus: Wait for FocusIn before commit on scoped injection. Cold first activation on GNOME Wayland could commit before mutter bound a client context, so the first dictation of a session was dropped while logs still reported success (#533, fixes #523)
- Settings UI: Wrap each notebook tab in a vertical ScrolledWindow so the dialog fits 1080p monitors instead of growing past the screen; forward wheel events from unfocused combos/spins to the tab scroller and drop nested Advanced ScrolledWindow shadows (#538, #541)
See the full changelog.
| Feature | Description |
|---|---|
| Flatpak packaging | Universal Flatpak (whisper.cpp) with sandbox-aware paths, global hotkeys, and Wayland paste injection |
| AUR package | Official Arch packaging and CI publish path |
| Layout-aware hotkeys | Combo keys respect non-US layouts |
| Installer / injection fixes | sg on Ubuntu 26.04/Debian 13; XIM none treated as unset |
- Flatpak packaging — GNOME Platform 50, whisper.cpp + Vulkan, ydotool/wl-copy injection, evdev global shortcuts; build via
packaging/flatpak/(#484, closes #167) - AUR release package — PKGBUILD and CI publish for Arch Linux (#518)
- Hotkeys: Layout-aware combo keys for non-US layouts (#514)
- Installer:
sgnot found on Ubuntu 26.04 / Debian 13 (#524) - Text injection: Treat XIM
noneas unset (#512) - Web: Dependabot npm alerts in package-lock (#515)
- Refreshed v0.14 UI screenshots and website gallery (#521)
- README Star History and related polish
See the full changelog.
| Feature | Description |
|---|---|
| Configurable Shortcuts | Bind any modifier combination to a key — e.g. Alt+R, Ctrl+Shift+V, or Super+F10 |
| FunASR / SenseVoice Remote API | Remote-API engine now supports FunASR and SenseVoice models via OpenAI-compatible endpoints |
| GNOME Wayland IBus Reliability | Text injection works again on GNOME Wayland with bare xkb layouts and engine restore fallbacks are fixed |
| Audio Crash Fix | Recording no longer crashes when the system audio device index changes between sessions |
| Hybrid-CPU Efficiency | whisper.cpp no longer defaults to all cores on hybrid Intel/AMD processors |
- Configurable modifier+key hotkeys — The Settings dialog now lets you set custom shortcuts using any combination of Ctrl, Alt, Shift, and Super plus a letter/number key. The legacy defaults still work, and you can now bind combinations like
Alt+RorCtrl+Shift+V(#493) - Remote API FunASR/SenseVoice support — OpenAI-compatible remote endpoints can specify FunASR/SenseVoice model names (e.g.
sensevoice) and return richer response shapes; SenseVoice metadata labels are stripped before text injection (#468)
- GNOME Wayland/IBus: Restore text injection when only a bare
xkbengine is configured; the engine restore fallback now picks the correct IM engine instead of silently dropping text (#506, #500) - KDE Wayland/IBus: Restore the KDE Plasma Wayland IBus text-injection path that was regressed in recent compositor-detection changes (#502)
- Wayland injection: Wait for held modifiers (Ctrl/Alt/Shift/Super) to release before injecting text, preventing accidental shortcut triggers and garbled output on modifier-heavy workflows (#494)
- Shortcuts UI: Keep preset and custom shortcut selection exclusive — selecting a preset now clears the custom field, and setting a custom combo selects the "Custom Shortcut" preset (#509)
- whisper.cpp: Stop defaulting to all CPU cores on hybrid processors (Intel Performance + Efficient cores), which caused UI lag and excess battery drain (#492)
- Audio: Fix a crash on recording start when the selected audio device index no longer matches the current system enumeration (#499)
- Installer: Include
xselas a fallback for the Wayland clipboard path whenxclipis unavailable (#496)
- Code style — Removed an outdated long comment about whisper.cpp default thread counts (#505)
See the full changelog.
| Feature | Description |
|---|---|
| 🎙️ Guided Whisper Models | Pick a whisper.cpp size and specialization (English-only, quantized, Turbo) with in-app guidance |
| 🔌 Hotplug Keyboard Support | Shortcuts keep working on keyboards connected after startup |
| ✍️ Dictation Spacing | Spacing preserved between speech segments separated by a pause in the same session |
| 🖥️ Wayland Reliability | Fixes silent text drops on wlroots/COSMIC compositors and garbled non-US-layout output |
- Guided whisper.cpp model variants — The Settings dialog now splits whisper.cpp selection into Model Size and Specialization, exposing English-only, quantized (Q5/Q8), Large v3 Turbo, and legacy large models with language-aware recommendations and hover guidance. Exact model IDs (e.g.
medium.en-q5_0,large-v3-turbo) can also be passed to--model(#465)
- Dictation: Preserve spacing between speech segments separated by a pause (#464)
- Shortcuts: Rescan for hotplugged keyboards so shortcuts work on devices connected after startup (#467)
- KDE Plasma Wayland: Detect KDE Plasma Wayland sessions and guide you to enable IBus Wayland when
wtypeinjection fails (#466) - Wayland: Fix garbled output on non-US keyboard layouts and a clipboard-copy hang; ydotool now pastes through the clipboard (#480)
- Wayland/IBus: Use wtype/ydotool instead of IBus on compositors that don't bridge IBus to native apps like COSMIC, Sway, and Hyprland (#486)
- Wayland/IBus: Require a real IM engine on Wayland so a bare
xkblayout no longer causes silent text drops on GNOME/Mutter and similar (#478) - Wayland: Preserve the keyboard layout on Wayland by not running
setxkbmap(was flipping XWayland apps tous) (#474) - UI: Cap the settings dialog height on high-resolution displays (#465)
- Performance: Faster ydotool text injection via an explicit
--key-delay(#488) - Website: New documentation pages for Remote API, Silero VAD, advanced whisper.cpp settings, and desktop reliability (#470)
- CI: Automatic pull-request labeling by changed files (#473)
See the full changelog.
| Feature | Description |
|---|---|
| 🌐 Remote API Engine | New backend for compatible remote transcription services |
| 🎙️ Silero VAD | Neural VAD drops silence-only buffers for cleaner dictation |
| 🧵 Thread Safety | Hardened Remote API, IBus, and text injection threading behavior |
| 🔌 IBus Reliability | Preserves user engines for dead keys and scoped activation |
| ⚙️ Settings Polish | Advanced-only Remote Server controls and lower dialog height |
| 📦 Installer & Models | CUDA auto-remediation and corrected model download metadata |
- Remote API speech recognition engine — Configure compatible remote transcription services alongside local engines (#335)
- Silero VAD — Neural voice activity detection filters silence-only buffers when ONNX Runtime support is installed (#447)
- Threading: Harden Remote API, IBus, and text injection thread safety (#452)
- IBus: Preserve user engines for dead keys and capture the current engine during scoped activation (#457, #458)
- UI: Keep the Remote Server section behind the Advanced toggle and reduce settings dialog height (#454, #456)
- Installer: Harden CUDA diagnostics with auto-remediation and behavioral tests (#451)
- Models: Correct whisper.cpp and VOSK download size metadata (#453)
- Startup: Allow launch without the pynput backend (#448)
- Website: Clarify speech demo browser support (#449)
- Developer docs — Remote API test server instructions for backend testing (#455)
- Community — GitHub Sponsors funding configuration added
- Behavioral coverage — CUDA diagnostics and release-facing reliability fixes include targeted tests
See the full changelog.
| Feature | Description |
|---|---|
| 🌍 Non-ASCII Text Injection | ydotool now falls back to clipboard paste for non-ASCII characters (á, é, ñ, etc.) |
| 🔌 IBus on Wayland | IBus now detected and started correctly on Wayland without legacy env vars |
| 🚀 IBus Engine Startup | Engine process now starts before registration check — fixes startup on some systems |
| 📦 Pop!_OS / Ubuntu 24.04+ | Added missing system dependencies (cmake, libcairo2-dev, libgirepository1.0-dev) |
| ⚡ Code Quality | Systematic refactor across 20 quality dimensions |
| 🖼️ Website OG Image | Redesigned Open Graph image — cleaner and more professional |
- #362 / #376: Handle non-ASCII characters with ydotool via clipboard paste fallback
- #360 / #361: Start IBus engine process before checking registration
- #381: Detect IBus on Wayland without legacy env vars and fix text injection
- #379: Add missing dependencies for Pop!_OS and Ubuntu 24.04+
- Systematic code quality refactor across 20 dimensions (#377)
- Clarify missing GNOME AppIndicator support on Debian (#385)
- Redesigned OG image for vocalinux.com (#392)
See the full changelog.
| Feature | Description |
|---|---|
| 🖼️ Tray Resource Reliability | Bundled package resources now prevent missing system tray icons |
| 🧠 Engine Switch Safety | Recognition now stops before engine changes to avoid segfaults |
| ⌨️ Keyboard Layout Preservation | XKB layout is preserved when activating the Vocalinux IBus engine |
| 🪟 Settings Dialog Compatibility | Added an explicit Close button for improved WM interoperability |
| ⚡ Suspend/Resume Recovery | App now automatically recovers speech recognition and keyboard shortcuts after system suspend/resume |
| 🎤 Push-to-Talk Reliability | Fixed premature transcription triggering on silence during push-to-talk mode |
- Patch-focused release — No new feature surface; this version is dedicated to stability and compatibility fixes
- Desktop reliability hardening — Improved behavior across tray, engine switching, settings dialog actions, and keyboard layout handling
- Suspend/Resume stability — New D-Bus handler ensures app survives system sleep cycles
- #349 / #354: Bundle resources in package to fix missing system tray icons
- #350 / #355: Stop recognition before switching engines to prevent segfaults
- #323 / #356: Add Close button to settings dialog for WM compatibility
- #292 / #343: Preserve XKB layout when activating Vocalinux IBus engine
- #359: Prevent premature transcription during push-to-talk silence
- #367 / #369: Auto-recover speech recognition after system resume via new suspend handler
- #371: Restart keyboard shortcut backend after system resume
- #372: Delay keyboard restart to allow USB device re-enumeration after resume
- Bumped npm/yarn dependency group across the web workspace (#346)
- Bumped
brace-expansionin development dependencies (#357) - Disabled copy-to-clipboard by default in Settings (#370)
See the full changelog.
| Feature | Description |
|---|---|
| ⌨️ Left/Right Modifier Keys | Choose Left Ctrl vs Right Ctrl (etc.) as your shortcut trigger |
| 🔔 Sound Effects Toggle | Enable or disable audio feedback from the Settings dialog |
| 📋 Wayland Clipboard Fallback | Automatic clipboard copy when virtual keyboard injection isn't available |
| 🛠️ Installation Polish | Better pipx/Debian guidance and headless display detection |
- Left/Right Modifier Key Distinction — Shortcuts now support
Left Ctrl,Right Alt, etc., with grouped UI in Settings - Sound Effects Toggle — New Audio Settings toggle to silence start/stop/error sounds
- Clipboard Fallback for Wayland — Auto-copies text via
wl-copy/xclipwhen injection unavailable (KDE Plasma etc.) - Display Availability Check — Graceful error message when running in headless environments
- #308: Distinguish left vs right modifier keys (evdev + pynput backends)
- #307: Remove unwanted leading space when starting a new transcription session
- #305: Pass configured shortcut mode to
KeyboardShortcutManageron startup - #299: Add clipboard fallback for Wayland compositors without virtual keyboard support
- #289: Improve Debian/pipx installation error messages and cross-distro dependency guidance
- Grouped shortcut selector — Settings dropdown now organises shortcuts by Either/Left/Right side
- pipx documentation — New
DISTRO_COMPATIBILITY.mdsection for pipx users
See the full changelog.
| Feature | Description |
|---|---|
| 🎤 Push-to-Talk Mode | Hold the shortcut key to speak, release to stop |
| ⚙️ Voice Commands Toggle | Enable or disable voice commands, with VOSK auto-enable in auto mode |
| ⌨️ Shortcut Reliability | Improved callback lifecycle and mode switching stability |
| 🧠 Input Compatibility | Better IBus detection and audio device/channel compatibility |
- Push-to-Talk Shortcut Mode — Added hold-to-speak mode alongside double-tap toggle mode
- Mode-aware Shortcut UI — Updated settings text and behavior for toggle vs push-to-talk workflows
- Voice Commands Optional — Voice commands can be disabled, with automatic enable behavior for VOSK
- #277: Detect active IBus input method before using IBus injection
- #275: Detect and use device-supported channel count
- #268: Prevent GTK startup dialog crash on Fedora
- #261: Resolve text injection issues for better reliability
- #259: Prevent recognition thread state flicker
- #262/#263: Auto-detect audio sample rate for better hardware compatibility
- Web SEO Enhancements — Added 8 additional optimized pages for discoverability
- Homepage Refresh — Updated voice-themed visual polish on the web landing page
See the full changelog.
Vocalinux checks GitHub Releases in the background about every six hours (and shortly after startup). When a newer build is on your selected channel, the tray menu gains an Update Available… entry and Settings → About shows a green New badge; open that page for release notes and download links. Updates are not installed automatically — re-run the installer (or your package manager) as below.
Simply re-run the installation command:
curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh | bashThe installer will:
- ✅ Detect and stop any running Vocalinux processes
- ✅ Update your existing installation
- ✅ Preserve your configuration and models
- ✅ Install any new dependencies
- ✅ Attempt to install neural VAD support, falling back safely if ONNX Runtime is unavailable
cd vocalinux
git fetch origin
git checkout v0.16.1
./install.shOr to get the latest development version:
cd vocalinux
git pull origin main
./install.shpython3 -c "import vocalinux; print(vocalinux.version.__version__)"If your update doesn't go smoothly, try a clean reinstall:
# Uninstall (keeps your config and models by default)
./uninstall.sh --keep-config --keep-data
# Or uninstall completely
./uninstall.sh
# Reinstall fresh
curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh | bash# Prefer stopping from the tray, or kill by the PID in the lock file:
kill "$(tr -d '[:space:]' < "${XDG_DATA_HOME:-$HOME/.local/share}/vocalinux/instance.lock")"
# If you used IBus injection, also stop the engine:
kill "$(tr -d '[:space:]' < "${XDG_DATA_HOME:-$HOME/.local/share}/vocalinux-ibus/engine.pid")"
# Start fresh
vocalinuxAvoid pkill -f vocalinux — it matches any process whose command line
mentions the repo path (editors, shells, test runners) and can kill unrelated work.
If you see dependency errors:
# Ubuntu/Debian
sudo apt update
sudo apt install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0
# Fedora
sudo dnf install -y python3-gobject gtk3
# Arch
sudo pacman -S python-gobject gtk3