mirror of
https://github.com/jahruz67/wisp-open.git
synced 2026-08-08 18:14:08 +00:00
169 lines
6.5 KiB
Markdown
169 lines
6.5 KiB
Markdown
# WIS Free V3
|
|
|
|
WIS Free V3 is a desktop voice-dictation app built with Go and Wails. It records audio from a global shortcut, transcribes it with Groq Whisper or a local backend, optionally refines the result, and types the text into the focused application.
|
|
|
|
Windows and Linux are supported. Linux packages and source builds currently target `amd64`/`x86_64`.
|
|
|
|
## Linux installation
|
|
|
|
Install a package with the native package manager so it resolves runtime dependencies. Do not use `dpkg -i` on its own.
|
|
|
|
### Debian and Ubuntu
|
|
|
|
Download the `.deb` for your architecture, then run:
|
|
|
|
```bash
|
|
sudo apt install ./wis-free-v3_<version>_amd64.deb
|
|
```
|
|
|
|
If a previous `dpkg -i` attempt left dependencies unfinished, repair them first:
|
|
|
|
```bash
|
|
sudo apt -f install
|
|
sudo apt install ./wis-free-v3_<version>_amd64.deb
|
|
```
|
|
|
|
### Fedora and other RPM-based distributions
|
|
|
|
Install the RPM with the distribution package manager:
|
|
|
|
```bash
|
|
sudo dnf install ./wis-free-v3-<version>-1.x86_64.rpm
|
|
```
|
|
|
|
Uninstall it from a terminal with `sudo dnf remove wis-free-v3`. The RPM also ships desktop and AppStream metadata so graphical software centers such as GNOME Software can show the package as an app and offer install/uninstall actions for the local RPM.
|
|
|
|
For openSUSE, use `sudo zypper install ./wis-free-v3-<version>.x86_64.rpm` and `sudo zypper remove wis-free-v3`.
|
|
|
|
After installing, launch **WIS Free V3** from the application launcher or run `wis-free-v3` in a terminal. A reboot is not required.
|
|
|
|
## Linux first-run setup
|
|
|
|
### Global shortcut
|
|
|
|
Linux uses your desktop environment's custom shortcut feature as the primary global shortcut method. Copy the **Linux System Shortcut** command shown in Settings and bind it to your preferred key combination:
|
|
|
|
- GNOME: **Settings -> Keyboard -> Custom Shortcuts**
|
|
- KDE Plasma: **System Settings -> Shortcuts -> Command/URL**
|
|
|
|
That command toggles recording: one press starts and the next press stops. It is shell-quoted automatically, including when the app is installed in a path containing spaces. It also works from a cold start because it uses `--action=toggle`.
|
|
|
|
### Direct typing with ydotool
|
|
|
|
WIS Free V3 uses `ydotool` to type transcriptions into the active application. This works on both Wayland and X11, but it needs the persistent `ydotoold` service.
|
|
|
|
Install the dependency, then enable the service for your user:
|
|
|
|
```bash
|
|
# Debian / Ubuntu
|
|
sudo apt install ydotool
|
|
|
|
# Fedora
|
|
sudo dnf install ydotool
|
|
|
|
# Arch Linux
|
|
sudo pacman -S ydotool
|
|
|
|
# All distributions that provide the standard user unit
|
|
systemctl --user enable --now ydotool.service
|
|
```
|
|
|
|
Distribution packages normally install the required `/dev/uinput` rule and the `ydotool.service` user unit. Do not add an extra manual udev rule unless your distribution's ydotool documentation says its package does not provide one.
|
|
|
|
Open Settings again and check the **Direct typing** status. If the socket is still unavailable after enabling the service, log out and back in once, then run:
|
|
|
|
```bash
|
|
systemctl --user restart ydotool.service
|
|
```
|
|
|
|
For a ydotool installation without a packaged user unit, the source checkout can create a separate WIS Free V3 user unit without overwriting distribution files:
|
|
|
|
```bash
|
|
bash scripts/build-linux.sh --install-systemd
|
|
```
|
|
|
|
To diagnose it, use:
|
|
|
|
```bash
|
|
systemctl --user status ydotool.service
|
|
journalctl --user -u ydotool.service -b
|
|
```
|
|
|
|
The app detects sockets from the standard user-runtime directory, `/tmp/.ydotool_socket`, and common system-service locations. You can override detection with `YDOTOOL_SOCKET=/path/to/socket` before launching WIS Free V3.
|
|
|
|
### GNOME tray icon
|
|
|
|
GNOME needs the **AppIndicator and KStatusNotifierItem Support** extension for a traditional system-tray icon. The app still runs without it, but use the launcher or a configured shortcut to open Settings. On Debian/Ubuntu:
|
|
|
|
```bash
|
|
sudo apt install gnome-shell-extension-appindicator
|
|
```
|
|
|
|
Enable the extension in **Settings -> Extensions**. Other major desktops generally expose the tray icon without an extra extension.
|
|
|
|
## Build from source on Linux
|
|
|
|
Install Go 1.24+, Node.js 20+, and native dependencies. The build script handles WebKit 4.0 versus 4.1 and Wails tags automatically.
|
|
|
|
### Debian / Ubuntu
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libasound2-dev libayatana-appindicator3-dev
|
|
```
|
|
|
|
If your release does not provide `libwebkit2gtk-4.1-dev`, install `libwebkit2gtk-4.0-dev` instead.
|
|
|
|
### Fedora
|
|
|
|
```bash
|
|
sudo dnf install -y gcc gcc-c++ make pkgconf-pkg-config gtk3-devel webkit2gtk4.1-devel alsa-lib-devel libayatana-appindicator-gtk3-devel
|
|
```
|
|
|
|
### Arch Linux
|
|
|
|
```bash
|
|
sudo pacman -S base-devel pkgconf gtk3 webkit2gtk alsa-lib libayatana-appindicator
|
|
```
|
|
|
|
Then clone the repository and build:
|
|
|
|
```bash
|
|
git clone <repository-url>
|
|
cd wisp-open
|
|
go install github.com/wailsapp/wails/v2/cmd/wails@latest
|
|
bash scripts/build-linux.sh --install-user
|
|
```
|
|
|
|
Use `--install` for `/usr/local/bin`, `--install-user` for `~/.local/bin`, or `--no-install` for a non-interactive build. The binary is written to `build/bin/wis-free-v3`.
|
|
|
|
## Building packages
|
|
|
|
Create distribution packages from a Linux checkout:
|
|
|
|
```bash
|
|
# Build only the format available on your build host
|
|
bash scripts/package-linux.sh --deb
|
|
bash scripts/package-linux.sh --rpm
|
|
```
|
|
|
|
With no flag, the script builds both formats and therefore requires both `dpkg-deb` and `rpmbuild`. Packages are placed in `dist/packages/`. The package metadata records the WebKit and AppIndicator ABI selected during the build, preventing a package built against one implementation from silently depending on the other.
|
|
|
|
## Troubleshooting
|
|
|
|
| Symptom | What to check |
|
|
| --- | --- |
|
|
| The package installed but the app will not launch | Install it with `apt install ./file.deb` or `dnf install ./file.rpm` so runtime libraries are resolved. Launch `wis-free-v3` from a terminal once to see any loader error. |
|
|
| The shortcut does nothing | Copy the Linux System Shortcut command from Settings and bind it in your desktop's custom shortcut settings. |
|
|
| Transcription completes but text is not inserted | Open Settings and complete the ydotool setup. Check `systemctl --user status ydotool.service`. |
|
|
| `ydotoold socket not found` | Enable the user service, then log out/in once only if the service still cannot access `/dev/uinput`. |
|
|
| The app runs but no tray icon appears on GNOME | Install and enable the AppIndicator extension. |
|
|
|
|
## Configuration
|
|
|
|
Settings are available from the tray menu or the Settings window. The configuration file is stored in `~/.wis-free-v3/config.json`.
|
|
|
|
## License
|
|
|
|
Distributed under the MIT License.
|