Nautilus 和 Nemo 对 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 也一样。现在看起来符合预期:
也许这个解决方案对其他人有帮助。
答案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 中的目录,一切便按预期运行。