blob: f9fa0458ac29be717092cb2fab40f218ce550676 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# Parley
Local, push-to-dictate text input for GNOME on Wayland.
Parley records your microphone, transcribes speech locally with Parakeet, and inserts the result at the active caret through IBus. Every successful transcript is saved and copied to the clipboard before insertion is attempted.
> Parley targets up-to-date Arch Linux systems running GNOME on Wayland. Other platforms are currently unsupported.
## Features
- local recording and transcription
- semantic text insertion and in-field processing feedback through IBus
- clipboard fallback when insertion is unavailable
- GNOME top-bar status and controls
- global shortcut and command-line control
- transcript persistence under `~/.local/share/parley/transcripts/`
## Usage
1. Put the caret in an editable field.
2. Press the Parley shortcut to start recording.
3. Speak.
4. Press the shortcut again.
5. Wait for transcription and insertion.
GNOME shows its microphone privacy indicator while recording. Parley's top-bar indicator shows recording, transcription, and error states. Desktop notifications are disabled by default.
Useful fallback commands:
```bash
parleyctl status
parleyctl toggle
parleyctl cancel
parleyctl copy
parleyctl insert
```
If an application rejects IBus insertion, the transcript remains saved and ready to paste with `Ctrl+V`.
## Installation
Build and install the Arch package from a release checkout:
```bash
cd packaging/arch
makepkg -si
systemctl --user enable --now parley.service
gnome-extensions enable parley@org.parley
```
Configure a GNOME custom shortcut to run:
```text
/usr/bin/parleyctl toggle
```
A newly installed Shell extension may require one logout and login before GNOME discovers it.
## Runtime
Parley requires the Parakeet `transcribe-cli` runtime and Unified English model. By default it looks for the runtime on `PATH` and the model under:
```text
~/.local/share/parley/models/
```
The model is not stored in this repository. The current runtime build also depends on host CUDA and MKL libraries. Optional settings live in [`~/.config/parley/config.toml`](docs/CONFIGURATION.md); Parley does not use application-specific environment variables.
## Compatibility
End-to-end insertion is confirmed in Firefox, Chrome, Visual Studio Code, LibreOffice, and Ghostty. Broader application and input-method results live in the [IBus test matrix](docs/IBUS_BAKEOFF.md).
See the [project specification](SPEC.md) for architecture and implementation details.
## Development
Parley runs directly with Arch's system Python and PyGObject bindings. No virtual environment or PyPI dependencies are required.
```bash
./scripts/install-dev
python -m unittest discover -s tests
```
Restart and inspect the daemon with:
```bash
systemctl --user restart parley.service
journalctl --user -u parley.service -f
```
Development helpers live in [`scripts/`](scripts/), and the Arch package recipe lives in [`packaging/arch/`](packaging/arch/).
## Design principles
- audio and transcription stay local
- recording is always visible
- transcripts are saved before insertion
- model and audio work never runs inside GNOME Shell
- clipboard fallback survives insertion failures
## License
Parley is licensed under GPL-3.0-or-later. Copyright © 2026 Yuval Adam.
Questions and release reports: [hello@yuv.al](mailto:hello@yuv.al).
|