Linux (GNOME Wayland): no floating capsule + hotkey depends on focused app + resilience gaps (with working prototype)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- linux, rust
- Domaine
- accessibility, desktop
Piste de recherche
Start by reading the Linux capsule and hotkey paths, the fcitx auxiliary-text handling, the Volcengine audio worker, and the recorder and level-handler code. The proposal also introduces a GNOME Shell extension and Unix-socket state bridge, so first determine suitable integration points and split the work into independently reviewable changes. Done means the selected changes are implemented and tested; the issue does not identify specific files or tests.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Issue 提案:Linux(GNOME Wayland)缺少悬浮胶囊 + 热键焦点依赖 + 韧性缺口
建议发到 Open-Less/openless 的 Discussions 或 Issues(中文即可,社区以中文为主)。
标题
Linux (GNOME Wayland): no floating capsule on GNOME 50 + hotkey depends on focused app + resilience gaps found in real usage
现象(Ubuntu 26.04 / GNOME 50 / Wayland,ThinkPad E14 实测)
- 听写状态只有 fcitx5 辅助区纯文本:GNOME Wayland 无 layer-shell,
GNOME 50 又移除了 X11 会话(/usr/share/xsessions为空、gnome-shell --x11
不存在),悬浮胶囊窗口在 GNOME 上无法存在;v2 契约也标注 Linux 无胶囊。 - 热键时好时坏:
fcitx5-diagnose显示Using Wayland native input method protocol: 0——插件热键只在焦点应用恰好以 fcitx IM 模块启动时可达。焦点切到
非 fcitx 应用后 toggle 丢失,会话卡在 Listening 持续录音 18 分钟(麦克风与
ASR 流持续消耗),直到进程重启。 - 服务端抖动时的三个韧性缺口(2026-10-07 火山故障窗口实测,服务端 00:14–00:32
收音频不识别、00:35 自愈):- 静默重试新连接后,旧会话 audio worker 经共享 writer 槽位把旧 seq 帧泄漏进
新连接 → 45000000 sequence mismatch,重试必败(325 秒录音未能挽救); - 重试彻底失败后向已关闭 WS 持续推帧 1910 次;
- 每次录音首块为削波垃圾(inRMS≈0.999)作为首包上行;
- 空转写以红色 Error 胶囊呈现,用户误以为是自己出错(实际是服务端问题)。
- 静默重试新连接后,旧会话 audio worker 经共享 writer 槽位把旧 seq 帧泄漏进
提案(已在本机完成原型并稳定使用一周思路验证)
- 状态桥:
emit_capsule_with_context_locked增加 Unix socket 广播
(~/.cache/openless/capsule-state.sock,JSON 行 state/level,30Hz);
has_clients()时抑制 fcitx aux 文字避免双指示。Rust 侧 ~100 行,
#[cfg(target_os = "linux")],不影响其他平台。 - GNOME Shell 扩展(GJS/ESM,随附 zip):addTopChrome(reactive:false)
悬浮渲染 GLSL Siri 流体光球(振幅主通道、亮度增益 ≤40%,对齐 Wispr Flow/
Echo/macOS 惯例);Main.wm.addKeybinding全局听写热键(合成器抓取,
任意窗口可用,DBus 发DictationKeyEvent,与插件热键天然不双触发);
OpenLess 不在时零存在感。支持着色器 frag 热替换(2 秒调参)。 - 韧性修复:volcengine audio worker 加 session 代数守卫 + 发送失败 break;
recorder 丢弃首块削波垃圾;emptyTranscript 改中性 Cancelled 胶囊。 - UI 电平动态化:level_handler 内噪声门+归一化+包络(静音 189 帧全 0,
说话时幅度跟手;不影响 silence_auto_stop)。
已在本机稳定运行(听写全链路 + 光球 + 全局热键),全部代码原创、AGPL-3.0
兼容、无凭据/遥测。如果方向 OK,我可以把以上整理成分 PR 提交(状态桥+韧性
修复先行,扩展作为独立组件随后);也欢迎指出现有 v2 eframe 架构下更合适的
挂载点(Remote Input / linux-egui popup 通道)。
环境信息
- Ubuntu 26.04.1 · GNOME Shell 50.1 · Wayland · fcitx5 5.1.19
- OpenLess v1.3.18(deb)· 火山引擎大模型流式语音识别(API Key 链路)
- Langage dominant
- Rust
- Étoiles
- 3.7k
- Forks
- 349
- Merge moyen
- 2 j 14 h
- PR mergées (30 j)
- 97
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Open-Less/openless
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
[windows] 录音快捷键还不支持设置为ScrllLock键Peut-être pris @HKLHaoBin l’a pris il y a 8 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Open-Less/openless#1241 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 18/100
Les mainteneurs répondent en général sous 1 jour
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里Peut-être pris @Breadswim l’a pris il y a 2 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
Les mainteneurs répondent en général sous 1 jour
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400Peut-être pris @Breadswim l’a pris il y a 2 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 58/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Open-Less/openless
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
libnativeapi/nativeapi#21 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
longbridge/nsh#804 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour