4

Gnome パネル (標準の Gnome デスクトップ アプリケーション ランチャー) のメニュー構造を解析したいと思います。これは、c/c++ 関数呼び出しを使用して KDE に相当します。つまり、特定のマシンにインストールされている基本メニュー カテゴリとサブメニューのリストが必要です。かなり単純な c/c++ 関数呼び出しを使用してやりたいと思います (シェルを使用しないでください)。

これらのメニューが標準の xdg 形式であることを理解しています。このメニュー構造が次のような xml ファイルに保存されていることを理解しています。

/home/user/.config/menus/applications.menu

私はここを見てきました:http://www.freedesktop.org/wiki/Specifications/menu-spec?action=show&redirect=Standards%2Fmenu-specしかし、彼らが提供するのは、アイテムエントリを挿入するための標準といくつかのシェルファイルだけです(私はシェルスクリプトはいらない、インストールしたくない、XDG 仕様から c-library を作成したくない、既存のメニュー構造を見つけたい)。これらの構造の詳細については、 http : //library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.enを参照してください。これのどれも、ac/c++ プログラムを使用してメニュー構造を決定する方法について良い考えを与えてくれません。

実際の gnome メニュー構造は、恐ろしく毛むくじゃらのようです。メニュー構造を示しているようには見えませんが、インストール以降にメニューが行ったすべての変更を XML コードで記述しているようです。gnome パネルがこれらのファイルを解析するため、これを行う関数がどこかに埋め込まれていると思いますが、library.gnome.org を数日間スキャンした後、その関数がどこにあるのかまだわかりません。Nautilus のソース コードもスキャンしましたが、パネルが別の場所に存在するか、十分に埋められているようです。

前もって感謝します

4

1 に答える 1

3

多くの骨の折れる調査の結果...最も安定したアプローチは、gnome メニューの解析コードを取得し、それを tar ボールからリッピングして、ローカルで使用することです。

私が使用したバージョンはこちらです: http://download.gnome.org/sources/gnome-menus/2.28/gnome-menus-2.28.0.1.tar.gz

このコードは、いかなる種類の API としても扱われるべきではないことを大声で宣言しているため、私が言ったように、gnome ツリーからそれをリッピングし、独自のアプリケーションのローカル コピーを保持するように強制されます (ライブラリに動的にリンクするよりも収集します)。

メニュー解析コードの KDE バージョンは、より転送可能に使用できるように見えますが、実際には KDE の仮想ファイル システムに大きく依存しています。私が知る限り、コード gnome はスタンドアロンで動作します。テスト ファイルは、独自の解析を行うためのテンプレートとして機能します。

于 2010-05-20T21:04:31.177 に答える