Linux (GNOME Wayland): no floating capsule + hotkey depends on focused app + resilience gaps (with working prototype)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- linux, rust
- 領域
- accessibility, desktop
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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 链路)
- 主要言語
- Rust
- スター
- 3.7k
- フォーク
- 349
- 平均マージ
- 2日 14時間
- マージ済み PR(30日)
- 97
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Open-Less/openless のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
[windows] 录音快捷键还不支持设置为ScrllLock键対応中かも @HKLHaoBin が 9 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Open-Less/openless#1241 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 18/100
メンテナーはふだん 1 日以内に返信
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里対応中かも @Breadswim が 2 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
メンテナーはふだん 1 日以内に返信
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400対応中かも @Breadswim が 2 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 58/100
メンテナーはふだん 1 日以内に返信
Open-Less/openless の issue をすべて見る
似ている issue
-
question
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
autoindex tests: denied loopback bind shows only PermissionDenied (255 failures), not the causeオープンfield-report
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
area:core
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
julian-hemmer/ypass#4 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
davidkodar/klipp#3426 ·
メンテナーはふだん 1 日以内に返信