Kデスクトップ環境

第 2章アプリケーション上の KDEデーモンの使用

kded のサービスを利用する前に、KDE におけるその立場とそれ自体の用途について知っておく必要があります、その上でサービスがアクセスされるようになります。

kded がクライアントとやりとりするのに CORBA を使用する際、(クライアントとしての)アプリケーションは以下のようにする必要があります。

最初の二点については全てのクライアントに対して求められます。三つ目は特定のクライアントに対してのみです。普通次の中から選択しなければなりません:

kdedは CORBA を広く用いますが、API はシンプルさを保ち、複雑な CORBA スタッフの影響は受けません。実際、 kded について話をする場合、API はkdedサーバではなく、KDEデーモンライブラリを意味します。このライブラリはサーバの全体的な機能に加えて(クライアントに対する)サーバへのインターフェースも含まれます。これはkded を使用するアプリケーションがkded サーババイナリの存在に依存することを強要されるべきではない、もしくはサーバの稼働状況に全く依存すべきでないという考え方に由来するものです。クライアントアプリケーションを起動する時、次の三つの状況が考えられます:

要約すると、libkded は、たとえアプリケーションが稼働している環境がどのようなものであろうと常に kdedのサービスがクライアントアプリケーションに対して利用可能な状態にしているのです:-)。そしてこのことに気を遣わなくても、次の三つのコマンドライン引数のうちの一つを自分のアプリケーションに追加することで libkdedの動作を随意にコントロールすることが出来ます:

実際の kded インターフェースとそのサービスは、kded_instance.h に定義されているKdedインスタンスクラスです。ですから kded を使用したいなら(だからこんなものを読んでいるのだとは思いますが)、忘れずにそのためのインスタンスを一つ作成しておいてください。好ましい方法はmain()の最初に次の行を追加することです:KdedInstance( argc, argv, _a_reference_to_the_orb_here_ ); KOMApplication をアプリケーションオブジェクトとして使用しているなら(この行の前にインスタンスを作成することを忘れないでください)、ORB に関してkomapp_orbを明記します。

このクラスのインスタンスが常にただ一つだけなら、どこからでもクラスのself()スタティックメソッドで簡単にアクセスすることが出来ます。プログラム中のKdedInstance引数をパスする必要はありません。

KdedInstanceについての更に詳しい情報として、kded_instance.hを読みたくなるかも知れません。これは素晴らしくよくまとめられています。