web-dev-qa-db-fra.com

Nautilus et Nemo ne reconnaissent pas les fichiers python 3

Nautilus et Nemo utilisent deux icônes différentes pour les fichiers python:

Two different icons for python files

Mais je veux qu’ils affichent l’icône python pour tous les fichiers python.

mimetype donne le même résultat pour les deux fichiers:

$ mimetype *.py
buy_test.py:         text/x-python
candlestick_test.py: text/x-python

Le fichier -i donne différents résultats:

$ file -i buy_test.py 
buy_test.py: text/x-python; charset=us-ascii
$ file -i candlestick_test.py 
candlestick_test.py: text/x-objective-c; charset=us-ascii

Le résultat pour candlestick_test.py est incorrect, mais ce fichier est affiché avec l'icône python. Aucune idée pourquoi.

Quelqu'un ici a le même problème: Le gestionnaire de fichiers Ubuntu n’affiche pas les icônes appropriées

Mais la réponse qu'il a obtenue ne fonctionne pas pour moi:

$ grep -r 'text/x-python' /usr/share/thumbnailers

Pas de sortie.

Je pense que la différence principale entre ces fichiers python est le Shebang:

$ head -n2 buy_test.py 
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
$ head -n2 candlestick_test.py 
# -*- coding: utf-8 -*-
"""

Quand j'utilise ce Shebang (python 2) ...

#!/usr/bin/env python

... il y a aussi une icône python.

Comment Nautilus et Nemo choisissent-ils les icônes de fichier?

MODIFIER:

Quelques informations supplémentaires:

Il y a une icône python si j'utilise l'un de ces shebangs:

#!/usr/bin/env python
#!/usr/bin/python

Il n'y a aucune icône python si j'utilise l'un de ces shebangs:

#!/usr/bin/env python3
#!/usr/bin/python3

Il semble donc que python3 pose un problème.

EDIT 2:

Le type de filet de la requête xdg-mime FILENAME renvoie le type MIME correspondant au Shebang:

$ xdg-mime query filetype buy_test.py 
text/x-python3

$ xdg-mime query filetype candlestick_test.py 
text/x-python

Et quand je change l'extension de fichier de de candlestick_test.py en . Py3 , l'icône python disparaît et le type de filet de la requête xdg-mime renvoie text/x-python3 .

EDIT 3:

J'ai trouvé une nouvelle source d'information:

$ gio info ~/python/buy_test.py | grep icon
  standard::icon: text-x-python3, text-x-generic
  standard::symbolic-icon: text-x-python3-symbolic, text-x-generic-symbolic, text-x-python3, text-x-generic
$ gio info ~/python/candlestick_test.py | grep icon
  standard::icon: text-x-python, text-x-generic
  standard::symbolic-icon: text-x-python-symbolic, text-x-generic-symbolic, text-x-python, text-x-generic

Je suppose donc que je dois lier les fichiers texte-x-python3 à texte-x-python des icônes en quelque sorte.

5
MaxGyver

Enfin je pourrais le réparer!

Autant que je sache, Nemo et Nautilus essaient de charger un fichier nommé text-x-python3.svg à partir de ./usr/share/icons/[MyTheme]/mimes/[ActualIconSize]/. S'il existe un tel fichier dans ~/.local/share/icons/[MyTheme]/mimes/[ActualIconSize]/, il a une priorité plus élevée. Mais aucun de ces répertoires n'existait pour mon thème: Humanity-Dark .

Nemo/Nautilus essaie donc de trouver cette icône dans un autre thème. Dans /usr/share/icons/Humanity-Dark/index.theme est défini le thème à essayer ensuite:

$ grep Inherits /usr/share/icons/Humanity-Dark/index.theme 
Inherits=Humanity,Adwaita,hicolor

L'essai suivant est l'humanité . Il existe des icônes pour text-x-python mais pas pour text-x-python3 . Alors j'ai fait:

mkdir -p ~/.local/share/icons/Humanity-Dark/mimes/48
cp /usr/share/icons/Humanity/mimes/48/text-x-python.svg ~/.local/share/icons/Humanity-Dark/mimes/48/text-x-python3.svg

Idem pour les tailles d'icône 16 et 22. Maintenant, il se présente comme prévu:

Python icons as expected

Peut-être que cette solution est utile pour quelqu'un d'autre.

2
MaxGyver