GNU/Linux >> Linux の 問題 >  >> Linux

Linux デスクトップでファイルに関連付けられたアイコン、MIME タイプ、およびアプリケーションを取得するにはどうすればよいですか?

GLib/GIO を使用して必要な情報を取得する例を次に示します。

#include <gio/gio.h>
#include <stdio.h>

int
main (int argc, char **argv)
{
    g_thread_init (NULL);
    g_type_init ();

    if (argc < 2)
        return -1;

    GError *error;
    GFile *file = g_file_new_for_path (argv[1]);
    GFileInfo *file_info = g_file_query_info (file,
                                              "standard::*",
                                              0,
                                              NULL,
                                              &error);

    const char *content_type = g_file_info_get_content_type (file_info);
    char *desc = g_content_type_get_description (content_type);
    GAppInfo *app_info = g_app_info_get_default_for_type (
                                  content_type,
                                  FALSE);

    /* you'd have to use g_loadable_icon_load to get the actual icon */
    GIcon *icon = g_file_info_get_icon (file_info);

    printf ("File: %s\nDescription: %s\nDefault Application: %s\n",
            argv[1],
            desc,
            g_app_info_get_executable (app_info));

    return 0;
}

そのために xdg から入手できるツール、特に xdg-mime query を使用できます .

たとえばのファイルタイプを調べるにはファイル index.html

$ xdg-mime query filetype index.html

これにより、MIME タイプが返されます。その mimetye に関連付けられているアプリケーションを照会するには、例を使用します。

$ xdg-mime query default text/html

これは epiphany.desktop を返します ここ、つまり $APPNAME.desktop であるため、そこからアプリケーション名を簡単に取得できます。デフォルトのアプリでファイルを開きたい場合は、もちろん実行するだけです

$ xdg-open index.html

ひらめきを呼び起こすでしょう。

xdg-utils ではアイコン リソースのクエリ関数が利用できないようです ですが、pyxdg を使用して小さな python スクリプトを作成し、多数の追加機能を提供することもできます。

C バインディングについては、おそらく xdg ページにリンクされているポートランド コードを調べる必要があります。

編集:

libmagic について libmagic は、ファイルタイプのカバレッジに関してはより完全 (かつ正確) であるように見えますが、まったく気にしません デフォルトのアプリケーションまたはアイコンについて。また、追加の MIME タイプをインストールするためのツールも提供しません。


Qt>=4.6 では、X11 システム用の新しい機能があります

QIcon QIcon::fromTheme ( const QString & name, const QIcon & fallback = QIcon() ) [static]

この機能を使用できます。ドキュメントはこちら / (Qt 5)


Linux
  1. Linux –ターミナル経由でファイルシステムタイプを表示する方法??

  2. LinuxでMimeタイプのアプリケーションを見つける方法は?

  3. Linuxの「検索」でファイル名のみを取得するには?

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linux の cp コマンドで正規表現をどのように使用しますか?

  3. Linuxでファイルの物理サイズを取得するには?

  1. Linuxを始めたきっかけは何ですか?

  2. PlexyDeskを使用してLinuxデスクトップの機能を拡張する方法

  3. Linuxスクリプトコマンドを使用してターミナルセッションをキャプチャして出力する方法