ページ

2014-09-26

Linux版HipChatで日本語入力できないときの対処(Ubuntu + 野良Qt5アプリで日本語入力)

Linux版HipChatで日本語入力ができなくて、最初そんなもんかと思ったけど追っかけてみたら直せた。
結論的にはださいがこれでいけた:

今回はこうだったが、実際は環境によっていろいろだと思うので、進め方を残しておく。

環境

Distribution
Ubuntu 14.04 Japanese Remix (amd64)
Desktop 環境
Cinnamon →第342回 デスクトップ環境Cinnamonを使用する:Ubuntu Weekly Recipeを参照

Qt5での日本語入力に必要なこと

Qt5でbuildされた QtCreatorで日本語入力をできるようにする(@Linux環境) によると、どうやら2つのことが必要らしい。
  • 環境変数QT_IM_MODULEの設定
  • platforminputcontextsプラグインの配置(or 環境変数でプラグインパスの変更)

対象アプリケーションの構成の確認

HipChatのインストール方法はHipChat - Downloadsに書いてある通り、apt-lineを追加してapt-get install。つまり、公式ではない野良アプリケーション。

以下のコマンド出力からわかるように、自前でQt5ライブラリを抱えており、シンボリックリンク"/usr/bin/hipchat"からのbash script "/opt/HipChat/bin/hipchat"からの/opt/HipChat/lib/hipchat.binで起動するようになっている。
$ dpkg -L hipchat
/usr
/usr/bin
/usr/share
/usr/share/applications
/usr/share/applications/hipchat.desktop
/usr/share/icons
/usr/share/icons/hicolor
/usr/share/icons/hicolor/256x256
/usr/share/icons/hicolor/256x256/apps
/usr/share/icons/hicolor/256x256/apps/hipchat.png
(略)
/opt
/opt/HipChat
/opt/HipChat/bin
/opt/HipChat/bin/linuxbrowserlaunch
/opt/HipChat/bin/hipchat
/opt/HipChat/bin/HipChatNowPlaying.rb
/opt/HipChat/lib
/opt/HipChat/lib/libvorbis.so.0.4.5
/opt/HipChat/lib/libvorbisfile.so.3.3.4
(略)
/usr/bin/hipchat
(略)
/opt/HipChat/lib/hipchat.bin
(略)
/opt/HipChat/lib/libQt5Network.so.5
/opt/HipChat/lib/libvorbis.so
/opt/HipChat/lib/libQt5Sql.so.5
/opt/HipChat/lib/libdbusmenu-qt5.so.2
$ file /usr/bin/hipchat
/usr/bin/hipchat: symbolic link to `/opt/HipChat/bin/hipchat' 
$ file /opt/HipChat/bin/hipchat 
/opt/HipChat/bin/hipchat: Bourne-Again shell script, ASCII text executable
$ tail -1 /opt/HipChat/bin/hipchat 
exec -a "$0" $commandtorun "$hipchatRoot/lib/hipchat.bin"  $arguments

環境変数QT_IM_MODULEの設定

QT_IM_MODULEが設定されていることを確認する。

$ env | grep IM_
CLUTTER_IM_MODULE=xim
QT_IM_MODULE=fcitx
QT4_IM_MODULE=fcitx
GTK_IM_MODULE=fcitx

fcitxに設定されているようだ。

platforminputcontextsプラグインの確認

先ほどの記事によると、platforminputcontextsプラグインが重要らしい。ということでパッケージを調べてみると

$ dpkg -L hipchat | grep platforminput
/opt/HipChat/lib/plugins/platforminputcontexts
/opt/HipChat/lib/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
/opt/HipChat/lib/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so

ということで、fcitxはない。ibusはあるので、おそらくibusだったらそのまま入力できたのだろう。

Ubuntu側にあればもらってこようと思って調べたら、
$ dpkg -S fcitxplatform
fcitx-frontend-qt5:amd64: /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
ということで、存在していた。なければapt-get install fcitx-frontend-qt5で入りそうである。

そのため、以下のようにシンボリックリンクを張ることで日本語入力を行うことができるようになった。
$ sudo ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so \
 /opt/HipChat/lib/plugins/platforminputcontexts/
それぞれビルドされた環境が異なるし、いつまでこれができるかわからないので、いっそcpでコピーしたほうがいいかもしれない。

番外:環境変数QT_PLUGIN_PATHの設定

先ほどの記事からするとQT_PLUGIN_PATHを/usr/lib/x86_64-linux-gnu/qt5/pluginsに向ければいけそうであるが、そうはいかない。というのも、/opt/HipChat/bin/hipchatがunsetしているからである。

/opt/HipChat/bin/hipchat抜粋:
thisfile="`readlink -f "$0"`"
thisdirectory="`dirname "$thisfile"`"
hipchatRoot=$thisdirectory/../
export HIPCHAT_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export HIPCHAT_QT_PLUGIN_PATH=$QT_PLUGIN_PATH
export LD_LIBRARY_PATH=$hipchatRoot/lib
unset QT_PLUGIN_PATH
exec -a "$0" $commandtorun "$hipchatRoot/lib/hipchat.bin"  $arguments

自前のほうに向けないとあらぬプラグインを読んだりするかもしれないものね。こういうケースもあるので、野良アプリケーションでは起動するときの流れを確認されたい。

0 件のコメント:

コメントを投稿