To make the review of this request easier, I am using the requested template.
name:yazses
description: YazSes is a local-first Linux voice dictation tool. It records audio from the user’s microphone, performs local/offline speech transcription, and inserts the transcribed text into the currently focused desktop application. The goal is to provide system-wide voice typing for Linux desktops.
snapcraft:snap/snapcraft.yaml in the upstream repository.
reasoning: YazSes needs classic confinement because its core function is system-wide voice typing. The application must interact with the user’s active desktop session and insert transcribed text into arbitrary focused applications, not only into resources inside the snap sandbox.
The snap needs capabilities such as:
Recording audio from the user’s microphone for local dictation.
Running local Python/Whisper-style transcription dependencies.
Keyboard/input integration for dictation workflows.
Typing or pasting the transcribed text into whichever desktop application currently has focus.
Desktop automation behavior similar to voice typing, keyboard macro, and accessibility tools.
Strict confinement is generally preferred, and I understand that. However, strict confinement does not appear sufficient for the main product behavior: system-wide text insertion into arbitrary Linux desktop applications. A strictly confined version would only be a limited demo and would not provide the actual dictation workflow expected by users.
I have considered existing interfaces such as audio-related interfaces for microphone access, but the remaining requirement is global desktop/input integration and text insertion into arbitrary focused applications.
YazSes is user-launched and intended for desktop productivity. It is not a background system service. Its core workflow is local/offline transcription and desktop text insertion.
I understand that strict confinement is generally preferred over classic.
I’ve tried the existing interfaces to make the snap work under strict confinement.
This is not a supported category only categories listed in the supported set from the page below are permitted to get classic confinement granted and fitting into one of them is a hard requirement to even have your request processed any further:
I highly doubt your tool fits into one of these categories though, what were the issues you ran into with the existing interfaces, the above use-cases you describe should all be covered by certain interfaces (audio-record for microphone use, the desktop/desktop-legacy interfaces for (automated) copy/pasting and any further interaction with GUI apps, etc etc) did the snappy-debug tool give you any suggestions when running it against your running strict snap ?
Thanks @ogra, and apologies for the long silence — you were right to push back, and the answer turned out to be that I did not need classic at all.
I would like to withdraw this request.
To answer your actual question, since it may be useful to the next person: the problem was reading the hold-to-talk key, not inserting text. I had assumed system-wide text insertion would need classic. It does not — desktop, desktop-legacy, x11 and wayland cover insertion via ydotool/wtype, with a clipboard fallback. The part that genuinely does not work by default is reading /dev/input/event* for a global push-to-talk key, and the interface for that is raw-input, which exists and works; it simply is not auto-connected, so it needs one command after install.
So the snap now ships strictly confined (confinement: strict, grade: stable) and the whole setup is:
It is published on latest/stable for amd64 and arm64.
Two corrections to my original post, for the record:
The supported-category I gave was not from the permitted list. That was my error; I had not read the linked process carefully enough.
The upstream URL in the request is dead. The project now lives at github.com/MSKazemi/yazses (bare path because my account here is not yet permitted to post links).