web-dev-qa-db-ja.com

NautilusとNemoはpython 3ファイルを認識しません

NautilusとNemoは、pythonファイルに2つの異なるアイコンを使用します。

Two different icons for python files

ただし、すべてのpythonファイルに対してpythonアイコンを表示するようにします。

mimetypeは両方のファイルに同じ結果を与えます:

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

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

candlestick_test.pyの出力は間違っていますが、このファイルはpythonアイコンで表示されます。理由はわかりません。

ここで誰かが同じ問題を抱えていました: buntuファイルマネージャーは適切なアイコンを表示していません

しかし、彼が得た答えは私にはうまくいきません:

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

出力なし。

これらのpythonファイルの主な違いはシバンだと思います:

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

このシバン(python 2)を使用すると...

#!/usr/bin/env python

... pythonアイコンもあります。

NautilusとNemoはどのようにファイルアイコンを選択しますか?

編集:

いくつかの追加情報:

これらのシェバンのいずれかを使用する場合、pythonアイコンがあります。

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

これらのシバンのいずれかを使用する場合、nopythonアイコンがあります。

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

Python3が問題のようです。

編集2:

xdg-mime query filetype FILENAMEは、Shebangに一致するMIMEタイプを返します。

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

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

そして、candlestick_test.pyのファイル拡張子を。py3に変更すると、[python]アイコンが消え、xdg-mime query filetypetext/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

だから、text-x-python3ファイルをtext-x-pythonアイコンはどういうわけか。

5
MaxGyver

最後に修正できました!

私の知る限り、NemoとNautilusはtext-x-python3.svgという名前のファイルをからロードしようとします/ usr/share/icons/[MyTheme]/mimes/[ActualIconSize] /〜/ .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

次の試行はHumanityです。 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

アイコンサイズ16および22でも同じです。

Python icons as expected

たぶん、この解決策は他の誰かに役立つでしょう。

2
MaxGyver