NotePCに付いているカメラを FreeBSD で使う。

最近はほとんどの NotePC にカメラが付いていて Windows とかだと Skype しよう。 Mac だと FaceTime しよう。などと言っていますが、普段はほとんど使わない(と、僕は思う)んだけど、実際にはどうなんでしょうか?

そんな感じの標準装備のカメラですが OS に FreeBSD を利用していた場合にどのような目的でどう使う? ってか、その前に「ここに付いているカメラは FreeBSD で動くの?」などと思ってしまうのですが、今回は実際に NotePC に付いているカメラを FreeBSD で利用してみるとこにしましょう。

 
今回登場する NotePC は僕の持っている ThinkPad Edge e145 です。このブログには何回か登場しているのですが FreeBSD がバリバリ動作しています;-)。この ThinkPad Edge e145 も最近の NotePC のトレンドを追いかけているようで、ディスプレーの上にカメラが付いています。

今回はこのカメラを利用して色々やってみたいと思います。もしかしたら、ネタ的にはもう既に枯れているかも・・f(^^;;。

 
1). カメラを認識させる
最近の NotePC に付属のカメラはほとんどが USB に接続されているようですね。 pciconf -lv とか usbconfig list コマンドを叩き、デバイス的に、どこにカメラが接続されているか確認しましょう。

 # usbconfig list
    :
ugen4.2: <Integrated Camera Vimicro corp.> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (256mA)
    :

 
ThinkPad Edge e145 の場合は USB の ugen4.2 として認識されているようですね。と、いうことでこいつを正しいデバイスとして認識させてみましょう。

 
2). デバイスドライバのインストール
FreeBSD の純正デバイスドライバというのは存在してないのですが、 Linux 方面で開発されたキャラクタデバイスを読み込むドライバを FreeBSD に対応させた Cuse4BSD を利用します。 ports 的には multimedia/cuse4bsd-kmod になります。
まず、これをインストールし、続いてキャラクタデバイスをビデオデバイスとして認識させる webcamd をインストールします。 ports 的には multimedia/webcamd になります。まぁ、 webcamd を make install すると関連性で cuse4bsd-kmod もインストールされますが;-)。

そして multimedia/cuse4bsd-kmod を make install したときにインストールされた cuse4bsd.ko を kldload します。

# kldload /boot/modules/cuse4bsd.ko

 
カーネルモジュールをロードしたあとに wbecamd を起動し /dev/video0 として USB カメラを認識させます。オプションに USB 接続のカメラの USB のデバイス名を指定します。

# webcamd -d ugen4.2
Attached to ugen4.2[0]
Creating /dev/video0
^Z
中断
# bg
# ls -l /dev/video0
crw-rw---  1 webcamd  webcamd  0x82 Feb 28 26:14 /dev/video0
# chmod 666 /dev/video0

 
webcamd を起動すると正しく動作する USB カメラであれば /dev/video0 が生えてきます。
その後、一旦バックグラウンドにほーり投げてパーミッションを確認します。今回は一般ユーザでも利用したいので 666 に変更しています。デバイス生成時にバーミッションを変更したい場合には /etc/devd.conf におまじないを書いてください。ここでは割愛します;-)。

以上で準備は完了です。

 
3). まずはローカルでカメラを利用してみる
/dev/video0 が生えてきたので、実際にカメラに写るモノを表示させてみたいですね。そんな時は pwcview を利用します。 ports 的には multimedia/pwcview になります。
こいつを make install したあとに特にオプションも付けずに起動すると X11 上にウィンドが現れてカメラから映る景色が表示されると思います。

しかし、ローカルな FreeBSD の X11 の画面にカメラから映る景色が表示されても「だから何?」で終わってしまいますよねf(^^;;。
僕自身もまさしくそのとおりでして。ただ単に「あ。 cuse4bsd.ko と webcamd でデバイスを認識したのね。ふーん。すごいね。いじょ。」みたいな・・f(^^;;。

この写真はまさしくそんな感じで、 ThinkPad Edge e145 上の FreeBSD で KDE4 が動いていて、そこで pwcview を起動させた状態です。

IMG_0968_NotePC_Cam_1

ディスプレーの上にカメラがあるのですが、その横にある黄緑色の LED が光っております。カメラが Ready 状態ですねぇ;-)。

と、いうことで何か別の利用方法を考えてみることにしましょう。

あ。 chmod 666 /dev/video0 しましたが、これしないと一般ユーザで起動する pwcview では 画像が読み込めない状態になります。

 
4). リモートからカメラの映像を確認する
ローカルな FreeBSD の X11 に画面が出力されたので、リモートの FreeBSD から ssh -CY し、手元の X11 に pwcview を表示させればいんじゃね? えぇ。まさしくそのとおりですね。それだとリモートの X11 にカメラに映された映像が表示されます。それもひとつの案ですね;-)。

今回は http で画像を転送してみましょう。 ports から mjpg-streamer をインストールします。 ports 的には multimedia/mjpg-streamer になります。 make config は default の設定で良いです。まぁ、強いて言えば “Linux-UVC V4L2 plugin” を有効にしてインストールしましょう。

インストールしたものの中で重要なのはプラグインがインストールされた場所でしょうか。 /usr/local/lib/mjpg-streamer/ の中を覗くと .so なファイルが入っていますが mjpg-streamer を起動するときに利用するプラグインになります。

では実際に起動してみましょう。

$ mjpg_streamer -i 'input_uvc.so -d /dev/video0 -y' -o 'output_http.so -w /usr/local/www/mjpg-streamer'

 
/dev/video0 は chmod 666 しているので一般ユーザ権限で起動できます。

-i でカメラ側のオプションを指定します。 input_uvc.so プラグインを利用し、デバイスは /dev/video0 から入力します。
-o で出力側のオプションを指定します。 output_http.so プラグインを利用しコンテンツは /usr/local/www/mjpg-streamer にあることを指定します。
-o に output_file.so を指定するとカメラに写ったモノはファイルに出力してくれるのでしょうなぁ。僕は試していませんがf(^^;;。

ちなみに /usr/local/etc/rc.d/mjpg_streamer という起動スクリプトがインストールされるのですが、こいつは -i のオプションを指定する部分が無いんですよね。 rc.conf.local には以下のように書くと良いかな。

mjpg_streamer_enable="YES"
mjpg_streamer_flags="-i 'input_uvc.so -d /dev/video0 -y' -o 'output_http.so -w /usr/local/www/mjpg-streamer'"

 
さてさて。あとはウェブブラウザで http://localhost:8080 とかリモートのマシンからアクセスしてみるとそれらしいウェブサイトが表示されると思います。

ちなみにポート番号を変えたい場合には以下のように設定するが良いです。

mjpg_streamer_enable="YES"
mjpg_streamer_flags="-i 'input_uvc.so -d /dev/video0 -y' -o 'output_http.so -p 8081 -w /usr/local/www/mjpg-streamer'"

 
こんな感じで任意のポートに変更できたりします。

ただ、悲しいかな・・。 mjpg_streamer は IPv6 には対応していないようですねぇ。ソースコードの plugins/output_http/httpd.c の socket(PF_INET, …); の部分を書き換えると IPv6 対応になるかなぁ?暇なときにいじってみよう。

さてと。実際に表示される動画ですが、皆さんの目で確認してみてください;-)。
左のメニューから Static を選択すると写真が、 Stream を選択すると動画が流れ始めます。
僕の ThinkPad Edge e145 のカメラは pwcview ではまぁ、そこそこ綺麗に見えるのですが mjpg_streamer で見ると多少ちらつきますね。あと、ブラウザ側の PC の負荷が高くなるかな。

 
と、いう感じで NotePC に付いていたカメラが FreeBSD からでも利用できることが確認できました。しかもそのカメラがリモートからアクセスできて閲覧もできることが確認できたので、これで利用頻度がいっきにアップするのでは無いかと思われます。嬉しいことですね。

ただ、音を飛ばす時にはもっと別の技が必要になりそうな気がしますが、それはまた別の機会にでも:-|。

あと、カメラが付いてない FreeBSD がインストールされた PC には手元にある USB カメラを色々付けてみて cuse4bsd-kmod と webcamd で動作するか確認して見るのもよいかと思います。
もし動作する USB カメラだった場合、フツーの自作 PC にインストールした FreeBSD でも今回の組み合わせでカメラが利用できるようになるかと思われます。

ちなみに、僕は以下の二つの USB カメラを持っているのですが、こいつらをデスクトップの FreeBSD で利用してみました。

IMG_2228_NotePC_Cam_2

左側の白いのは FreeBSD というか webcamd で認識してくれませんでした。以下のようなメッセージが出力されます。

# webcamd -d ugen0.2
webcamd: Cannot find USB device

 
右側の黒いのは赤外線付きで暗いところでも良く見えるカメラなのですが、こいつは pwcview では動きましたが mjpg_streamer では動きませんでした(砂の嵐が表示されます)。
カメラによって動作が多少違うようですね。

 
と、いうことで、今回は NotePC に標準で付いているカメラで遊んでみました。 mjpg_streamer がちゃんと動いてくれると、利用価値は上がりそうですね。 また、 mjpg_streamer に変わる何か別のアプリを見つけてきて、それを試してみるのも良さそうですね。何か良い ports をご存じの方いましたら教えて下さい;-)。

また、最近流行の Raspberry Pi を FreeBSD/ARM で起動して USB カメラを接続し今回の組み合わせを利用すると、IoT な監視カメラができるかもしれません。

バッテリ運用で Raspberry Pi+USB Camera+FreeBSD+cuse4bsd-kmod+webcamd+mjpg_streamer+Wi-Fi な状態のヤツをラジコンカーに積んで走らせたら、録画ではなく、リアルタイムで動画が堪能できるような気がします。

面白そうだ・・;-)。

FreeBSD にインストールされる coreutils とは?

デスクトップとして FreeBSD を利用するとなると色々な ports がドドドと入るのですが、その中に coretutils というのがインストールされることに気がついた。 ports 的には sysutils/coreutils になるんですが、こいつは何かというと Linux で利用されているような GNU のコマンド一式なんですね。 FreeBSD 的には /usr/bin/ 配下にあるコマンドの先頭に g が付いて /usr/local/bin/ に大量にインストールされます。別に新規に GNU のコマンドを入れなくて良いよー。と、なるのでありますが・・。

そもそも coreutils はどの ports に関連付いてインストールされるのか調べてみると kdepim4 がインストールしているみたい。うひっ!! すると KDE4 をインストールしていない人にはまるで関係の無い ports と、いうことになるじゃん・・。orz

今回は、既に /usr/bin/ などにコマンドがあるのに、新たに GNU のコマンドを入れてしまう coreutils をインストールしないように kdepim4 の ports を書き換えてみたいと思います。
環境は FreeBSD 10.0-RELEASE で ports-current 、 kdepim4 のバージョンは kdepim-4.14.2_1 で coreutils のバージョンは coreutils-8.23 になります。

1). kdepim4 の Makefile 参照
まず、 kdepim4 が coreutils-8.23 をインストールしていることが解ったので deskutils/kdepim4/Makefile を覗いてみます。すると、以下の行ですね。

 20  RUN_DEPENDS= ${KDE4_PREFIX}/bin/accountwizard:${PORTSDIR}/deskutils/kdepim4-runtime \
 21               ${LOCALBASE}/bin/gmd5sum:${PORTSDIR}/sysutils/coreutils

 
20 行目で RUN_DEPENDS が設定してあって 21 行目で gmd5sum を利用するために coreutils-8.23 をインストールするようです。
では、実際にソースコードはどこで gmd5sum を使うのか確認してみましょう。

 
2). 設定ファイルで利用されている?
kdepim-4.14.2_1 の中では libkleo/libkleopatrarc.desktop というファイルの中でのみ gmd5sum が利用されているようです。ついでに gsha1sum も利用されているようです。他のソースコードでは全く利用されていないようですし、また、他の g シリーズのコマンドも利用されないようです。

これだけのために g シリーズのコマンド一式インストールするんかい!? となるので、是非ともなんとかしたいモノです。

 
3). md5sum と sha?sum のみインストールする ports を作る
coreutils の他のコマンドは要らないので md5sum と sha?sum のみインストールする ports を作りました。
実は FreeBSD の md5 や sha1 で代用できるんかな? とか思ったのですが md5sum や sha1sum には -c (–check) オプションがあって kdepim4 の kleopatra (これについては後で詳しく説明します;-) の中ではまさしく -c オプションを利用しているので FreeBSD に標準で付いているコマンドではダメなんですね。
あと、 openssl md5 オプションでも -c に相当するオプションはありませんでした。
なので、しょーがない。 md5sum と sha?sum のみをインストールする ports を作成しました。

http://icmpv6.org/Prog/FreeBSD_ports/ports-md5sum-20141216.tgz

ちなみに FreeBSD の md5 に -c 相当のオプションないんかい? などと思いウェブを色々調べたのですが、 BSD 系の人は、この -c オプションが無いためにスクリプト書いたりと色々ナンギしているようですね。

上記 ports は、もとは sysutils/coreutils を利用していますが、先頭の “g” を取って必要最小限なモノしかインストールしないように pkg-plist を書き換えました。
Makefile 中の CONFLICTS で coreutils-* も指定してあるので md5sum と coreutils の両方インストールすることはできません。

ダウンロードしたファイルは /usr/ports/sysutils/ に展開してください。

 
3). kdeppim4 の Makefile の編集と files/ の下のファイルを一個消す
上に掲載した kdepim4 の Makefile の 21 行目を以下のように直します。

 20  RUN_DEPENDS= ${KDE4_PREFIX}/bin/accountwizard:${PORTSDIR}/deskutils/kdepim4-runtime \
 21               ${LOCALBASE}/bin/md5sum:${PORTSDIR}/sysutils/md5sum

 
そして、不要となったファイルである deskutils/kdepim4/files/patch-libkleo__libkleopatrarc.desktop を削除します。

あとは kdepim4 を make && make deinstall && make reinstall し直せば OK。ノラ ports である md5sum も合わせてインストールされます。

 
4). kleopatra をちょっと説明
そもそも libkleopatrarc ってのは KDE の中で何をしているモノなのか?
コマンド的には kleopatra というのがあります。では kleopatra とはなんなのか? 基本的には証明書マネージャーの GUI 版で、ヘルプを見てみると「証明書マネージャと統合された暗号 GUI」とのことで PGP キーなどを管理するソフトウェアになります。

普段 PGP などはコマンドラインで利用しているかと思いますが、 kleopatra を利用すると GUI で鍵の作成・サイン・エクスポート・管理などが行えます。実際に利用してみると中々便利ですね;-)。

ちょっと kleopatra をコンソールから起動してみます。するとまず最初に「kleopatra セルフテストの結果」が起動し、そのときにコンソールにはログとして以下が表示されます。

    :
ChecksumDefinition[ "sha1sum" ] ("xargs", "-0", "sha1sum", "--") 
ChecksumDefinition[ "sha1sum" ] find -print0 |  "/usr/bin/xargs" ("-0", "sha1sum", "--") 
ChecksumDefinition[ "sha1sum" ] ("sha1sum", "-c", "--") 
ChecksumDefinition[ "sha1sum" ] "/usr/local/bin/sha1sum" ("-c", "--") "%f" () 
ChecksumDefinition[ "md5sum" ] ("xargs", "-0", "md5sum", "--") 
ChecksumDefinition[ "md5sum" ] find -print0 |  "/usr/bin/xargs" ("-0", "md5sum", "--") 
ChecksumDefinition[ "md5sum" ] ("md5sum", "-c", "--") 
ChecksumDefinition[ "md5sum" ] "/usr/local/bin/md5sum" ("-c", "--") "%f" () 
    :

 
セルフテストの結果に赤い NG のがあるのであれば、問題を取り除き、全部緑色にしたほうが良いでしょうね。
キャプチャはありませんが、例えば security/gnupg をインストールするときに make config のオプションで [x] SCDAEMON としてから再インストールする必要があったりします。

が、しかし、ログを確認すると今回の目的である md5sum と sha1sum のみのインストールができたので今回はよしとしましょう。

ちなみに md5sum と sha1sum が記載されているファイルは /usr/local/share/config/libkleopatrarc としてインストールされます。すると kleopatra は起動時のセルフテストにおいてはこのファイルを参照して動作しているようですね。

libkleopatrarc はインストールしたものを利用しても良いし、以下のように自分の設定として保存し、それを手で編集しても良いです。

$ cp /usr/local/share/config/libkleopatrarc $HOME/.kde4/share/config/

 
上記のコマンド実行後に自分の $HOME に置いた設定ファイルを手で編集し、 ports を利用せずに個別にインストールした md5dum と sha1sum を利用するように変更したりもできるようになります。

 
それにしても、どうして coreutils-8.23 を使うのがイヤかというと、とあるプログラムをインストールしようとして configure を走らせたのですが、これがなんと /usr/bin/install ではなく /usr/local/bin/ginstall を利用したりと FreeBSD 由来のコマンドではなく ports からインストールした GNU のコマンドを利用しているんですね。

そんなのはイヤだー。純粋な FreeBSD の /usr/bin/* なコマンドを利用したいよー。などと思ったのが今回のコトの発端なのであります。人によっては「そんなんどっちでもいーじゃん。」ってのがあるかもしれませんけどねぇ。

 
しかし、今回作成したノラ ports である md5sum は coreutils の中から一部のコマンドを切り出しただけの ports なので、似たようなのが色々できそうですね。例えば Linux の ls(1) を利用したい場合には ls のみをインストールする ports である gls とか簡単に作れそう;-)。

しかし、そんなことは、多分、僕しかしないだろうなぁf(^^;;。

dbus を VirtualBox に対応した ports を作りました。

以前のエントリで「KDE4 で VirtualBox を動かしたしたときに ISO がマウントできない件。」と、いうエントリを書きました。FreeBSD 上で動作する VirtualBox でゲスト OS はISO イメージを mount できない。 dbus が悪さしているようだ。って感じなんですけども。

で、そのエントリに対してコメントを頂きました。なるほど。 issetugid を undef すれば良いのですね。コメントくださった方、ありがとうございました。

で、 make configure 走らせて config.h 編集してから make && make deinstall && make reinstall するのは大変なので、 ports で選択できるようにしました。

dbus_VirtualBox_1

make config に ISSETUGID オプションを [x] にすると Support VirtualBox ISO image mount が有効になります。

gnome@freebsd.org に連絡する必要があるような気がするんだけど、きっとノラ ports のままにしておくと思いますf(^^;;。
コミットしてくださる方がいると非常に嬉しいですが VirtualBox を利用していて ISO イメージをマウントできないのは KDE4 を利用している人だけなのかな?

FreeBSD で VirtualBox 使ってて ISO イメージがマウントできない。と、お嘆きの方は以下の ports を利用してみてください。
あ。変更したのは dbus/Makefile のみです。

http://icmpv6.org/Prog/FreeBSD_ports/ports-dbus-VirtualBox_ISO_image_mount-20141215.tgz

ISSETUGID オプションを有効にすると configure ファイルの ac_func から issetugid を削除します。すると config.h では #undef HAVE_ISSETUGID になります。それで make すると VirtualBox のゲスト OS で ISO ファイルがマウントできるようになります。

majordomo の ports 作りました。

FreeBSD の ports-current を追いかけていると、いつの間にか mail/majordomo が削除されてしまいました。以前の ports ツリーから消える前の ports を眺めてみると Makefile に NO_STAGE= yes という記述があり、この記述があると BROKEN になってしまうんですね。

なので、 ports のメンテナの方も stage 対応にしないでそのまま ports ツリーから削除してしまったのでしょうなぁ。

僕自身は今でも majordomo を利用していて perl-5.16 対応にするのが大変だったりしているわけですが、まぁ、まだ使っているしねぇ。消えるのは悲しいねぇ。などと思った次第です。

 
メーリングリストの配信システムは、最近では mail/mailman があったりしますが apache までインストールしてしまうので仕掛けが随分と大げさになってしまいます。 もう一個、メーリングリスト配信システムとしては fml もあったりしますが、こちらも随分と古い(枯れている)し、 ports にはなってないし・・。
#上記のように書きつつ fml のサイトを見たらっ!! あいやっ!! 今てもメンテされているのですねぇ。失礼しました。 fml8 ですかっ!!
#あとは FreeBSD の ports になるのを待つばかり。でしょうか;-)。

さくらのレンタルサーバでは今でも fml が利用されているかな?

 
と、いうことで、いっちょ majordomo を stage 環境に対応させてみるかねぇ。などと思い ports を作ってみました。 ports ツリーから削除される前の majordomo の ports を参考にして、 stage 環境に対応してみました。

この majordomo の ports というのは内部でスクリプトをガシガシ動かしていて『ふむ。こりゃー stage 環境に移行するのは大変だわー。』などと思ったんですけどもねぇ・・。

以下の URL に stage 環境に対応した majorodomo の ports を置いたので、ノラ ports でも構わない。と、いう人がいましたら利用してみてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-majordomo-20141020.tgz

ちょっと ports の説明をすると、今まであったものからの変更点は以下になります。

1. Doc の下や man はバッサリと削除したのでインストールされません。
2. 古い ports では test-l というサンプル ML が用意されるのですが、それもインストールされません。
3. 今回 contrib/ というディレクトリ内に僕が改造して利用している sequencer を入れておきました。試してみたい方はインストールしてみてください。 make install ではインストールされません。

だいたいこんな感じでしょうか。 Makefile に ${INSTALL} をたくさん書くのが面倒だったのであまり必要でないものはインストールしないようにしました。それが Doc であり man であったりします;-)。

sequencer は Subject: ヘッダに ML 名を付けたり、番号を付加したりするものですが、日本語対応と Re: たくさん付く問題などの対応のために多少改修して使いやすくしています。

majordomo の ports がなくなって愕然としている人いましたらご利用頂ければと思います。

 
ちなみに、 portmaster -D -a 実行時に「majordomo なんて ports 知らないよ。」などと怒られる場合には以下の手順で回避することができます。

# mkdir -p /var/db/pkg/majordomo-1.94.5_8
# cp /dev/null /var/db/pkg/majordomo-1.94.5_8/+IGNOREME

 

こーすると、 portmaster 実行時には majordomo を無視してくれるようになります。

とまぁ、どちらにしても majordomo は前時代的だし、メーリングリスト自体もそもそも前時代的なモノになりつつあるのかもしれませんなぁ・・。

Storage Made Easy の ports 作りました。

以前のエントリで SkyDrive に FreeBSD からネーテブアプリでアクセスしようぜぃ。ってのを二つ書きました。以下のエントリになるんですけども。

SkyDrive を FreeBSD に mount して使う。
SkyDrive を FreeBSD に mount して使う。そのに。

当時はまだ OneDrive ではなく SkyDrive と言っていたんですね。

そもそも、 FreeBSD から直接 OneDrive に(ネーテブなアプリで)アクセスすることは不可能で、中間的サービスを利用することになります。そのサービスは Storage Made Easy (以下 SME と記述)と、いうものです。

ここでアカウントを作成して、無料のサービスを利用すると SME のストレージサービスが利用できる他に、色々なクラウドストレージサービスプロバイダも合わせて利用できる。ってシロモノです。
簡単にいうと SME のサービスはプロキシみたいな感じで OneDrive とか Box 、 更には DropBox などにもアクセスできるようになります。

これは是非ともアカウントを一個くらいは作っておきたいですねぇ;-)。

SME のサービスはマルチプラットホーム対応で色々な OS 用のアプリがあり、スマートフォン・PC・Mac や Linux からもアクセスできます。 Linux 用はソースコードまで公開していて、そのソースコードを FreeBSD 上でコンパイルすると、 FreeBSD のネーテブアプリから OneDrive や DropBox にアクセスできる。と、いうすごいことになるんですねぇ。

以下の Lunix 用アプリについて書かれている URL です。

http://storagemadeeasy.com/LinuxDrive/

ここから CentOS の rpm をダウンロードして make してしまう ports を作ってみました。上にあるエントリでは随分と古い話でしたが、最近のソースコードは随分と美しくなり、起動するアプリケーションも直感的になりました。

 
話はガラっと変わるのですが、 Windows8.1 の場合、 OneDrive にアクセスするときには Windows Live アカウントでないとアクセスできない(ローカルアカウントでログインしている場合には一旦切り替えなければならない)ので非常に厄介です。

その場合、SME の Windows 版アプリをダウンロードして来て Windows8.1 の場合にはそれを利用するとローカルユーザーでも OneDrive にアクセスできるようになります。うひひ;-)。

Windows8.1 な人も是非利用してみてください。

 
さてさて。話を戻して、上記 URL より SentOS の storagemadeeasy-4.1-0.noarch.rpm をダウンロードしてサクっとインストールする ports を書いてみたのでもしよければ利用してみてください。

以下に ports の仕様を書いてみたいと思います。ダサいところが多々残っているんですが、僕には ports の書き方が判りませんでした・・。orz

あ。 ports は当然ながらノラ ports です。これがちゃんと ports のルールに従えられれば、前回のノラ ports である QtWeb とこれは commit してメンテナになってもも良いかなぁ。などと思っているんですけどもねぇ・・。

以下の URL にノラ ports はあります。ダウンロードしたら /usr/ports/net/ に展開して頂ければと思います。

http://icmpv6.org/Prog/FreeBSD_ports/ports-storagemadeeasy-20140812.tgz

ports の仕様は以下のような感じ。まぁ、Makefile を見て頂ければ解ると思いますf(^^;;。

1).ダウンロードはちょっと違うファイル名
https://storagemadeeasy.com/files/ から 380f74d2fcd051b21a64858ecb3f0923.rpm と言うファイルをダウンロードしてきます。

2). post-patch はダサいねぇ・・
${WRKDIR}/usr/share/sme_install/*/* のディレクトリのパスを変更します。 それにしてもダサいのが、僕は SED マクロが書けませんでした。 find して xargs から perl -e で置き換えています。ここはもっちっと改修する必要が絶対にあります。

3). コンパイル
SME のアプリは Qt4 を利用しているので qmake-qt4 実行後に make します。 LIB_DEPENDS や USE_ は多分全てを読み込んでいて、モレはないと思います。

4). インストール
SME のアプリの make は make install が無いので ports の中で吸収する必要があります。PLIST_FILES に書かれたものがインストールされます。
が、しかし、これだけでは足りないんですよねぇ・・。 pkg-plist の書き方が解らなかったので pkg-message にイントール後にもう一個インストールするようにコマンドイメージを書いておきました。
ports の中に smeclient.tgz を同梱しているのですが、これは ${WRKDIR}/usr/share/smeclient/ ディレクトリのアーカイブになります。
なので tar でなくとも、以下のコマンドでも十分に OK なんですね。

# cp -pr work/usr/share/smeclient /usr/local/share/

 
以上が ports の仕様です。随分とダサいところ満載ですねぇ・・。書き方が解らない部分が多いんですよねぇ・・。この間作った QtWeb の ports のほうがまだ楽ちんでしたf(^^;;。

 
と、いうことで、インストールされたあとは /usr/local/bin/smeexplorer を起動してアクセスすれば色々なクラウド上のファイルの閲覧が可能になります。

SME のサービス自体が中々良い感じなのでそれが FreeBSD 上からウェブブラウザ経由ではなく、ネーテブアプリからアクセスできる。と、いうのが良いのであります。

あ。今回はキャプチャはありません;-)。

ただ、 SME のアカウントを作成しなければならない。と、いうのが煩わしいとは思うのですが、iOS や Android 、 Windows などと同じレベルで FreeBSD からもするーっとクラウドストレージへのアクセスが可能になるので、これはこれで利用すると非常に嬉しいですねぇ;-)。

 
皆さんも是非利用してください。とは言いませんが、あ。そーそー。最後にですが、当該 ports を ports のルールに乗っ取ったものに改修してくださる方絶賛募集中です。どうか宜しくお願いします。

 
2014/09/05 加筆
ちゃんと一発で make install と make deinstall できるように ports を更新しました。
改修点は以下になります。

・post-patch: の部分で perl で一括置き換えしていたものを REINPLACE_CMD を使うようにした
・最後に tar でインストールしようとしていたたくさんのファイルを do-install: で行うようにした

が主な改修点です。これで多分完璧;-)。

以下の URL にあるのでよかったら利用してください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-storagemadeeasy-20140905.tgz

xfce4-terminal を xfce4 以外で美しく使う。

X11 で利用するためのターミナルソフトというのは /usr/ports/ の下を探すと色々あるんですけども、僕なんかは KDE4 を利用していて『konsole あるじゃん。』となるんですが、どーも konsole は使いにくい。その中で色々と試して自分に良い感じのモノを利用したいモノです。

過去にもこのブログでは gtkterm2 のエントリを書いたりもしましたが、今回はそれに続く第二弾。と、いう感じでしょうかねぇ。

今回取り上げるのは xfce4-terminal です。 ports 的には x11/xfce4-terminal/ になります。もともとはウィンドマネージャである xfce4 (ports 的には x11-wm/xfce4)のターミナルソフトとしての役割があるのですが KDE4 を利用している場合においても x11/xfce4-terminal を make install することはできます。

xfce4 本体は利用せずともターミナルだけをインストールすると以下と、それに関連するプログラムがインストールされます。

libxfce4menu-4.10.0
libxfce4util-4.10.1
xfce4-conf-4.10.0
xfce4-terminal-0.6.3

まぁ、これくらいなら許せるかねぇ。って気がしないでもないので僕は使い続けているんですけどもね;-)。

で、xfce4-terminal のインストールが無事に完了し KDE4 で起動するとこんな感じになります。あ。上部のメニューの部分だけのキャプチャです。

xfce4-terminal_1

xfce4 をウィンドマネージャとして利用していると、ツールバーは 文字・アイコン・両方が選択できるのですが、 KDE4 上で利用するとその選択ができずに”両方”しか選択の余地が無いんですね。ちなみに xfce4 でウィンド装飾を設定するには xfce4-appearance-settings というプログラムを利用します。 ports 的には sysutils/xfce4-settings に含まれているのでいつを追加でインストールし xfce4-appearance-settings を起動してツールバーを”アイコンのみ”にしても KDE4 上で起動した場合には”両方”でしか表示できないんですね。

で、しばらくはツールバー無しで利用していたのですが、せっかくある機能、使わずしてどうする?などと、ザラ議長のような発想になってしまい、あちこち調べて格闘してみた。と、いうネタが今回のエントリーです;-)。

 
ウィンドマネージャである xfce4 の各種設定情報は $HOME/.config/xfce4/ に色々保存されます。ウィンド装飾の設定は $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml というファイルに保存されますが xfce4-terminal を単体で起動した場合にはこの設定ファイルを読み込まずにそのまま起動してしまうようです。 xfce4 のセッションを管理している何かしらの管理デーモンが画面全体を制御しているのでしょうなぁ。

では、 xfce4-terminal のソースを書きなおして default が BOTH なのを ICON に変えれば良いじゃないか。とか思い、ソースコードを見たのですが、うーむ。この辺りは GTK2 が管理しているようで GTK2 について詳しくない僕にとっては中々手強いのでありましたf(^^;;。

と、いうことで色々調べた結果、 KDE4 利用時に xfce4-terminal を起動しても無事にアイコンのみを表示できるようになりました。

xfce4-terminal_2

xfce4-terminal と xfce4-appearance-settings を同時に起動しました。

 
xfce4 は設定情報を全て管理していて、 xfce4 のアプリが起動したときに保存してある設定情報をアプリに渡すためのデーモンが存在しているようです。 KDE4 から xfce4-terminal を起動した場合、そのデーモンが起動していないために設定情報を xfce4-terminal に渡すことができなくて xfce4-terminal は default の設定で起動するんですね。

なるほど。では xfce4 の設定情報を渡すためデーモンを KDE4 利用時に起動して上げれば良いんだ。と、いうことになります。ちなみにそのデーモンは xfsettingsd というプログラムで sysutils/xfce4-settings に含まれています。

KDE4 でログイン後に xfsettingsd を起動してあげると xfce4 の各種設定が利用できるようになります。

まぁ、余計だとか CPU の無駄遣いとかイロイロあるとは思うのですが、最近はマシンパワーも余っていることですし、見てくれやツールバーの機能も重要なので今回はこれでヨシとしましょう。

あ。ツールバーが表示されたんだけど、「新規タブ」と「新規窓」のアイコンが表示されません。追加で x11-themes/icons-tango などをインストールしてあげてください。

これであなた好みのツールバーアイコンが利用できるようになるとか思われます。

ちなみに僕は非力なマシンとか仮想環境で X が必要なマシンでは KDE4 ではなく xfce4 を利用しています。機能的にも十分だし軽量なので重宝しております;-)。

 
さてさて。これだけではなんなんで、一個パッチを公開します。

xfce4-terminal ってのはショートカットとかキーバインドなどはソースにハードコーディングしているので変更できないんですね。
一番困ったのがタブの移動で default では Ctrl+Page_Up とか Ctrl+Page_Down なので不便でしょーがない。僕はタブの移動は Shift+Left もしくは Shift+Right にしているので、その部分を変更するパッチになります。

http://icmpv6.org/Prog/FreeBSD_ports/patch-terminal-terminal-window.c

自分のキーバインドにしたい場合には terminal/terminal-window.c の 210 行辺りを変更すれば良いと思います。
上記パッチは files/ の中にほーりこんで make すれば大丈夫なようにしています。

 
と、いうことで今回は xfce4-terminal について書いてみました。皆さんも機会があったら試してみてくださいー;-)。

QtWeb というブラウザの ports 作ってみました。

GNOME 方面の人にはまるで興味が無いとは思うのですが、 KDE というか Qt を利用している人にとっては、ご存知な方もいるのではないかなぁ?

世の中には超軽量ブラウザというのが存在しています。 rekonq も konqueror に比べると軽量かなぁ。arora も軽量ですね。 rekonq よりも軽量なのが QtWeb というブラウザです。 arora と同じくらい軽量かなぁ。

以下が QtWeb のサイトですね。

http://qtweb.net/

ここを見ると Windows・OS X・Linux と世界の三大ウィンドを制覇しているんですけどもね;-)。で、それぞれバイナリがあるのですが、ソースコードもあるので、それを FreeBSD に持ってきてコンパイルすると FreeBSD 上でも動作するんですけども。

キャプチャはこんな感じです。

Qtweb_1

で、せっかくなので今回は QtWeb の ports を作ってみました。 arora が ports になっているのに QtWeb が ports になってないのは悲しいことですし;-)。
以下の URL にあるのでもしも「僕も私もちょっと FreeBSD 上で QtWeb を使ってみようかなぁ。」などと思った人は試してみてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-qtweb-20140619.tgz

あ。コミットするつもりはありません。あくまでノラ ports ということで;-)。

QtWeb の ports の仕様やインストール方法などをちょっと書いてみます。

o. QtWeb をコンパイルするには Qt 4.8.6 のソースコードが必要
FreeBSD の ports 的には qt4-* で色々インストールされているのですが、 QtWeb は Qt ライブラリを static link するので FreeBSD の ports 的な Qt ライブラリは必要としません。
GNOME や xfce4 な人も Qt や KDE のコンポーネントをインストールすることなく Qt コテコテなブラウザを楽しむことがてできます。

しかし、裏を返すと Qt ライブラリ部分もコンパイルするのでコンパイル時間が随分と長いです。orz

僕が作成した ports では /usr/ports/distfiles/KDE/ に Qt 4.8.6 のソースがあればそれを利用し、なければとある日本のサイトからダウンロードしてきます。詳細は files/patch-qt-src.sh を見てください。

o. ports がインストールするもの
QtWeb のサイトからバイナリをダウンロードすると、本当に QtWeb 本体のみしかパッケージングされてないのですが、僕の作った ports では QtWeb バイナリの他に icon として QtWeb.png と QtWeb.desktop をインストールするようにしています。インストール直後から KDE のインターネットメニューに表示されるようにしました。

o. QtWeb の起動
ports からインストールすると /usr/local/bin/QtWeb ができるのでそれを実行するのですが、実行後にできるディレクトリが美しくないです。以下の三つのディレクトリができます。

・$HOME/.QtWeb Internet Browser/
・QtWebCache/
・QtWebSettings/

一番上の .QtWeb Internet Browser/ は $HOME にできるので良いのですが、 QtWebCache/ と QtWebSettings/ はどこにできるかわかりません。実行したときにいるカレントディレクトリにできたりとか、ヘタするとあちこちに QtWebCache/ と QtWebSettings/ ができてしまうような感じです。orz
なお、メニューから QtWeb の設定を変更するとその内容は QtWebSettings/ に保存されます。

が、しかし、それにしてもこの二つのファイルはどこにできるのか解らない・・。orz
ソースコードを書き換えてやろうかと思ったほどですが・・。
なのでしょうがない。起動用にスクリプトを一個書きました。

#!/bin/sh

cd $HOME/.QtWeb\ Internet\ Browser
QtWeb > /dev/null 2>&1
#/usr/local/bin/QtWeb > /dev/null 2>&1
#cd  $HOME

 
$HOME/.QtWeb Internet Browser/ 配下に QtWebCache/ と QtWebSettings/ が作成されるようにするためのスクリプトです。
不便やのぉ・・。って感じなのですが、ソースコード的には browserapplication.cpp の数カ所を直せばちゃんとコントロールできるんじゃね? って感じはします。

 
こんな感じの QtWeb というブラウザなのですが、もしよければ皆さんもコンパイルして使ってみてください;-)。

 
あ。最後にですが、 Qt-Webkit は x-sjis と x-euc-jp には対応してないので文字化けします。 rekonq も konqueror も Qt-WebKit を利用しているのでやはり x-* な文字コードは表示できません。最近は少なくなってきましたが、今では僕が知っている有名ドコロは VECTOR が x-sjis を利用しているので表示できません。

この件については以前 KDE 方面で(その昔は) Nokia の Qt のコードを書いている人に聞いたことがあるのですが、非対応だそうです。するっていと同じ KHTML から派生の Apple-WebKit は独自に x-* な文字コードに対応した。と、いうことなのでしょうなぁ。

 
PC に色々ブラウザが入っていると楽しいですよ;-)。 是非、試してみてください。;-)

mozc.el を最新版に対応させます。

最近は IME に関するエントリが多いですが、もう一回書いてしまおう。でもって、最近の連続する一連のネタは多分これが最後でしょうかねぇ;-)。

いきなり手前味噌で大変申し訳ありませんが、そもそも mozc.el な(ノラ) ports は僕が一番最初に作成して NakataMaho さん がコミットしてくださり、その後 mozc-server のメンテナの方が取り込んでくださった。と、いう経緯があります(japanese/mozc-el/Makefile の一番上見てね;-)。

mozc 自体には当初から emacs 対応の mozc.el がバンドルされていたけど mozc-server の作者が「僕、emacs 使ってないしぃ。」と、いうとこで mozc.el が ports にならなかったし、インストールされなかったんですけども。

で、現在は mozc の最新版は mozc-1.13.1651.102 ですが、 FreeBSD の ports 的には 1.11.1502.102 のままです。まぁ、 mozc を FreeBSD に対応させるためには随分たくさんの改修を行いパッチを作成しなければ make が通らないという、その苦労はよぉーく知っているので現行バージョンである 1.11.1502.102 でも一応、問題はありません。

が、しかし、 mozc-1.11.1502.102 な mozc.el には以下のようなバグがあって困っていたんですね。

 
X11 の emacs 上 (emacs -nw ではない状態) で mozc.el 経由で日本語を入力しているときに mozc のサジェストがウィンドから飛び出ると入力した文字が消えてしまう。
確定前の文字が消えるだけなら良いのですが、それ以前に入力した文字まで消えてしまう。

 
結構悲惨な状態で、それがいやでしばらくの間は ibus.el (ports 的には textproc/ibus-el です)経由で mozc を利用していました。

ところが、ibus-1.5.5 になって ibus.el が ibus-daemon と通信できなくなったので、いよいよ mozc.el を利用しなければならなくなった。

mozc.el を利用しいるとき emacs のウィンドの上のほうで文字入力をしている分には問題ないのですが、下のほうに来るとサジェストがウィンドの下を突き破るようになるので入力した文字が消えてしまうんですけどね。

 
何か回避策はないものかいのぉ。とかと思い、mozc の最新版のソースコードを持ってきて mozc.el を /usr/local/share/emacs/24.3/site-lisp/mozc/ にほーりこんでみましたよ。そしたらあーたっ!!

いやー。最新版の mozc に付属の mozc.el もしっかり更新されていて日本語入力中のサジェストは、ウィンドの下辺りで入力している場合にはカーソルのある入力行の上に表示されるようになり文字が消えてしまうというバグが改修されているんですね。これを利用しない手はないっ!!

 
ってんで、やっとここからが本題です。

mozc-server 自体は現行バージョンで良いし mozc.el インストール時に mozc_emacs_helper (バイナリ)が一緒にインストールされるのですが、これも現行バージョンのモノで良い。ただ単に mozc.el のみ最新になってくれると随分と幸せになれます。

と、いうことでパッチを作成しました。以下の URL に置いておきます。

http://icmpv6.org/Prog/FreeBSD_ports/patch-unix_emacs_mozc.el-20140402

このパッチを以下の要領で japanese/mozc-server/files/ の中に入れてください。

# cd /usr/ports/japanese/mozc-server/
# cp ~/patch-unix_emacs_mozc.el-20140402 files/patch-unix_emacs_mozc.el
# cd ../mozc-el/
# make && make deinstall && make reinstall
#

 

既存の mozc.el のパッチのみを置き換えるとこによって 1.13.1651.102 の mozc.el が利用できるようになります。ダウンロードしたパッチは 1.11.1502.102 と 1.13.1651.102 の mozc.el を diff しただけです。

非常にお気楽に、そして簡単に emacs の mozc 入力が最新になります;-)。

FreeBSD の ports の現行バージョンの mozc.el で困っている方いましたら是非ともトライしてみてください。

コミッタの方、どなたかこのパッチを吸収してくれないかなぁ。まぁ、パッチは差分だけなので簡単に作成できると思うのですけどね;-)。

fcitx-mozc な ports を復活させてみました。

以前のエントリで FreeBSD で利用する ibus-1.5.5。 というのを書きました。
要は ibus が 1.4.2 から 1.5.5 になったら随分と使い勝手が悪くなったねぇ。と、いうことで、どうしたらちゃんと利用できるようになるか? ってネタなんですけどもね。

そのエントリには僕自身がコメントしたのですが、この際 fcitx-mozc でも試してみるかねぇ。って書いていて、早速試してみました。が、実際には以下の通りの動作で、実質的にしゅーりょー。な状態だったのであります。

 
fcitx をインストールして japanese/fcitx-mozc のコンパイルを通しても正常に動作しないのですが、考えられる原因としては mozc-1.11.1502.102 に対応する japansese/fcitx-mozc のパッチは多分 fcitx-4.2.8 用で、 FreeBSD の ports は fcitx-4.2.6 となっており chinese/fcitx 本体と japanese/fcitx-mozc のバージョンに差異が発生しているため、上手に通信が行なえように思われます。

 
試してみるとまさしくその通りで、そのエントリのコメントを読んでくださった Hiroto Kagotani さん が chinese/fcitx を最新のハージョンである fcitx-4.2.8.3 にしてくださいました。

それならば fcitx-mozc は動くべー。とか思い、試してみました。

結論から書くと fcitx-mozc は fcitx を最新版にすることにより、サクっと動作しました;-)。以下その顛末を書いてみたいと思います。

 
1. fcitx-4.2.8.3 のインストール
ports の chinese/fcitx は古いバージョンなので Hiroto Kagotani さん が作成してくださった最新版の ports を以下から拾ってきます。

https://github.com/HirotoKagotani/freebsd-fcitx/tree/master/chinese/fcitx

git clone で取ってくるのが良いでしょうかねぇ。 git についてはここには書きませんが、僕は mew のソースツリーを持ってきているので git はそこそこ使っています;-)。それとほぼ同じやり方で一式を持ってきました。

あとは ports の chinese/fcitx を置き換えて make install しておしまいです。

ちなみに Hiroto Kagotani さん は、作成した ports はメンテナの方に連絡するそうなのでもうしばらくすると fcitx-4.2.8.3 が ports-current に降ってくるのではないでしょうか。

 
2. japanese/fcitx-mozc/Makefile の改修
これは簡単。 IGNORE= の行をコメントアウトします。

 
3. japanese/mozc-server を更新
japanese/fcitx-mozc を make すると japanese/mozc-server の Makefile の中が走るのでその部分を一部改修します。
既に改修した ports を以下の URL に置いたのでご利用ください;-)。

http://icmpv6.org/Prog/FreeBSD_ports/ports-mozc-server_add_fcitx-4.2.8.3_fcitx-mozc-20140402.tgz

既存の ports からの変更点は fcitx_mozc で BUILD するときに持ってくるパッチ先とパッチを変更しています。
ダウンロードするパッチは fcitx-4.2.8.3 に対応するパッチです。パッチ本体は以下の URL からダウンロード可能です。

http://icmpv6.org/Prog/FreeBSD_ports/fcitx-mozc-1.11.1502.102.1_fcitx-4.2.8.3.patch

fcitx-mozc は mozc のバージョンが 1.11.1502.102 でも fcitx のほうは最新版である 4.2.8.3 を利用する必要があります。 mozc-1.11.1502.102 に対応する 4.2.6 用のパッチがない (mozc-1.11.1502.102 に対応する 4.2.8.3 のパッチはある) ので japanese/fcitx-mozc は IGNORE= 状態になるんですね。

なので今回の場合は japanese/fcitx-mozc が悪いワケではなく、中々バージョンが上がらなかった chinese/fcitx のおかげで IGNORE= になった。と、考えるべきでしょう。

さてさて。ダウンロードした ports で japanese/fcitx-mozc を make するとサクっとインストールしてくれると思います;-)。

あとは、表示される pkg-message の内容に設定して、一旦ログアウトしてからログインし直します;-)。

 
4. KDE4 利用時の GUI について
インストールが無事に完了して、ログインしたら動作確認です。僕の場合は KDE4 を利用しているのですが、fcitx を起動するとパネルに何やら表示されます。 mozc をオンにするにはデフォルトでは 全角/半角 キーを押します。すると日本語入力が可能になります。
GNOME は利用してないのでわかりません。ごめんなさい。

右クリックでメニューが表示されますが [設定] をクリックするとエディタが立ち上がります。あたたた。
KDE4 で GUI な設定ウィンドを表示するには kcm-fcitx というのが必要なようです。 FreeBSD の ports にはなってないようなので、僕が ports を作り、以下の URL に置きました。必要な方はダウンロードしてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-kcm-fcitx-20140402.tgz

どこに展開して良いかわかりませんが、 textproc/ 辺りに展開して make && make install してください。 LIB_DEPENDS= などかぁなりいい加減であやすぃーです。本当は KDE とか Qt 辺りも書かなければダメなのだろうと思うのですが、僕の環境では既にインストールされているので・・f(^^;;。

正しく書きなおして、コミットしてくれる方、絶賛募集中です;-)。

で、インストールした kcm-fcitx は起動するとこんな感じで GUI で fcitx を設定できるようになります。

kcm-fcitx

色々設定変更してみてください。

あ。ちなみにエディタで設定ファイルを編集する場合には $HOME/.config/fcitx/config というファイルになります。

 
5. 利用してみた感想
では、実際に fcitx-mozc を利用してみた感想ですが、まず一番驚くのがカーソルに日本語を随時表示してくれない。と、いう点でしょうか。以前ちょっとだけ Windows 上で利用したことがある「Baidu IME」みたいな雰囲気で、日本語入力専用窓が出てそこでベコベコ打って、確定したらカーソルに反映される。と、いう感じです。
これが好きか嫌いかについては意見の別れるところではありますね。

あと、mozc のサジェストの「意味の機能」(だっけか?)が利用できないです。”語” 対する説明文が表示されません。

スクリーンセーバにパスワードロックがかかっている場合に日本語入力状態になってしまいます。

状態パネルを表示すると怪しいところに出たりとか;-)。

文字入力時の UI 部分に違和感が多少あるのみで、文字の入力自体は特に問題なく一応は行える。と、いう感じでしょうかね。

 
と、いうことで(僕が初めて利用する)新しい日本語入力である fcitx と、そこからエンジンとして利用する fcitx-mozc について、今回は書いてみました。

ports の chinese/fcitx が最新版にアップデートされると、多分追随して japanese/fcitx-mozc と japanese/mozc-server も対応していくと思われます。そー考えるとこの記事の内容というのは先が短い記事である。と、いうことですねぇ・・f(^^;;。

まぁ、それはちょっと置いといたとして、人よりもちょっと早く新しいかな漢字入力の動作確認ができるぜい。って感じですね;-)。

このエントリを読んで今すぐに試してみたい。と、いう人はいるんかなぁ? f(^^;;。

FreeBSD で利用する ibus-1.5.5。

ports current を追いかけている人なら解ると思いますが、ibus という日本語入力なアプリケーションが 1.4.2 から 1.5.5 になりました。このバージョンアップにより日本語の入力がかぁなり複雑になったようですね。

ibus 1.4.2 と 1.5.5 の簡単な違いについて書いてみると、

o. 日本語入力状態は絶えずオン状態
o. キーボードを変更することにより全角と半角を切り分ける

と、なったようです。ある意味「日本語入力用キーボード」と「英字専用キーボード」の二つを使い分ける。と、いう状態になったようですね。おかげで ibus-setup の設定画面からは IME のオン/オフ のメニューが消えております。

さてさて。僕は今回 ibus-1.5.5 のインストールからつまずいたのでそこから書いて行きたいと思います。色々試行錯誤を繰り返し、今は日本語入力ができるようになっております。ふぅ。

あ、ちなみに僕の環境は FreeBSD/amd64 9.2-RELEASE-p3 で X での日本語入力の環境は ibus+ibus-mozc で KDE4 を利用しております。当然、オンプレミスな環境です;-)。

emacs では mozc+mozc.el を利用していますが、この場合の mozc は ibus 経由ではありません。しかし、それとは別に ibus+ibus.el+mozc というパターンもあり、その場合には ibus-el-0.3.2 が ibus-1.5 系に対応していないので動作しません。と、いうことで ibus-1.5 系にした人はサクっと ibus-el-0.3.2 を pkg delete しても問題はまるでありません。

と、いうことで、まずは ibus-1.5.5 のインストールから見ていくことにしましょう。

 
1). ibus-1.5.5 のインストール
FreeBSD だと ports では textproc/ibus/ になるので make && make install と打てばインストールが完了すると思いますが make config のオプションで悩みます。 ibus-1.5.5 をインストールすると GTK2 と GTK3 の両方が必要になる(インストールされる)のは非常に納得行かないですね。しかし、悔しいですが、以下のキャプチャの通り DOC と GCONF もしくは DCONF 以外は全てチェックを付けたほうが良いと思われます。

ibus_20140318_1

GINTRO (銀トロ? なに? それ?) をオフにすると IBus.py がインストールされずに ibus-setup が起動しない状態になる(動かないなら最初から ibus-setup インストールするのやめろよーX-(し GTK3 要らんもんねー。などと思っていると、やはり ibus-setup が起動しなかったりと、そこはかとなくとんでもない ibus がインストールされるので、ちゃんとフルオプションを付けてあげましょう。

と、いうことで ibus のインストールは完了しました。

ibus がインストールされたのですが、一応、ibus-mozc も再度コンパイルしてあげましょう。念のために ibus-1.5.5 インストール後に japanese/ibus-mozc/ で make && make deinstall && make reinstall して、一応は準備完了。と、いうことで。

 
2). ibus の起動と設定
ibus の起動は ibus をインストールしたときに pkg-message が表示されるのでその内容で設定しましょう。
まぁ、素早く試したい場合には ibus-daemon_restart とか ibus-daemon_start コマンドを実行します。無事に起動したら ibus-setup コマンドを叩いて GUI で設定します。

「キーボードショートカット」の [次のインプットメソッド] メニューでインプットメソッドの切り替えを設定します。一番上に書いたように簡単に「キーボード切り替えのためのショートカットキー。」と、いう認識でいるのが良いかと思われます。

ibus_20140318_2

ちなみに default では “Super+Space” になっていると思いますが “Super” キーというのは Win キー であったり Mac の command キー に相当するらしいです。なので、 default では「Win+Space キーでキーボード切り替え。」ってことですね。

 
さてさて。他のタブを見て行きましょう。
[インプットメソッド] のタブでは「インプットメソッドの選択」で「日本語」のキーボードアイコンと mozc を選択します。二つの項目が登録されている状態ですね。

ibus_20140318_5

[詳細] タブでは「キーボードレイアウト」で [システムキーボードレイアウトを利用する] にチェックしておいたほうが良いかもしれないです。僕の場合は ibus-setup を起動した途端に 101 キーボード列になってしまいました。普段は 106 キーボード列を利用しているのに・・。

と、いうことで ibus の設定は完了。あとは日本語をベコベコ打てば良いですね。

 
3). mozc 側で設定
が・・。上記の「キーボードショートカット」で設定したもの(僕の場合は “Shift+Space” にしました)をベコベコ押しても一向に日本語が打てる気配はありません。画面中央に切り替え画面が表示されるのですが、日本語が打てません。あいや・・。orz

しょーがねぇなぁ。となるのですが、今度は mozc の設定を行います。 mozc_tool_config コマンドを叩いて mozc の設定画面を表示させます。 [一般] タブの下のほうに「キー設定」というのがありますが、そこにある [編集] ボタンを押します。表示されたウィンドの真ん中の列が「入力キー」で、そこが “shift space” というところに、コマンドを「IME の有効化」を選択し保存します。

あとは mozc_server_restart と ibus-daemon_restart を実行して、そのあとにキーボードが変わってくれるかを確認します。

 
だいたいこんな感じで ibus+mozc の場合には日本語が打てるようになるでしょうかねぇ。mozc ではない、他の IME を利用している方、申し訳ありませんが設定方法は解らないので自力で頑張ってください;-)。

しばらく使ってみた感想ですが、

o. 新しいウインドを開いた時に日本語キーボードが選択されている
o. スクリーンセーバのパスワード入力も日本語になる
o. 文字を打ち始めると最初の文字が化ける(日本語にならない場合がある)
o. 画面に ibus の設定とかがチロッと出る場合がある(これは何?)

などでしょうかねぇ。けっこう痛いですかね・・。

 
けどもまぁ、なんとか ibus-1.5.5 に移行できたのでヨシとしておきましょう。もう少し使い込んで色々な設定を出していきたいとは思っていますが。

もしくは fcitx に移行していくかもー。