本人主力开发机用的是arch linux. Arch linux + wayland + fcitx5 几乎在所有的需要输入的非原生app下都表现极差,经常性无法切换输入法。本文提供的方法可以解决这一问题。
💡
nix 初学者。不足之处请批评指正。
原生配置的麻烦
- 安装一堆包
- 修改一堆环境变量
- chrome/chromium 需要一堆配置文件。
~/.config
文件夹下,就起码要设置chrome-flags.conf
来让chrome跑起来。code-flags.conf
来让vscode正常工作。 - 每个软件需要的配置文件不尽相同。。。比如说wps要改/usr/lib/下面的几个可执行文件
Nix home-manager的好处
- 集配置文件,安装软件于一体
- 可回滚
- fcitx5不用一个一个搞了。。。(这也是主要目的)
如何安装
nix可以在任何linux上安装,请参看官方安装教程。我个人推荐https://github.com/DeterminateSystems/nix-installer。相比官方版本默认启用了flake,还更容易卸载了 😂
装好了nix之后装home-manager https://nix-community.github.io/home-manager/index.xhtml#sec-install-standalone
我一般都在unstable channel。毕竟Arch Linux也一直在滚动更新,没道理home-manager不滚。
如何配置 home.nix
都安装好了之后应该修改 ~/.config/home-manager/home.nix
就行。相关配置如下
{ config, pkgs, ... }:
{
# ...
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5 = {
addons = [
pkgs.fcitx5-chinese-addons
pkgs.fcitx5-configtool
pkgs.fcitx5-pinyin-zhwiki
# other addons, like cloud pinyin maybe?
];
};
};
nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.1.1w" # required by sublime4
];
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
# --- fcitx5 sucks when using it together with kde wayland ---
pkgs.vscode
pkgs.nixpkgs-fmt # vscode nix plugin required
pkgs.google-chrome
pkgs.libreoffice-fresh
pkgs.sublime4
# pkgs.sublime-merge # install in system, otherwise open in editor will not work
pkgs.obsidian
pkgs.spotify # yeah, the search field...
# --- fcitx5 complaining ends here ---
];
...
}
同时将 source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
加入 ~/.profile
文件中。通过 home-manager session variable来配置 fcitx 需要的那三个环境变量 GTK_IM_MODULE
QT_IM_MODULE
XMODIFIERS
这样就大功告成了。所有打字输入的软件都会通过nix fcitx5来配置。我只提供了和fcitx相关的配置,以及提供了一堆我平时打字输入的软件。其他自己配置吧。
如何更新
由于使用了flake,这里使用flake更新。
cd ~/.config/home-manager && nix flake update && home-manager switch
清理空间
nix store gc && home-manager expire-generations '-7 days'