2010-09-13 6 views
1

Je travaille sur un plugin Firefox NPAPI + un composant XPCOM. J'ai été confronté à un dilemme: Étant donné un fichier téléchargé sur Internet (disons un fichier PDF ou PNG), comment démarrer l'application d'assistance par défaut pour afficher ce fichier sous Linux en utilisant C/C++?Démarrage de l'application par défaut pour un fichier sous Linux

Actuellement, j'utilise l'appel de fonction system pour appeler la commande gnome-open et lui transmettre le chemin du fichier. Cela fonctionne sur GNOME Desktops, mais cela ne fonctionnera pas sur les plateformes Linux avec des environnements de bureau différents (y compris KDE). Donc, ma question est la suivante: existe-t-il une méthode uniforme standard pour y remédier? Y a-t-il des recommandations? Toute aide serait grandement appréciée!

Répondre

4

La commande xdg-open est la méthode standard pour ouvrir un fichier ou une URL dans l'application préférée de l'utilisateur.

Cela devrait fonctionner correctement dans différents environnements de bureau.

1

Il n'y a pas d'outil standard pour ouvrir un fichier en utilisant l'application par défaut sous Linux. Cela dépend d'un environnement de bureau. Pour Gnome, il y a un outil "gnome-open" comme vous l'avez compris. KDE a son "kde-open" dans le même but. Je vérifierais gnome-open en premier et s'il n'existe pas, vérifiez kde-open. Sinon, signalez une erreur à l'utilisateur.

Une autre option consiste à utiliser Firefox lui-même pour ouvrir un fichier en utilisant le protocole "file: //". Firefox est capable d'afficher les fichiers PDF si le plugin approprié est installé, afficher les fichiers texte, etc.

+0

Il existe un outil standard comme cela a déjà été expliqué. Voir [xdg-utils] (https://www.freedesktop.org/wiki/Software/xdg-utils/). Et cela ne dépend pas de l'environnement de bureau, car il existe de nombreuses spécifications qui traitent de ce genre de chose agnostique de bureau, voir [Spécification de l'application mime] (https://www.freedesktop.org/wiki/Specifications/mime-apps -spec /). De plus, chaque environnement de bureau aime faire son propre truc, c'est pourquoi xdg-open appelle aussi gnome-open/kde-open s'ils existent. – hasufell

Questions connexes