Archlinux安装搜狗输入法

写在前面

archlinux安装搜狗输入法本不是新闻,AUR上早有大神打好了包,网上安装的文章也已经烂大街了。
这里主要为了解决从今年1月左右Archlinux安装出现 Couldn't determine full name for SGPYEUDC_1.TTF以及 org.gnome.settings-daemon.plugins.xsettings等问题。

前期准备

安装小企鹅输入法 fcitx

sudo pacman -S fcitx fcitx-configtool fcitx-im

配置好 ~/.xprofile 文件

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

然后注销后重新登录,或者重启后重新登录。

安装搜狗输入法

编写代码

创建一个目录命名 fcitx-sogoupinyin

mkdir ~/fcitx-sogoupinyin

首先搞一个名字叫 PKGBUILD 的文件放到刚才创建的目录里,内容如下

# Maintainer: Bian Jiaping <ssbianjp [AT] gmail.com>
# Contributor: Jove Yu <yushijun110 [AT] gmail.com>
# Contributor: csslayer <wengxt [AT] gmail.com>
# Contributor: Felix Yan <felixonmars [AT] gmail.com>

pkgname=fcitx-sogoupinyin
pkgver=2.3.1.0112
_time=1571302197
pkgrel=1
pkgdesc="Sogou Pinyin for Linux"
arch=("x86_64")
url="https://pinyin.sogou.com/linux/"
license=("custom")
depends=("fcitx" "opencc" "libidn11" "lsb-release" "xorg-xprop" "qtwebkit")

source=("http://cdn2.ime.sogou.com/dl/index/${_time}/sogoupinyin_${pkgver}_amd64.deb")
sha256sums=("4e15aad4785b30f35a8d891de878abe8892ffaea1882f570fec74fd821d0c448")

package(){
    cd ${srcdir}

    tar -xJvf data.tar.xz -C "${pkgdir}"

    mv "$pkgdir"/usr/lib/*-linux-gnu/fcitx "$pkgdir"/usr/lib/
    rmdir "$pkgdir"/usr/lib/*-linux-gnu
    # 也可以直接把字体删掉,自己酌情处理
    # rm -r "$pkgdir"/usr/share/fonts

    # Avoid warning "No such key "Gtk/IMModule" in schema "org.gnome.settings-daemon.plugins.xsettings""
    sed -i "s#Gtk/IMModule=fcitx#overrides={'Gtk/IMModule':<'fcitx'>}#" "$pkgdir"/usr/share/glib-2.0/schemas/50_sogoupinyin.gschema.override

    rm -r "$pkgdir"/usr/share/keyrings
    rm -r "$pkgdir"/etc/X11
}

 编译打包

makepkg -f

 消除异常

方案一:去除pacman后置检查

安装前把hook移出去:

mv /usr/share/libalpm/hooks/xorg-mkfontscale.hook /tmp

安装后把hook弄回来:

mv /tmp/xorg-mkfontscale.hook /usr/share/libalpm/hooks/

方案二:删除字体

上面的 PKGBUILD 里面有两段注释,把#号去掉即可

安装自编译包

下面包名自己核对一下,这里直接贴我自己的了。

sudo pacman -U fcitx-sogoupinyin-2.3.1.0112-1-x86_64.pkg.tar.xz

安装完配置

安装完了记得注销或者重启重新登录,打开 fcitx-configtool添加sogou pinyin。
切记!!! 搜狗输入法不要放在第一个,一定要在English下面,不然可能出现候选字乱码。玄学问题,我也不知道为啥。

原理分析

gnome问题

这个应该是gnome升级导致不兼容,或者说原来AUR的作者写的就有问题,总之改改就好了。

SGPYEUDC_1问题

这个是搜狗输入法自己弄了一些生僻字库,以前版本的archlinux是不会出现啥问题的。
新版本的archlinux(大概是2020.1或者2020.3开始),官方弄了一个叫alpm-hook的东西,安装了fonts的相关包之后,里面带了一个xorg-mkfontscale.hook,里面是在做mkfontscalemkfontdir操作,搜狗这字体又不是啥标准规范的字体,就报错啦,不过没啥影响。安装前可以把hook配置移出去,安装完了再弄回来,或者直接把搜狗的生僻字库删掉就好了。

我们打开看看到底是啥?

下面是配置文件:

[shine@archlinux hooks]$ cat xorg-mkfontscale.hook 
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Operation = Remove
Target = usr/share/fonts/*/
Target = !usr/share/fonts/encodings/*

[Action]
Description = Updating X fontdir indices...
When = PostTransaction
Exec = /usr/share/libalpm/scripts/xorg-mkfontscale
NeedsTargets

看看实际执行脚本:

[shine@archlinux scripts]$ cat xorg-mkfontscale
#!/bin/bash
sort -r | while read -r d; do
  [[ -d $d ]] || continue
  mkfontscale "$d"
  mkfontdir "$d"
  find "$d"fonts.{scale,dir} -maxdepth 0 -size -3c -delete
  rmdir --ignore-fail-on-non-empty "$d"
done
最后修改:2020 年 06 月 22 日
如果觉得我的文章对你有用,请随意赞赏