Skip to content

Fix Ubuntu/Debian install: add ydotoold dep, correct set-key docs#9

Open
jguice wants to merge 2 commits into
mainfrom
fix/ubuntu-ydotoold-dep
Open

Fix Ubuntu/Debian install: add ydotoold dep, correct set-key docs#9
jguice wants to merge 2 commits into
mainfrom
fix/ubuntu-ydotoold-dep

Conversation

@jguice
Copy link
Copy Markdown
Owner

@jguice jguice commented May 10, 2026

Summary

Two related fixes for the Linux install path on Debian/Ubuntu, found while installing on Ubuntu 24.04:

  • Add ydotoold to the deb dependency list. Ubuntu/Debian split the ydotool package into two: the CLI (ydotool) and the daemon (ydotoold). utter shells out to the CLI (src/main.rs:737), which then talks to the daemon over a Unix socket — so without ydotoold installed and running, keystroke injection silently does nothing. Symptom on a fresh install: postinstall fails to enable ydotool.service ("Unit file ydotool.service does not exist") because the unit file ships in the ydotoold package, not ydotool. Fedora/RHEL bundle both into a single ydotool package, so this only applies to the deb build (added to overrides.deb.depends only).
  • Correct the PTT-key change instructions in scripts/install-release.sh. The final post-install message told users to systemctl --user edit utter-watcher and manually override ExecStart with --key …. That's the raw-systemd path; the supported flow is utter set-key, which captures the next physical key, persists it to the config file, and restarts the watcher automatically — matching what the README already documents.

Also: tightened the dep comment at the top of install-release.sh to call out that ydotoold is a Debian/Ubuntu-only extra.

Test plan

  • Build a deb, apt install on a clean Ubuntu 24.04 → ydotoold is pulled in, ydotool.service enables and starts, postinstall completes without warnings.
  • Build an rpm, dnf install on a clean Fedora → unchanged behavior, ydotool package alone provides both binaries.
  • Run install-release.sh end-to-end on Ubuntu → final message points at utter set-key and the workflow actually works.

jguice added 2 commits May 9, 2026 17:05
On Debian/Ubuntu the ydotool client and ydotoold daemon ship as separate
packages. Without the daemon installed and running, utter's keystroke
injection silently fails — the postinstall systemctl enable of
ydotool.service errors with "Unit file ydotool.service does not exist"
because no ydotoold is present to provide it. Fedora/RHEL bundle both in
a single ydotool package, so this only needs to apply to the deb build.

Also fix install-release.sh's final message: it told users to
`systemctl --user edit utter-watcher` and override ExecStart to change
the PTT key, which is the manual systemd path. The supported flow is
`utter set-key` — the watcher restarts itself and the change persists
via the config file rather than a unit drop-in.
Adding ydotoold to deps (previous commit) gets the daemon installed but
doesn't help on Debian/Ubuntu, where the ydotoold package strips the
systemd unit. The postinstall's `systemctl enable ydotool.service` then
fails with "Unit file ydotool.service does not exist" and ydotoold never
starts. Ship a minimal base unit ourselves on deb only (Fedora's
ydotool package already provides one — shipping ours there would
conflict). The existing ydotool.service.d/owner.conf drop-in keeps
working unchanged.

Add the installing user to the `input` group as a permission fallback.
The shipped udev rule grants ACL access via systemd-logind's `uaccess`
tag — preferred when it works, since it scopes access to the active
seat — but it silently does nothing in some session configurations
(no local seat, certain compositor setups, headless installs). Group
membership requires a re-login but is reliable. Trigger udev with
`--action=change` so logind re-evaluates ACLs on already-plugged
devices instead of only firing on new adds.

Postinstall message now also tells users to run `utter set-key` to
change the PTT key, matching install-release.sh.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant