5

私は Linux (主に ubuntu) のユーザーであり、システムがどのように機能するかについて十分に理解しています (ただし、私はLinux の第一人者ではありません!)。過去に、Python/GTK で小規模なクロスプラットフォーム デスクトップ アプリケーションを開発し、それらを自己完結型のファイル ツリーとしてクライアントに配信したため、依存関係は Python 自体と GTK だけでした。

今、私は GPL 2 または 3 の下でリリースしたいubuntu 用の小さなアプレットを開発したいと思います。

特に、これらは、目標を達成するために学ばなければならないことがわかっている新しいステップです (ただし、私が気付いていないことがさらにいくつかある可能性が非常に高いです!):

  • gnome との統合:アプリケーションをタスクバーでアプレットとして利用できるようにしたいです。
  • D-bus の使用:特に、アプレットで ubuntu 用の新しい osd-notification フレームワークを使用したいのですが、他のアプレットとの通信も 2 回目の反復で可能な機能です。
  • パッケージ化:アプリケーションがアルファ段階に達したらすぐにパブリック PPA をセットアップしたいと考えていますが、ライブラリを自分のパッケージに再度含めるのではなく、公式リポジトリの既存のパッケージからの依存関係も使用したいと考えています。

もちろん、公式ドキュメントは私の最初の知識源になりますが、SO に関する別のトピックで受け取った非常に有用な回答に基づいて判断した結果、SO コミュニティに目を向けて、次のような追加のアドバイスを収集することにしました。

  1. プロジェクトを実装できるようにするために学ばなければならない追加の手順はありますか?
  2. あなた自身の経験に基づいて、これらの手順を事前に学習するようにアドバイスしてくれますか (これらの知識はコア機能のコーディング方法に影響を与えるため)、または gnome / d-bus およびパッケージングとの統合を「より高いカプセル化レベル」として検討しますか? "後でコア機能の上に追加できます (注: D バスは、最初はデータをプッシュするためだけに使用されます。入力データは Web サービスで取得されます)。
  3. アプリケーションを 2 つのパッケージ (バックエンドとフロントエンド) に分割するか、1 つのパッケージにまとめるようアドバイスしてもらえますか?,
  4. 私がしなければならないことを学ぶために、見るように勧める有用なリソースを知っていますか?
  5. 私が知っておくべき一般的な「初心者の間違い」を知っていますか?

ただし、これらの質問は網羅的なものではありません。全体像から何かが欠けていると思われる場合は、正しい方向に向けていただければ幸いです。

PS: 最終的な目標の説明に失敗した場合は、プロジェクト hamsterを見てください: 私が達成したいことは、ユーザー インターフェイスの点で類似しています (つまり、アプレットはステータスを表示し、それをクリックするとアプリケーション自体が開く必要があります。そこからアプレットを構成し、さまざまな操作を実行できます)。

4

4 に答える 4

3

さて、あなたは python を挙げているので、武器庫に入れておきたいと思うでしょうpynotify。DBus をラップし、osd 通知システムを操作するための直接的な API を提供します。

>>> import pynotify
>>> pynotify.init("Lil' Applet")
True
>>> note = pynotify.Notification(
...            pynotify.get_app_name(), 
...            "Lil' Applet wants you to know something's up.", 
...            "/usr/share/icons/Human/48x48/status/dialog-information.png")
>>> note.show()
True

これにより、次のような通知が表示されます。

[    ] **Lil' Applet**
[ICON]
[    ] Lil' Applet wants you to know something's up.
于 2009-12-02T15:13:44.783 に答える
3

ご存知のように、あなたの最初の親友は、他の人が書いたコードです。つまり、コピー、貼り付け、分析、理解します。幸いなことに、あなたが達成しようとしていることを実行するプロジェクトがいくつかあります。コンジットのコードは、クリーンな方法で物事を行うための主要なリファレンスとしてお勧めできます。dbus にもあると思います。他に注意する必要があるのは、deskbar-applethamster (へー)、および機能 X を備えていることを覚えているその他のアプリです。ただし、C コードの解読が必要になる場合があります (アプレットのボタン ビットなど)。物事をまっすぐにするのにかなりの時間を費やしていたので、ハムスターから)

その場合、「devhelp」アプリが非常に役立ちます。このアプリを使用すると、man ページをすばやく簡単に読んだり検索したりできます。使用するすべてのモジュールの -doc パッケージも用意してください。ユーザー インターフェイスについては、後でインターフェイスを簡単に変更できるように、glade を使用することを強くお勧めします。空き地を使用できない場合は、ボックスを追加して配置し、コード内のボックスにウィジェットを追加します。確かに、あなたが難しい方法で学ぶ癖やことがあります。しかし、難しすぎてはいけません!

パッケージング、特に autotools は少し苦労しますが、うまくいくでしょう。Debian の実行方法 (およびそこから PPA まで) については、ハムスターのリポジトリ履歴を掘り下げることができます。以前は「debian」フォルダがありました。

小さく始めることをお勧めします-ウィンドウを取得できるかどうかを確認してください。次にボタンを付けます。最初から「正しく」行う必要はありません。何かがうまく機能すれば、最初は問題ありません。

別居については、あなたがそこに着くまでは気にしません。2 つの部分に分割してコアを作成することは、後ほど難しいことではありません。しかし、それはすべてあなたの優先順位に依存します。

最後に、その分野を知っている友達を作ることも役に立ちます。新しい友達を作る方法の 1 つは、他のプロジェクトに参加することです。

于 2009-12-02T15:48:53.217 に答える
1

2 年前に私がこの質問をしたとき、Ubuntu と Gnome は現在よりもずっと近くにありました。現在 (2011 年末) gnome は gnome-shell を採用していますが、Canonical は独自の UI ( unity ) を開発することを決定しました...

分割にもたらした緊張の一部には、特に libappindicatorが関係していたため、この質問 (およびおそらく回答の一部) を作成する方法が時代遅れになっています。

さらに、スタック交換にAskUbuntuがあり、ubuntu 固有の質問について尋ねるには、おそらくより良いフォーラムになるでしょう。

于 2011-11-09T01:38:59.940 に答える
1

ここにはすでにいくつかの非常に優れた推奨事項がありますが、アプレットを「Ubuntu用」ではなく「Gnome用」に開発することをお勧めします。2 つの例を挙げると、Fedora や Arch Linux パッケージなどのディストリビューション用の RPM パッケージを作成するのにも、それほど労力はかかりません。ただし、大きな欠点が 1 つあります。Debian 安定版との互換性を維持するには、古いバージョンの GTK と GLib に固執するか、少なくとも新しいバージョンに依存する機能をオプションにする必要があります。大変ですが、どうやら Debian の安定版ユーザーはそれを高く評価しているようです。

また、できるだけ早くソース コード管理システムをどこかにセットアップすることをお勧めします。ディスクがクラッシュすることを心配する必要はないかもしれませんが、最後のコミット以降に行ったすべての操作を元に戻すだけで、多くの手間が省ける場合があります。

公式の Gnome パネル アプレット ライブラリのドキュメントへのリンクは次のとおりですPython バインディングがあるかどうかはわかりません。

于 2009-12-03T17:45:55.093 に答える