Skip to content

Voxtype does not symlink to voxtype-vulkan on Vulkan enabled system #7099

Open

Description

@sgruendel

System details

AMD Radeon 780M Graphics, Omarchy Quattro

What's wrong?

When installing voxtype on a Vulkan enabled system, output shows

Error: Failed to remove existing /usr/bin/voxtype (need sudo?): Permission denied (os error 13)

Kimi K3 Root cause: voxtype setup gpu --enable rewrites the root-owned /usr/bin/voxtype symlink, but omarchy-voxtype-install ran it as your user — hence "Permission denied (os error 13)" on line 93 of the log. The trailing || true then hid the failure, so the install "succeeded" while /usr/bin/voxtype kept pointing at voxtype-avx512 instead of voxtype-vulkan. The "# omarchy:requires-sudo=true" metadata doesn't run the script as root (nor should it — the rest writes to $HOME); it's just router metadata.

Activity

  1. omarchybot commented on Oct 8, 2026

    @omarchybot
    Collaborator

    Thanks, @sgruendel. This is a real bug, and it is still present on quattro (902fd8ae). bin/omarchy-voxtype-install runs voxtype setup gpu --enable as your user (line 19). That command has to repoint /usr/bin/voxtype, which is root-owned, so it fails with exactly the error you saw. The || true after it hides the failure, and the install reports success while dictation stays on the CPU build. The omarchy:requires-sudo=true line in the script is only metadata for the omarchy command menu. It does not run the script as root, and neither does the first-run invitation that launches it.

    The bot reproduced this on a disposable Omarchy VM with the real voxtype-bin 1.1.0 and a Vulkan driver while reviewing the fixes below. On quattro the switch fails with Permission denied (os error 13) and the link stays on voxtype-avx512.

    Two open pull requests fix it, and both run the switch with sudo. Both were tested the same way and moved the link to voxtype-vulkan:

    Either one fixes this on your Radeon 780M. #11110 and #14083 report the same bug.

    Reviewed by Claude Opus 5.5, with Codex Medium as a second opinion. Codex agreed with the cause and found nothing more, and it read this diagnosis before reviewing, so it was not a fully independent check.

    Next step: the maintainer chooses between #12901 and #13508. Nothing is needed from you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions