アプリケーションメニューに表示されるすべてのデスクトップファイルのリスト

アプリケーションメニューに表示されるすべてのデスクトップファイルのリスト

コンテキスト

私はGNOME 3.22を使用しており、すべてのデスクトップファイルをグループ化したいと思います。これを行うには、アプリケーションメニューのすべてのデスクトップファイルを一覧表示し、次のコマンドを使用する必要がありました。このガイドそれらを整理します。

これらのデスクトップファイルを含む3つの場所が見つかりました。

~/.local/share/applications
~/.local/share/flatpak/exports/share/applications
/usr/share/applications

使用このスクリプト、私は半分の成功を収めた。しかし、まだどのグループにも属さないいくつかの項目があります。

  • このデスクトップファイルにはフィールドがないため、Categoriesカテゴリ別に管理できません。

  • このデスクトップファイルは上記のディレクトリに属していないため、名前を呼び出すことはできません。

質問

明らかに、GNOMEは上記のディレクトリのデスクトップファイルだけをリストするものではありません。これを保存するどこかが必要です。デスクトップシェルはそれを読んですべてのアプリケーションを一覧表示できます。私はそれを見ることができません。どこにいるのか教えてもらえますか?

修正する

これは私の「戦いの半分」です。 GNOMEアプリケーションメニュー

ベストアンサー1

Gioファイルシステムを直接検索する代わりに、このライブラリ(Gnomeが構築されたGtk / GObject / GLibエコシステムの一部)を使用できます。 Gnome、Xfce、MATE、CinnamonなどのGtkベースのデスクトップ環境でPythonで使用できます.giモジュールを含むPythonは何もインストールせずに利用可能でなければなりません。

from gi.repository import Gio

all_apps = Gio.AppInfo.get_all()  # Returns a list of DesktopAppInfo objects (see docs)

# For example, print display name and description of all apps
for app in all_apps:
    print(app.get_display_name())
    print(f"\t{app.get_description()}")

APIドキュメント:Gio.App情報Gio.DesktopApp情報

DesktopAppInfoから継承されました。他の種類が何であるかAppInfoわかりませんでした。AppInfo返されたオブジェクトはインスタンスGio.AppInfo.get_allのようですGio.DesktopAppInfo。私が知る限り、私たちはほとんどDesktopAppInfoインスタンスを扱っています。

これらのDesktopAppInfoオブジェクトは、システムで見つかったすべての.desktopファイルを表します。これには、*メソッドを使用してアクセスできるプロパティがあり、get_.desktopファイルのほとんどすべてを表します。

たとえば、(通常は名前と同じですが、時には異なる場合もあります)、(アプリケーションを実行するために呼び出される引数を含むコマンドライン全体)、(コマンドのみ、引数なし)などのオブジェクトのプロパティを取得AppInfoできます。 。 API ドキュメントのメソッドを参照してください。namedisplay_namecommandlineexecutabledescriptionget_*Gio.AppInfo.get_commandline存在する。

、プラス:、、などのDesktopAppInfoすべて。よりAppInfocategoriesgeneric_namekeywordsstartup_wm_classGio.DesktopAppInfo.get_action_name今後

おすすめ記事