解决 Gnome Wayland 缩放后fcitx5候选框模糊
一 前言

  1. 传统的配置fcitx5的教程
    总是说配置三个环境变量
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx


但是现在的GNOME Wayland已经不适用这个方法了,而且真正的配置方法早就写在fcitx5 wiki^[1]^上了,只是作者没有把他们聚在一起,或是他没有兴趣来整理、调试这个方法。

  1. 传统的方法的优劣
    优点:全局通用,不用额外配置,一劳永逸
    缺点
    在已经实现了text-input-v3Gtk3/4上,GTK_IM_MODULE=fcitx 变量会导致Wayland环境的Gtk3/4应用使用x11的fcitx5。从而当我4k屏缩放200%时,Wayland的窗口里使用fcitx5的时候,候选框总是十分模糊
    在firefox(现在默认是wayland模式)中,候选框闪啊闪
  2. 本方法的优劣
    优点:这是fcitx5作者推荐的方法^[2]^,优雅且灵活。解决了上述传统方法的缺点。
    缺点:现在fcitx支持两种协议来确定焦点窗口和相应的应用程序名称,包括wlr-foreign-toplevel-management(由基于wlroots的合成器使用)和plasma-window-management(由kwin使用)。而Gnome Wayland所使用的mutter合成器并不支持这两种协议。所以fcitx5记不住窗口,也就是说fcitx5设置里的共享输入状态的设置失效。也就是说,没法设置不同窗口下输入法状态不同。也就是说在使用text-input-v3的这帮Gtk3/4 Wayland窗口中,输入法的中英文状态保持一致。
    二 步骤
  3. 设置环境变量(针对X11和Qt)^[2]^

    sudo nano /etc/environment
    # 添加以下内容
    XMODIFIERS=@im=fcitx  # X11或XWayland窗口需要
    QT_IM_MODULE=fcitx  # Qt窗口需要
    # 切记不要GTK_IM_MODULE=fcitx,这会把wayland的fcitx5设置覆盖为x11模式
  4. 为Gtk X11设置输入法(针对Gtk2/3)^[2]^。

    nano .gtkrc-2.0  # Gtk2
    # 添加一行
    gtk-im-module="fcitx"
    
    nano .config/gtk-3.0/settings.ini  # Gtk3
    # 在[Settings]下添加
    gtk-im-module=fcitx
  5. 通过Gnome的接口为Wayland环境设置输入法
    另外:目前的Electron软件都只能正常运行在Xwayland上,一旦修改成Wayland,缩放会模糊(添加--ozone-platform=wayland --disable-features=WaylandFractionalScaleV1 解决),主要是输入法也用不了了。

所以可以通过Gnome的设置来设置输入法^[3]^

gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"

感兴趣的可以看看这里 ,有挺多的技术文
支持一下排名


慵懒的猫mi
1 声望0 粉丝