Registrar as extensões de arquivo / tipos mime no Linux
-
09-06-2019 - |
Pergunta
Eu estou desenvolvendo um aplicativo Linux que tem seu próprio formato de arquivo.Eu quero o meu aplicativo para abrir quando você clicar duas vezes sobre esses arquivos.
Como posso registrar uma extensão de arquivo e associá-lo com o meu aplicativo no Linux?Estou a procura de uma maneira que é padrão (funciona com o GNOME e o KDE, os sistemas de base) e pode ser feito automaticamente quando o meu programa está instalado ou executado pela primeira vez.
Solução
Utilização xdg-utils
a partir de freedesktop.org Portland.
Registrar o ícone para o tipo de MIME:
xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype
Criar um arquivo de configuração (freedesktop Shared MIME documentação):
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/x-mytype">
<comment>A witty comment</comment>
<comment xml:lang="it">Uno Commento</comment>
<glob pattern="*.myapp"/>
</mime-type>
</mime-info>
Instalar o arquivo de configuração:
xdg-mime install mytype-mime.xml
Este recebe o seu arquivos reconhecido e associado a um ícone. xdg-mime default
pode ser usado para associar um aplicativo com o tipo de MIME depois de obter um .desktop
arquivo instalado.
Outras dicas
Existem duas partes para isso.Você precisa registar um novo tipo de arquivo e, em seguida, criar uma área de trabalho de entrada para a sua aplicação.O ambiente de trabalho de entrada de associar sua aplicação com o seu novo tipo de mime.
Eu pensei que tanto o Gnome e o KDE (talvez apenas 4+?) utilizado o freedesktop shared mime-info espec, mas eu posso muito bem estar errado.
1) no linux isto é uma função de seu ambiente de trabalho em vez de o próprio sistema operacional.
2) o GNOME e o KDE tem métodos diferentes para fazer isso.
3) não Há nada que a impeça de fazê-lo de duas maneiras.
Tente este script:necessidades:
1. your application icon -> $APP = FIREFOX.png
2. your mimetype icon -> application-x-$APP = HTML.png
no diretório atual:
#BASH SCRIPT: Register_my_new_app_and_its_extension.sh
APP="FOO"
EXT="BAR"
COMMENT="$APP's data file"
# Create directories if missing
mkdir -p ~/.local/share/mime/packages
mkdir -p ~/.local/share/applications
# Create mime xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">
<mime-type type=\"application/x-$APP\">
<comment>$COMMENT</comment>
<icon name=\"application-x-$APP\"/>
<glob pattern=\"*.$EXT\"/>
</mime-type>
</mime-info>" > ~/.local/share/mime/packages/application-x-$APP.xml
# Create application desktop
echo "[Desktop Entry]
Name=$APP
Exec=/usr/bin/$APP %U
MimeType=application/x-$APP
Icon=$APP
Terminal=false
Type=Application
Categories=
Comment=
"> ~/.local/share/applications/$APP.desktop
# update databases for both application and mime
update-desktop-database ~/.local/share/applications
update-mime-database ~/.local/share/mime
# copy associated icons to pixmaps
cp $APP.png ~/.local/share/pixmaps
cp application-x-$APP.png ~/.local/share/pixmaps
certifique-se de que:FOO binário existe em /usr/bin (ou no $PATH)