5月 122010
 

KDE4 を普段からデスクトップで利用していると、kdepim-4.3.5 なんてのがインストールされることがあります。”PIM” と言うのはそもそも Personal Information Manager/Management の略で利用者個人の情報を管理しています。 kdepim-4.3.5 をインストールすると KMail や KNotes (ポップアップメモ)、KJots (メモ帳) などかインストールされますが、それと一緒に KOrganizer と言うスケジュール管理ツールもインストールされます。

KOrganizer と言うのは MacOSX で言うところの iCal、Windows で言うところのなんだろ? みたいなものです。普段、スケジュールを利用している人は「google カレンダー」を利用している人が多いのではないでしょうか。

僕は MacOSX 使いでもあるのでスケジュールは iCal で管理して iPhone3G と sync しているので特に困ったりはしないのですが、 KDE4 を利用していて google カレンダーを利用している人は「KOrganizer が google カレンダーと同期できたらいいなぁ。」と思ったことのある方、いるのではないでしょうか。

今回は KOrganizer と google カレンダーを同期させてみたいと思います。 gppgle カレンダー側で書いたものを KOrganizer へ、 KOrganizer 側で書いた情報を google カレンダーに反映できるようになります。

さて、それを実現する前に kdepim4 についてちょっと書いておきましょう。kdepim4 をインストールすると、こいつはなんとデータを MySQL で管理するようになります。個人情報を管理するためだけに mysqld が、ログイン直後から起動していると言う、なんかスゲー信じられない現象が、今の KDE4 では起きています。邪道だ・・。orz。

ドキュメントを読んでみると「sqlite3 ではマルチタスクマルチスレッドの動作時にデータの保証ができないので MySQL 使うよ。」みたいなことが書いて有りました。ふむむむ。

さて、話を本題に戻しますが kdepim4 が利用しているデータは MySQL の中に入っていることがこれで解ったかと思うのですが、 google カレンダーの情報も google から取ってきて MySQL の中に突っ込んだら KOrganizer から見えるんでないかい?となります。

kdepim4 で MySQL との窓口(API って言って良いのかなぁ?)となっているのが akonadi というものです。こいつが一手に引き受けていてくれるんですね。でもってこいつについて、もちっと踏み込んで調べてみると FreeBSD の ports として databases/akonadi-googledata と言うのがある。ふむ。なんか名前からして怪しいじゃん;-)。とりあえずこいつを packages/ports からインストールしてしまいましょう;-)。

インストールが完了した時点で準備完了です。それでは設定に移ってみましょうか;-)。まず、akonadi の設定をします。ターミナルから akonadiconsole とコマンドを叩いてみましょう。

akonadi_1.png

そーするとこんな感じのウインドが表示されたと思います。そしたら [+ADD] ボタンを押すともう一個画面が現れます。この画面から Akonadi Google Calendar Resource と Akonadi Google Contacts Resource の二つを追加します。追加すると一覧に表示されるようになるのでそこでクリックすると google カレンダーの ID とパスワードを入力するよに急かされるので入力します。

後は Akonadi を再起動して Akonadi 自体への設定は完了です。

動作は(ソースコードを追ってないので)良く分からないのですが、MySQL と情報をやり取りする Akonadi が 今回インストールした二つのリソースで横から google カレンダーをつついてデータを取りに行ったり、データを更新したりするんだ。と言う感じでしょうか。 KOrganizer 的には「おめー、バックグラウンドでやっているんだからエレーよ。」となるんでしょうなぁ;-)。

続いて KOrganizer 側での設定です。こいつは簡単です;-)。KOrganizer を起動すると左下に「カレンダー」と言うメニューがあるかと思います。これの [+] ボタンを押します。

korganizer_1.png

するっていとこんなのが現れるとかと思います。

korganizer_2.png

KOrganizer ってのは色々な所からカレンダーデータを持ってくるモジュールが用意されているのねぇ。などと関心させられますが、使い方はどれもイマイチ解らなかったりしますf(^^;;。その中で「Akonadi (Akonadi のカレンダーフォルダに保存されているカレンダーへのアクセスを提供します)」を選択して OK を押します。そうすると「カレンダー」のメニューに google カレンダーへのアクセスが登録されます。

表示されたら真ん中のボタン「カレンダーの設定を編集」ボタンですね。を押して設定画面を表示します。白枠の中に akonadi_gcal_resource_0 などとあったらそれを選択して [Manage Calendar Sources] ボタンを押します。そこでメニューが出てくるので [追加] ボタンで 先ほど akonadiconsole コマンドで登録した二つのリソースを追加し、編集して google カレンダーの ID とパスワードを設定します。

korganizer_3.png

一応これで作業は完了です。一旦 KOrganizer を再起動してみましょう。再起動後に google カレンダーの情報が表示されるようになりましたか? もしされたら新規にイベントを書き込んでみましょう。約 10 分位後に google カレンダー側に反映されたか確認してみましょう。

もし、ダメな時ですが、先ほどの [Manage Calendar Sources] ボタンを押した時に表示されるウィンドで 緑の丸いののが表示されその横に “Online” と表示されているか何も表示されていない場合には OK です。 “Offline” と表示されている場合には [編集] ボタンを押して再度 ID とパスワードを入力してあげるとオンラインになったりする場合があります。

この辺り、何回も追加・削除・編集をしていたら僕の akonadi_gcal_resource_? は 7 まで行ってしまいましたf(^^;;。

とまぁ、こんな感じで KOrganizer は google カレンダーと同期が取れるようになりました。しかし、本当に使えるかはまだまだ良く分からないです。しばらく使い込んでみたいとですかねぇ。

ってか。皆さんも KDE4 使ってみてください。色々楽しいですよ;-)。

3月 192010
 

前回の「FontBook ライクなフォント表示ツール。」の続きです。

「GUI が欲しいなぁ。」などと README.txt の中に書いているのですが、考えてみたら pango-view.sh ファイルを走らせるシェルスクリプトにフォント名を付けて、それをファイルマネージャからダブルクリックして実行すれば良いだけじゃん。などと、ヒジョーに安直な考えが頭に浮かびました。で、それを実戦したのがこんな感じ;-)。

from_dolhin.png

僕は KDE 使いなので Dolphin を利用しているワケですが、とあるディレクトリに MS_ゴシック.sh と言うファイルを作ってそれをクリックすると pango-view.sh が動作するようにするだけ;-)。こうすることで自分の環境にインストールされているフォント名とその書体が一目瞭然となる;-)。

え? そんなん必要無いって?(^^;;。 デスクトップとして利用していてフォントをたくさん突っ込んでいると書体を確認したい時ってあるのよー。

で、fc-list からフォント名が付いたシェルスクリプトを吐き出すのは perl で書いてしまいました(^^;;。大体こんな感じ。これを cron とかで定期的に実行すればたえず最新のフォントを閲覧できるってわけですね。ってそんなに頻繁にフォントをインストールしないか;-P。

#!/usr/bin/perl
use strict;
my $fc_list_cmd = "/usr/local/bin/fc-list"; my $sort_cmd = "/usr/bin/sort"; my $sh_cmd = "/PATHTO/pango-view.sh"; my $fontsize = 120;
my $command = $fc_list_cmd . "|" . $sort_cmd; open(CMD,"$command|"); while(<CMD>) { s/\\//g; my (@t1) = split(",",$_); my ($fontname,@t2) = split(":",$t1[0]); my $filename = $fontname; $filename =~ s/ /_/g; # print $fontname . "\n";
my $outfile = "./Fonts/" . $filename . ".sh"; open(OUT,">$outfile"); print OUT "#!/bin/sh\n"; print OUT "$sh_cmd \"$fontname\" $fontsize\n"; close(OUT); chmod(0755,$outfile); } close(CMD);
exit 1;

 
けど、僕の中ではかぁなり、フォントの扱いが楽になったんですけど;-)。

あ。pango-view.sh の中身は相対パスから絶対パスに書き換えています。さむないと Dolphin が認識してくれなかった。

1月 062010
 

この間、ちょっと前の「Thunderbird-3.0 を FreeBSD/amd64 で。」のエントリーのところで FreeBSD/amd64 上の Thunderbird も Firefox もすぐに core dump して使い物にならない。でもって -g したら libpango がどうもおかしい。と言うのを書きました。

このエントリーに添付してある URL にその結末が載っていましたね。要は pango にとあるフォントを食わせると core dump するものがあるので、そのフォントを fontpath から削除すると良いよ。とのことらしいです。

リンク先のスレッドの内容では xlsfonts コマンドで core dump するフォントを特定すると良いよ。と書かれているのですが、日本語フォントの場合、あんまり役に立たないですね。でもって GNOME や KDE を使っている人は特にフォント名が日本語で表示されるのですから。なので、日本語環境の場合は fc-list(1) を使うことにします。

fc-list コマンドで表示されたフォント名を pango-view と言うコマンドに食わせてあげます。その時に pango-view が core dump するとそのフォントは pango で扱えないフォントになるので /usr/local/lib/X11/fonts/ から削除する必要があります。

僕の環境では fc-list | sort -u | wc -l したら 434 個のフォントが利用可能な状態になっていました。うひひ。/usr/local/lib/X11/fonts/ で du -sk したら 1274754 と表示されたのでフォントだけで 1.2GByte のようです;-)。

さてと。fc-list の結果を pango-view に食わせるコマンドは以下でどうでしょう。

$ fc-list | sort -u | awk -F, '{print "echo \"" $1 "\"; ¥
pango-view --font=\"" $1 "\" -t 'TEST,test,テスト' -q"}' > fontcheck.sh
$ /bin/sh ./fontcheck.sh

 
一行目は長いので改行していますが、一行で実行して fontcheck.sh と言うファイルを作成してください。その後、fontcheck.sh を実行すれば pango-view が動作します。 core dump するファイルがあった場合には以下のように出力されます。

ヒラギノ丸ゴ Pro
Segmentation fault (core dumped)
ヒラギノ丸ゴ ProN
Segmentation fault (core dumped)
ヒラギノ明朝 Pro
Segmentation fault (core dumped)

 
表示されたフォント名を持つファイルを /usr/local/lib/X11/fonts/ の中から削除して fc-cache -fv を実行すると core dump するフォントが無くなると思います。

ちなみに僕の環境では MacoSX から持ってきたヒラギノの丸ゴ・角ゴ・明朝の各フォントと平成の明朝・角ゴシックの計 16 個のフォントで core dump が発生したので、これらのフォントを削除しました。

削除した後に Thunderbird3 や Firefox35 を起動すると、おおぉぉっ!! 無事に起動できたのでありました。パチパチパチ。

と、言うことで Thunderbird3 や Firefox35 が libpango で core dump するなんてのはその人の環境によって全然変わる。と言うことですね。僕みたいに(と言い切って良いのか?)たくさんのフォントをインストールしている人はその確率が高くなるわけですが、google で検索しても日本国内でこの現象を書いているのは僕だけみたいなので、もしかして、僕だけが陥った現象なのから?

この問題はオイオイ pango 側で吸収されていくのかなぁ?今回は pango のバージョンは 1.26.2 で特にダウングレードもしていないです。

それにしても復活して良かったです;-)。

そー言えば、MacOSX にフォントをインストールするときに「このフォントは危険です」みたいにアラートが上がってインストールしないこともあるのですが、FreeBSD の場合 fc-cache を実行した時点では何もアラートは上がらないのでインストール前(それはつまり fc-cache コマンドを叩く前と言うことかな)には pango-view を実行するのが良いのかな?

8月 112009
 

FreeBSD の ports-current を csup したら KDE4 が 4.3.0 になりましたなぁ。後、QT4 が 4.5.2 に。

実際に使用してみた感じを書いてみたいと思います。

まず、ports からのインストールですが、portupgrade したときに phonon 回りでバタバタするので /usr/ports/UPDATING を参考にして問題点をクリアにする所からはじめましょう。

そして、実際に qt4 と kde4 の make とインストールが始まります。まず、qmake ですが、これは qt4 と kde4 を make するときに利用されます。でもってこれは SMP に対応しているので qt4 や kde4 を make する時に c++ が CPU の数だけ起動します。これはすごい。KDE4 フルパッケージの make 時間は make buildworld より遙かに長かったのですが、随分と時間短縮できます。

例えば AthlonX2 では c++ が二つ、Atom330 では c++ が四つ起動して make を並列に行います。すばらしいですね。

無事にインストールが終わって、実際の使用感なのですが・・。

1. 等幅フォントが・・。
等幅フォントが結構ヒサンです。半角バイトの文字は全角バイトのスペースに表示されるので、”t a k a c h a n ” と言う感じで表示されてしまいます。
konsole で任意のフォントを利用したい場合には $HOME/.kde4/share/apps/konsole/ の下にできるプロファイルに以下のように記述してみましょう。

[Appearance]
ColorScheme=BlackOnLightYellow
Font=MS ゴシック,10,-1,5,50,0,0,0,0,0
以下略

 
フォント名を直接書いてしまう。と言うことですね。これで好きなフォントが利用できるようになります。

2. konsole でもう一点。
例えば K メニューやパネル上のショートカットから konsole を起動した場合、もとのプロセスの子プロセス(と、言うかスレッド)として起動します。これは後で書く「入力のコピー」などで結構ウザかったり、親プロセスが落ちると全ての子プロセス(と、言うかスレッド)が凍り付くと言う結構ヒサンな状態になります。僕はこれを避けるために以下のシェルスクリプトを用意しました。

#!/bin/sh
cp $HOME/.konsolerc $HOME/.kde4/share/config/konsolerc
/usr/local/kde4/bin/konsole

 
KDE4 の konsole は起動すると前回のサイズで起動してまう。それがイヤなので、毎回 80×24 のサイズで起動するように $HOME/.konsolerc を作成します。これは $HOME/.kde4/share/config/konsolerc を $HOME に .konsolerc としてコピーしただけです。その後で konsole をフルパスで実行すると新規のプロセスとして起動してくれるようになります。

3. konsole で二点目。
konsole を起動してタブを利用するとそのタブは親 konsole の子プロセス(何回も書きますがスレッドですね)として動作します。例えば一台のサーバに対して三個の端末をログインしたいとき、おのおのの端末で入力せずとも一個の端末で入力した内容、例えばユーザ名・パスワードを他の端末で入力したように見せかけることが可能です。[編集]->[入力をコピー]でキーボード入力の情報を他の konsole に送ることができます。ただ、konsole のタブ名は結構ヘボなので、どの konsole がどれなのかちっとも解らないんですね。

そんな時は上記のスクリプトを実行して、あるサーバにログインする端末は一個のプロセスとして起動し、タブを複数生成した後に「入力をコピー」の編集画面で [全てを選択]とか[すべて選択解除]ボタンを押せば OK です。

後、kde-4.2.4 の頃の konsole では C-s がフロー制御に取られてしまう。と言う事態が発生していました。[設定]->[現在のプロファイルを編集]で表示される画面の「詳細」タブの「Ctrl+S と Qtrl+Q によるフロー制御を有効にする」のチェックが外せなかったんですね。

しかし、kde-4.3.0 ではこのチェックが外せるようになりました。嬉しいですねぇ。ただ、僕の場合、以下のようにしないと外すことができませんでした。

% cd $HOME/.kde4/share/apps
% mv konsole konsole_

 
つまり、以前のバージョンで利用していた konsole の設定を一旦飛ばして、新たに設定しなおせばチェックを外すことができるようになるんですね。

4. マウスによるカットアンドペースト
これがまたヒサンなんです・・。ふつう、X 上では他のウィンドからクリックして保存した情報は他のウィンドにペーストできるはずなんですが、こいつがまともに動かない・・。非常に頭に来ると言うか、愕然としましたね。「全然使えねー・・。orz」って感じで。

で、色々やってみた所、パネルのシステムトレイにクリップボードツール(/usr/local/kde4/bin/klipper) が動作していて、こいつが悪さをしているようです。このプロセスを kill するとともにログイン時に起動しないようにすると ウィンド間のマウスによるカットアンドペーストが可能になります。ふぅ。良かったよぉ。

5. konqueror には konq-plugins。
konqueror を使う人はぜひとも /usr/ports/misc/konq-plugins をインストールすることをおすすめします。検索バーとか増えるし、「ウェブペー時を翻訳」なんてボタンも表示することができるようになります。他にもツールバーが色々表示できるようになります。

6. 安定したかもしんない。
以前のバージョンよりは安定して来ている感は強いです。パネルの設定で plasma が落ちなくなったし、(使いたいもの無いけど)ウィジェットの登録時に落ちるようなことは無くなったし。

一番使うのは結局のところ konsole が多いのでネタ的には konsole が多くなってしまいますかねぇ。まぁ、裏を返せば、他のアプリケーションなどは既に完成の域に達していたと言うことでしょうか。

実は僕は kde-4.2.4 を利用していた頃は KDE3 の konsole と skim をインストールしたままとしていました。 KDE4 の konsole が不安定な場合には KDE3 の konsole を利用する。と言う感じです。

また、KDE4 で scim-bridge-qt4 を利用していると、konsole がキー入力を受け付けない状態になる場合があり、それを回避するために skim を利用していました。ちなみに scim-bridge-qt4 でキー入力を受けつなくなるのは konsole の [設定]->[プロファイルを変更]した場合です。僕の場合 EUC-JP と UTF-8 のプロファイルを作っていました。ショートカットでプロファイルをタブに起動した時は問題無かったですが。これは KDE な ML で聞いた所、scim-1.4.7 に問題があるそうです。文字入力できなくなった場合は scim の全てを kill すると文字入力が復活します。

とまぁ、今回のバージョンアップですっかりと KDE3 関係を全て消して、KDE4 の環境に移行できたと言う感じでしょうか。

他にも何か気がついたことがあったら書いていきたいと思います。

2月 212009
 

前回「KDE-4.2良いよぉ。」と、ちろっと書いたのだけど、その上で konqueror を使っていたら「あれ?Safari と表示が一緒だぞぉ。」などと思えてきたので、今回キャプチャしたものを比較してみたいと思います。ちなみに Safari は konqueror のレンダリングエンジンである KHTML から派生した WebKit がベースで qt4+KDE4 には qt4-webkit なんて言う ports もあったりするので konqueror への期待は大いに高まったりするのです;-)。

今回のブラウザのキャプチャは以下の通り。Windows では日本語のアンチエイリアスが有効にならないので、Windows 自体は全く使う気にならない。WindowsXP 上の Firefox3 でメイリオフォントを指定した場合、どうしてあんな汚い表示なんだぁ?と驚いてしまう。 Windows ユーザは素早く IE も Firefox も捨てて Safari を使ったほうが良いのでは。と、僕個人的は思う;-P。(僕は WindowsVistaは常用していない;-)

・FreeBSD/amd64 7.1-STABLE+kde-4.2.0 の konqueror
・MacOSX Leopard 上の Firefox3.0.6
・MacOSX Leopard 上の Safari3.2.2

Firefox3 は WindowsXP と FreeBSD、そして MacOSX 上で動作しているけど、 MacOSX 上のヤツが一番きれいに表示できるのでそこからのエントリです。全てのキャプチャ画像はクリックすると大きくなります。

まずは kde-4.2.0 の konqueror から。


続いて Firefox3。


最後に Safari3。


全てのブラウザでアンチエイリアスが効いていてフォントがきれいに表示されています。まぁ、多少、フォントの誤差はありますが、その点についてはお許しください。

今回はこのサイトをキャプチャしましたが、konqueror と Safari はタイトルとブログのタイトル文字にうっすらと影があるのが見えるでしょうか?それに引き替え、Firefox3 にはその影が表示されていません。

このブログのテンプレートはもともと Mac ユーザの方が作ってくれたのを利用しているので、MacOSX に最適化され、きれいに表示してくれるようになっています。

なので、最近の僕は(写真の編集などもあるけど)ほとんどのブログの書き込みと確認は MacOSX 上で行っていたのでありました。けど、KDE-4.2 の konqueror が Safari に非常に近いデザインでコンテンツを表示してくれていると言うのに感動しました;-)。さすがは KHTML と言うか WebKit だなぁ。と。

けど、KDE-3.5 の konqueror は見るも無残な状態であったために Firefox3 をずっと使っていたのだけど、KDE-4.2 になったらその出来と言うか、コンテンツ表示のすばらしさにちょっと関心してしまいました。

後、FreeBSD 上では Firefox3 で利用する nspluginwrapper 経由の各種プラグインを konqueror が「mozilla プラグイン」として認識するので linux-flashplugin-9 も動作します。これはこれで大変嬉しいことです。

KDE-4.1.2 は plasma がしょっちゅうぶっこけて全ての KDE アプリを道連れにしていたのだけど、KDE-4.2.0 になって、まぁ、時々 plasma は落ちるけど、自己修復型で再起動してくれるので随分と楽になりました。

やっぱえぇなぁ。qt4+KDE4 は。

ただ、人に言わせると c++ はいらん。だそうです。確かに ports をコンパイルすると膨大な時間が掛かることは確かではありますが・・(^^;;。

皆さんも是非使ってみてください。ちなみに僕は JKUGスタッフです。布教活動には余念が無いであります;-)。

あ、最後にですが、MacOSX 用の KDE4 は未だ 4.1.2 のままです。早く 4.2.0 がでないかなぁ;-)。MacOSX 上で konqueror を起動してみたいものです;-)。

2月 132009
 

最近の ports では KDE4 が KDE-4.1.2 から KDE-4.2.0 になった。早速バージョンアップ。実は FreeBSD で初めて KDE4 が利用できるようになったバージョンは 4.1.0 です。KDE-4.0.0 は冒険者のバージョンとして扱われていたのでありました。

で、4.1.2 を使い始めたのだけどこれがまたヒドイしろものでして・・。plasma が落ちるともうデスクトップが利用できない状態になる。emacs を起動しておいて M-x shell から X を kill して復旧していた。 plasma がよく落ちる。と言うのも問題であったのだけど、4.2.0 になったら あんまり plasma が落ちなくなって、落ちても、すぐに再起動するようになった。ちょうど、Windows で凍りついたエクスプローラを終了させて、一瞬画面がフワっとなって再度表示しなおしてくれるような感じと全く一緒。

ja-kde4-l10n は日本語テキストですが、まだ翻訳が行き届いていないですねー。色々な所に英語メッセージが残っています。後、LANG が ja_JP.eucJP だとビミョーに正しく日本語表示できない所が多々有ります。もう LANG は UTF-8 にしろ。ってことですかねぇ。ちなみに僕は KDE-4.1.0 から UTF-8 に移行しました。

ちなみに LANG の設定がばっちりになると、フォント名も日本語でフォントしてくれるようになります。例えば、僕の環境の場合 meiryo.ttc は UTF-8 の場合はフォント名が「メイリオ」となるのですが、ja_JP.eucJP の場合は GTK アプリ(例えば firefox3)と一緒で「Meiryo」と表示されます。なので、先に LANG を決定してからフォントの設定をしたほうが良いかもしれません。

dolphin (ファイルマネージャ)ですが、これは smb:// 先のサーバの日本語にも対応してくれました。今までは日本語ファイルやディレクトリをクリックすると dolphin がクラッシュしていたのですが、今度は無事に表示して、クリックもできるようになりました。

konqueror。これはっ!! そもそも、最近は WebKit が大はやりですが、WebKit はそもそも konqueror で利用していたレンダリングエンジン。その割りには konqueror と Safari の表示に差異があるなぁ。と常々思っていたのだけど、4.2.0 に搭載している konqueror は Safari と同じ表示をしてくれるようになりました。スタイルシートの読み込みが Safari に近くなって来たのかな。とも思うけど。Safari とは ルックアンドフィールや操作性は違うけど、コンテンツの表示が Safari と一緒になった。と言うのはすごいうれしー。

ただ、今のところ UTF-8 なコンテンツしか見えないんだけど・・X-(。ってのは前に書いていたねぇ(^^;;。

とまぁ、感動した点を重点的にツラツラと書いてみました。

実は 4.1.2 では plasma があまりにも頻繁に落ちるのでイヤになって KDE-3.5 を再インストールしていたのですが、4.2.0 はそれなりに安定して来たと言う感じかなぁー;-)。

つづく。かな?

1月 072009
 

新年明けましておめでとうございます。今年も宜しくお願いします。

今年の一発目。FreeBSD ネタですが、sshd を port:22 ではないポートで起動するようにしてみたいと思います。そんなの簡単じゃん。て?そりゃーそーだけどさー。rcNG な起動スクリプトを書くのが難儀なのよ。

port:22 で起動する sshd は /etc/rc.conf に

sshd_enable="YES"

 
と書けば良いのだけど、これとは別に、例えば port:22022 で sshd を起動したい。どうしてか?と、言えば網内では port:22 で ssh するんだけど、BB ルータの外側から各サーバにダイレクトに ssh したい場合、個々のサーバで sshd を別ポートで起動して、BB ルータ側でポートの転送をしてあげればダイレクトに入れるよねー。って感じですかね。

なんだよー。そんなの IPv6 あればできるじゃん。と思うんですけど、IPv4 の世界しか無い場合は不可能なので・・。

で、ここまでが前置きで、サーバを起動したときに sshd を port:22022 で起動するようにスクリプトを書くわけです。しかし、これがまた大変・・。例えば、sshd だけでなく、httpd を port:8080 で起動するスクリプトはどうするのだ?とか、色々出てきてですねぇ・・。

一応できたスクリプトがこんな感じ。

#!/bin/sh
#
# PROVIDE: sshd-diff-port
# REQUIRE: LOGIN cleanvar
#
# Define these smartd_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
port="22022" sshd_diff_port_enable="${sshd_diff_port_enable-NO}" sshd_diff_port_pidfile="/var/run/sshd-${port}.pid"
. /etc/rc.subr
name="sshd_diff_port" rcvar=`set_rcvar` command="/usr/sbin/sshd" pidfile=${sshd_diff_port_pidfile}
load_rc_config $name
command_args="-o PidFile=${sshd_diff_port_pidfile} -p ${port}"
run_rc_command "$1"

 
簡単かぁ?これを書くために jman rc.subr してじっくりと眺めます。後はコマンド、今回の場合は sshd ですが、それのオプションをじっくりと調査します。

で、スクリプト名は sshd_diff_port としました。command_args で sshd のオプションを書きました。/etc/rc.conf.local には以下のように書けば起動できることでしょう。

sshd_diff_port_enable="YES"

 
良かった良かった。

それにしても rcNG スクリプトを書く上で疑問な点がまだ残っています。

スクリプトを起動してその中から実際のデーモンを起動した場合(firefox みたいなイメージかな) stop ができない。例えば kdm は スクリプトでそれを起動時に呼ぶのだけど、その中では kdm-bin をキックしている。その場合、stop オプションで実行しても kdm が終了しない。pidfile=${kdm_pidfile} を記述しても 以下のメッセージが出力され終了できない。なんで〜(?_?)。ちょっとだけrc.subr 見てみたけど $name とかが絡んでいる? けど、実際のプロセスは kdm ではなく、kdm-bin なのよー。どうすれば kill できるのー?

kdm not running? (check /var/run/kdm.pid).

 
で、できたスクリプトがこれ。stop は受け付けてくれないので rc スクリプト内で完結するようにした。reload も stop 部分は自前にして start だけ rc.subr に任せた。ダサいなぁ・・。

#!/bin/sh
#
# kdm start
#
# PROVIDE: kdm
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
# Define these smartd_* variables in one of these files: # /etc/rc.conf # /etc/rc.conf.local # /etc/rc.conf.d/kdm # # DO NOT CHANGE THESE DEFAULT VALUES HERE # kdm_enable="${kdm_enable-NO}" kdm_pidfile="/var/run/kdm.pid"
. /etc/rc.subr
name="kdm" rcvar=`set_rcvar`
load_rc_config $name
command="/usr/local/kde4/bin/kdm" pidfile=${kdm_pidfile}
case $1 in 'stop' ) if [ -f ${pidfile} ] ; then kill -TERM `cat ${pidfile}` /bin/rm ${pidfile} fi echo 'Stopping kdm.' exit; ;; 'restart' ) if [ -f ${pidfile} ] ; then kill -TERM `cat ${pidfile}` /bin/rm ${pidfile} fi echo 'Stopping kdm.' ;; esac
run_rc_command "$1"

 
httpd を 8080 で起動するスクリプトはもう、書くのもイヤになっちゃった・・。どこかに rc スクリプトのサンプル置き場とか無いかなぁ?

本当に書き方、よく分からないや・・。きっと rc.subr 眺めて書くんでしょうなぁ・・。トホホ・・。

Linux の rc スクリプトも汚いと思っていたけど、最近の FreeBSD の rc スクリプト書くのも、簡単なのは良いのだけど、ちょっと何かやろうとしたら全然書けない・・。トホホ・・。

9月 212008
 

その昔、「KDE3 と hald。 」と言うタイトルで一回書いていますが、この時から環境が大きく変わったのでもう一回書いてみましょう。

今回の環境は KDE4 です。新しいファイルマネージャである dolphin が USB のストレージ、例えば携帯電話とかを接続するとエラーを吐き出すので「これは設定すればまともにユーザランドでオートマウントしてくれるに違いない。」と思ったからです。

でもってまずは調査開始。すると、以下の URL がヒットしました。おぉ。

http://www.freebsd.org/gnome/docs/halfaq.html

これに従って早速設定して行くことにしましょう。

まずは /etc/rc.conf に書く設定です。

dbus_enable="YES"
hald_enable="YES"
#gnome_enable="YES"

 
GNOME を使っている人は gnome_enable=”YES” と書くみたいです。KDE4 を使っている人はこの設定を入れても意味がありませんでした。

続いて /etc/sysctl.conf です。

vfs.usermount=1

 
これでシステムの設定が完了しました。続いて hald と言うか、dbus のポリシーの設定になりますが、この設定については /usr/local/etc/PolicyKit/PolicyKit.conf になります。このファイルに以下の自分のアカウントを設定します。つまり、オートマウントしたいユーザの設定を記述する。と、言うことですね。100 名使っていたら 100 名分書くんかい?とか思ってしまうんですけどねぇX-|。

<match action="org.freedesktop.hal.storage.mount-removable">
    <match user="takachan">
        <return result="yes"/>
    </match>
</match>
<match action="org.freedesktop.hal.storage.mount-fixed"> <match user="takachan"> <return result="yes"/> </match> </match>

 
この設定を記述する必要があります。org.freedesktop.hal.storage.mount-removable と org.freedesktop.hal.storage.mount-fixed については dolphin でも「この設定が無いぜぃ。」って怒られたのでした。なので、この設定を追加すると大丈夫;-)。

後、細かい設定としては、/etc/fstab に /proc を書くとか、operator グループに入っておく必要がある。とかがあるけど、FreeBSD を使っている人はそんなのはインストール直後に書くでしょ。と言うことでここでは省きます;-)。

と、言うことで準備ができたので、マシンをリブート、もしくは hald と dbus を再起動して準備は完了です。

そして実際に使ってみた結果ですが、 FAT32 の USB メモリや携帯電話をストレージモードで接続してもオートマウントしてくれませんでした・・。とほほ。dolphin は例のメッセージが出力されなくなったので設定自体は間違っていないと思うんだけどねぇ・・。

でもって、NotePC で FreeBSD の外着け HDD として利用して、ブートしていた 2.5 インチの HDD があるのだけど、これは UFS でパーティションが四つに切ってあるやつを、バックアップしたいのでたまたま KDE4 のデスクトップ機に接続したら、あぁら不思議。ちゃんと hald が認識して自動的にマウントしてくれたじゃないのさ。嬉しいねぇ。

と、言うことで上記の設定は間違ってはいないみたい。FAT32 はオートマウントがダメみたいです。FreeBSD のインストール CD はオートマウントは OK。UFS のオートマウントも OK。

以下は dolphin のキャプチャなんだけど、FreeBSD がインストールされた 2.5 インチの HDD と FreeBSD のインストール用 CD-ROM をマウントした所です。

2.5 インチの HDD は / パーティションがぶっ壊れていたので fsck しないと自動的にマウントしてくれませんでした(^^;;。

 
dolphon.jpg

と、言う結果になりましたが、それにしても一番利用したい FAT32 が mount できないのが悲しい所・・。

もしかしたらこの項、つづく。かな?

8月 272008
 

KDE3 の頃は mplayer で動画の再生をしていた。KDE3 の頃は ports/multimedia/kmplayer と言う、mplayer を KDE3 で使いやすくするものがあったりしたけど、素の mplayer でも特に問題はなかった。

KDE4 にしたら ports/multimedia/kdemultimedia4 をインストールすると doragonplayer と言うのがインストールされるようになった。mplayer みたいな感じで、konqueror のプラグインとしても動作する。まぁ、どっちを使っても良いだけど。

所で話はガラっと変わるけど、DVD ボックスを買ってしまった。「未来少年コナン」の 30 周年特別版。西暦 2008 年 7 月、核兵器を遙かに越える超磁力兵器により世界の半分が一瞬にして消滅してしまった。と言うアレですね。

2008 年 7 月と言うのはもう過ぎてしまいましたが、それでも「ルパン三世・カリオストロの城」よりは古いのだけど、いやぁ。懐かしいのと面白いのとで、あっと言う間に全 26 話を見てしまった。土曜日の午前中に DVD が届いて日曜日の夜には全部見た。

今まで、全 26 話を九時間で見た。と言う記録は「新世紀エヴァンゲリオン」があったけど、それと同等だねぇ;-)。いやはや。懐かしかったです。

と、言うことで本題に戻るのだけど、この DVD をちょっとだけ mplayer と doragonplayer で見てみた。一番悲しい点はどちらもデジタルドルビー 5.1 チャンネルに対応していないのは FreeBSD のドライバがヘボいと言うのはちょっとおいといてと。

どちらも綺麗に表示してくれます。ただ、mplayer のほうが完成度は高いですね。早送りとか巻き戻しができるしねぇ。そー考えると KDE4 と言うのはまだまだ開発中だ。と言うことが伺えます。

後、ブラウザのプラグインとしての機能。doragonplayer だけをインストールすると firefox の動画を見られないし、mplayer だけだと konqueror の動画見られない。konqueror は firefox のプラグインを参照してくれるけど、 firefox は KDE4 のプラグインを参照してくれないので、結局、メティアプレーヤーを二つインストールしなければならないのねぇ・・。と、言う感じ・・。

一応、両方の ldd の結果を付けておきましょうかね。これで対応しているメディアがある程度解ることでしょう;-)。

・ldd /usr/local/kde4/bin/dragon | sort の結果

libICE.so.6 => /usr/local/lib/libICE.so.6
libQtCore.so.4 => /usr/local/lib/qt4/libQtCore.so.4
libQtDBus.so.4 => /usr/local/lib/qt4/libQtDBus.so.4
libQtGui.so.4 => /usr/local/lib/qt4/libQtGui.so.4
libQtNetwork.so.4 => /usr/local/lib/qt4/libQtNetwork.so.4
libQtSvg.so.4 => /usr/local/lib/qt4/libQtSvg.so.4
libQtXml.so.4 => /usr/local/lib/qt4/libQtXml.so.4
libSM.so.6 => /usr/local/lib/libSM.so.6
libX11.so.6 => /usr/local/lib/libX11.so.6
libXau.so.6 => /usr/local/lib/libXau.so.6
libXcursor.so.1 => /usr/local/lib/libXcursor.so.1
libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6
libXext.so.6 => /usr/local/lib/libXext.so.6
libXfixes.so.3 => /usr/local/lib/libXfixes.so.3
libXft.so.2 => /usr/local/lib/libXft.so.2
libXi.so.6 => /usr/local/lib/libXi.so.6
libXpm.so.4 => /usr/local/lib/libXpm.so.4
libXrandr.so.2 => /usr/local/lib/libXrandr.so.2
libXrender.so.1 => /usr/local/lib/libXrender.so.1
libXtst.so.6 => /usr/local/lib/libXtst.so.6
libbz2.so.3 => /usr/lib/libbz2.so.3
libc.so.7 => /lib/libc.so.7
libexpat.so.6 => /usr/local/lib/libexpat.so.6
libfam.so.0 => /usr/local/lib/libfam.so.0
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9
libgcc_s.so.1 => /lib/libgcc_s.so.1
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0
libiconv.so.3 => /usr/local/lib/libiconv.so.3
libintl.so.8 => /usr/local/lib/libintl.so.8
libkdecore.so.7 => /usr/local/kde4/lib/libkdecore.so.7
libkdeui.so.7 => /usr/local/kde4/lib/libkdeui.so.7
libkio.so.7 => /usr/local/kde4/lib/libkio.so.7
libkparts.so.5 => /usr/local/kde4/lib/libkparts.so.5
libkutils.so.5 => /usr/local/kde4/lib/libkutils.so.5
libm.so.5 => /lib/libm.so.5
libpcre.so.0 => /usr/local/lib/libpcre.so.0
libphonon.so.4 => /usr/local/kde4/lib/libphonon.so.4
libpng.so.5 => /usr/local/lib/libpng.so.5
librpcsvc.so.4 => /usr/lib/librpcsvc.so.4
librt.so.1 => /usr/lib/librt.so.1
ibsolid.so.5 => /usr/local/kde4/lib/libsolid.so.5
libstdc++.so.6 => /usr/lib/libstdc++.so.6
libstreamanalyzer.so.0 => /usr/local/lib/libstreamanalyzer.so.0
libstreams.so.0 => /usr/local/lib/libstreams.so.0
libthr.so.3 => /lib/libthr.so.3
libxine.so => /usr/local/lib/libxine.so
libxml2.so.5 => /usr/local/lib/libxml2.so.5
libz.so.4 => /lib/libz.so.4

 
・ldd /usr/local/bin/mplayer | sort の結果

libGL.so.1 => /usr/local/lib/libGL.so.1
libICE.so.6 => /usr/local/lib/libICE.so.6
libSDL-1.2.so.11 => /usr/local/lib/libSDL-1.2.so.11
libSM.so.6 => /usr/local/lib/libSM.so.6
libX11.so.6 => /usr/local/lib/libX11.so.6
libXau.so.6 => /usr/local/lib/libXau.so.6
libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1
libXcursor.so.1 => /usr/local/lib/libXcursor.so.1
libXdamage.so.1 => /usr/local/lib/libXdamage.so.1
libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6
libXext.so.6 => /usr/local/lib/libXext.so.6
libXfixes.so.3 => /usr/local/lib/libXfixes.so.3
libXi.so.6 => /usr/local/lib/libXi.so.6
libXinerama.so.1 => /usr/local/lib/libXinerama.so.1
libXrandr.so.2 => /usr/local/lib/libXrandr.so.2
libXrender.so.1 => /usr/local/lib/libXrender.so.1
libXt.so.6 => /usr/local/lib/libXt.so.6
libXv.so.1 => /usr/local/lib/libXv.so.1
libXxf86dga.so.1 => /usr/local/lib/libXxf86dga.so.1
libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1
libaa.so.1 => /usr/local/lib/libaa.so.1
libartsc.so.0 => /usr/local/lib/libartsc.so.0
libasn1.so.9 => /usr/lib/libasn1.so.9
libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0
libaudio.so.2 => /usr/local/lib/libaudio.so.2
libc.so.7 => /lib/libc.so.7
libcairo.so.2 => /usr/local/lib/libcairo.so.2
libcam.so.4 => /lib/libcam.so.4
libcdda_interface.so.0 => /usr/local/lib/libcdda_interface.so.0
libcdda_paranoia.so.0 => /usr/local/lib/libcdda_paranoia.so.0
libcom_err.so.4 => /usr/lib/libcom_err.so.4
libcrypt.so.4 => /lib/libcrypt.so.4
libcrypto.so.5 => /lib/libcrypto.so.5
libdrm.so.2 => /usr/local/lib/libdrm.so.2
libdv.so.4 => /usr/local/lib/libdv.so.4
libexpat.so.6 => /usr/local/lib/libexpat.so.6
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9
libfribidi.so.0 => /usr/local/lib/libfribidi.so.0
libgcc_s.so.1 => /lib/libgcc_s.so.1
libgdk-12.so.2 => /usr/local/lib/libgdk-12.so.2
libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0
libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0
libglib-12.so.3 => /usr/local/lib/libglib-12.so.3
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libgmodule-12.so.3 => /usr/local/lib/libgmodule-12.so.3
libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0
libgpac.so.1 => /usr/local/lib/libgpac.so.1
libgssapi.so.9 => /usr/lib/libgssapi.so.9
libgthread-12.so.3 => /usr/local/lib/libgthread-12.so.3
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0
libgtk-12.so.2 => /usr/local/lib/libgtk-12.so.2
libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0
libiconv.so.3 => /usr/local/lib/libiconv.so.3
libintl.so.8 => /usr/local/lib/libintl.so.8
libjack.so.0 => /usr/local/lib/libjack.so.0
libjpeg.so.9 => /usr/local/lib/libjpeg.so.9
libkrb5.so.9 => /usr/lib/libkrb5.so.9
liblber-2.4.so.3 => /usr/local/lib/liblber-2.4.so.3
libldap-2.4.so.3 => /usr/local/lib/libldap-2.4.so.3
liblirc_client.so.1 => /usr/local/lib/liblirc_client.so.1
libm.so.5 => /lib/libm.so.5
libmad.so.2 => /usr/local/lib/libmad.so.2
libmpcdec.so.5 => /usr/local/lib/libmpcdec.so.5
libncurses.so.7 => /lib/libncurses.so.7
libogg.so.5 => /usr/local/lib/libogg.so.5
libopenal.so.0 => /usr/local/lib/libopenal.so.0
libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0
libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0
libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0
libpcre.so.0 => /usr/local/lib/libpcre.so.0
libpixman-1.so.9 => /usr/local/lib/libpixman-1.so.9
libpng.so.5 => /usr/local/lib/libpng.so.5
libroken.so.9 => /usr/lib/libroken.so.9
librpcsvc.so.4 => /usr/lib/librpcsvc.so.4
libsbuf.so.4 => /lib/libsbuf.so.4
libsmbclient.so.0 => /usr/local/lib/libsmbclient.so.0
libspeex.so.1 => /usr/local/lib/libspeex.so.1
libssl.so.5 => /usr/lib/libssl.so.5
libstdc++.so.6 => /usr/lib/libstdc++.so.6
libtheora.so.0 => /usr/local/lib/libtheora.so.0
libthr.so.3 => /lib/libthr.so.3
libungif.so.5 => /usr/local/lib/libungif.so.5
libusbhid.so.3 => /usr/lib/libusbhid.so.3
libx264.so.50 => /usr/local/lib/libx264.so.50
libxmms.so.4 => /usr/local/lib/libxmms.so.4
libxvidcore.so.4 => /usr/local/lib/libxvidcore.so.4
libz.so.4 => /lib/libz.so.4

 
こうしてみると mplayer のほうが圧倒的に強い。と言うのが良く解るねぇ・・。doragonplayer はリンクしているライブラリが 51 個。mplayer は 90 個でした。

8月 182008
 

FreeBSD に KDE4.1 をインストールしたよ。の最終系でしょうか・・。

当初から懸案 となっていた、konqueror と konsole において UTF-8 以外の文字コードが表示できない。と言う件。何とか解決しました。

結論から言いますと ports を一個インストールし忘れていた。と言う感じです。japanese/qt4-codecs-jp は QT4 において日本語の文字コード体系をインストールする ports になります。 /usr/ports/japanese に入っていたらわかんねーよ。って感じなんですが、これを発見するまでに随分時間がかかったので是非書かせてください;-)。

まず、konsole を起動してログを調べます。[設定]→[現在のプロファイルを編集]から[詳細]の[エンコーディング]の設定で EUC-JP を選択したり、[表示]の[文字エンコーディング]で EUC-JP を選択すると以下のメッセージが出力されエラーとなる。

konsole(67786) KCodecAction::mibForName: Invalid codec name:  "EUC-JP"
konsole(67786) KCodecAction::mibForName: Invalid codec name:  "&EUC-JP"

 
これはおかしい。ってんで、kdebase-4.1.0/apps/konsole のソースをいよいよ眺めるわけです。すると KCodecAction::mibForName: は QT ライブラリを呼んでいるので、これは KDE4 側では無く明らかに QT4 側の問題だ。と言うことで、次に「どの ports をインストールしたら良いのだ?」となり /usr/ports の下を探し回った結果、 japanese/qt4-codecs-jp を発見し、インストールしたら無事に動作した。と言う感じなのでした。

さて、この ports を入れることにより konqueror と konsole においては UTF-8 以外の日本語の文字コードも表示できるようになりました。嬉しいことです。

konsole については [設定]→[プロファイルの管理]から EUC-JP や UTF-8 のプロファイルを作成して臨機応変に使い分ければ良いかと思います。ちなみに、僕は KDE4 から LANG を UTF-8 にしました。それらの設定についてはこの辺りに書いて有ります。

konsole のことについてちょっと書いておきましょう。設定で選択できる等幅フォントが少なくなったので表示が美しくなかったりするんですが、以下の要領で変更できます。

上記で EUC-JP や UTF-8 のプロファイルを作成 しましょう。って書きましたが、これらは ~/.kde4/share/apps/konsole/ の中に保存されます。例えば僕の作った EUC-JP のプロファイルは EUC-JP.profile のような感じ。ここに設定が保存されていますが、[Appearance] ディレクティブにおいてフォントの設定をします。以下は例です。

[Appearance]
ColorScheme=BlackOnLightYellow
#Font=osaka_unicode,10,-1,5,50,0,0,0,0,0
#Font=さざなみゴシック,10,-1,5,50,0,0,0,0,0
Font=美杉ゴシックL,10,-1,5,50,0,0,0,0,0
[Encoding Options] DefaultEncoding=EUC-JP
[General] Directory=$HOME Name=EUC-JP Parent=FALLBACK/ RemoteTabTitleFormat=%h : %u ShowNewAndCloseTabButtons=true TabBarMode=1 TabBarPosition=1
[Interaction Options] WordCharacters=_
[Keyboard] KeyBindings=linux

 
全文引用ですが;-)、今回は Font に「美杉ゴシックL」を指定してみました。他のフォント、例えば MS ゴシックなどは全角幅に半角英数字が表示され、とても利用できなかったのでした。多分アンチエイリアスを無効にすればちゃんと利用できると思います。

あぁ。上記のプロファイルを作成した場合、フォント名などに日本語が含まれているときにはファイルの文字コードは UTF-8 にする必要があります。ご注意下さい。

しかし、KDE4 の konsole の[表示]メニューから[すべてのセッションに入力を送る]って項目が無くなったのは痛いなぁ・・。複数のサーバに入っている時には非常に有用だったのになぁ・・。

さて、この辺りで完成品のスクリーンショットでも行きましょう;-)。僕の KDE4 はほぼ設定が完了しました;-)。



ちょっと説明しますと、

左上が openoffice.org-2.4.1 の viewdoc です。日本語が入力できています。
右上が Dplphin ですが、ネットワークを参照すると落ちるので、今の所は konqueror で smb:// するしか無いです。
左下は UTF-8 以外の日本語が表示できるようになった konsole です。
右真ん中は、同じく UTF-8 以外の日本語が表示できるようになった konqueror です。
右下ですが、 KDE4 から kdemultimedia-4.1.0 に付属するようになった dragonplayer です。まだ詳しくは追ってないのですが、mplayer とは非同期なのかな? konqueror 上ではプラグインとして動作します。今再生しているのは Windows Mediaストリーミングです。 www.flets のコンテンツでも試しましたが、DRM には対応していないようです。

後、パネルもカスタマイズしています。色は変更できないみたいなんですよねぇ・・。

と、言うことでこれでようやっと実用に耐えられる状態になって来たような気がします。 KDE2 から KDE3 に変更した時も随分と初期の設定を出すのに難儀しました。今回は KDE3 から KDE4 への変更ですが、機能が充実したりしていて中々楽しいです。

それにまだまだ知らないことが沢山ありそうですし。 dragonplayer なんかはそれ一個で十分にネタになりそうだしねぇ。

と、言うことで環境構築編はこれにてひとまず終了です。皆さんも是非 KDE4 利用してみてくださいーい。