救助nixos下,fcitx5开启启动无候选框问题。

如图,在nixos gnome下,启动了fcitx5,登录系统后在别的软件内(比方说gedit)内正常使用,但是在firefox下没法显示候选框 此是在emacs 下rime也是正常的。

image

image

奇怪的是,当我kill到所有fcitx5进程,再启动fcitx就可以了。

kill `ps -A | grep fcitx5 | awk '{print $1}'`
fcitx5

查看了一下nixpkgs的fcitx5的包,nixpkgs/fcitx5.nix at master · NixOS/nixpkgs · GitHub 这边启动了daemon。

系统启动时候fcitx5的进程有这些

➜ ps -A | grep fcitx5
 335859 ?        00:00:00 fcitx5-daemon-s
 335861 ?        00:00:00 .fcitx5-wrapped

我的配置如下

  config = mkIf cfg.enable {
    i18n.inputMethod = {
      enabled = "fcitx5";
      fcitx5.addons = with pkgs; [ fcitx5-rime fcitx5-chinese-addons ];
    };
  }

求教怎么解决开机无法在firefox中直接使用fcitx5的问题。

我不用 gnome。unstable 的 fcitx5 是我更新上去的,我印象里测试时, fcitx5 和 rime 是可以的(仅测了 emacs 和 alacritty),因为我主使用 stable 分支,所以还没用最新的

关于开机启动的 systemd service 是我写的,另外还有一个 PR 是用 xdg autostart,你可以试一下,问题应该是在于你启动 firefox 或是 gnome 时 fcitx 还没有启起来,然后之前设置的环境变量直接就被无视了。或者是你不要用这个 systemd services,学 fcitx4 的那个配置,写进 xsession 里(在 gnome 起动前,比如 services.xserver.displayManager.sessionCommands 里)。Service 这个 PR,一开始是写进 displayManager.sessionCommands 里的,但 review 的人让用 systemd,所以可能会有这个问题,你可以过去开个新的 PR 再改回去(

我这里用 xmonad+none 没什么问题。

我试了下现在可以了。

PR作者说 Currently, fcitx5 has both systemd service and autostart file,这个autostart file在nixpkgs哪里添加了fcitx5?

fcitx5 包里有一个 autostart,在对应包里的 ${fcitx5}/etc/xdg/autostart 下。会链接到类似 config/autostart 的目录中,这个是 nixos/home-manager 自动链的(有一个类似这个的选项 environment.pathsToLink)。自动启动时查找的目录是通过 XDG_CONFIG_HOME 等变量来设置的。你如果用 gnome 的情况,使用 autostart 会比较好(kde 或 gnome 设置里的自动启动就是这个东西。可以和 systemd autostart 配合,也可以是他自己管理),systemd 启动单个 daemon 主要是针对非 de 用户的

哦哦,原来如此,多谢!