ログインしていません。

#1 2016-07-19 00:36:53

miya
ゲストユーザー

fcitxを用いた日本語入力環境について

こんにちは、初めまして。
fcitxを日本語入力環境として利用しようと考えています。
ディスプレイマネージャとして、SLiM
ウィンドウマネージャとして awesome を使用しています。

https://wiki.archlinuxjp.org/index.php/Fcitx
上記のwiki通りに、
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export DefaultIMModule=fcitx

と環境変数を ~/.xinitrc に記述し、fcitx を起動しています。
しかし、google chromeで試してみましたが、Ctrl+space をしても動きませんでした。

そこで fcitx-diagnose で確認してみましたところ、
XMODIFIERS や QT_IM_MODULE などの環境変数が設定されていない旨のメッセージが記述されていました。
またそこには、~/.xprofile に直接環境変数を設定するよう記述があり、そのようにして再び再起動しても変わりませんでした。
(この際には、~/.xinitrc で記述した環境変数の設定部分はコメントアウトしてます)

どうすれば fcitx が有効になるでしょうか。
何卒ご教授お願いいたします。

#2 2016-07-19 17:45:45

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 13

Re: fcitxを用いた日本語入力環境について

awesomeいいですよね。わたしも使ってますよ。

わたしの場合は、.xinitrcに以下の設定を書いています。

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

インストールしているパッケージは以下の通りです。

pacman -Ss fcitx | pt インストール
community/fcitx 4.2.9.1-2 (fcitx-im) [インストール済み]
community/fcitx-configtool 0.4.8-1 [インストール済み]
community/fcitx-fbterm 0.2.0-3 [インストール済み]
community/fcitx-gtk2 4.2.9.1-2 (fcitx-im) [インストール済み]
community/fcitx-gtk3 4.2.9.1-2 (fcitx-im) [インストール済み]
community/fcitx-qt4 4.2.9.1-2 (fcitx-im) [インストール済み]
community/fcitx-qt5 1.0.5-4 (fcitx-im) [インストール済み]
community/fcitx-skk 0.1.2-3 [インストール済み]

fcitxを起動すると、タスクトレイにキーボードかIMEのアイコンが表示されますので、
そこから全体の設定で入力メソッドのオンオフ等の設定ができるかと思います。

起動時に環境変数がセットされているかどうかを確認してみてください。
echo $GTK_IM_MODULE
echo $QT_IM_MODULE
echo $XMODIFIERS

セットされていないのなら、SLiMの問題かなあ。

オフライン

#3 2016-07-20 01:53:06

miya
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

kusanaginoturugi様、ご回答ありがとうございます。

.xinitrcの設定は、私も同じく設定しています。
私はskkではなくmozcを入れ、fbtermは入れていないという点を除けば、
インストールされているパッケージも同じです。

また、おっしゃるようにタスクトレイにはキーボードのアイコンが確認できます。
ただ、アイコンをクリックして内容を確認してみると、
入力メソッドがmozcに、変換モードはひらがなに設定されているようですが、
変換モードを直接入力にしても選択されません。他の、全角カタカナ等をクリックすると変わるのですが。
この部分はあまり関係ないかもしれませんが、気がかりだったので記述いたしました。

また、最初に投稿する前に
echo $XMODIFIERS
等で環境変数を確認はしていましたが、
なんの値もセットされておらず、.xinitrc での設定が有効になっていないと考えた次第でございます。

私も SLiM もしくは .xinitrc が原因ではと考え、wiki をもう一度確認いたしましたが、
原因解明につながる記述は無いように思いました。


直接terminal上で
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
を実行し、fcitx-diagnose で確認したところ、
きちんとこれらの環境変数は設定されました。
しかし、google chrome でCtrl Space を試してみても、
何も起きませんでした。
Ctrl Space でインプットメソッドを切り替えるのは癖になっているほどなので、
この方法での切り替えをどうしても実現したいです。

また何かありましたら、何卒よろしくお願いいたします。

#4 2016-07-28 06:54:28

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 13

Re: fcitxを用いた日本語入力環境について

.xinitrcに環境変数をセットしているのに、terminal上で環境変数が表示されないのはおかしいですね。
ターミナル上で環境変数をセットしてからfcitxを再起動するとどうなります?

追記
.xinitrcでのfcitxを無効にした上で、マシンを再起動してみたら、FirefoxでもChromeでも日本語入力できました。他にも何かありそうですね。

編集者 kusanaginoturugi (2016-07-28 07:08:56)

オフライン

#5 2016-08-02 22:13:05

miya
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

kusanaginoturugi様、ありがとうございます。
やってみましたが、同じでした。

追記していただいたようにしてみても、動きませんでした。

また考えてみます。
何かありましたらよろしくお願いいたします。

#6 2016-08-03 10:15:53

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 13

Re: fcitxを用いた日本語入力環境について

fcitx-diagnose の結果を貼り付けてみてください。

あと、awesome の system tray にアイコンが出ているのでしょうか?
出ているのであれば、右クリックして設定から設定画面が開くので、インプットメソッドのオン・オフの設定ができるはずです。(インストール直後は空になっています)

オフライン

#7 2016-08-04 14:01:06

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 13

Re: fcitxを用いた日本語入力環境について

なるほど、fcitx-autostart を使って起動した方がよさそうですね。

最近稀に起動直後に urxvt 上で日本語入力できない事があったので、fcitx-autostart で起動するように変更してみました。(どうなるかはまだ未確認)

オフライン

#8 2016-08-04 23:47:01

miya
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

kusanaginoturugi様、hatahata50様 あれこれ考えていただきありがとうございます。

.xinitrc で実行していた fcitx を、 fcitx-autostart に変更してみましたところ、
今のところ正常に日本語入力ができております。
ありがとうございました。

少し調べてみましたが、なぜ fcitx では動かなくて fcitx-autostart では動くのかはわかりませんでした。
ibus を一緒に入れている場合は、 fcitx の設定ツールの動作に支障をきたすことがあるそうですが、私は ibus は入れていないのでそのことは関係なさそうですね。

とにかく日本語入力が可能になりました。

このトピックは解決済みとさせていただきますが、
fcitx-autostart を使わなければいけなかった理由をご存知の方がいらっしゃいましたら、
是非ご教授お願いします。

誠にありがとうございました。

#9 2016-08-04 23:53:39

miya
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

あれ、申し訳ありません。
トピックを[解決済み]にしようと思ったのですが、編集のボタンが見当たらないので
ゲストユーザーだと書き込みの編集はできないということでいいでしょうか?

#10 2016-08-05 16:41:25

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 13

Re: fcitxを用いた日本語入力環境について

fcitx-autostart はシェルスクリプトで、中身は、2秒スリープしてから、fcitx-remoteを叩いて、fcitxが起動していなければ、fcitxを起動しているだけのようです。

重複起動でもしていたのか、はたまたこの2秒が重要なのか。

オフライン

#11 2016-08-18 02:19:49

miya
メンバー
登録日: 2016-08-05
投稿: 1

Re: fcitxを用いた日本語入力環境について

遅くなりました。

アカウント作ってログインしてからトピック立てるべきでした。

お二方、ありがとうございます。
なるほど。
よくわかりました。

また何かありましたら、よろしくお願いします。
本当にありがとうございました。

オフライン

#12 2016-10-30 23:55:18

mik
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

Fcitx が二重起動している可能性があります。

例えばまず、Fcitx のパッケージをインストールすると、 XDG規格の autostart に対応したファイルもインストールされます。
https://www.archlinux.org/packages/comm … itx/files/ の etc/xdg/autostart/fcitx-autostart.desktop です。
そのため、XDG autostart に対応しているウインドウマネージャでは、 Fcitx は自動起動されるため、いわゆる環境変数の設定のみで済みます。

Awesome は、upstream のデフォルトでは XDG autostart には対応していないはずですが、
https://awesomewm.org/wiki/Autostart にある通り、例えば dex のようなソフトウェアに処理させることも可能です。

.xinitrc に

fcitx &

を単に実行させるのでは、もしも既に起動していたときには重複してしまい、うまく動かなくなってしまいます。
これを、

fcitx-autostart &

  や

fcitx -rd &

にすると、重複を避けられます。(詳しくは、less /usr/bin/fcitx-autostart や man fcitx )

さて、SLiM の使用は、現在はお奨めしません。
メンテナンスが何年間も止まっている、既に終わったとみていいプロジェクトです。
よって、セキュリティに関するものを含め、バグフィックスがなされない状態になっています。
Arch のリポジトリの更新状況をみても、ソフトウェア本体に関しては殆ど放置といっていいでしょう。

.xinitrc に頼る設計にも難があります。
.xinitrc はそもそも、 startx や xinit で起動する際に用いるスクリプトなのに、これを改造して SLiM に対応させないといけません。

だから、
- LightDM や SDDM などをディスプレイマネージャにする
- (Awesome のようなXDG autostart 非対応 WM なら)dexのようなソフトウェアも用いる
方が汎用性(portability)が高いと思います。

#13 2017-02-11 22:37:15

piyox
ゲストユーザー

Re: fcitxを用いた日本語入力環境について

かなり遅いですが、気になった点がいくつかあったのでレスさせて頂きます。

まず、SLiMはmikさんが言われている通りに活動を停止しています。
また、systemdへの対応が不完全なため2回目以降のログインに失敗するなどの問題を抱えています。
なので、別なデスクトップマネージャを使う事を強く推奨します。
詳しくは、ArchWikiにあるSLiMの記事を参照してください。( https://wiki.archlinuxjp.org/index.php/SLiM )

本題ですが、.xinitrcの仕様についてはしっかりと理解されているでしょうか。
.xinitrcは最終的にウィンドウマネージャ及びデスクトップ環境を起動します。
exec hogehoge というコマンドがそれに当たります。
シェルスクリプトは基本的に上から順に処理されます(例外もありますが)。
なので、exec hogehogeの前に環境変数の設定について書かなければいけません。
なぜなら、後に書くとexec hogehogeが終わった後に環境変数が設定されるからです。

また、検証手順についてですが、環境変数はfork元に設定されている物を引き継ぎます。
つまり、端末からアプリケーションを実行した場合は端末に設定されている物を引き継ぐという事です。
今回は手順について明記されていませんでしたが、おそらく端末で環境変数を設定してからランチャー等でアプリケーションを実行した物と思われます。
その場合は、ランチャーに設定されてる環境変数がアプリケーションに引き継がれます。
なので、いくら端末で環境変数を設定してもアプリケーションには引き継がれないという訳です。
これについては複数の端末を起動して環境変数を設定してみれば分かると思います。

長文になってしまいましたがよろしくお願いします。

クィック投稿

メッセージを書いて送信してください。
ボット判定

本当の人間が送信しようとしていることを確認します。

Board footer