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?
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.
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.
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.
xdg-mime query default image/png
retournewine-extension-png.desktop
:-)@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
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écuteret 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_version
est disponible, si tel est le cas, il se lancerarun-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.
la source
xdg-mime query filetype example.png
vé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.