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.

Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top