Qt5.5 で uim を使う
PR が早速取り込まれましたので、この記事に書いたパッチが不要になりました。
素直にオリジナルのリポジトリの master をクローンし、以下の「基本のビルド方法」を実行するだけで素直に動きます。
PRからマージまで20分。早。(;゜Д゜)
3 行で
はじめに
私は、デスクトップ環境として KDE を利用しており、日本語入力には uim を利用しています。
先日、そろそろ KDE4 のサポート切るよ、とのアナウンスがあったため、 KDE5 Plasma への移行を開始しました。
しかし、残念ながら Gentoo の portage ツリーに含まれている uim (app-i18n/uim) は Qt5 に対応していません。
そこで、GitHub からクローンしてきた uim をビルドしようとしたのですが、うまく動いてくれません。
いろいろと試行錯誤し、何とか動くものがつくれたので記事を書いてみました。
自環境
- ディストリビューション: Gentoo Linux
- アーキテクチャ: amd64
- Qt: 5.5.1-r1
- gcc: 4.9.3
- ベースにした uim のリビジョン: 8e5a01085785d294cb93c892b613e8c48baa6c2a
基本のビルド方法
-
git clone
する。 -
./make-wc.sh
する。引数は./configure
に渡すものと同じで OK。追加のソースを取得するので、インターネット接続ができるようにしておくこと。 -
make
する。 -
make install
する。(もちろんスーパーユーザーで)
実行例:
wake-wc.sh
の引数がやたらと長くなっていますが、これは好みの設定をいろいろと行っているため。
キモは --with-qt5
と --with-qt5-immodule
を指定することです。
$ git clone https://github.com/uim/uim
...
$ ./make-wc.sh --prefix=/usr --enable-default-toolkit=qt5 --with-qt5 --with-qt5-immodule --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --without-qt4 --without-qt4-immodule --disable-qt4-qt3support --with-skk --enable-openssl --with-anthy-utf8 --enable-notify=libnotify
...
$ make
...
$ sudo make install
...
インストールできたけど動かない!
無事ビルド・インストールできたら、 libuimplatforminputcontextplugin.so
という名前のファイルが所定のディレクトリ内に格納されているはずです。(自環境では、 /usr/lib64/qt5/plugins/platforminputcontexts/libuimplatforminputcontextplugin.so
)
さて、この状態で、環境変数 QT_IM_MODULE
を uim
に設定して Qt5 プログラムを立ち上げれば uim が使えるようになっているはずですが、 Shift-Space ……スカ。あれ? キー間違えたかなと思いつつ Control-Space ……スカ。全く有効になってくれません。 GTK2 プログラムなんかは全く問題なく uim が使えています2。
原因と対策
以下と全く同じ現象のようでした。
というわけでパッチ。注釈に書いた1通り、他にもちょろちょろ変えていたのですが、ベースリビジョンを変更したら一行パッチになってしまいました。
diff --git a/qt4/immodule/plugin.h b/qt4/immodule/plugin.h
index 4b097ed..66ad880 100644
--- a/qt4/immodule/plugin.h
+++ b/qt4/immodule/plugin.h
@@ -54,7 +54,7 @@ class UimInputContextPlugin : public QPlatformInputContextPlugin
Q_OBJECT
#if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA(IID
- "org.qt-project.Qt.QPlatformInputContextFactoryInterface"
+ QPlatformInputContextFactoryInterface_iid
FILE "../../qt5/immodule/uim.json")
#endif
public:
これを行い、再度 make
、make install
を行うと無事 Qt5 プログラムで uim が使えるようになりました。
私的リポジトリに修正後のソースを置いてみました。
その他の問題
- 何だか uim-helper-server が暴走気味です。Chromium が固まったりします。 uim-helper-server を kill すれば治ります。
- uim-toolbar-qt5 の 設定ボタンを押すと uim-pref-qt4 を起動しようとしているのには気付いていますが直していません。
- uim-candwin-qt5 さん……
PR しないの?
出してみました。
Qt5 で動かすのを最優先にしているため、この変更で他ビルド (特に Qt4) がどのように影響を受けるか分かっていないので、もうちょっと整理できるまでするつもりはないです……と書こうとしたのですが、気付くと一行パッチに。これは PR すべきか……
Author And Source
この問題について(Qt5.5 で uim を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/yoh2/items/f3526c7694e2df4c0ad0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .