Как Вы получаете значок, тип MIME и приложение, связанное с файлом в Рабочем столе Linux?

Можно ли разъяснить то, что Вы подразумеваете под "LINQ"?

LINQ не является технологией доступа к данным, это - просто функция языка, которая поддерживает запросы как собственную конструкцию. Это может запросить любую объектную модель, которая поддерживает определенные интерфейсы (например, IQueryable).

Многие люди обращаются к LINQ К SQL как LINQ, но это нисколько не корректно. Microsoft только что выпустила LINQ К Объектам с.NET 3,5 SP1. Кроме того, NHibernate имеет интерфейс LINQ, таким образом, Вы могли использовать LINQ и NHibernate для достигания данных.

23
задан Joe Soul-bringer 1 February 2010 в 00:43
поделиться

6 ответов

Вот пример использования 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;
}
12
ответ дан 29 November 2019 в 02:58
поделиться

Ни QFileIconProvider, ни QFileInfo ничего не сделают с базой данных mime ОС. Чтобы получить доступ к значкам, связанным с различными типами MIME, вам придется использовать функции базовой среды рабочего стола. В Qt нет (пока) канонического способа.

Учтите, что у вас может быть другой значок в Gnome, в KDE и в Windows. Так, например, в KDE вы должны использовать KMimeType .

1
ответ дан 29 November 2019 в 02:58
поделиться

Вы можете использовать системный файл "/etc/mime.types". Также неплохо поддерживать копию вашей программы файла типа MIME. Таким образом, вы не зависите от системы, но в то же время вам нужно сделать ее достаточно исчерпывающей. Не уверен насчет иконок.

0
ответ дан 29 November 2019 в 02:58
поделиться

Я только что нашел KFileItem . Этот класс дает вам все, что вам нужно для значков, типов пантомимы и связанных вещей в KDE. Я уверен, что в gnome есть эквивалент, но он дает доступ на том же уровне, что и приложение QT.

1
ответ дан 29 November 2019 в 02:58
поделиться

Может быть, посмотрите на этот код: http://ftp.devil-linux.org/pub/devel/sources/1.2/file-4.23.tar.gz

Это стандартный файл UTIL, обнаруженный на большинстве распределений Linux / Unix. Вы получите тип MIME и дополнительную информацию.

Я думаю, что оба GNOME, так и KDE имеют свои собственные способы определить это, а также установить значок и стандартное приложение для него.

В любом случае, этот файл-инструмент, вероятно, лучший способ получить тип MIME и описание документа. И в некоторых случаях даже некоторые детали о содержании.

Это получит вам тип MIME. Это то, что вам нужно, чтобы знать, как вы можете открыть файл. Это отложенные шаги. Файл не говорит вам о значке, ни приложении, чтобы открыть файл с.

0
ответ дан 29 November 2019 в 02:58
поделиться

Для этого можно использовать инструменты, доступные на xdg , в частности xdg-mime query .

Чтобы узнать тип файла, например файл index.html вы должны

$ xdg-mime query filetype index.html

Это вернет mimetype. Чтобы узнать, какое приложение связано с этим mimetye, используйте, например,

$ xdg-mime query default text/html

Здесь возвращается epiphany.desktop , то есть $ APPNAME.desktop , поэтому по нему легко получить имя приложения. Если вы просто хотите открыть файл в приложении по умолчанию, вы, конечно, можете просто запустить

$ xdg-open index.html

, что вызовет прозрение.

Функции запроса для ресурсов значков, похоже, недоступны в xdg-utils , но вы можете написать небольшой скрипт на Python, используя pyxdg , который также предлагает массу дополнительных функций.

Для привязок C вам, вероятно, потребуется ознакомиться с кодом портленда , ссылка на который есть на странице xdg .

РЕДАКТИРОВАТЬ:

Что касается libmagic и друзей, вам нужно будет определиться со своими предпочтениями: хотя libmagic кажется более полным (и точным) с точки зрения охвата типов файлов, это совершенно не заботится о приложениях или значках по умолчанию. Он также не предоставляет вам инструментов для установки дополнительных mimetype.

3
ответ дан 29 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: