GIMP プラグインのプログラミングをやっていて、いまプラグインがあるディレクトリを取得したい場合があります。この場合、Python の標準ライブラリ os にある、os.path.dirname(__file__) メソッドを入れると、今走らせているプラグインがあるディレクトリを返してくれますが、そのディレクトリにあるはずのファイルを探すことができません。
おかしいなと思って、os.path.dirname(__file__) の取得している値を見ると、なんと
$HOME/.var/app/org.gimp.GIMP/config/GIMP/3.0/plug-ins/プラグイン名/
$HOME/.config/GIMP/3.0/plug-ins/プラグイン名/
で、あるにも関わらず。実はこの GIMP は Flatpak でインストールしています。
Flatpak 版の アプリケーションのユーザ設定ディレクトリは、原則
$HOME/.var/app/アプリケーションID/config
になります。しかし Flatpak 版 GIMP に関しては、これでは不便なので、本来の、
$HOME/.config/
以下の GIMP ディレクトリでも認識するように修正されています。おそらく $HOME/.config/GIMP を $HOME/.var/app/org.gimp.GIMP/config/GIMP/ 以下にキャッシュするような仕様になっているものと思われます。ただ、時々キャッシュが間に合わなかったり、されない時があるようで、
$HOME/.var/app/org.gimp.GIMP/config/GIMP/3.0/plug-ins/プラグイン名/
以下のディレクトリやファイルが存在しない時があります。
Flatpak 版 GIMP の Python-fu で、os.path.dirname(__file__) メソッドを動かすと、自動的に $HOME/.var/app/org.gimp.GIMP/config/GIMP/ に振ってしまいます。しかし、上のような場合、実際にはここにファイルがありませんので当然、ファイルが取得できないという結果になってしまいます。
仕方ないので、Python のreplace メソッドで
文字列変数.replace(".var/app/org.gimp.GIMP/config/", ".config/")
とやって、ようやく実際のファイルを取得できるようになりました。
ひょっとすると snap でもこのような落とし穴があるかもしれませんが、しかし snap 版ではまだ GIMP 3 が実装されていません。