Comment configurer correctement et facilement `xdg-open` sans environnement?

63

J'utilise le gestionnaire de fenêtres OpenBox sans environnement de bureau .

xdg-opense comporte étrangement. Il ouvre tout avec firefox.

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

Je cherche un programme simple; quelque chose comme lire tous les *.desktopfichiers du /usr/share/applications/dossier et définir automatiquement les paramètres xdg.

kravemir
la source
utiliser xdg-mime(une partie de xdg-utils) est la meilleure solution pour travailler avec (interroger, configurer) xdg-open. Voir aussi unix.stackexchange.com/questions/8793/…
michael

Réponses:

24

Vous pouvez utiliser perl-file-mimeinfo dans le extraréférentiel pour gérer les types MIME.

Exemple pour ouvrir tous les .pdffichiers dans apvlv:

/usr/bin/vendor_perl/mimeopen -d $file.pdf

puis, à l'invite, entrez l'application: apvlv.

jasonwryan
la source
Ça marche. Mais cela n'ouvre que le fichier. Donc, ma xdg-opengauche non configurée et les applications utilisant xdg-openn'ouvriront pas les fichiers correctement.
kravemir
Je ne suis pas tout à fait votre commentaire. Qu'est-ce qui ne fonctionne pas? Le -dcommutateur définit la valeur par défaut. Donc, si vous l'utilisez pour l'ouvrir fileA.pdf- vous devriez alors pouvoir l'ouvrir fileB.pdfavec votre application préférée.
jasonwryan
1
Oui. mimeopen -d a.pdfdéfinit par défaut pour *.pdf, mais il le définit pour lui-même - mimeopen b.pdffonctionne. Mais la xdg-openconfiguration est restée inchangée et tout reste ouvert avec firefox: /
kravemir le
3
Une fois que j'ai défini la valeur par défaut avec mimeopen, le xdg-opencomportement est correct - dans le cas de .pdfs, il les ouvre avec apvlv.
jasonwryan
1
Cela ne fonctionne pas pour moi dans Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plaindonne touch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txtdonne bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov
62

Pourquoi ne pas utiliser les utilitaires de xdg lui-même?

Faire de Thunar le navigateur de fichiers par défaut, c’est-à-dire l’application par défaut pour l’ouverture de dossiers.

$ xdg-mime default Thunar.desktop inode/directory

utiliser xpdf comme visualiseur PDF par défaut:

$ xdg-mime default xpdf.desktop application/pdf

Cela devrait créer une entrée dans votre base de données MIME locale:

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

Vos fichiers PDF devraient être ouverts avec xpdf maintenant.

lzap
la source
+1 et voir aussi ma réponse à la question correspondante, unix.stackexchange.com/questions/77136/…
michael
2
Réponse la plus utile, merci. Plus facile à connaître defaults.list, elle peut être simplement modifiée à la main si besoin est.
mVChr
Pour une raison quelconque, xdg-mimene pas modifier defaults.list, mais le modifier manuellement (grâce aux astuces de cette réponse) a fait l'affaire.
Skippy le Grand Gourou
Pour votre information, quelques dépendances Perl sont nécessaires, assurez-vous de les avoir installées. Les distributions RPM / DEB les installeront normalement pour vous.
Lzap
2
Il semble defaults.lists'appelle maintenant mimeapps.list. Voir Arch Wiki pour une liste des emplacements valides pour mimeapps.list.
Mateen Ulhaq
7

Sur Debian, vous pouvez utiliser la commande en tant que root.

update-mime-database /usr/share/mime

avoir le shared-mime-infopaquet installé.

enzotib
la source
2
J'ai essayé Ça ne marche pas Je cours Arch.
kravemir
-1 Ceci est spécifique aux environnements de bureau dépendant d'informations de mime partagées, tels que GNOME
craymichael
7

Vous pouvez utiliser quelque chose comme ceci pour générer les xdg-mimecommandes appropriées pour chacun de vos .desktopfichiers et les types MIME qu’ils contiennent, puis exécuter ceux que vous préférez. Remarque /usr/share/applicationspeut avoir des sous-répertoires.

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done
aleb
la source
3

Cela ressemble à la réponse de @ aleb , mais cela fonctionne sur les fichiers du bureau avec des espaces:

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
utilisateur60561
la source