阅读:4046回复:9

[分享] archlinux下小小的编译,使用ibus模式,wps支持。

楼主#
更多 发布于:2022-07-11 17:31
在archlinux为使用小小折腾了好几天,分享一下:

## 编译和安装
这一步假设你已经有基本的abs编译基础,PKGBUILD见下:

```
# Maintainer: firef <use_my_id at="" gmail="" dot="" com="">
# Modiferied by: Yue Wu <ywupub 163="" at="" dot="" com="">
 
pkgname=yong
pkgver=2.6.0
pkgrel=1
pkgdesc="Tiny Small Chinese Input Method"
arch=('x86_64')
url="https://github.com/dgod/yong"
license=('GPL')
 
makedepends=('git' 'nodejs' 'gcc' 'wayland' 'gtk2' 'gtk3' 'gtk4' 'qt5-base' 'libibus')
# 系统中需要安装好相关的开发环境,比如gtk3-devel,gtk2-devel,ibus-devel,libxkbcommon-devel(debian下是libgtk-3-dev libgtk2.0-dev libxkbcommon-dev libibus-1.0-dev)。
#provides=("yong=$pkgver")
 
depends=('gtk3')
 
#install=yong.install
 
source=("git+https://github.com/dgod/yong.git" "git+https://github.com/dgod/build.js.git")
md5sums=('SKIP' 'SKIP')

pkgver() {
    cd "$srcdir/$pkgname/install"
    awk '/%define +version/{print $3}' yong.spec | sed 's|-|.|g'
}
prepare(){
    cd  $srcdir/$pkgname
    mkdir -p {llib,cloud,gbk,mb,vim}/l64
    mkdir -p {im,config}/{l64-gtk4,l64-gtk3,l64-gtk2}
    mkdir -p im/gtk-im/{l64-gtk4,l64-gtk3,l64-gtk2}
    mkdir -p im/IMdkit/l64
    mkdir -p im/qt5-im/l64-qt5
    mkdir -p im/gtk4-im/l64-gtk4
    sed -i 's/copy_build("l32");//' install/build.txt
    # ywu 若需要gtk4支持,请注释掉下面一行。
    sed '/gtk4/d' install/build.txt
    sed -i 's_MOC=.*_MOC="/usr/bin/moc"_' im/qt5-im/build.txt
}
build() {
 
buildjs="$srcdir/build.js/build.js"

 cd $srcdir/$pkgname
  # 不编译qt6支持
   node $buildjs  l64 -x l64-qt6
   node $buildjs -C install  copy
}
 
package() {
   mkdir -p $pkgdir/usr/bin
   mkdir -p $pkgdir/usr/share
   cp -a $srcdir/$pkgname/install/yong $pkgdir/usr/share
   cd $pkgdir/usr/share/yong
   ln -sf ../share/yong/l64/yong-gtk3 $pkgdir/usr/bin/yong
   ln -sf ../share/yong/l64/yong-config-gtk3 $pkgdir/usr/bin/yong-config
   install -D $srcdir/$pkgname/im/qt5-im/l64-qt5/libyongplatforminputcontextplugin.so $pkgdir/usr/lib/qt/plugins/platforminputcontexts/libyongplatforminputcontextplugin.so
   install -D locale/zh_CN.mo $pkgdir/usr/share/locale/zh_CN/LC_MESSAGES/yong.mo
   install -D l64/gtk-im/im-yong-gtk2.so $pkgdir/usr/lib/gtk-2.0/2.10.0/immodules/im-yong.so
   install -D l64/gtk-im/im-yong-gtk3.so $pkgdir/usr/lib/gtk-3.0/3.0.0/immodules/im-yong.so
   install -D $srcdir/yong/im/yong.xml $pkgdir/usr/share/ibus/component/yong.xml
}
post_install() {
  gtk-query-immodules-2.0 --update-cache
  gtk-query-immodules-3.0 --update-cache
}
 
post_remove() {
  gtk-query-immodules-2.0 --update-cache
  gtk-query-immodules-3.0 --update-cache
}
```
Changlog:
20220711 增加ibus组件支持。

makepkg -sic 即可。

## x的设置
经过测试,我感觉ibus的兼容要比fcitx的好,所以我推荐使用ibus+小小模式运行,因为我不使用桌面环境,只使用窗口管理器wm,通过startx进入X,所以使用桌面环境和启动管理器的请根据自己情况来调整,我也不清楚具体方法。
先在ibus设置里添加小小输入法,然后在.xinitrc或其他相关文件添加环境变量设置及启动ibus:

.xinitrc
```
# 设置中文环境

export LC_CTYPE=zh_CN.UTF-8

# 设置环境变量
export XMODIFIERS='@im=ibus' # 默认以ibus为输入法框架
export GTK_IM_MODULE=yong
export QT_IM_MODULE=yong

eval `dbus-launch --sh-syntax --exit-with-session`
ibus-daemon -dxr
sleep 2
```
以上即可,然后退出X再重启即可使用小小。

## wps的支持
wps需要把 /usr/bin/下的 wps、et、wpp,用文本编辑器编辑,在第2行中加入:
```
export QT_IM_MODULE=ibus
```


强制在wps中使用ibus模式即可。
如果不想修改wps文件,就直接设置全局的环境变量:
export QT_IM_MODULE=ibus
沙发#
发布于:2022-07-18 16:19
使用过程中,会发现ibus+小小有时不是那么稳定,比如在wps下打着打着就调不出小小了,可以尝试下面一些方法:
1. 如果是在wps下突然切换不出小小,但在其他软件可以使用小小,这时,可以尝试打开一个xterm终端,切换小小看看是否有用,如果可以切换出来小小,这时再回到wps里十有八九就又可以调出小小输入中文了;
2. 如果小小突然退出了,可以看到状态栏下的小小图标也消失了,只能看到ibus的图标,这时,可以打开xterm终端,输入`ibus engine yong`,小小的图标又会出现了。这时小小又可以正常调用了。
板凳#
发布于:2022-07-21 09:32
周大,最新的代码又编辑不过去了,请帮忙看看。
```
node:internal/fs/utils:347
    throw err;
    ^

Error: ENOENT: no such file or directory, mkdir
    at Object.mkdirSync (node:fs:1394:3)
    at cc (/home/abs/yong/src/build.js/build.js:350:6)
    at cc (/home/abs/yong/src/build.js/build.js:335:4)
    at run (eval at _build_step (/home/abs/yong/src/build.js/build.js:534:8), <anonymous>:19:2)
    at eval (eval at _build_step (/home/abs/yong/src/build.js/build.js:534:8), <anonymous>:31:2)
    at _build_step (/home/abs/yong/src/build.js/build.js:534:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
  errno: -2,
  syscall: 'mkdir',
  code: 'ENOENT'
}

Node.js v18.6.0
==> ERROR: A failure occurred in build().
```
地板#
发布于:2022-07-21 09:57
修复了一下,但没测试,只该了代码。
你昨天说的ibus问题已修复,问题出在ibus不支持显示0选项的候选项
4楼#
发布于:2022-07-21 10:19
dgod:修复了一下,但没测试,只该了代码。
你昨天说的ibus问题已修复,问题出在ibus不支持显示0选项的候选项
回到原帖
这下可以编译通过了,试了一下,
1. 大写状态时,如果小小是中文状态,这时可以用ctrl-space切到英文状态,但然后就又用不了ctrl-space了,所以有只一次的效果。如果小小是英文状态,大写状态时ctrl-space使用不了。
2. ibus那个问题在我这里还是没修复……
5楼#
发布于:2022-07-21 10:44
laolang_cool:这下可以编译通过了,试了一下,
1. 大写状态时,如果小小是中文状态,这时可以用ctrl-space切到英文状态,但然后就又用不了ctrl-space了,所以有只一次的效果。如果小小是英文状态,大写状态时ctrl-space使用不了。
2....
回到原帖
应该是代码没更新到git,通过更新程序更新的是好的
6楼#
发布于:2022-07-21 11:36
dgod:应该是代码没更新到git,通过更新程序更新的是好的回到原帖
嗯,更新程序更新后,ibus的bug修复了。
大写锁定那个bug,ibus模式时修复了,非ibus模式还是有一样的问题。
7楼#
发布于:2023-04-07 13:35
dgod:应该是代码没更新到git,通过更新程序更新的是好的回到原帖
今天更新了github上的0402的代码,编译打包完发现在目录下少了ibus用的yong.xml文件,这是有什么替代的方法了么?
8楼#
发布于:2023-04-07 14:54
laolang_cool:今天更新了github上的0402的代码,编译打包完发现在目录下少了ibus用的yong.xml文件,这是有什么替代的方法了么?回到原帖
在啊 https://github.com/dgod/yong/blob/master/im/yong.xml
9楼#
发布于:2023-04-07 17:41
dgod:在啊 https://github.com/dgod/yong/blob/master/im/yong.xml回到原帖
不好意思,是我这边的编译脚本的问题,目录引用错了……
游客

返回顶部