Linux (GNOME Wayland): no floating capsule + hotkey depends on focused app + resilience gaps (with working prototype)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- linux, rust
- Ambito
- accessibility, desktop
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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 链路)
- Lingua principale
- Rust
- Stelle
- 3.7k
- Fork
- 349
- Merge medio
- 2g 14h
- PR unite (30g)
- 97
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Open-Less/openless
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
[windows] 录音快捷键还不支持设置为ScrllLock键Forse già presa @HKLHaoBin l’ha presa 8 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Open-Less/openless#1241 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
I maintainer di solito rispondono entro 1 giorno
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里Forse già presa @Breadswim l’ha presa 2 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
I maintainer di solito rispondono entro 1 giorno
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400Forse già presa @Breadswim l’ha presa 2 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Open-Less/openless
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
longbridge/nsh#804 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
devex good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
calcit-lang/calcit#2538 ·
I maintainer di solito rispondono entro 1 giorno