diff --git a/build/linux/snap/snapcraft.yaml b/build/linux/snap/snapcraft.yaml index dafdb68555..79954f08aa 100644 --- a/build/linux/snap/snapcraft.yaml +++ b/build/linux/snap/snapcraft.yaml @@ -41,6 +41,7 @@ apps: - intel-npu - npu-libs - gimp-plugins + - gimp-config extensions: [gnome] layout: @@ -68,6 +69,10 @@ plugs: interface: content content: gimp-plugins-3 target: $SNAP/gimp-plugins + gimp-config: + interface: personal-files + write: + - $HOME/.config/GIMP parts: buildenv: diff --git a/libgimpbase/gimpenv.c b/libgimpbase/gimpenv.c index 0af4f2f653..3cc12b414a 100644 --- a/libgimpbase/gimpenv.c +++ b/libgimpbase/gimpenv.c @@ -361,6 +361,23 @@ gimp_directory (void) NULL); } + const gchar *snap_path = g_getenv ("SNAP"); + if (snap_path && g_file_test (snap_path, G_FILE_TEST_IS_DIR)) + { + const gchar *snap_real_home = g_getenv ("SNAP_REAL_HOME"); + + if (snap_real_home == NULL) + gimp_dir = g_build_filename (g_get_home_dir (), + ".config", + GIMPDIR, GIMP_USER_VERSION, + NULL); + else + gimp_dir = g_build_filename (snap_real_home, + ".config", + GIMPDIR, GIMP_USER_VERSION, + NULL); + } + if (gimp_dir == NULL) { /* g_get_user_config_dir () always returns a path as a non-null