В Ubuntu 18. ** как мне установить программу по умолчанию только для файлов с одним определенным расширением файла ? Например, если я использую графический интерфейс и использую «Установить по умолчанию» для файла .txt, это также меняет настройку по умолчанию для файлов со многими другими расширениями. Я не хочу этого. Как изменить программу по умолчанию только для файлов с определенным расширением?
Этот ответ адаптирован из ответа Ондры Жижки здесь: Как установить программу по умолчанию? . Пожалуйста, проголосуйте и там, если это вам поможет.
Чтобы изменить программу по умолчанию для файлов с определенным типом файлов, необходимо создать тип MIME для каждого расширения файла. Это связано с тем, что Ubuntu отслеживает это косвенно:
Для Ubuntu (18.x) ) применяется следующее:
Это определяется из файлов в / usr / share / mime / packages /
.
Например: [
cat << EOF | sudo tee /usr/share/mime/packages/staruml.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/staruml-project">
<comment>StarUML project</comment>
<glob pattern="*.MDJ"/>
<glob pattern="*.mdj"/>
</mime-type>
</mime-info>
EOF
] Из них создаются другие XML-файлы, которые помещаются в / usr / share / mime /
. Иногда эти файлы можно найти в Интернете, особенно для программного обеспечения с открытым исходным кодом, упакованного для Ubuntu. Например, файлы mime для KiCad можно найти в репозитории исходного кода KiCad: https: // gitlab.com / kicad / code / kicad / - / tree / master / resources / linux / mime
Это управляется ~ / .config / mimeapps.list
или, возможно, ~ / .local / share / applications / mimeapps.list
. Это должно иметь приоритет перед /usr/share/applications/mimeapps.list
. Например:
echo 'application/staruml=staruml.desktop' | tee -a ~/.local/share/applications/mimeapps.list
Или, чтобы изменить для всех пользователей:
echo 'application/staruml=staruml.desktop' | sudo tee -a /usr/share/applications/mimeapps.list
Это определяется файлами .desktop
в / usr / share / application /
. Этот файл может содержать запись MimeType =
со списком типов MIME, разделенных точкой с запятой. Например, в приложении EOG есть MimeType = image / bmp; image / gif; image / jpeg; image / jpg; ...
.
cat << EOF | sudo tee /usr/share/applications/staruml.desktop
[Desktop Entry]
Name=StarUML
Comment=StarUML
GenericName=StarUML
Exec=/sw/prog/StarUML/StarUML-3.1.0-x86_64.AppImage %U
Icon=/sw/prog/StarUML/staruml.png
Type=Application
StartupNotify=false
Categories=Development;Programming;Modeling;UML
MimeType=application/staruml-project;
EOF
Таким образом, круг замкнулся. Изменения вступают в силу после запуска
sudo update-mime-database /usr/share/mime
, а для значков -
sudo gtk-update-icon-cache /usr/share/icons/gnome -f
Или вам может потребоваться выйти / войти в систему.
Затем mimetypes для данного расширения файла можно проверить с помощью mimetype
:
$ mimetype .mdj
.mdj: application/staruml-project
Ссылки:
Источник: Ондра Жижка (адаптировано)