GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo asociar todos los tipos de archivos dentro de Wine con su aplicación nativa correspondiente?

Esto se hace fácilmente para un simple tipo de archivo, como se responde en ¿Cómo asociar un tipo de archivo dentro de Wine con una aplicación nativa?, creando un .reg para el tipo de archivo deseado. Pero esto es solo para AVI. Uso algunas aplicaciones de vino (uTorrent, Soulseek, Eudora, por nombrar algunas) que pueden iniciar una amplia gama de archivos. Los archivos adjuntos de correo electrónico, por ejemplo, pueden ser JPG, DOC, PDF, PPS... es imposible (y no deseable) rastrear todos los tipos de archivos posibles que uno puede recibir en un correo electrónico o descargar en un torrente.

Así que necesito una solución que sea más genérica y amplia. Necesito la asociación de archivos para respetar cualquier aplicación nativa que esté configurada actualmente. Y quiero que esto se haga por todos tipos de archivos configurados en mi sistema.

Ya he descubierto cómo hacer que la solución sea genérica. Simplemente reemplazando la aplicación iniciada en .reg para winebrowser , así:

[HKEY_CLASSES_ROOT.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOTPDFfileShellOpencommand]
@="C:\windows\system32\winebrowser.exe "%1""

He probado esto y funciona correctamente. Ya que winebrowser usa xdg-open como backend y convierte mi ruta de Windows a una de Unix, se inicia la aplicación correcta (Linux).

Así que necesito una actualización "por lotes" para el registro de vinos, una especie de wine-update-associations script que puedo ejecutar cada vez que se instala una nueva aplicación. Tal vez una herramienta que pueda:

  • Enumerar todos los tipos de Mime Types en mi sistema que tienen un predeterminado, instalado aplicación asociada
  • Extraiga toda la información necesaria (glob, tipo mimo, etc.)
  • Generar el archivo .REG en el formato anterior

La parte complicada es:he buscado MUCHO para encontrar información sobre cómo se realiza la asociación en Ubuntu 10.10 en adelante, y la documentación es escasa y confusa, por decir lo menos. Freedesktop.org no tiene especificaciones completas, e incluso los documentos de Gnome están obsoletos. Hasta ahora he reunido 4 archivos que contienen información de asociación, pero no tengo idea de cuál (o por qué) usar, o cómo usarlos para generar el .reg archivo:

~/.local/share/applications/mimeapps.list
~/.local/share/applications/miminfo.cache
/usr/share/applications/miminfo.cache
/etc/gnome/defaults.list

¡Cualquier ayuda, guión o explicación sería muy apreciada!

¡Gracias!

Respuesta aceptada:

Años más tarde, hice una pequeña utilidad que escanea la base de datos MIME (tanto del sistema como del usuario) y registra todos tipos MIME nativos conocidos en el registro de Windows.

Utiliza xdg-open para abrir un archivo si hay una aplicación predeterminada (nativa) para ese
tipo mime, de lo contrario usa packagekit para buscar un paquete que pueda manejar
ese archivo (tal como lo hace Nautilus). Por lo tanto, mi requisito inicial de registrar solo extensiones que tienen una aplicación nativa instalada ya no era necesario. Sin embargo, una versión anterior del script filtraba solo esos tipos. El fragmento que lo hizo posible fue:

perl -e '
    use strict; use warnings;
    use File::MimeInfo::Magic; use File::MimeInfo::Applications;
    while (my $line = <STDIN>) {
      chomp($line);
      my ($ext, $mime) = (split/t/, $line);
      my ($def, @apps) = mime_applications_all($mime);
      print "$linen" if ($def || @apps)
    }'

De forma predeterminada, mi secuencia de comandos solo registra tipos nativos que no tienen un controlador en el registro de Windows
, pero también puede anular dichas asociaciones (por ejemplo, los archivos jpeg
se abren en el visor nativo en lugar del vino Gecko predeterminado navegador).
También puede ignorar algunas extensiones incluso si no tienen un controlador en Windows.

Relacionado:¿Puede el sistema ejecutar un sistema operativo de 64 bits?

Hace todo lo posible para ser compatible con winemenubuilder, lo que significa que todas las asociaciones que crea no se publican como asociaciones nativas (o como x-wine-extension
mimetypes) por winemenubuilder, lo que sería feo y podría causar bucles. .
Esto es muy complicado y aún no es perfecto, especialmente con extensiones de mayúsculas y minúsculas
(.C y .c por ejemplo)

Dicho esto, espero que este script sea útil para todos:

https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions

¡Bienvenidas las mejoras!


Ubuntu
  1. ¿Asociar globalmente el tipo de archivo con cierta aplicación?

  2. ¿Cómo ocultar archivos con una extensión específica?

  3. ¿Cómo reemplazar todas las cadenas en un archivo que comienza con algún prefijo?

  4. ¿Cómo tar ciertos tipos de archivos en todos los subdirectorios?

  5. ¿Cómo selecciono todo el texto de un archivo con nano?

Cómo manejar archivos con Scilab en Ubuntu 15.04

Cómo leer un archivo con espacios en Linux

Cómo ejecutar comandos de archivo .sh todo a la vez en Linux

Cómo configurar la red con Netplan en Ubuntu

Cómo agregar accesos directos a aplicaciones en el escritorio de Ubuntu

¿Cómo obtener el enlace del archivo para descargar con Wget?