feat(identity): rename user-visible identity to voculinux with one-time legacy import
The fork takes its own name everywhere a user can see it: binaries (voculinux, voculinux-gui), desktop entry, autostart, tray, D-Bus namespace (com.voculinux.Voculinux, no alias for the old name), config/data/cache dirs, single-instance lock, IBus engine identity, tray icons, resource prefixes, VOCULINUX_* environment names, and the update-checker user agent. The internal Python module stays vocalinux and the distribution metadata keeps the upstream URLs as provenance. On first run a previous Vocalinux install's config.json, custom dictionary, and portal restore token are copied once into the new locations (new config always wins, no merge, no write-back); models re-resolve through the pinned-checksum download path. An offline naming-sweep test proves no old-name strings remain on user-visible surfaces outside the allowlist. Refs #18
This commit is contained in:
+55
-55
@@ -1,6 +1,6 @@
|
||||
# Installation guide
|
||||
|
||||
How to install Vocalinux on Linux. Short overview: [project README](../README.md).
|
||||
How to install Voculinux on Linux. Short overview: [project README](../README.md).
|
||||
|
||||
| Path | When to use |
|
||||
|------|-------------|
|
||||
@@ -75,7 +75,7 @@ Useful flags: `--tag=TAG`, `--skip-models`, `--rebuild-whispercpp`, `--no-rebuil
|
||||
|
||||
1. Detects the distribution and installs system packages
|
||||
2. Creates a Python venv from the system interpreter with `--system-site-packages` (for distro GTK / PyGObject)
|
||||
3. Installs Vocalinux and the chosen speech engine
|
||||
3. Installs Voculinux and the chosen speech engine
|
||||
4. Optionally installs neural VAD (`onnxruntime`)
|
||||
5. Downloads a default speech model (checksum-verified)
|
||||
6. Installs icons, desktop entry, and `~/.local/bin` wrappers
|
||||
@@ -85,8 +85,8 @@ Useful flags: `--tag=TAG`, `--skip-models`, `--rebuild-whispercpp`, `--no-rebuil
|
||||
From [GitHub Releases](https://github.com/VocaHQ/vocalinux/releases):
|
||||
|
||||
```bash
|
||||
chmod +x Vocalinux-*-x86_64.AppImage # or aarch64
|
||||
./Vocalinux-*-x86_64.AppImage
|
||||
chmod +x Voculinux-*-x86_64.AppImage # or aarch64
|
||||
./Voculinux-*-x86_64.AppImage
|
||||
```
|
||||
|
||||
Built against glibc 2.35, so it starts on Debian 12+, Ubuntu 22.04+, Fedora 36+, Arch, and Tumbleweed. Older bases (RHEL 9, Debian 11, Ubuntu 20.04) are below that AppImage floor. The installer and PyPI package still require a distro that ships Python 3.11+, so they are not a workaround for Debian 11 or Ubuntu 20.04.
|
||||
@@ -99,13 +99,13 @@ From [GitHub Releases](https://github.com/VocaHQ/vocalinux/releases), pick the f
|
||||
|
||||
```bash
|
||||
# Debian / Ubuntu (amd64; arm64 files are attached too)
|
||||
sudo apt install ./vocalinux_*_amd64.deb
|
||||
sudo apt install ./voculinux_*_amd64.deb
|
||||
|
||||
# Fedora (x86_64; aarch64 files are attached too)
|
||||
sudo dnf install ./vocalinux-*.x86_64.rpm
|
||||
sudo dnf install ./voculinux-*.x86_64.rpm
|
||||
```
|
||||
|
||||
These are thin packages: Python, GTK, PyGObject and the AppIndicator typelib come from the distribution, and `apt`/`dnf` resolves them. `xdotool`, `wtype`, `ydotool`, the clipboard tools and IBus are `Recommends`, matching the optional feature set of the other paths. Only `pywhispercpp` and `pynput` are vendored inside the package — `pywhispercpp` is packaged by neither distro and `pynput` is missing on Fedora. They land under `/usr/lib/vocalinux/vendor`, on `sys.path` via the `vocalinux` launcher.
|
||||
These are thin packages: Python, GTK, PyGObject and the AppIndicator typelib come from the distribution, and `apt`/`dnf` resolves them. `xdotool`, `wtype`, `ydotool`, the clipboard tools and IBus are `Recommends`, matching the optional feature set of the other paths. Only `pywhispercpp` and `pynput` are vendored inside the package — `pywhispercpp` is packaged by neither distro and `pynput` is missing on Fedora. They land under `/usr/lib/voculinux/vendor`, on `sys.path` via the `voculinux` launcher.
|
||||
|
||||
The `.deb` needs a distro that ships Python 3.11+: Debian 12+ and Ubuntu 24.04+ (Ubuntu 22.04 ships 3.10). whisper.cpp runs on CPU in these packages — the PyPI wheel, not the Vulkan build the AppImage carries. There is no auto-update: a new release is a new package install. A PPA and a COPR are not published yet.
|
||||
|
||||
@@ -120,7 +120,7 @@ Joining `input` grants read access to every keyboard and pointer device — X11
|
||||
## Arch Linux (AUR)
|
||||
|
||||
```bash
|
||||
yay -S vocalinux
|
||||
yay -S voculinux
|
||||
```
|
||||
|
||||
See [AUR.md](AUR.md).
|
||||
@@ -130,21 +130,21 @@ See [AUR.md](AUR.md).
|
||||
Install and auto-update via the self-hosted VocaHQ remote (`flatpak update` picks up each release):
|
||||
|
||||
```bash
|
||||
flatpak install https://vocahq.github.io/vocalinux-flatpak/com.vocalinux.Vocalinux.flatpakref
|
||||
flatpak install https://vocahq.github.io/voculinux-flatpak/com.voculinux.Voculinux.flatpakref
|
||||
```
|
||||
|
||||
The `.flatpakref` adds the `vocahq` remote and resolves the GNOME runtime through Flathub. Manually instead:
|
||||
|
||||
```bash
|
||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --if-not-exists vocahq https://vocahq.github.io/vocalinux-flatpak/vocahq.flatpakrepo
|
||||
flatpak install vocahq com.vocalinux.Vocalinux
|
||||
flatpak remote-add --if-not-exists vocahq https://vocahq.github.io/voculinux-flatpak/vocahq.flatpakrepo
|
||||
flatpak install vocahq com.voculinux.Voculinux
|
||||
```
|
||||
|
||||
Or sideload a GitHub Release bundle (`Vocalinux-<version>-x86_64.flatpak` or `-aarch64.flatpak`) after the Flathub GNOME runtime is present — bundles do not auto-update:
|
||||
Or sideload a GitHub Release bundle (`Voculinux-<version>-x86_64.flatpak` or `-aarch64.flatpak`) after the Flathub GNOME runtime is present — bundles do not auto-update:
|
||||
|
||||
```bash
|
||||
flatpak install --user ./Vocalinux-<version>-x86_64.flatpak
|
||||
flatpak install --user ./Voculinux-<version>-x86_64.flatpak
|
||||
```
|
||||
|
||||
Local build (contributors):
|
||||
@@ -152,8 +152,8 @@ Local build (contributors):
|
||||
```bash
|
||||
flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50
|
||||
flatpak-builder --user --install --force-clean build-dir \
|
||||
packaging/flatpak/com.vocalinux.Vocalinux.yml
|
||||
flatpak run com.vocalinux.Vocalinux
|
||||
packaging/flatpak/com.voculinux.Voculinux.yml
|
||||
flatpak run com.voculinux.Voculinux
|
||||
```
|
||||
|
||||
Whisper.cpp + Vulkan. It is **not on Flathub** (submission [flathub#9368](https://github.com/flathub/flathub/pull/9368) closed 2026-07-23 on policy grounds). Details: [packaging/flatpak/README.md](../packaging/flatpak/README.md).
|
||||
@@ -168,7 +168,7 @@ Desktop shortcuts only toggle dictation, so they cannot support push-to-talk.
|
||||
|
||||
## Snap (Ubuntu Snap Store)
|
||||
|
||||
Listing: [snapcraft.io/vocalinux](https://snapcraft.io/vocalinux) (issue [#48](https://github.com/VocaHQ/vocalinux/issues/48)). Recipe: `snap/snapcraft.yaml`. Tagged `v*` releases attach `vocalinux_<version>_amd64.snap` to the GitHub Release and try Snap Store `edge` and `candidate` when credentials are set. `stable` is promoted from `candidate` after QA.
|
||||
Listing: [snapcraft.io/voculinux](https://snapcraft.io/voculinux) (issue [#48](https://github.com/VocaHQ/vocalinux/issues/48)). Recipe: `snap/snapcraft.yaml`. Tagged `v*` releases attach `voculinux_<version>_amd64.snap` to the GitHub Release and try Snap Store `edge` and `candidate` when credentials are set. `stable` is promoted from `candidate` after QA.
|
||||
|
||||
Build inputs, the PR/release artifact gate, and its verification limits are
|
||||
documented in [SNAP.md](SNAP.md).
|
||||
@@ -176,10 +176,10 @@ documented in [SNAP.md](SNAP.md).
|
||||
Store install, once Canonical lists the revision:
|
||||
|
||||
```bash
|
||||
sudo snap install vocalinux --edge
|
||||
sudo snap connect vocalinux:audio-record # if mic is not auto-connected
|
||||
sudo snap connect vocalinux:raw-input # global keyboard shortcuts (evdev)
|
||||
sudo snap connect vocalinux:hardware-observe # list keyboards (/proc/bus/input/devices)
|
||||
sudo snap install voculinux --edge
|
||||
sudo snap connect voculinux:audio-record # if mic is not auto-connected
|
||||
sudo snap connect voculinux:raw-input # global keyboard shortcuts (evdev)
|
||||
sudo snap connect voculinux:hardware-observe # list keyboards (/proc/bus/input/devices)
|
||||
```
|
||||
|
||||
Native Wayland typing uses the RemoteDesktop portal: the compositor asks once on first dictation, nothing to connect. The recipe ships **no `uinput` plug** and no ydotool; the Store denied the super-privileged grant ([the request thread](https://forum.snapcraft.io/t/53528)), which held the 0.17.0+ revisions and left **v0.16.2 (rev 7)** on edge. On KDE Plasma, KWin's portal can mistype letter case ([KDE bug 489021](https://bugs.kde.org/show_bug.cgi?id=489021)); set Virtual Keyboard to "IBus Wayland" so dictation types correctly.
|
||||
@@ -189,14 +189,14 @@ Under strict confinement the snap reaches audio through the PulseAudio/PipeWire
|
||||
GitHub `.snap` files through v0.18.2 declare `uinput`, so KDE users who want ydotool can sideload that build and connect the plug manually:
|
||||
|
||||
```bash
|
||||
sudo snap install --dangerous ./vocalinux_0.18.2_amd64.snap
|
||||
sudo snap connect vocalinux:audio-record
|
||||
sudo snap connect vocalinux:raw-input
|
||||
sudo snap connect vocalinux:hardware-observe
|
||||
sudo snap connect vocalinux:uinput # only in the v0.18.x sideload; the recipe no longer ships it
|
||||
sudo snap install --dangerous ./voculinux_0.18.2_amd64.snap
|
||||
sudo snap connect voculinux:audio-record
|
||||
sudo snap connect voculinux:raw-input
|
||||
sudo snap connect voculinux:hardware-observe
|
||||
sudo snap connect voculinux:uinput # only in the v0.18.x sideload; the recipe no longer ships it
|
||||
```
|
||||
|
||||
`--dangerous` is required because this file is not a Store revision and will not refresh from the Store; once the Store carries a newer revision, `sudo snap install vocalinux --edge` (or `snap refresh`) replaces it.
|
||||
`--dangerous` is required because this file is not a Store revision and will not refresh from the Store; once the Store carries a newer revision, `sudo snap install voculinux --edge` (or `snap refresh`) replaces it.
|
||||
|
||||
## Nix / NixOS
|
||||
|
||||
@@ -207,13 +207,13 @@ nix run github:VocaHQ/vocalinux # try it
|
||||
nix profile install github:VocaHQ/vocalinux
|
||||
```
|
||||
|
||||
On NixOS, `vocalinux.nixosModules.vocalinux` provides `programs.vocalinux.enable`, which installs the package and enables `hardware.uinput`. Add each dictating user to `input` and `uinput` for Wayland shortcuts and ydotool typing. Home Manager users get `vocalinux.homeManagerModules.vocalinux` with the same `programs.vocalinux` options — device permissions stay on the system side. Usage snippets and scope notes: [packaging/nix/README.md](../packaging/nix/README.md).
|
||||
On NixOS, `voculinux.nixosModules.voculinux` provides `programs.voculinux.enable`, which installs the package and enables `hardware.uinput`. Add each dictating user to `input` and `uinput` for Wayland shortcuts and ydotool typing. Home Manager users get `voculinux.homeManagerModules.voculinux` with the same `programs.voculinux` options — device permissions stay on the system side. Usage snippets and scope notes: [packaging/nix/README.md](../packaging/nix/README.md).
|
||||
|
||||
## From source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/VocaHQ/vocalinux.git
|
||||
cd vocalinux
|
||||
cd voculinux
|
||||
./install.sh
|
||||
```
|
||||
|
||||
@@ -228,18 +228,18 @@ cd vocalinux
|
||||
| **Disk** | ~200MB with default whisper.cpp model |
|
||||
| **RAM** | 4GB minimum; 8GB comfortable |
|
||||
|
||||
The distro must ship Python 3.11+ because Vocalinux uses distro PyGObject (`python3-gi`). Ubuntu 22.04 (Python 3.10) and Debian 11 (3.9) are below that floor. Distro matrix: [DISTRO_COMPATIBILITY.md](DISTRO_COMPATIBILITY.md).
|
||||
The distro must ship Python 3.11+ because Voculinux uses distro PyGObject (`python3-gi`). Ubuntu 22.04 (Python 3.10) and Debian 11 (3.9) are below that floor. Distro matrix: [DISTRO_COMPATIBILITY.md](DISTRO_COMPATIBILITY.md).
|
||||
|
||||
### GPU (optional)
|
||||
|
||||
whisper.cpp uses Vulkan when available (AMD, Intel, NVIDIA). Check with `vulkaninfo --summary`.
|
||||
|
||||
## Running Vocalinux
|
||||
## Running Voculinux
|
||||
|
||||
```bash
|
||||
vocalinux # if ~/.local/bin is on PATH
|
||||
~/.local/share/vocalinux/venv/bin/vocalinux # direct
|
||||
source venv/bin/activate && vocalinux # source checkout
|
||||
voculinux # if ~/.local/bin is on PATH
|
||||
~/.local/share/voculinux/venv/bin/voculinux # direct
|
||||
source venv/bin/activate && voculinux # source checkout
|
||||
```
|
||||
|
||||
Or launch from the application menu.
|
||||
@@ -247,19 +247,19 @@ Or launch from the application menu.
|
||||
### CLI
|
||||
|
||||
```bash
|
||||
vocalinux --help
|
||||
vocalinux --version
|
||||
vocalinux --debug
|
||||
vocalinux --engine whisper_cpp
|
||||
vocalinux --engine whisper
|
||||
vocalinux --engine vosk
|
||||
vocalinux --engine parakeet
|
||||
vocalinux --engine remote_api
|
||||
vocalinux --model tiny
|
||||
vocalinux --model medium.en-q5_0
|
||||
vocalinux --model large-v3-turbo
|
||||
vocalinux --wayland
|
||||
vocalinux --start-minimized
|
||||
voculinux --help
|
||||
voculinux --version
|
||||
voculinux --debug
|
||||
voculinux --engine whisper_cpp
|
||||
voculinux --engine whisper
|
||||
voculinux --engine vosk
|
||||
voculinux --engine parakeet
|
||||
voculinux --engine remote_api
|
||||
voculinux --model tiny
|
||||
voculinux --model medium.en-q5_0
|
||||
voculinux --model large-v3-turbo
|
||||
voculinux --wayland
|
||||
voculinux --start-minimized
|
||||
```
|
||||
|
||||
## Autostart
|
||||
@@ -270,8 +270,8 @@ vocalinux --start-minimized
|
||||
|
||||
| Directory | Purpose |
|
||||
|-----------|---------|
|
||||
| `~/.config/vocalinux/` | Configuration |
|
||||
| `~/.local/share/vocalinux/` | Data and speech models |
|
||||
| `~/.config/voculinux/` | Configuration |
|
||||
| `~/.local/share/voculinux/` | Data and speech models |
|
||||
| `~/.local/share/applications/` | Desktop entry |
|
||||
| `~/.local/share/icons/hicolor/scalable/apps/` | Icons |
|
||||
|
||||
@@ -296,11 +296,11 @@ Reuse an existing `pywhispercpp` build:
|
||||
./install.sh --auto --rebuild-whispercpp # force rebuild
|
||||
```
|
||||
|
||||
Switch engines in Settings → Speech Model (Advanced), or edit `~/.config/vocalinux/config.json` (`engine`: `whisper_cpp` | `whisper` | `vosk` | `parakeet` | `remote_api`).
|
||||
Switch engines in Settings → Speech Model (Advanced), or edit `~/.config/voculinux/config.json` (`engine`: `whisper_cpp` | `whisper` | `vosk` | `parakeet` | `remote_api`).
|
||||
|
||||
## Uninstall
|
||||
|
||||
From a source checkout, `./uninstall.sh` removes the install and that checkout's `venv/`, `build/`, `dist/`, and Python bytecode. `--keep-config` and `--keep-data` leave `~/.config/vocalinux` and `~/.local/share/vocalinux` in place.
|
||||
From a source checkout, `./uninstall.sh` removes the install and that checkout's `venv/`, `build/`, `dist/`, and Python bytecode. `--keep-config` and `--keep-data` leave `~/.config/voculinux` and `~/.local/share/voculinux` in place.
|
||||
|
||||
```bash
|
||||
./uninstall.sh
|
||||
@@ -315,15 +315,15 @@ curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/main/uninstall.sh
|
||||
bash /tmp/vul.sh
|
||||
```
|
||||
|
||||
That removes Vocalinux from your home directory (config, data, launchers, desktop entry, icons). It does not delete `venv/`, `build/`, `dist/`, or `.pyc` files in the directory where you ran it.
|
||||
That removes Voculinux from your home directory (config, data, launchers, desktop entry, icons). It does not delete `venv/`, `build/`, `dist/`, or `.pyc` files in the directory where you ran it.
|
||||
|
||||
From the source checkout, the equivalent by hand:
|
||||
|
||||
```bash
|
||||
rm -rf venv ~/.config/vocalinux ~/.local/share/vocalinux
|
||||
rm -f activate-vocalinux.sh
|
||||
rm -f ~/.local/share/applications/vocalinux.desktop
|
||||
rm -f ~/.local/share/icons/hicolor/scalable/apps/vocalinux*.svg
|
||||
rm -rf venv ~/.config/voculinux ~/.local/share/voculinux
|
||||
rm -f activate-voculinux.sh
|
||||
rm -f ~/.local/share/applications/voculinux.desktop
|
||||
rm -f ~/.local/share/icons/hicolor/scalable/apps/voculinux*.svg
|
||||
gtk-update-icon-cache -f -t ~/.local/share/icons/hicolor
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user