Under-Construction

▲Zaurus Top | ↑Up(設定・システム) | ←Prev(ipkg の構造と無理インストール) | →Next(セルフ開発環境)


opie-sh と qcop と簡単ツール

(2003/07/07)

Opie とは

Opie とは、Open Palmtop Integrated Environment のことで、オープンソースの Linux PDA のプラットフォーム。OPIE は、Trolltech の Qtopia から分離して、 独自の改良がされてきたものだ。(本家サイト http://opie.handhelds.org より)

Qtopia は Zaurus のプラットフォームでもあり、Opie で動く各種ツールは、 Zaurus でも有用に使える可能性が高いってこと。世界中の PDA マニアが Unix の Qt や KDE というプラットフォームをもとに、ものすごい勢いでアプリケーショ ンやシステムを開発しつづけているのだ。

Opie-sh とは

Tk に wish があるように、Opie というようりは Qtopia (QtPalmtop)の、 Widget (ボタンとか、ラベルとかの GUI部品) をシェルスクリプトから使うための インタプリタ。

画面イメージやなんかは、本家( http://www.rit.edu/~tfs1812/cgi-bin/document.pl?document=opie-sh) 参照。日本語の情報は、Walrus, Visit. の Linuxザウルス/Opie-sh-HowTo が充実している。

qcop とは

Qtopia アプリケーションで、相互にメッセージをやり取りするのに qcop メッセージと言われる。 それをコマンドラインから扱うツールがqcopコマンドだ。 qcop を使うと、他のアプリケーションを、ヨソから自由にコントロールできる。

どんなメッセージが使えるかは、DIGITAL-MONO の LinuxZaurus/QCop が情報豊富。

ipkg とは

Zaurus で(Qtopia で)使われているパッケージシステム。 インストールやアンインストールはパッケージ管理システムに まかせてしまうのが楽々。→解説

簡単ツール例

Zaurus の主要な使われ方として、メーカの思惑とは違って、 次のようなことをしたい人が多いと思う。

歩きながら、思いついた時にすぐプログラミング。

そういうつもりでいたのだが、NetFront で http://localhost/ ってすると、 「ネットワークに繋ぎますか?」だって。ifconfig で見ても lo は生きているのに。

いろいろ調べてみたところ、Linux としては、ネットワークは生きているけど、 Qtopia として落ちているらしい。つまり、qcop で

qcop QPE/Network 'up()'

しろ、ということだ。何回か、シェルでそういうコマンド打ってたけど、 しばしば使うので、GUI ラッパーが欲しくなってきたので、 opie-sh で作ることにした。

localhost_net

スクリプト localhost_net.sh のソースを次に示す。 opie-sh の -m オプションでボタン付のダイアログを表示して、 ボタンの押した結果が、ステータス$?に入るから、 それに応じた qcop メッセージを送信するだけ。 表示系に、HTML が使えるのが面白い。

#!/bin/sh
# 2003/07/05 KONDOU 
# http://www.bf.wakwak.com/~nkon/homepc/zaurus/

OPIE_SH=/opt/QtPalmtop/bin/opie-sh
QCOP=/opt/QtPalmtop/bin/qcop

#############################################

show_dialog(){
        $OPIE_SH -m -g -M "<img src=/opt/QtPalmtop/pics/netmon/up2.png>This is GUI wrapper of<br><T>qcop OPE/Network 'up()'</T><br>for localhost netrowk." -0 "down" -1 "up" -2 "Cancel"
}

up(){
        $QCOP QPE/Network 'up()'
}

down(){
        $QCOP QPE/Network 'down()'
}

##############################################
# main

show_dialog

case $? in
        0)
                down
        ;;
        1)
                up
        ;;
esac

あとは、ランチャに表示するために、 /opt/QtPalmtop/apps/UserTab1/localhost_net.desktop に次のように書いておけばよい。アイコンは、システムの地球アイコン (/opt/QtPalmtop/pics/netmon/up2.png)を拝借することにする。

[Desktop Entry]
Type=Application
Exec=localhost_net.sh
Icon=netmon/up2
Name=localhost_net

ipkg 化

ipkg 化するためには、Walrus, Visit.で公開されている、 ipkg-buildを使うのが簡単だ。 Linux ザウルス用と書いてあるが、シェルスクリプトなので、 母艦で、ipkg を tar xvzf で展開して、その中の ipkg-build を呼んでもよい。

ipkg 化するためには、control というファイルが必要だが、簡単なので、以下の localhost_net の control を見て自習のこと。

Package: localhost-net
Installed-Size: 
Version: 1.0.0
Depends: opie-sh
Priority: optional
Section: opie/settings
Maintainer: KONDOU Nobuhiro 
Architecture: arm
License: GPL
Description: GUI wrapper of qcop QPE/Network 'up()'

次のディレクトリ構造を作っておいて、 ipkg_build localhost_netlocalhost-net_1.0.0_arm.ipk が作られる。

+-- localhost_net/
  +-- CONTROL/
  |   + control
  +-- opt/
      + QtPalmtop/
         + apps/
         |  + UserTab1/       {追加タブに入れることにする}
         |     + localhost_net.desktop
         + bin/
            + localhost_net.sh

できた ipkg は、本体メモリでも、SD カード上でもインストール可能。 ただし、アイコン長押して、「VGAに最適化して実行」のチェックを外して おくと良い。

うまく行かない時

ダウンロードしようとしたら、tar だと言われた。
*.ipk はようするに tar+gzなので、サーバの設定 で、application/ipkg を付けてなかったり、サーバが言うファイルタイプを 信用せずに、自前でタイプを判別するブラウザだと、tar だとか言われるこ とがある(gzは自動解凍される)。→*.ipk にリネームして問題なし。
アイコンが爆発して、そのまんま
アイコンに関連付いた sh スクリプトが起動しているけど、エラーですぐに 終了してしまったと思われる。opie-sh がインストールされているかどうかを確認してみると吉。

▲Zaurus Top | ↑Up(設定・システム) | ←Prev(ipkg の構造と無理インストール) | →Next(セルフ開発環境)


近藤靖浩