¿Dónde se almacenan las asociaciones de archivos?

67

¿Cómo almacena Ubuntu o cualquier otro sistema Linux las asociaciones de archivos?

¿Hay algún /etc/asscociationsarchivo o algo?

Sé que puedo hacer clic derecho en el archivo y cambiarlo a través de "abrir con", pero tengo curiosidad por saber cómo se almacena internamente.

Stann
fuente

Respuestas:

67

El administrador de archivos (Nautilus, por defecto) usa el tipo MIME de un archivo para determinar con qué programa abrirlo. Cuando se instala una aplicación, puede especificar qué tipos de MIME puede abrir y el comando que se usará para abrir los archivos en el archivo .desktop que se coloca /usr/share/applications. Este es el archivo utilizado para menús, accesos directos de escritorio, etc.

Por ejemplo, GIMP tiene el siguiente archivo .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;

Vea el MimeTypecampo: esto enumera los tipos MIME compatibles. El Execcampo le dice al sistema que use el comando gimp-2.7 %U, reemplazando '% U' con los archivos para abrir. (Tenga en cuenta que GIMP 2.7 es una versión que he instalado desde un PPA, por lo que es superior a la versión actual en los repositorios de Ubuntu).

Cuando se instala el paquete de la aplicación, el sistema extrae estos datos de tipo MIME en una base de datos más fácilmente accesible porque buscar en cada archivo .desktop tomaría demasiado tiempo si se realiza cada vez que se abre un archivo.

Esto le dice al sistema qué aplicaciones se pueden usar para ese tipo MIME y proporciona las aplicaciones en la lista 'Abrir con'. El valor predeterminado se define en otra parte. El archivo /usr/share/applications/defaults.listproporciona la información de los valores predeterminados del sistema. A menos que elija lo contrario, estas son las aplicaciones utilizadas cuando 'Abre' un archivo.

dv3500ea
fuente
77
Después de cambiar los tipos MIME en los /usr/share/applications .desktoparchivos, ¿hay un comando para volver a crear esa base de datos MIME para ver nuevas asociaciones en acción?
Redsandro
12
Si. sudo update-desktop-databaseVer jarrpa.net/2011/10/28/…
NoBugs
Un lugar más apropiado para los cambios locales es /usr/local/share/applications. Creo que GTK también mira allí, por defecto. Lo hace en mi sistema, pero se ha actualizado (no reinstalado) desde Ubuntu 7.04 más o menos.
Peter Cordes
2
Ubuntu parece seguir freedesktop.org: standards.freedesktop.org/mime-apps-spec/… , un proyecto increíble .
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
23

Para complementar la excelente respuesta de dv3500ea, me gustaría agregar información sobre lo que sucede cuando cambia sus asociaciones.

Mientras que defaults.list (que puede encontrar escribiendo 'localizar defaults.list') proporciona la lista de aplicaciones asociadas con cada tipo MIME, las personalizaciones que realice se almacenan en su directorio de inicio, en ~ / .local / compartir / aplicaciones / mimeapps.list. Entonces, si agrega o elimina asociaciones, o cambia la asociación predeterminada, este archivo se actualiza.

La Guía de administración del sistema de escritorio GNOME en http://library.gnome.org/admin/system-admin-guide/stable/ no parece discutir mimeapps.list, pero encontré la siguiente descripción en http: //live.gnome .org / SysAdminGuideUpdate :

mimeapps.list se encuentra en $ XDG_DATA_DIRS / aplicaciones. Su propósito es agregar o eliminar asociaciones mime de las aplicaciones. nautilus escribe ~ / .local / share / aplicaciones / mimeapps.list cuando el usuario realiza cambios en el cuadro de diálogo "Abrir con".


fuente
1
Pero usando Ubuntu 12.04, me doy cuenta de que las mimeapps.listentradas en el anulan defaults.list.
feeela
1
el 14.04, pude s / vlc / mplayer / en mi ~/.local/share/applications/mimeapps.list, y ejecutar procesos como pcmanfm recogió los cambios sin reiniciar. (mplayer.desktop solo ejecuta mplayer. Supongo que tenía uno instalado en una vieja instalación de mplayer en / usr / local. IDK si MimeType=list;era necesario o no.
Peter Cordes
Más precisamente, mimeapps.listpuede estar en cualquier lugar en la siguiente ruta de búsqueda: specifications.freedesktop.org/mime-apps-spec/...
Ciro Santilli新疆改造中心法轮功六四事件
18

Descubrí que en mi sistema (Debian Jessie) también hay una ~/.config/mimeapps.listasociación que creé accidentalmente para abrir un tipo de archivo específico con gedit. Ninguna de las formas estándar de corregir esto (configuración de aplicación predeterminada, Thunar's open with property) lo reflejaba, pero gedit era la aplicación predeterminada.

Pude eliminar la línea ~/.config/mimeapps.listy ahora la aplicación correcta abre el archivo.

Bryan Leaman
fuente
2
Gracias, accidentalmente me ayudaste a arreglar que Firefox abriera todo en Gedit. En openSUSE 13.2 eliminé la línea con "application / octet-stream = org.gnome.gedit.desktop;". :)
user31389
3
desde ubuntu 15.04 las modificaciones específicas del usuario también se almacenan en ~/.config/mimeapps.list.
DJCrashdummy
2
Más precisamente, mimeapps.listpuede estar en cualquier lugar en la siguiente ruta de búsqueda: specifications.freedesktop.org/mime-apps-spec/...
Ciro Santilli新疆改造中心法轮功六四事件
8

Encontré este enlace sobre la asociación predeterminada, podría ser útil. https://wiki.archlinux.org/index.php/Default_Applications
for global association:

/usr/share/applications/mimeapps.list

por asociación de usuarios:

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

La sintaxis es la siguiente:

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

La sección [Asociaciones agregadas] se utiliza para especificar aplicaciones preferidas (predeterminadas) en preferencia decreciente. lo que significa que desktopfile1 es el más preferido y desktopfileN es el menos preferido.
La sección [Asociaciones eliminadas] se utiliza para eliminar explícitamente cualquier asociación heredada anteriormente.

IdontCareAboutReputationPoints
fuente
1
Esto proviene de un sitio archlinux , no necesariamente se aplica en Ubuntu, /usr/share/applications/mimeapps.listno existe.
Guntbert
Gracias por señalar esto, sin embargo, el usuario dijo en Ubuntu u otros sistemas Linux, esto significa que esta es una respuesta a su pregunta también: P.
IdontCareAboutReputationPoints
55
Esta respuesta está perfectamente bien si reemplaza mimeapps.desktopcondefaults.desktop
szx
8

Pude establecer una asociación como esta:

xdg-mime default xnview.desktop image/jpeg

También puede eliminar asociaciones y hacer otras cosas: man xdg-mime

No necesitaba correr sudo update-desktop-database.

warvariuc
fuente
7

Crear un archivo truecrypt.desktopen ~/.local/share/applicationslas siguientes líneas:

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

luego edite el archivo ~/.local/share/applications/mimeapps.listy agregue la siguiente línea:

application/octet-stream=truecrypt.desktop

Descubrí el tipo mime de Truecrypt siguiendo este comando:

file --mime-type -b <any truecrypt filename>
Blindfreddy
fuente
Buena respuesta, porque funciona para aquellos que usan kde, pero tienen un par de programas nativos de gtk, como firefox.
naught101
5

mimeapps.list ruta de búsqueda

Otros han mencionado este archivo, pero ninguno ha explicado su ubicación con precisión.

El estándar freedesktop.org dice en https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

El orden de búsqueda para este archivo es el siguiente:

$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

y luego los valores predeterminados para esas variables de entorno se dan en https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :

  • $XDG_DATA_HOME: $HOME/.local/share
  • $XDG_CONFIG_HOME: $HOME/.config
  • $XDG_DATA_DIRS: ninguno, añadido a XDG_DATA_HOME
  • $XDG_CONFIG_DIRS: ninguno, añadido a XDG_CONFIG_HOME

Es posible que las versiones anteriores de Ubuntu no funcionen ~/.config, así que asegúrese de intentarlo ~/.local/sharetambién.

Comandos como:

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

editará automáticamente esos archivos.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
2

Para todos los usuarios:

/usr/share/applications/defaults.list

Cada usuario tiene un archivo de configuración para anular estos valores predeterminados:

~ / .config / mimeapps.list

consulte también https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html para conocer los lugares que podrían usarse para anular los valores predeterminados.

Debe conocer el tipo mime del archivo que desea cambiar su asociación.

Además, todas las asociaciones se pueden manejar y cambiar en la línea de comandos usando:

xdg-mime

Xoristzatziki
fuente
1

Freedesktop.org (anteriormente llamado X Desktop Group, por lo tanto, la abreviatura "XDG") es el grupo que actualmente maneja estándares X como este ( obtenga más información en Wikipedia ).

La respuesta de warvariuc ya menciona el uso de xdg-mime como:

xdg-mime default xnview.desktop image/jpeg

 

Después de mucho jugar con editores de imágenes y espectadores, terminé con diferentes visores para diferentes tipos de imágenes casi sin consistencia, especialmente entre los tipos de imágenes más raros.

Tomé el comando anterior y lo asigné a cada uno de los tipos MIME controlados por los visores de imágenes y luego creé uno nuevo image-viewer.desktopclonando uno de ellos (esto es opcional, simplemente puede reutilizar su favorito). A continuación, verifiqué manualmente que ninguno de los tipos MIME sería incompatible con mi nueva aplicación preferida. Finalmente, configuré esa aplicación como predeterminada para todos los tipos MIME de otras aplicaciones:

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

Esto examina los .desktoparchivos para cada uno de los espectadores ( Ristretto , Geeqie y GThumb en mi caso), extrae la definición MIME (que está precedida por MimeType=y luego contiene una lista delimitada por punto y coma), elimina la etiqueta del prefacio (previamente coincidente) y divide la lista en una entrada por línea. sort -uluego elimina las líneas redundantes, luego se entregan xdg-mimepara establecer los nuevos valores predeterminados.

(Si desea probar esto antes de ejecutarlo en vivo, cambiar xargsa xargs echoe imprimirá el comando resultante en lugar de ejecutarlo.)

Esta técnica debería funcionar para cualquier cosa que desee reclamar para una aplicación de destino. Ni siquiera necesita crear un nuevo .desktoparchivo (puede usar uno existente). Hice ese paso adicional para que cuando cambie inevitablemente mi lealtad entre los previsualizadores de imágenes, simplemente necesite cambiar ese archivo.

Adam Katz
fuente
1

En Ubuntu 18.04, he encontrado que el orden de precedencia es el siguiente, de más fuerte a más débil:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Abrir con otra aplicación" actualizará esto)
  4. ~/.local/share/applications/mimeapps.list
  5. La primera coincidencia encontrada en el mimeinfo.cacheregistro de aplicaciones compatibles, que se generan a partir de los .desktoparchivos presentes en /usr/share/applicationsy /usr/local/share/applications, y se pueden regenerar usando update-desktop-database.
  6. (Nunca usado) /etc/gnome/defaults.list
Jimmy He
fuente