Comment la commande xdg-open sait-elle quelle application utiliser pour ouvrir un fichier?

21

Je m'attendrais à ce que la commande xdg-open utilise la même application qui s'ouvre lorsque je double-clique sur le fichier dans le gestionnaire de fichiers par défaut, mais ce n'est pas toujours vrai.

Par exemple, mon DE est XFCE, mon gestionnaire de fichiers est Thunar et ma visionneuse d'images par défaut est Ristretto. Cependant, xdg-open example.pngouvre l'exemple de fichier PNG dans Pinta. Pourquoi?

Ivan
la source

Réponses:

23

xdg-open est un outil indépendant du bureau pour configurer les applications par défaut d'un utilisateur. De nombreuses applications appellent la commande xdg-open en interne. Dans un environnement de bureau (comme GNOME, KDE ou Xfce), xdg-open transmet simplement les arguments à l'application d'ouverture de fichier de cet environnement de bureau (par exemple, gvfs-open, kde-open ou exo-open). ce qui signifie que les associations sont laissées à l'environnement de bureau. Lorsqu'aucun environnement de bureau n'est détecté (par exemple lorsque l'on exécute un gestionnaire de fenêtres autonome comme par exemple Openbox), xdg-open utilisera ses propres fichiers de configuration.

d' Archwiki

spécifique à votre question, vous pouvez essayer ceci pour définir l'application par défaut associée au fichier png:

xdg-mime default <ristretto.desktop> image/png

vous devez savoir quel est exactement le nom du fichier de bureau de Ristretto. après, vous pouvez le vérifier avec ceci:

xdg-mime query default image/png
oxnz
la source
1
Cela peut être considéré comme une réponse formellement, mais cela n'explique pas réellement le phénomène que j'ai mentionné.
Ivan
mis à jour, veuillez vérifier à nouveau
oxnz
Merci. Et c'est très drôle: xdg-mime query default image/pngretourne wine-extension-png.desktop:-)
Ivan
2

@Ivan Cela se produit probablement, car vous n'avez pas fourni le bon type de fichier lorsque vous demandez l'application par défaut. L'importance de la façon dont xdg appelle ce type de fichier spécifique. Cela peut être facilement découvert en exécutant

xdg-mime query filetype example.png

Par exemple, si je le fais avec un fichier png spécifique sur mon ordinateur, il revient image/x-apple-ios-png. Une fois que vous avez déterminé le type de fichier réel, vous pouvez exécuter

xdg-mime query default <new filetype>

et obtenez l'application utilisée par xdg pour ce type de fichier spécifique. Si aucune application n'est définie pour ce type de fichier, xdg-open vérifie si le fichier /etc/debian_versionest disponible, si tel est le cas, il se lancera run-mailcap, ce qui est très similaire à xdg-open et essaie de trouver un programme pour ouvrir le fichier également. .

Seulement si cela échoue également, xdg-open demandera à l'utilisateur de définir un programme pour ouvrir le fichier.

lauve
la source
N'est-ce pas ce que Oxnz a déjà écrit?
Jeff Schaller
oxny mentionne uniquement comment définir et vérifier l'application pour un type de fichier connu. Il lui manque la référence pour xdg-mime query filetype example.pngvérifier le type de fichier d'un fichier spécifique, car supposer simplement qu'un fichier .png tombe également dans la catégorie image / png n'est pas toujours correct. En regardant les commentaires d' Ivan , je pense que son problème n'est pas encore résolu.
lauve