Nautilus 和 Nemo 无法识别 python 3 文件

Nautilus 和 Nemo 无法识别 python 3 文件

Nautilus 和 Nemo 对 Python 文件使用两个不同的图标:

python 文件的两个不同图标

但我希望它们显示所有 Python 文件的 Python 图标。

模仿类型对于两个文件,结果相同:

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

文件-i给出不同的输出:

$ 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

输出烛台测试.py是错误的,但此文件显示有 Python 图标。不知道为什么。

这里有人遇到了同样的问题: Ubuntu 文件管理器未显示正确的图标

但他得到的答案对我来说不起作用:

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

无输出。

我认为这些 python 文件之间的主要区别在于shebang:

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

当我使用这个shebang(python 2)时......

#!/usr/bin/env python

...还有一个 Python 图标。

Nautilus 和 Nemo 如何选择文件图标?

编辑:

一些附加信息:

如果我使用其中一个shebang,就会出现一个python图标:

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

如果我使用其中一个shebang,则会出现python图标:

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

因此看起来 python3 有问题。

编辑2:

xdg-mime 查询文件类型 FILENAME返回与 shebang 匹配的 MIME 类型:

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

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

当我改变烛台测试.py文件扩展名为.py3,python 图标消失,并且xdg-mime 查询文件类型返回文本/x-python3

编辑3:

我找到了一个新的信息来源:

$ 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

所以我想我必须链接文本-​​x-python3文件到文本-​​x-python图标。

答案1

我终于可以修复它了!

据我了解,Nemo 和 Nautilus 会尝试加载一个名为文本-​​x-python3.svg/usr/share/icons/[MyTheme]/mimes/[ActualIconSize]/. 如果有这样的文件〜/ .local / share /图标/ [MyTheme] / mimes / [ActualIconSize] /它具有更高的优先级。但是对于我的主题,这些目录都不存在:人性-黑暗

因此 Nemo/Nautilus 会尝试在另一个主题中查找该图标。在/usr/share/icons/Humanity-Dark/index.theme定义了下一步要尝试哪个主题:

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

下一次尝试是人性. 有图标文本-​​x-python但不是文本-​​x-python3。 所以我做了:

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

图标大小 16 和 22 也一样。现在看起来符合预期:

Python 图标符合预期

也许这个解决方案对其他人有帮助。

答案2

我在 Thunar 中遇到了几乎相同的问题。我的解决方案略有不同。我使用的是 elementary Xfce 图标主题,因此请根据需要更改以下命令:

sudo ln -s /usr/share/icons/elementary-xfce/mimes/32/text-x-python.png /usr/share/icons/elementary-xfce/mimes/32/text-x-python3.png
sudo ln -s /usr/share/icons/elementary-xfce/mimes/48/text-x-python.png /usr/share/icons/elementary-xfce/mimes/48/text-x-python3.png
sudo ln -s /usr/share/icons/elementary-xfce/mimes/64/text-x-python.png /usr/share/icons/elementary-xfce/mimes/64/text-x-python3.png
sudo update-icon-caches /usr/share/icons/*

最后一个命令是刷新图标缓存,以便我能够看到 Thunar 中的更改。运行上述命令后,我只需刷新 Thunar 中的目录,一切便按预期运行。

相关内容