コンテキスト
私はGNOME 3.22を使用しており、すべてのデスクトップファイルをグループ化したいと思います。これを行うには、アプリケーションメニューのすべてのデスクトップファイルを一覧表示し、次のコマンドを使用する必要がありました。このガイドそれらを整理します。
これらのデスクトップファイルを含む3つの場所が見つかりました。
~/.local/share/applications
~/.local/share/flatpak/exports/share/applications
/usr/share/applications
使用このスクリプト、私は半分の成功を収めた。しかし、まだどのグループにも属さないいくつかの項目があります。
このデスクトップファイルにはフィールドがないため、
Categories
カテゴリ別に管理できません。このデスクトップファイルは上記のディレクトリに属していないため、名前を呼び出すことはできません。
質問
明らかに、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 ドキュメントのメソッドを参照してください。name
display_name
commandline
executable
description
get_*
Gio.AppInfo.get_commandline存在する。
、プラス:、、などのDesktopAppInfo
すべて。よりAppInfo
categories
generic_name
keywords
startup_wm_class
Gio.DesktopAppInfo.get_action_name今後