通信

PyGtk アプリで多重起動防止をやりたい。
それには引数を既に起動している自分自身に送信する必要がある。
いわゆるプロセス間通信というやつです。

Windows なら WM_COPYDATA という単純な方法が使える。
デスクトップ内での通信ならソレで十分なので他の通信を勉強していない。
そのツケで今苦しんでいる。

第10章 2重起動を防ぐ

を見つけて Python に書き直しテストとかやってみた。
PyGtk 2.13.0 の gtk.SelectionData では get_length() メソッドが使えなかった…

gtk.SelectionData

てかこの方法って selection_convert を実効しないとサーバーは取得しないってことかな?
なんか私のやりたい通信とは違うみたい、まだよく理解していないが早く気がつけ俺。

次に Plug と Socket を使ってみようと考えた。

10.13. Plugs and Sockets

うん、これなら PyGtk の範囲で使えるから楽そうだ。
ダウンロードしたサンプルをそのまんま試して動いたし理解しやすい。
しかしこの Socket ってつまりコンテナとして実装する必要があるってことみたい…
ということはどう実装…なんかコレも違う。

そういえば gEdit のソースを落としたんだっけ、見てみよう。
Bacon なんちゃらという関数が見つかったけど…何がどうだかまったく解らんぞ!
Linux での C 開発は私のレベルではまだ無理だと実感。
だってどのヘッダがどの役割とか全然知らないもん。

色々探すと Gnome は Bonobo という通信手段を用意しているらしい。
これがもう更に何がなんだか解らない。

あぁ、通信についてもっと勉強しておくべきだった。

D-BUSを使用してデスクトップ・アプリケーションを接続

こんなのまで見つけてしまった、もうドツボか。
と思ったけど D-BUS って Bonobo から置き換えられるそうだ。
ならばコッチを勉強したほうがよさそう。
しかし Python のコードをコピペしてみたけど動かないぞ!

Linux 日記 2005

そうか仕様変更されまくっているのか、やっぱり動かない。
どこかに現行版の解りやすいサンプルコードは無いのだろうか。
というか私はアプリ間で文字列の送信受信さえできれば十分なんですけど。

Message from D-BUS

うん、HelloWorld は上手く通信できた。
やっと先が見えてきた、以上 URL 覚書だけで終わった日記でした。