# How to set up Walkie on Omarchy

> Install Walkie on Omarchy with pacman, bind push-to-talk in Omarchy's Hyprland Lua config, and add the Walkie bar widget.

Add Walkie's pacman repository and install `walkie-bin`, then bind a key in `~/.config/hypr/bindings.lua` using Omarchy's `o.bind` helper — Wayland does not let an app register its own global hotkey, so the compositor holds the key and runs `walkie --start-transcription` and `walkie --stop-transcription` on press and release. Optionally add the Walkie bar widget for click-to-dictate. One thing to watch: Omarchy's built-in Voxtype already binds **Super + Ctrl + X** and **F9**, so pick different keys if you keep both installed.

*Category: Getting started · Last updated: 2026-09-01*

---

![Omarchy](/docs/omarchy-wordmark.png)

> **Important:** Walkie's Linux build is experimental and unsigned. If something breaks, send it from **Settings → About → Send to Support** — that attaches the logs we need.

This page covers Omarchy specifically. For Arch without Omarchy, Debian, or any other distro, see [Walkie on Linux](/docs/getting-started/walkie-on-linux) — the install is the same, but the keybinding and bar steps below are Omarchy's own and will not apply.

## Setup at a glance

1. Add Walkie's pacman repository and install `walkie-bin`.
   Updates then ride `pacman -Syu` like any other package.
2. Bind a key in `~/.config/hypr/bindings.lua`, then run `hyprctl reload`.
   Wayland cannot let Walkie register its own hotkey, so Hyprland holds the key and runs a Walkie command on press and release.
3. Hold the key, say a sentence, and release.
   The text is typed into whatever app has focus. Everything after this — the bar widget, meeting audio, autostart — is optional.

## Install Walkie

Walkie ships its own pacman repository, so updates ride `pacman -Syu` like everything else on the system. Add it to `/etc/pacman.conf` once:

```ini
# /etc/pacman.conf
[walkie]
SigLevel = Optional TrustAll
Server = https://b150.s3.us-east-1.amazonaws.com/walkie/arch/$arch
```

Then install:

```bash
sudo pacman -Syu walkie-bin
```

> **Note:** `omarchy-pkg-add` is a thin wrapper around `pacman -S`, not an AUR helper, so either command works. The repository is unsigned today — that is what `SigLevel = Optional TrustAll` allows. If you would rather verify signatures, use the AppImage from the [download page](https://trywalkie.com/#download) until package signing ships.

The package pulls in the optional pieces Walkie needs as `optdepends` — `wtype` for typing text, `wl-clipboard` for the clipboard path, and the PipeWire packages for meeting audio. Omarchy already installs `wtype` and PipeWire as part of its base system, so on a stock install there is usually nothing more to add.

## Bind a key for dictation

Wayland has no protocol that lets an application listen for a global keyboard shortcut, so Walkie's in-app shortcut setting cannot see your keypress. The compositor holds the key instead and runs a Walkie command when it goes down and up. This is the same approach Omarchy uses for its own Voxtype dictation.

Omarchy configures Hyprland through Lua, and your bindings belong in the user-owned file `~/.config/hypr/bindings.lua`:

```lua
if o.cmd_present("walkie") then
  o.bind("SUPER + CTRL + X", "Toggle Walkie dictation", "walkie --toggle-transcription")
  o.bind("F9", "Walkie push-to-talk (start)", "walkie --start-transcription")
  o.bind("F9", "Walkie push-to-talk (stop)", "walkie --stop-transcription", { release = true })
  o.bind("SUPER + CTRL + ESCAPE", "Cancel Walkie", "walkie --cancel")
end
```

Then reload the compositor:

```bash
hyprctl reload
```

> **Note:** Use Omarchy's `o.bind` helper in `bindings.lua`, not Hyprland's raw `hl.bind` in `hyprland.lua`. Omarchy owns the Hyprland config and regenerates it; `bindings.lua` is the file it leaves to you. The `o.cmd_present("walkie")` guard keeps the whole block inert until Walkie is actually installed, so it is safe to add before you install.

> **Tip:** The `F9` pair is real push-to-talk — hold to speak, release to transcribe. It is faster than toggling, and there is no way to leave the microphone running by accident. `--cancel` throws away the current recording without transcribing it.

### If you also use Voxtype

> **Important:** **Super + Ctrl + X** and **F9** are Omarchy's built-in Voxtype keys. The snippet above deliberately mirrors Voxtype's bindings, so if you keep Voxtype installed, both recorders start on the same keypress and you get two transcriptions. Change the keys on one of them before reloading.

Omarchy's Voxtype bindings live in `default/hypr/bindings/voxtype.lua`, which Omarchy owns and will overwrite on upgrade — so rebind Walkie in your own `bindings.lua` rather than editing Voxtype's file. Any free combination works:

```lua
o.bind("SUPER + CTRL + D", "Toggle Walkie dictation", "walkie --toggle-transcription")
o.bind("F10", "Walkie push-to-talk (start)", "walkie --start-transcription")
o.bind("F10", "Walkie push-to-talk (stop)", "walkie --stop-transcription", { release = true })
```

If you would rather remove Voxtype and use the keys as written, `sudo pacman -R voxtype-bin` and drop its binding file.

## Add the Walkie bar widget

Walkie can live in your Omarchy bar: it shows whether Walkie is idle, recording, transcribing or in a meeting, and clicking it starts dictation without touching the keyboard. The `walkie-bin` package ships the widget at `/usr/share/walkie/omarchy-plugin/`.

1. Copy the widget into your Omarchy plugins directory.
   The directory name has to match the plugin id, `com.b150.walkie`.
2. Enable it and pick which side of the bar it sits on.
   `--section` takes `left`, `center` or `right`.

```bash
mkdir -p ~/.config/omarchy/plugins/com.b150.walkie
cp /usr/share/walkie/omarchy-plugin/{manifest.json,BarWidget.qml} \
   ~/.config/omarchy/plugins/com.b150.walkie/
omarchy plugin enable com.b150.walkie --section right
```

> **Note:** `omarchy plugin add <git-url>` — the one-liner that also supports `omarchy plugin update` — needs a public git repository, which the widget does not have yet. Until it does, this manual copy is the install, and you re-copy the files after a Walkie update.

| Action | What it does |
| --- | --- |
| Left click | Start dictation; click again to transcribe |
| Right click | Open or focus the Walkie window |
| Middle click | Cancel whatever is running |
| Hover | Current state, and the meeting clock during a meeting |

The icon breathes while the microphone is open, dims when idle, and fades further when Walkie is not running.

### Widget settings

Edit the widget's entry in `~/.config/omarchy/shell.json`, or set them from the command line with `omarchy bar set com.b150.walkie <key> <value>`:

| Key | Default | What it does |
| --- | --- | --- |
| `command` | `walkie` | Executable to call. Use an absolute path for an AppImage install. |
| `hideWhenIdle` | `false` | Take up no space in the bar unless something is happening. |
| `showLabel` | `false` | Print the state name next to the icon. |
| `fontFamily` | bar's font | Override the font used for the icon glyph. |
| `fontSize` | `14` | Icon size in pixels. |

### Using another bar

The widget is a thin wrapper around a command any bar can call. `walkie status` prints one line of Waybar-shaped JSON and exits; `walkie status --watch` streams a line every time the state changes.

```json
{"text":"<glyph>","alt":"recording","class":"recording","tooltip":"Walkie — recording"}
```

`class` carries the state: `idle`, `recording`, `analyzing`, `transcribing`, `thinking`, `speaking`, `error`, `meeting`, `meeting_paused`, or `stopped` when Walkie is not running. `text` is a Nerd Font glyph you can ignore in favour of your own. For Waybar:

```json
"custom/walkie": {
  "exec": "walkie status --watch",
  "return-type": "json",
  "format": "{}",
  "tooltip": true,
  "on-click": "walkie --toggle-transcription"
}
```

> **Note:** `walkie status` exits 0 even when Walkie is not running — "not running" is an answer, not an error — so a bar never has to special-case an exit code.

## Meeting audio

To record the other side of a call, Walkie reads your speakers' monitor source through PipeWire's PulseAudio layer. Omarchy ships PipeWire, but confirm these are present:

```bash
sudo pacman -S pipewire-pulse libpulse pipewire-alsa
```

- `pipewire-pulse` and `libpulse` provide `parec` and the monitor source Walkie records from.
- `pipewire-alsa` is what lets your **microphone** work at all — without it, recording fails with a device error.

> **Note:** Without the monitor source, meetings still record your microphone; you just will not hear the other participants in the transcript.

## Start Walkie on login

Hyprland ignores the XDG autostart entry Walkie writes, so use the systemd user service instead. The package installs the unit; enable it once:

```bash
systemctl --user enable --now walkie
```

Or, if you would rather keep it in your compositor config:

```ini
exec-once = walkie --start-hidden
```

## Check it works

1. Confirm Walkie is running and reachable.
   `walkie status` should print `idle` rather than `stopped`.
2. Hold your push-to-talk key, say a sentence, and release.
   Try it in a terminal first, then in a browser field — text injection can differ between the two.
3. Check the bar widget changes state while you hold the key.

## Known limitations on Omarchy

- **The recording overlay is off by default.** Some compositors treat it as the focused window, which stops Walkie pasting back into the app you were typing in. You can turn it on in Settings if yours behaves.
- **Builds are unsigned**, and the pacman repository is unsigned too.
- **Read Aloud's text capture is limited on Wayland.** Reading a selection from another app does not work on every compositor yet; dropping a file onto Walkie always does.
- **The bar widget needs a recent Walkie build** — the one that added the `walkie status` command. Against an older build the widget simply shows "not running".

## Frequently asked questions about how to set up Walkie on Omarchy

### Why does my key start two recordings at once?

Omarchy's built-in Voxtype binds the same **Super + Ctrl + X** and **F9** keys that Walkie's snippet uses. Rebind one of them — see [If you also use Voxtype](#if-you-also-use-voxtype).

### Do I need to be in the `input` group?

No. Binding keys in Hyprland — the setup on this page — needs no special permissions. The `input` group is only required if you switch Walkie's keyboard backend to evdev, or use `dotool` for typing.

### Why does the bar widget say Walkie is not running when it is?

The widget calls `walkie` on your `PATH`. If you installed the AppImage or a build from source, point it at the binary: `omarchy bar set com.b150.walkie command /full/path/to/walkie`.

### The tray icon never appears when Walkie autostarts. Why?

The systemd user manager needs the session's Wayland variables. Run `systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE`, then restart the service.

### My hotkey starts a recording but nothing gets typed.

That is text injection, not the hotkey. Install `wtype` — `sudo pacman -S wtype` — which is what Walkie uses on Hyprland.

### Will an Omarchy upgrade break the widget or my bindings?

The widget imports only QtQuick and Quickshell.Io, deliberately avoiding the modules Omarchy versions with itself, so upgrades should leave it alone. Your bindings live in `bindings.lua`, which Omarchy does not overwrite.

### Does dictation still run on-device?

Yes. On-Device Mode behaves exactly as it does on macOS and Windows: audio never leaves your machine. See [What leaves your device](/docs/privacy-and-security/what-leaves-your-device).

---

Source: https://trywalkie.com/en/docs/getting-started/walkie-on-omarchy
Walkie help center: https://trywalkie.com/en/docs