Linux」カテゴリーアーカイブ

通信

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 覚書だけで終わった日記でした。

アクティブ以外全部閉じる

gEdit のタブ右クリックメニューの name 属性名が知りたい。
いやぁ gEdit のソースコードを見たけど全然解らないや!

gedit

ココの GNOME ftp site って所から ftp で落とせる。
想像していたより小さくて驚いた、まぁ Gtk+ 自体が部品のようなアプリだが。
しかし C でよくぞここまで綺麗に、Windows では考えられない。

でも結局タブの name 属性は解らないまま。
日本語版じゃどうせ解らないから最初からメリケンの Google で探しまくる。
それでもやはり解らない、みんなこういうカスタマイズに興味はないのか?

てゆーか他人が書いたコードをそのまんま貼っている人って以外に多いんだなぁ。
一部日本人だけの特徴だとずっと思っていたよ。

ふと思いついてキーワードから gEdit を外して探してみた。

http://www.tortall.net/mu/wiki/EpiphanyExtensions/tab-menu-close.py?raw

なんか全然関係なさそうだけどコレってもしかして…

ui_str = """<ui>
    <popup name="NotebookPopup">
        <separator/>
        <menuitem name="but_active" action="but_active"/>
    </popup>
</ui>
"""

で gEdit のタブ右クリックメニューに追加できた!
コレさえ解れば簡単だ、ということで [アクティブ以外全部閉じる] 完成。
本サイトにて公開中、以上自己宣伝検索の技でした。

しかしプラグインはたったの百行以下でも成立するからイイね。
これなら結構頻繁に本サイトも更新できるようになりそうだ。

解説ページを作ってみた

gEdit プラグインの作り方解説ページを作ってみた。
トップページ(本サイト)からどうぞ。
しかししばらく Linux でいく宣言した途端に…

それより何故誰もこういうページを作ってくれないんだろう…
てなわけで。

Windows でよく使っていた秀丸マクロは gEdit でまかなえるようになった。
何より Python と PyGtk で書けるというのは嬉しい、勉強した甲斐があった。
秀丸のマクロはヘルプとにらめっこだったからね。

でも動作確認は一旦再起動しなきゃいけないのが面倒。
ここらを柔軟にしてくれると嬉しいけど無理だろうなぁと。
キーボードマクロの記録再生みたいなのは作れるかな?まだ解らない。

後は Shift+Enter で <br /> を打てれば完璧なんだが…

Ctrl+[ で <br />
Ctrl+] で <br /> & 改行

というスニペットを作ってみたけどやはり間違えるや。
まぁこれは慣れの話だ。
とにかく gEdit って結構おもしろい。

realplay

RealPlayer for Linux – the best audio and video player – Real.com

いつのまにやら(前から?) deb があった。

realdeb

deb なら削除も簡単だし、せっかくだから入れてみよう。
「日本語セットアップヘルパ」から v10 を削除して開始。

途中で止まったと思ったらメールサーバーがどうとか…

初回起動で Windows 版同様に色々…

「日本語セットアップヘルパ」の奴は何もなかったのに。
気を取り直してと…やはり「送信する」関連がデフォルトなので消す。
さて起動はメニューにある、一応端末からは realplay ね。

realplay

普通に日本語になるんだね。
しかしシークバーが間延びしていて少しカッチョワルイんですけど。
ホイールクリックで追従するから GtkHScale っぽいんだが、ソースは見ていない。

プラグインを見ると一番上に wmvrender.so がある。
どうやら WMV はサポートしたようだ、H.264 と FLV が見当たらないんだが…
試してみたらそのまんま、けど GStreamer で例外になる WMA は何故か再生できた。
…んだけーが 16:9 の奴が 4:3 になってしまったり。

そうそう、YouTube でも例のツールバーは出ないです。
そうそう、最後まで再生しても「もう一度見る」は出ません。
そうそう、左下のボタンでプレイリストが出る、けど横にくっついていない。

微妙だ…なんか Windows 版と違いが激しすぎ。

それよりv11 は Ubuntu 8.10 でもボリュームが調節できる!
てゆーか v10 ではできなかっただけなんだが。

あんまり参考にならないや。
まあアスペクト比調節機能はやはり必要だということだけは理解した。

Ctrl+Space

スニペットを使わず嫌いなのはもったいないと思って試してみる。
ようするに何か短いキーワードを打ち込んで Tab キーを叩くと残りとかが保管される機能。
空のファイルを *.py の拡張子で保存して py とだけ打って Tab を叩く。

sn_py

それだけでココまで勝手に書き込んでくれる、みたいな機能である。

Windows では Tab は単なるインデントのイメージがあるけど UNIX は違う。
同様な機能が色々なアプリに搭載されているが何故こんな文化が UNIX にはあるのだ?
と思っていたけど端末(bash)でよく解った。

bash 入門

$ cd y

たとえば上記みたいに打ち込んで Tab キーを叩く。
現在のディレクトリに y で始まるディレクトリが y901x しかない。
なんて場合は $ cd y901x まで完全に保管される。
複数ある場合は 2 回 Tab を叩けば候補が表示される。

知らなかった…まだまだ知らないで損しているコトは多い。
「↑」キーを叩くと直前に打ち込んだコマンドが流し込まれるとかは知っていたけど。
Python とかをやっていると実効確認とかでよくやるんだなコレ。

とにかく。
シェル自体にそんな文化があるのでは GUI になっても変わらないわな。
問題はそのキーワードを覚えておかなければいけないこと。
登録したところでキーワードを忘れてしまっては無意味だ。

しかし何を考えたのか Ctrl+Space を押してみた。

cspace

あれ?こんなことができたんだ、Visual Studio のコード保管と同じキーなんだが。
何故今まで叩いてみようと思わなかったのだろう?まあいいけど。
スニペット保管のみだけど十分だ、少なくともキーワードを覚えておく必要は無い。
これならば使ってみようと考えるわ、秀丸のように使おうと思うから駄目なんだと。

…まだまだ知らないで損しているコトは多い。