爱意满满的作品展示区。
bbsingao

分享一个 Linux 界面下的输入法中英文指示器

  •  
  •   bbsingao · 3 days ago · 710 views
    https://github.com/flyhigao/fcitx5-floating-indicator
    一个面向 X11 桌面的 Fcitx5/Rime 中英文状态浮动指示器。

    它在不输入、没有候选词时显示一个小型“中/英”窗口;开始输入或出现候选词时隐藏。窗口跟随鼠标移动,因此也适用于不提供文本光标位置的终端类应用。
    特性

    读取 Fcitx5 Rime 当前的中文/英文状态。
    记住不同程序下的输入状态。
    按 Shift 切换后立即刷新状态。
    输入或候选词出现时隐藏,空闲后自动显示。
    始终跟随鼠标,而不是依赖应用提供的光标矩形。
    兼容 WindTerm 等全屏 X11 应用:使用非托管浮动窗口,避免被全屏窗口遮挡。
    应用没有 Fcitx5 输入上下文时,仍可显示状态窗口。
    不修改 Fcitx5 的输入法配置,也不会给自身创建输入上下文。
    5 replies    2026-08-13 15:06:52 +08:00
    bbsingao
        1
    bbsingao  
    OP
       3 days ago
    原先输入法在多个不同 console 窗口中输入时,头几个按键经常因为中英文状态错了,要回退。而状态栏有时候离得太远,没法看。这个小软件就是解决这个问题。
    晚上回去在 mac 和 win 上也写个类似的。
    codehz
        2
    codehz  
       3 days ago
    https://v2ex.com/i/606bcDv7.png
    虽然但是 fcitx 不是自带一个状态提示功能吗
    bbsingao
        3
    bbsingao  
    OP
       2 days ago
    @codehz 那个在一些 console 里显示不出来,比如 wezterm 。 而且显示一长串影响注意力,我这个就蓝色“中”,和灰色“英”。
    bbsingao
        4
    bbsingao  
    OP
       2 days ago
    @codehz WezTerm 没有向 Fcitx5 注册 InputContext
    - 也没有提供光标位置 SetCursorRect
    - Fcitx5 原生提示必须依赖这两个信息,才能把提示窗口放到光标附近

    因此,普通 GUI 程序可能正常,但 WezTerm 、部分终端和某些网页输入框无法使用 Fcitx5 原生提示。Fcitx5 的原生提示本质上是输入面板上的临时消息,并不是全局状态窗口:官方源码
    ( https://github.com/fcitx/fcitx5/blob/master/src/lib/fcitx/instance.cpp)、窗口定位源码 ( https://github.com/fcitx/fcitx5/blob/master/src/ui/classic/xcbinputwindow.cpp)。
    codehz
        5
    codehz  
       2 days ago
    我选择换掉 wezterm ,没报告光标位置意味着连候选词也排到奇怪的位置了,不如换成 kitty 这些,另外怎么会显示一长串,我这就显示一个 en 和 雾 (雾凇拼音)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2706 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:51 · PVG 19:51 · LAX 04:51 · JFK 07:51
    ♥ Do have faith in what you're doing.