GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment associer tous les types de fichiers dans Wine avec son application native correspondante ?

Cela se fait facilement pour un célibataire type de fichier, comme répondu dans Comment associer un type de fichier dans Wine à une application native ?, en créant un .reg pour le type de fichier souhaité. Mais c'est uniquement pour AVI. J'utilise des applications de vin (uTorrent, Soulseek, Eudora, pour n'en nommer que quelques-unes) qui peuvent lancer une large gamme de fichiers. Les pièces jointes aux e-mails, par exemple, peuvent être JPG, DOC, PDF, PPS… il est impossible (et non souhaitable) de retrouver tous les types de fichiers possibles que l'on peut recevoir dans un e-mail ou télécharger dans un torrent.

J'ai donc besoin d'une solution pour être plus générique et large. J'ai besoin de l'association de fichiers pour honorer l'application native actuellement configurée. Et je veux que cela soit fait pour tous types de fichiers configurés dans mon système.

J'ai déjà compris comment rendre la solution générique. Remplacer simplement l'application lancée dans .reg pour winebrowser , comme ceci :

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

J'ai testé cela et cela fonctionne correctement. Puisque winebrowser utilise xdg-open en tant que backend et convertit mon chemin Windows en un chemin Unix, l'application correcte (Linux) est lancée.

J'ai donc besoin d'une mise à jour "batch" du registre de Wine, une sorte de wine-update-associations script que je peux exécuter chaque fois qu'une nouvelle application est installée. Peut-être un outil qui peut :

  • Répertorier tous les types de types Mime de mon système qui ont une valeur par défaut, installée application associée
  • Extraire toutes les informations nécessaires (glob, type mime, etc.)
  • Générez le fichier .REG dans le format ci-dessus

La partie délicate est la suivante:j'ai beaucoup cherché pour trouver des informations sur la façon dont l'association est effectuée dans Ubuntu 10.10 et versions ultérieures, et la documentation est rare et déroutante, c'est le moins qu'on puisse dire. Freedesktop.org n'a pas de spécifications complètes, et même les documents Gnome sont obsolètes. Jusqu'à présent, j'ai rassemblé 4 fichiers contenant des informations d'association, mais je ne sais pas lequel (ou pourquoi) utiliser, ou comment les utiliser pour générer le .reg fichier :

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

Toute aide, script ou explication serait grandement apprécié !

Merci !

Réponse acceptée :

Des années plus tard, j'ai créé un petit utilitaire qui analyse la base de données MIME (à la fois système et utilisateur) et enregistre tous types MIME natifs connus dans le registre Windows.

Il utilise xdg-open pour ouvrir un fichier s'il existe une application par défaut (native) pour ce
type mime, sinon utilise packagekit pour rechercher un package capable de gérer
ce fichier (comme le fait Nautilus). Donc, mon exigence initiale d'enregistrer uniquement les extensions qui ont une application native installée n'était plus nécessaire. Cependant, une première version du script ne filtrait que ces types. L'extrait qui a rendu cela possible était :

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)
    }'

Par défaut, mon script n'enregistre que les types natifs qui n'ont pas de gestionnaire dans le registre Windows
, mais il peut également remplacer ces associations (ainsi, par exemple, les fichiers jpeg
sont ouverts dans le visualiseur natif au lieu du vin Gecko par défaut navigateur).
Il peut également ignorer certaines extensions même si elles n'ont pas de gestionnaire dans Windows.

En relation :Le système est-il capable d'exécuter un système d'exploitation 64 bits ?

Il fait de son mieux pour être compatible avec winemenubuilder, ce qui signifie que toutes les associations qu'il
crée ne sont pas publiées en tant qu'associations natives (ou en tant que types mime x-wine-extension
) par winemenubuilder, ce qui serait moche et pourrait provoquer des boucles .
C'est très délicat et pas encore parfait, surtout avec les extensions à casse mixte
(.C et .c par exemple)

Cela dit, j'espère que ce script sera utile à tout le monde :

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

Améliorations bienvenues !


Ubuntu
  1. Comment faire fonctionner Autocad avec Wine ?

  2. Associer globalement le type de fichier à certaines applications ?

  3. Comment ouvrir un fichier .8 avec Man ?

  4. Comment masquer les fichiers avec une extension spécifique ?

  5. Comment sélectionner tout le texte d'un fichier avec nano ?

Comment gérer les fichiers avec Scilab sur Ubuntu 15.04

Comment lire un fichier avec des espaces sous Linux

Comment exécuter les commandes de fichier .sh tout en une fois sous Linux

Comment configurer la mise en réseau avec Netplan sur Ubuntu

Comment ajouter des raccourcis d'application sur le bureau Ubuntu

Comment obtenir le lien du fichier à télécharger avec Wget ?