Как я могу дать пользовательскому документу моего приложения собственный значок? Кроме того, как заставить файловый менеджер открывать эти документы, когда пользователь дважды щелкает по ним?
Я должен сделать это в командной строке, потому что решение будет использоваться внутри установочного скрипта.
Правильное решение может быть найдено-> здесь <-, но a foo
версия обеспечивается ниже для прямого ответа на вопрос.
Обратите очень пристальное внимание на использование application-x-foo
, x-foo
, и foo
поскольку они изменяются повсюду.
Примечание: При обновлении учебного руководства Ubuntu, вероятно, лучше в примере различать foo
приложение, foo
расширение и foo
mimetype для предотвращения продвижения беспорядка. т.е. lmms
использование *.mmpz
и x-lmms-project
, который помог много в понимании этого.
wget http://soqr.fr/testsvg/zebra.svg -O ~/Desktop/application-x-foo.svg
<?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
sudo cp ~/Desktop/application-x-foo.svg /usr/share/icons/gnome/scalable/mimetypes/
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
но подтвердите, необходимо ли это все еще, и отредактируйте это сообщение для отражения этого. Никогда, отредактируйте существующие файлы в / и т.д. от Вас сценарий установки! Это - ужасно плохая идея. помимо Вас не должны редактировать/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
Я не смог получить вещи, работающие с другими ответами, но я смог получить вещи, работающие следующий путь.
Это было протестировано и работы над этими живыми дисками:
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.
способствуйте этому ответу или создайте новый ответ, если Вы имеете лучшая практика способ сделать это.