Max*_*ver 8 icons python nautilus mime-type nemo
Nautilus 和 Nemo 对 python 文件使用两个不同的图标:
但我希望他们显示所有 python 文件的 python 图标。
mimetype为两个文件提供相同的结果:
$ mimetype *.py
buy_test.py: text/x-python
candlestick_test.py: text/x-python
Run Code Online (Sandbox Code Playgroud)
file -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
Run Code Online (Sandbox Code Playgroud)
Candlestick_test.py的输出是错误的,但此文件显示为 python 图标。不知道为什么。
这里有人遇到了同样的问题: Ubuntu 文件管理器没有显示正确的图标
但是他得到的答案对我不起作用:
$ grep -r 'text/x-python' /usr/share/thumbnailers
Run Code Online (Sandbox Code Playgroud)
没有输出。
我认为这些python文件之间的主要区别是shebang:
$ head -n2 buy_test.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
$ head -n2 candlestick_test.py
# -*- coding: utf-8 -*-
"""
Run Code Online (Sandbox Code Playgroud)
当我使用这个shebang(python 2)时......
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
...还有一个python图标。
Nautilus 和 Nemo 如何选择文件图标?
编辑:
一些附加信息:
如果我使用以下shebang之一,则会出现一个python图标:
#!/usr/bin/env python
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
如果我使用以下shebang之一,则没有python图标:
#!/usr/bin/env python3
#!/usr/bin/python3
Run Code Online (Sandbox Code Playgroud)
所以看起来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
Run Code Online (Sandbox Code Playgroud)
并且当我将candlestick_test.py的文件扩展名更改为.py3 时,python 图标消失并且xdg-mime 查询文件类型返回text/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
Run Code Online (Sandbox Code Playgroud)
所以我想,我必须以某种方式将text-x-python3文件链接到text-x-python图标。
我终于可以修好它了!
据我了解,Nemo 和 Nautilus 尝试从/usr/share/icons/[MyTheme]/mimes/[ActualIconSize]/加载名为text-x-python3.svg的文件。如果~/.local/share/icons/[MyTheme]/mimes/[ActualIconSize]/中有这样的文件,则它具有更高的优先级。但这些目录都不存在于我的主题中:Humanity-Dark。
因此 Nemo/Nautilus 尝试在另一个主题中找到该图标。在/usr/share/icons/Humanity-Dark/index.theme中定义了下一步要尝试的主题:
$ grep Inherits /usr/share/icons/Humanity-Dark/index.theme
Inherits=Humanity,Adwaita,hicolor
Run Code Online (Sandbox Code Playgroud)
下一个尝试是人性。有text-x-python的图标,但没有text-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
Run Code Online (Sandbox Code Playgroud)
图标大小 16 和 22 相同。现在它看起来符合预期:
也许这个解决方案对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |