web-dev-qa-db-ja.com

GNOME Shell拡張機能を作成するためのドキュメント

GNOME 3デスクトップのレイアウトをカスタマイズするように頼まれました。どうやらそれを行う方法は、「拡張機能」を書くことです。

やりたかったことは何とかできましたが、情報の飢えたを感じています。役に立つドキュメントが見つかりませんanywhere私の人生のすべてを無駄に使い果たして、有用な情報を見つけようと必死に試みて、考えられるすべての検索語を必死にグーグルで探しました。

GNOME Webサイトには、ダウンロード用の拡張機能がhundredsあります。これらは簡単な3ライナーではありません。それらは洗練されたコードです。誰もそれを行う方法を説明する文書なしでこれらを書くことができるという信念に反します。

誰か、実際のドキュメントがどこにあるか教えてもらえますか?これまでのところ、私ができることは、興味のある特定のビットを実行するマジックコマンドを追跡しようとする既存の拡張機能を分解することです(簡単な作業ではありません!)。

コマンド名、オブジェクトパス、サンプルプログラム、anythingが役立つでしょう!

60

最近自分で掘り下げました。ドキュメントは通常、まばらであるか古くなっています。以下は、開発を開始するのに役立ついくつかのソースです。

ドキュメントはほとんど利用できない(または最新のものである)ため、a lot of source-readingを行う必要があります。上記のgnome-Shellのソース(JavaScriptの部分)をリンクしました。これは、公式ドキュメント(これが最も完全なものです)でカバーされていない部分に飛び込むときの良い出発点です。

また、特に役立つのは、 extensions.gnome.org で、作成したいものと同様の機能を持つ拡張機能をチェックし、そのソースを確認することです(それらのほとんどはGitHubまたはBitbucketのオープンソースです。それらをインストールして、_~/.local/share/gnome-Shell/extensions/_)の下でソースを見つけることもできます。

特定の関数で使用するドキュメントやその他のドキュメントを検索する場合、異なる言語のバインディングについてマニュアルを参照することもできます(パラメーターと戻り値が一致しない可能性があると考えられます)。


最後になりましたが、ここにいくつかありますデバッグのアドバイス

LookingGlassは特に役立ちません。例外(説明)の1行のみが表示され、それらが起動時に発生する場合(拡張機能が最初に起動されたとき)にのみ表示されます。

完全なStackTraceとランタイム例外については、_~/.xsession-errors_-ファイルを参照してください。非常に長く肥大している可能性があります。私はこれを使用して 便利なスクリプト を読みます:

_# Grabs the last session-errors from the current X11 session.
# This includes full Stack-Trace of gnome-Shell-extension errors.
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass
tail -n100 ~/.cache/gdm/session.log | less
_

Gnome 3.6以降、gdmをディスプレイマネージャーとして使用している場合、現在のセッションログはファイル_~/.cache/gdm/session.log_です。

Systemdを使用するいくつかの新しいディストリビューションでは、次のコマンドでエラーログを取得できます。

_journalctl -f /usr/bin/gnome-session
_

拡張機能のprefs-partのデバッグの場合、端末で_gnome-Shell-extension-prefs_- toolを使用して設定を起動し、コンソールで例外出力を表示できます(呼び出しもできます)拡張機能の設定を直接表示する_gnome-Shell-extension-prefs [uuid]_などのツール)。

現在、ブレークポイントを使用したデバッグの実際の方法はないので(ただし、 トリッキー )、コンソールにログインを使用して簡単に確認できます。print()-関数。上記の出力が表示されます(_gnome-Shell-extension-prefs_- toolの起動時に、セッションエラーファイルまたは端末に表示されます)。


それに入るのは少し難しいかもしれませんが、拡張フレームワークは非常に強力です。 楽しい


やや詳細なブログ投稿を書きました。これは Gnome-Shell拡張機能の作成 にあります。

72
Lukas Knuth

参照の広範なリストは、 Gnome Developer-API Reference ページにあります。

拡張機能には次のものを使用しましたが、使用方法は異なる場合があります。

  • GTK +
    GTK +は、GNOMEアプリケーションでユーザーインターフェイスを構築するために使用される主要なライブラリです。ユーザーインターフェイスを制御するためのユーザーインターフェイスコントロールとシグナルコールバックを提供します。

  • GDK
    GDKは、ウィンドウシステムの詳細からGTK +を分離する中間層です。

  • クラッター
    Clutterは、高速で視覚的に豊かなグラフィカルユーザーインターフェイスを作成するためのGObjectベースのライブラリです。

  • GObject Introspection
    GObject Introspectionは、(GObjectベースの)Cライブラリと言語バインディングの間にミドルウェアレイヤーを提供するよう努めています。

  • シェル
    シェルリファレンスマニュアル

  • St
    St-Shell Toolkit-便利なアクターを定義するGNOME ShellのカスタムClutterベースのツールキットです。 StBoxLayoutStBinなどのこれらのアクターのいくつかは、さまざまなレイアウトオプションを実装しています。

  • アイコンテーマの仕様
    この freedesktop.org 仕様では、アイコンテーマを保存する一般的な方法について説明しています。

注:これらの最後の2つは、視覚要素パラメータを見つけるのに非常に役立ちます!

  • PyGTK
    PyGTKはPython用のGTK +です。このリファレンスには、クラスの説明を含む各Python PyGTKモジュール(基盤となるGTK +ライブラリに対応))の章が含まれています。

  • PyGObject
    PyGObjectはPython拡張モジュールであり、GObject Introspectionを使用してGNOMEソフトウェアプラットフォーム全体にクリーンで一貫したアクセスを提供します。具体的には、Python GLib、GObject、GIO、GTK +のバインディング。
    このリファレンスには、クラスの説明を含む各PyGObjectモジュールの章が含まれています。

12
omid