Onde as associações de arquivos são armazenadas?

55

Como o Ubuntu ou qualquer outro sistema Linux armazena associações de arquivos?

Existe algum arquivo /etc/asscociations ou algo assim?

Sei que posso clicar com o botão direito no arquivo e alterá-lo por meio de "abrir com", mas estou curioso para saber como ele é armazenado internamente.

    
por Stann 07.12.2010 / 21:29

9 respostas

57

O gerenciador de arquivos (Nautilus, por padrão) usa o tipo MIME de um arquivo para determinar qual programa abri-lo com. Quando um aplicativo é instalado, ele pode especificar quais tipos MIME podem ser abertos e o comando a ser usado para abrir os arquivos no arquivo .desktop, que é colocado em /usr/share/applications . Este é o arquivo usado para menus, atalhos da área de trabalho, etc.

Por exemplo, o GIMP tem o seguinte arquivo .desktop:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;

Consulte o campo MimeType - lista os tipos MIME suportados. O campo Exec diz ao sistema para usar o comando gimp-2.7 %U , substituindo '% U' pelos arquivos a serem abertos. (Nota O GIMP 2.7 é uma versão que eu instalei de um PPA, então é maior que a versão atual nos repositórios do Ubuntu).

Quando o pacote de aplicativos é instalado, o sistema extrai esses dados do tipo MIME para um banco de dados mais acessível, pois examinar cada arquivo .desktop demoraria muito se fosse feito toda vez que um arquivo fosse aberto.

Isso informa ao sistema quais aplicativos podem ser usados para esse tipo MIME e fornece os aplicativos na lista 'Abrir com'. O padrão é definido em outro lugar. O arquivo /usr/share/applications/defaults.list fornece as informações para os padrões do sistema. A menos que você escolha o contrário, esses são os aplicativos usados quando você 'abre' um arquivo.

    
por dv3500ea 07.12.2010 / 21:51
21

Para complementar a excelente resposta do dv3500ea, eu gostaria de adicionar algumas informações sobre o que acontece quando você muda suas associações.

Enquanto a lista defaults.list (que você pode encontrar digitando 'locate defaults.list') fornece a lista de aplicativos associados a cada tipo MIME, todas as personalizações feitas são armazenadas em seu diretório inicial, em ~ / .local / share / applications / mimeapps.list. Portanto, se você adicionar ou remover associações ou alterar a associação padrão, esse arquivo será atualizado.

O Guia de Administração do Sistema de Desktop GNOME no link não parece discutir mimeapps.list , mas encontrei a seguinte descrição no link :

  

mimeapps.list está localizado em   $ XDG_DATA_DIRS / applications. Está   finalidade é adicionar ou remover mime   associações de aplicativos.   nautilus escreve   ~ / .local / share / applications / mimeapps.list   quando o usuário faz alterações no   Caixa de diálogo "Abrir com".

    
por user8979 29.01.2011 / 12:42
12

Descobri que no meu sistema (Debian Jessie) há também um ~/.config/mimeapps.list que tinha uma associação que eu acidentalmente criei para abrir um tipo de arquivo específico com o gedit. Nenhuma das formas padrão de corrigir isso (configurações de aplicativo padrão, a propriedade aberta com do Thunar) refletiu isso, mas o gedit era o aplicativo padrão.

Consegui remover a linha de ~/.config/mimeapps.list e agora o aplicativo correto abre o arquivo.

    
por Bryan Leaman 10.01.2015 / 19:24
6

Crie um arquivo truecrypt.desktop em ~/.local/share/applications com as seguintes linhas:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes

edite o arquivo ~/.local/share/applications/mimeapps.list e adicione a seguinte linha:

application/octet-stream=truecrypt.desktop

Eu descobri o tipo mime do Truecrypt, seguindo este comando:

file --mime-type -b <any truecrypt filename>
    
por Blindfreddy 13.03.2012 / 17:32
6

Consegui estabelecer uma associação como esta:

xdg-mime default xnview.desktop image/jpeg

Você também pode remover associações e fazer outras coisas: man xdg-mime

Não precisei executar sudo update-desktop-database .

    
por warvariuc 21.06.2015 / 12:00
5

Encontrei este link referente à associação padrão, pode ser útil. link
para associação global:

/usr/share/applications/mimeapps.list

por associação de usuários:

~/.local/share/applications/mimeapps.list
A sintaxe

é a seguinte:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN

A seção [Associações adicionadas] é usada para especificar aplicativos preferidos (padrão) em preferências decrescentes. o que significa que desktopfile1 é o mais preferido e desktopfileN é o menos preferido.
A seção [Removed Associations] é usada para remover explicitamente qualquer herança herdada anteriormente associações.

    
por MusuNaji 23.08.2013 / 10:16
1

mimeapps.list caminho de pesquisa

Outros mencionaram esse arquivo, mas nenhum explicou precisamente sua localização.

O padrão freedesktop.org diz no link :

  

A ordem de pesquisa para este arquivo é a seguinte:

$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list             user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list             sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list  for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list             for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list    distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list              distribution-provided defaults

e, em seguida, os valores padrão dessas variáveis de ambiente são fornecidos no link :

  • $XDG_DATA_HOME : $HOME/.local/share
  • $XDG_CONFIG_HOME : $HOME/.config
  • $XDG_DATA_DIRS : nenhum, anexado a XDG_DATA_HOME
  • $XDG_CONFIG_DIRS : nenhum, anexado a XDG_CONFIG_HOME

Versões mais antigas do Ubuntu podem não verificar ~/.config , então certifique-se de tentar ~/.local/share também.

Comandos como:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser

edita automaticamente esses arquivos.

    
0

Freedesktop.org (anteriormente chamado de X Desktop Group, portanto, a abreviação de "XDG") é o grupo que atualmente comanda os padrões X como este ( saiba mais na Wikipedia .

A resposta do warvariuc
xdg-mime default xnview.desktop image/jpeg

Depois de brincar muito com editores de imagem e espectadores, acabei com espectadores diferentes para diferentes tipos de imagem, quase sem consistência, especialmente entre os tipos de imagens mais raros.

Eu peguei o comando acima e o atribuí a cada um dos tipos MIME controlados pelos visualizadores de imagens e, em seguida, criei um novo image-viewer.desktop clonando um deles (isso é opcional, você pode simplesmente reutilizar seu favorito). Em seguida, verifiquei manualmente que nenhum dos tipos MIME seria incompatível com meu novo aplicativo preferido. Por fim, configurei esse aplicativo como o padrão para todos os tipos MIME de outros aplicativos:

sed '/^MimeType=/!d; s///; s/;/\n/g' \
  /usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
  |xargs xdg-mime default image-viewer.desktop

Isso examina os arquivos .desktop de cada um dos visualizadores ( Ristretto , Geeqie e GThumb no meu caso), extrai a definição MIME (que é prefaciada por MimeType= e, em seguida, contém uma lista delimitada por ponto-e-vírgula), remove o rótulo de prefácio (correspondido anteriormente) e divide a lista em um entrada por linha. sort -u , em seguida, remove as linhas redundantes e, em seguida, elas são entregues a xdg-mime para definir os novos padrões.

(Se você quiser testar isso antes de executá-lo, altere xargs para xargs echo e ele imprimirá o comando resultante em vez de executá-lo.)

Essa técnica deve funcionar para qualquer coisa que você queira recuperar para um aplicativo de destino. Você nem precisa criar um novo arquivo .desktop (você pode usar um arquivo existente). Fiz esse passo extra para que, quando eu inevitavelmente mudasse minha lealdade entre os pré-visualizadores de imagens, eu simplesmente precise alterar esse arquivo.

    
por Adam Katz 08.09.2016 / 03:36
0

Para todos os usuários:

  

/usr/share/applications/defaults.list

Cada usuário tem um arquivo de configuração para substituir esses padrões:

  

~ / .config / mimeapps.list

veja também link para lugares que possam ser usados para anular os defautos.

Você deve conhecer o tipo MIME do arquivo que deseja alterar sua associação.

Além disso, todas as associações podem ser manipuladas e alteradas na linha de comando usando:

  

xdg-mime

    
por Xoristzatziki 02.08.2017 / 09:19