省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

GIMP3 / Python プログラミング試行錯誤日誌: 個人設定ディレクトリを取得しようとすると Flatpak に落とし穴がある

 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 版 GIMPPython-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 が実装されていません。