Как создать MIME-типы для новых документов (командная строка)?

Как я могу дать пользовательскому документу моего приложения собственный значок? Кроме того, как заставить файловый менеджер открывать эти документы, когда пользователь дважды щелкает по ним?

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

5
задан 19 June 2014 в 00:37

3 ответа

Правильное решение может быть найдено-> здесь <-, но a foo версия обеспечивается ниже для прямого ответа на вопрос.

Обратите очень пристальное внимание на использование application-x-foo, x-foo, и foo поскольку они изменяются повсюду.

Примечание: При обновлении учебного руководства Ubuntu, вероятно, лучше в примере различать foo приложение, foo расширение и foo mimetype для предотвращения продвижения беспорядка. т.е. lmms использование *.mmpz и x-lmms-project, который помог много в понимании этого.

  • Получите масштабируемый значок SVG (обеспеченный пример)
  • wget http://soqr.fr/testsvg/zebra.svg -O ~/Desktop/application-x-foo.svg
    

  • Создайте пантомиму - поглощают файл в формате XML:
  • <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="application/x-foo">  
    <comment>Foo File</comment>
    <glob pattern="*.foo"/>
    </mime-type>
    </mime-info>
    

  • Сохраните это к ~/Desktop/x-foo.xml
  • Если не уже, создайте файл на рабочем столе:
  • [Desktop Entry]
    Version=1.0.0
    Encoding=UTF-8
    Name=FooGazi
    GenericName=Foo Application
    Comment=This is my Foo Application
    Exec=/usr/bin/foo
    # Please change, system-shutdown.svg used only as example
    Icon=/usr/share/icons/Humanity/actions/48/system-shutdown.svg
    StartupNotify=true
    Type=Application
    MimeType=application/x-foo;
    

  • Сохраните это к ~/Desktop/foo.desktop
  • Разверните описание пантомимы
  • sudo xdg-mime install --mode system ~/Desktop/x-foo.xml
    

  • Разверните средство запуска приложения
  • sudo cp ~/Desktop/foo.desktop /usr/share/applications
    

  • Разверните значок SVG
  • sudo cp ~/Desktop/application-x-foo.svg /usr/share/icons/gnome/scalable/mimetypes/
    

  • Зарегистрируйте средство запуска приложения в зарегистрированном mimetype
  • sudo xdg-mime default foo.desktop application/x-foo
    

  • Обновите кэш пантомимы
  • sudo update-mime-database /usr/share/mime
    

  • Обновите кэш значка
  • sudo gtk-update-icon-cache /usr/share/icons/gnome/ -f
    

  • Как привычка, я также добавляю соответствующую строку к /etc/mime.types но подтвердите, необходимо ли это все еще, и отредактируйте это сообщение для отражения этого.
  • Выход и затем обратно в. И значок и ассоциация должны работать.
  • 3
    ответ дан 19 June 2014 в 00:37

    Никогда, отредактируйте существующие файлы в / и т.д. от Вас сценарий установки! Это - ужасно плохая идея. помимо Вас не должны редактировать/etc/mime.types

    , Ваш XML-файл является все еще неправильным, и в неправильном месте это должен быть /usr/share/mime/text/x-foo.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/x-foo">
        <comment>Example file type </comment>
        <glob pattern="*.foo"/>
    </mime-type>
    

    , сторонние Значки обычно устанавливаются на:/usr/share/icons/hicolor/scalable/mimetypes

    1
    ответ дан 19 June 2014 в 00:37

    Я не смог получить вещи, работающие с другими ответами, но я смог получить вещи, работающие следующий путь.

    Это было протестировано и работы над этими живыми дисками:

    Ubuntu 14.04
    Lubuntu 14.04
    Ubuntu-Gnome 14.04
    

    Делают Приложение

    Обертки Foo Для этого примера, я создаю обертку для gedit, названного нечто в целях полного рабочего примера.

    (1) Как sudo, создайте файл с этим содержанием:

    gedit %f

    (2) Сохраняют его как:

    /usr/bin/foo

    (3) Делают это исполняемым файлом:

    sudo chmod +x/usr/bin/foo

    , Заставляющий Приложение Foo Обнаружиться В Меню И Это - Значок

    (1), Создают образ прикладного объекта. Gimp или Inkscape являются оба превосходными программами для этого. После создания изображения экспортируйте его как png или svg.

    (2) Имя Ваше изображение. Название картинки должно быть тем же именем, которое Вы используете для запуска приложения на командной строке. Приложение в этом примере называют: нечто. Таким образом, корректное имя было бы foo.png или foo.svg.

    (3) изображение Копии к:

    /usr/share/icons/foo.svg
    

    (4) Создают Настольную Запись. Откройте gedit, leafpad или Ваш IDE. Создайте новый документ с этими данными:

    [Desktop Entry]
    Exec=foo %f
    Icon=foo
    Terminal=false
    Type=Application
    Categories=Office;
    StartupNotify=true
    MimeType=text/foo
    Name=Foo
    GenericName=Foo
    Comment=Compose, Edit, and View Foo Documents
    

    Принимают во внимание Должностное лицо, Значок и ключи MimeType:

    Должностное лицо : %f добавляется после исполняемого имени. Это должно быть там поэтому, когда пользователь дважды щелкнет по документу нечто, система выполнит приложение нечто и отправит тот путь документа нечто к приложению через %f аргумент.

    Значок : Только имя необходимо. Я не получил хорошие результаты при использовании полных путей.

    MimeType: текст/нечто. текст является названным 'тип контента'. нечто , конечно, является именем приложения. Эта конвенция отображения должна придерживаться к на других шагах. Например, Вы не хотите использовать приложение/нечто на другом шаге. Путем выполнения этого Вы не сохраняете тип контента последовательным для нечто, и вещи перестанут работать.

    (5) Сохранили этот файл как:

    foo.desktop
    

    название файла является названием Вас имя запуска приложения, и это должно иметь дополнительный рабочий стол. Теперь, это должно быть скопировано в:

    /usr/share/applications
    

    На данном этапе Вы будете видеть Вас, приложение под категорией Office в меню и Вашем значке будет видимо также.

    Предоставление Ваших Документов приложения Их Собственного Значка

    (1) Создают XML-файл пантомимы с этим содержанием:

    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/foo">
       <mime-type type="text/foo">
          <magic>
             <match type="string" offset="2" value="0foomagic"/>
          </magic>
       </mime-type>
    </mime-info>
    

    Принимают во внимание отображение типа контента: оба - текст/нечто.

    у Вас есть два варианта, когда Вы хотите, чтобы пользовательский документ добрался, это - значок. (1), система будет искать, это - расширения, и дайте ему значок, основанный на расширении. (2) система будет искать волшебную строку при конкретном смещении в файле. Я выбираю волшебство, потому что я не предпочитаю просматривать расширения на своих именах файлов в файловом менеджере.

    для использования волшебства, я сохраняю все свои документы как json файлы. Это - универсальный протокол хранения, таким образом, это работает хорошо на меня. Когда я сохранил файл, я сортирую ключи в алфавитном порядке, который заставляет волшебный ключ появляться как первый ключ в файле. Это происходит, потому что я поместил нуль как первый символ "0foomagic", и я удостоверяюсь, что никакой другой ключ никогда не будет делаться в моих документах, которые портят это.

    что касается этой строки в xml выше,

    <match type="string" offset="2" value="0foomagic"/>
    

    json файл имеет два символа, прежде чем это нажмет мою волшебную клавишу, названную 0foomagic. Таким образом, я установил смещение на 2.

    , Если Вы предпочитаете использовать расширение вместо этого, просто выньте волшебную запись и замените ее:

    <glob pattern="*.foo"/>
    

    , где .foo является Вашим расширением документа приложения.

    (2) База данных Пантомимы Обновления с этой командой:

    sudo update-mime-database /usr/share/mime
    

    (3) значки, которые соберутся для пользовательских документов, нужно назвать специальным способом для них работать. Они должны быть отображены с типом контента. Создайте значок документа и назовите его с отображенным, который конвенция типа контента упомянула ранее (ожидайте, что тире используется вместо наклонной черты вправо):

    text-foo.svg
    

    текст является типом контента, и нечто является Вашим именем приложения, то же как прежде.

    необходимо будет скопировать этот значок в любую тему, которую Вы будете использовать. Любая тема, в которую это не копируется, не отобразит Ваш документ нечто с текстом-foo.svg.

    Темы настраиваются два различных пути, Вы закончите с большим количеством работы с некоторыми темами, например:

    Для Темы Gnome, необходимо будет только скопировать текст-foo.svg в одно место:/usr/share/icons/gnome/scalable/mimetypes /

    Переключатель к теме гнома и затем Вы сделаны с этим шагом.

    , Но, например, при использовании темы хайколора у Вас есть больше работы, чтобы сделать. Необходимо создать размер значков для каждого из этих каталогов требования темы, например:

    /usr/share/icons/hicolor/16x16/mimetypes/
    /usr/share/icons/hicolor/22x22/mimetypes/
    ...
    

    и т.д., и т.д.

    Теперь, когда Вы скопировали значки, база данных значка должна быть обновлена. Я заметил две команды для этого (gtk-update-icon-cache и gtk-update-icon-cache3.0), я просто называю обоих, и я не заметил проблемы. Их нужно назвать на любом каталоге темы, к которому Вы добавили значки.

    , Если Вы добавили к теме гнома, затем:

    sudo gtk-update-icon-cache /usr/share/icons/gnome/
    

    , Если Вы добавили к теме хайколора, затем:

    sudo gtk-update-icon-cache /usr/share/icons/hicolor
    

    Теперь, просто еще одна вещь сделать, и необходимо видеть вещи работать, даже не входя в систему и. Обновите настольную базу данных:

    sudo настольная база данных обновления

    Test Foo

    , Так как это перегрузило бы этот ответ для создания, просит, чтобы Вы создали json файл, просто использовали нечто, gedit обертку, для обманывания его в создание документа нечто с 0foomagic в нем.

    (1) нечто Типа на командной строке, и необходимо видеть, что gedit запускается.

    (2) В пустом текстовом файле в gedit, добавьте два символа, затем волшебная строка:

    xx0foomagic
    

    (3) Сохраняют и закрывают gedit. Теперь посмотрите в файловом менеджере, и Вы будете видеть, что Ваш новый документ имеет текстовый-foo.svg значок. Дважды щелкните по нему, и нечто откроет его. Престо! Это - freedesktoporg волшебство!

    существует много других вещей, которые можно узнать об этом процессе, но это будет по крайней мере получать Вас идущий с Вашими собственными запускающими приложение значками документа на Ubuntu.

    способствуйте этому ответу или создайте новый ответ, если Вы имеете лучшая практика способ сделать это.

    0
    ответ дан 19 June 2014 в 00:37

    Другие вопросы по тегам:

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